xref: /freebsd-14.2/lib/libc/sys/chflags.2 (revision 9a14aa01)
1.\" Copyright (c) 1989, 1993
2.\"	The Regents of the University of California.  All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\" 4. Neither the name of the University nor the names of its contributors
13.\"    may be used to endorse or promote products derived from this software
14.\"    without specific prior written permission.
15.\"
16.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26.\" SUCH DAMAGE.
27.\"
28.\"	@(#)chflags.2	8.3 (Berkeley) 5/2/95
29.\" $FreeBSD$
30.\"
31.Dd Oct 29, 2010
32.Dt CHFLAGS 2
33.Os
34.Sh NAME
35.Nm chflags ,
36.Nm lchflags ,
37.Nm fchflags
38.Nd set file flags
39.Sh LIBRARY
40.Lb libc
41.Sh SYNOPSIS
42.In sys/stat.h
43.In unistd.h
44.Ft int
45.Fn chflags "const char *path" "u_long flags"
46.Ft int
47.Fn lchflags "const char *path" "int flags"
48.Ft int
49.Fn fchflags "int fd" "u_long flags"
50.Sh DESCRIPTION
51The file whose name
52is given by
53.Fa path
54or referenced by the descriptor
55.Fa fd
56has its flags changed to
57.Fa flags .
58.Pp
59The
60.Fn lchflags
61system call is like
62.Fn chflags
63except in the case where the named file is a symbolic link,
64in which case
65.Fn lchflags
66will change the flags of the link itself,
67rather than the file it points to.
68.Pp
69The flags specified are formed by
70.Em or Ns 'ing
71the following values
72.Pp
73.Bl -tag -width ".Dv SF_IMMUTABLE" -compact -offset indent
74.It Dv UF_NODUMP
75Do not dump the file.
76.It Dv UF_IMMUTABLE
77The file may not be changed.
78.It Dv UF_APPEND
79The file may only be appended to.
80.It Dv UF_NOUNLINK
81The file may not be renamed or deleted.
82.It Dv UF_OPAQUE
83The directory is opaque when viewed through a union stack.
84.It Dv SF_ARCHIVED
85The file may be archived.
86.It Dv SF_IMMUTABLE
87The file may not be changed.
88.It Dv SF_APPEND
89The file may only be appended to.
90.It Dv SF_NOUNLINK
91The file may not be renamed or deleted.
92.It Dv SF_SNAPSHOT
93The file is a snapshot file.
94.El
95.Pp
96If one of
97.Dv SF_IMMUTABLE , SF_APPEND ,
98or
99.Dv SF_NOUNLINK
100is set a non-super-user cannot change any flags and even the super-user
101can change flags only if securelevel is greater than 0.
102(See
103.Xr init 8
104for details.)
105.Pp
106The
107.Dv UF_IMMUTABLE , UF_APPEND , UF_NOUNLINK , UF_NODUMP ,
108and
109.Dv UF_OPAQUE
110flags may be set or unset by either the owner of a file or the super-user.
111.Pp
112The
113.Dv SF_IMMUTABLE , SF_APPEND , SF_NOUNLINK ,
114and
115.Dv SF_ARCHIVED
116flags may only be set or unset by the super-user.
117Attempts to set these flags by non-super-users are rejected, attempts by
118non-superusers to clear flags that are already unset are silently ignored.
119These flags may be set at any time, but normally may only be unset when
120the system is in single-user mode.
121(See
122.Xr init 8
123for details.)
124.Pp
125The
126.Dv SF_SNAPSHOT
127flag is maintained by the system and cannot be changed by any user.
128.Sh RETURN VALUES
129.Rv -std
130.Sh ERRORS
131The
132.Fn chflags
133system call will fail if:
134.Bl -tag -width Er
135.It Bq Er ENOTDIR
136A component of the path prefix is not a directory.
137.It Bq Er ENAMETOOLONG
138A component of a pathname exceeded 255 characters,
139or an entire path name exceeded 1023 characters.
140.It Bq Er ENOENT
141The named file does not exist.
142.It Bq Er EACCES
143Search permission is denied for a component of the path prefix.
144.It Bq Er ELOOP
145Too many symbolic links were encountered in translating the pathname.
146.It Bq Er EPERM
147The effective user ID does not match the owner of the file and
148the effective user ID is not the super-user.
149.It Bq Er EPERM
150One of
151.Dv SF_IMMUTABLE , SF_APPEND ,
152or
153.Dv SF_NOUNLINK
154is set and the user is either not the super-user or
155securelevel is greater than 0.
156.It Bq Er EPERM
157A non-super-user tries to set one of
158.Dv SF_ARCHIVED , SF_IMMUTABLE , SF_APPEND ,
159or
160.Dv SF_NOUNLINK .
161.It Bq Er EPERM
162User tries to set or remove the
163.Dv SF_SNAPSHOT
164flag.
165.It Bq Er EROFS
166The named file resides on a read-only file system.
167.It Bq Er EFAULT
168The
169.Fa path
170argument
171points outside the process's allocated address space.
172.It Bq Er EIO
173An
174.Tn I/O
175error occurred while reading from or writing to the file system.
176.It Bq Er EOPNOTSUPP
177The underlying file system does not support file flags.
178.El
179.Pp
180The
181.Fn fchflags
182system call will fail if:
183.Bl -tag -width Er
184.It Bq Er EBADF
185The descriptor is not valid.
186.It Bq Er EINVAL
187The
188.Fa fd
189argument
190refers to a socket, not to a file.
191.It Bq Er EPERM
192The effective user ID does not match the owner of the file and
193the effective user ID is not the super-user.
194.It Bq Er EPERM
195One of
196.Dv SF_IMMUTABLE , SF_APPEND ,
197or
198.Dv SF_NOUNLINK
199is set and the user is either not the super-user or
200securelevel is greater than 0.
201.It Bq Er EPERM
202A non-super-user tries to set one of
203.Dv SF_ARCHIVED , SF_IMMUTABLE , SF_APPEND ,
204or
205.Dv SF_NOUNLINK .
206.It Bq Er EPERM
207User tries to set or remove the
208.Dv SF_SNAPSHOT
209flag.
210.It Bq Er EROFS
211The file resides on a read-only file system.
212.It Bq Er EIO
213An
214.Tn I/O
215error occurred while reading from or writing to the file system.
216.It Bq Er EOPNOTSUPP
217The underlying file system does not support file flags.
218.El
219.Sh SEE ALSO
220.Xr chflags 1 ,
221.Xr fflagstostr 3 ,
222.Xr strtofflags 3 ,
223.Xr init 8 ,
224.Xr mount_unionfs 8
225.Sh HISTORY
226The
227.Fn chflags
228and
229.Fn fchflags
230system calls first appeared in
231.Bx 4.4 .
232