NAME
chflags,
lchflags,
fchflags
- set file flags
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
int
chflags(
const char *path
, u_long flags
)
int
lchflags(
const char *path
, u_long flags
)
int
fchflags(
int fd
, u_long flags
)
DESCRIPTION
The file whose name
is given by
path
or referenced by the descriptor
fd
has its flags changed to
flags
.
For
lchflags(
),
symbolic links are not traversed and thus their modes may be changed with
this call.
The flags specified are formed by
or'ing
the following values:
UF_NODUMP
-
Do not dump the file.
UF_IMMUTABLE
-
The file may not be changed.
UF_APPEND
-
The file may only be appended to.
UF_OPAQUE
-
The file (if a directory) is opaque for union mounts.
SF_ARCHIVED
-
The file is archived.
SF_IMMUTABLE
-
The file may not be changed.
SF_APPEND
-
The file may only be appended to.
The
UF_NODUMP
,
UF_IMMUTABLE
,
UF_APPEND
,
and
UF_OPAQUE
flags may be set or unset by either the owner of a file or the super-user,
except on block and character devices, where only the super-user may set
or unset them.
The
SF_ARCHIVED
,
SF_IMMUTABLE
,
and
SF_APPEND
flags may only be set or unset by the super-user.
Attempts by the non-super-user to set the super-user only flags
are silently ignored.
These flags may be set at any time, but normally may only be unset when
the system is in single-user mode.
(See
init(8)
for details.)
RETURN VALUES
Upon successful completion, a value of 0 is returned.
Otherwise, -1 is returned and the global variable
errno
is set to indicate the error.
ERRORS
chflags(
)
will fail if:
- [
ENOTDIR
] -
A component of the path prefix is not a directory.
- [
ENAMETOOLONG
] -
A component of a pathname exceeded
{NAME_MAX}
characters, or an entire path name exceeded
{PATH_MAX}
characters.
- [
ENOENT
] -
The named file does not exist.
- [
EACCES
] -
Search permission is denied for a component of the path prefix.
- [
ELOOP
] -
Too many symbolic links were encountered in translating the pathname.
- [
EPERM
] -
The effective user ID does not match the owner of the file and
the effective user ID is not the super-user, or
the effective user ID is not the super-user and one or more of the
super-user-only flags for the named file would be changed.
- [
EOPNOTSUPP
] -
The named file resides on a file system that does not support file
flags.
- [
EROFS
] -
The named file resides on a read-only file system.
- [
EFAULT
] -
path
points outside the process's allocated address space.
- [
EIO
] -
An
I/O
error occurred while reading from or writing to the file system.
fchflags(
)
will fail if:
- [
EBADF
] -
The descriptor is not valid.
- [
EINVAL
] -
fd
refers to a socket, not to a file.
- [
EPERM
] -
The effective user ID does not match the owner of the file and
the effective user ID is not the super-user, or
the effective user ID is not the super-user and one or more of the
super-user-only flags for the file would be changed.
- [
EOPNOTSUPP
] -
The file resides on a file system that does not support file flags.
- [
EROFS
] -
The file resides on a read-only file system.
- [
EIO
] -
An
I/O
error occurred while reading from or writing to the file system.
SEE ALSO
chflags(1),
stat(2),
init(8),
mount_union(8)
HISTORY
The
chflags(
)
and
fchflags(
)
functions first appeared in
4.4BSD.
The
lchflags(
)
function first appeared in
NetBSD1.5.