---
name: "chflags"
section: "1"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["freebsd", "openbsd", "macos"]
url: "https://new.carta.tech/chflags"
---

# chflags(1)

change file flags

## NAME

**chflags** – change file flags

## SYNOPSIS

**chflags** \[**-h**\]\[ **-R** \[**-H** \| **-L** \| **-P**\]\] *flags* *file ...*

## DESCRIPTION

The **chflags** utility modifies the file flags of the listed files as specified by the *flags* operand. The *flags* of a file dictate special restrictions beyond those enforced by its mode/permissions. Only the superuser can change the user flags on block and character devices.

You can use **ls** **-lo** to see the flags of existing files.

The options are as follows:

- **-H**

  If the **-R** option is also specified, symbolic links on the command line are followed. Symbolic links encountered in the tree traversal are not followed.

- **-h**

  Treat symbolic links like other files: modify links instead of following them. The **-h** and **-R** options are mutually exclusive.

- **-L**

  If the **-R** option is also specified, all symbolic links are followed.

- **-P**

  If the **-R** option is also specified, no symbolic links are followed.

- **-R**

  Recurse. Where *file* is a directory, change the flags of the directory and all the files and directories in the file hierarchy below it.

Flags are a comma separated list of keywords. The following keywords are currently defined:

- **arch**

  set the archived flag (superuser only)

- **nodump**

  set the nodump flag (owner or superuser only)

- **sappnd**

  set the system append-only flag (superuser only)

- **schg**

  set the system immutable flag (superuser only)

- **uappnd**

  set the user append-only flag (owner or superuser only)

- **uchg**

  set the user immutable flag (owner or superuser only)

The **arch** flag is for compatibility only, and currently has no effect.

A file with the **nodump** flag set will by default only be backed up by [dump(8)](/dump/8.md) during full backups. The **-h** option of [dump(8)](/dump/8.md) can be used to alter this.

An immutable file may not be changed, moved, or deleted. An append-only file is immutable except that data may be appended to it.

The superuser-settable **sappnd** and **schg** flags can be set at any time, but may only be cleared when the system is running at security level 0 or -1 (insecure or permanently insecure mode, respectively). For more information on setting the system security level, see [securelevel(7)](/securelevel/7.md).

Putting the letters **no** before a flag name causes the flag to be turned off. For example:

- **nouchg**

  the immutable bit should be cleared

The **-H**, **-L**, and **-P** options are ignored unless the **-R** option is specified. In addition, these options override each other and the command's actions are determined by the last one specified.

## EXIT STATUS

The **chflags** utility exits 0 on success, and \>0 if an error occurs.

## SEE ALSO

[ls(1)](/ls/1.md), [chflags(2)](/chflags/2.md), [stat(2)](/stat/2.md), [fts\_open(3)](/fts_open/3.md), [securelevel(7)](/securelevel/7.md), [symlink(7)](/symlink/7.md), [dump(8)](/dump/8.md)

## HISTORY

The **chflags** command first appeared in 4.4BSD.
