]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - lib/libc/sys/chflags.2
Merge ^/head r339670 through r339812.
[FreeBSD/FreeBSD.git] / lib / libc / sys / chflags.2
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 .\" 3. 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 October 20, 2018
32 .Dt CHFLAGS 2
33 .Os
34 .Sh NAME
35 .Nm chflags ,
36 .Nm lchflags ,
37 .Nm fchflags ,
38 .Nm chflagsat
39 .Nd set file flags
40 .Sh LIBRARY
41 .Lb libc
42 .Sh SYNOPSIS
43 .In sys/stat.h
44 .In unistd.h
45 .Ft int
46 .Fn chflags "const char *path" "unsigned long flags"
47 .Ft int
48 .Fn lchflags "const char *path" "unsigned long flags"
49 .Ft int
50 .Fn fchflags "int fd" "unsigned long flags"
51 .Ft int
52 .Fn chflagsat "int fd" "const char *path" "unsigned long flags" "int atflag"
53 .Sh DESCRIPTION
54 The file whose name
55 is given by
56 .Fa path
57 or referenced by the descriptor
58 .Fa fd
59 has its flags changed to
60 .Fa flags .
61 .Pp
62 The
63 .Fn lchflags
64 system call is like
65 .Fn chflags
66 except in the case where the named file is a symbolic link,
67 in which case
68 .Fn lchflags
69 will change the flags of the link itself,
70 rather than the file it points to.
71 .Pp
72 The
73 .Fn chflagsat
74 is equivalent to either
75 .Fn chflags
76 or
77 .Fn lchflags
78 depending on the
79 .Fa atflag
80 except in the case where
81 .Fa path
82 specifies a relative path.
83 In this case the file to be changed is determined relative to the directory
84 associated with the file descriptor
85 .Fa fd
86 instead of the current working directory.
87 The values for the
88 .Fa atflag
89 are constructed by a bitwise-inclusive OR of flags from the following list,
90 defined in
91 .In fcntl.h :
92 .Bl -tag -width indent
93 .It Dv AT_SYMLINK_NOFOLLOW
94 If
95 .Fa path
96 names a symbolic link, then the flags of the symbolic link are changed.
97 .It Dv AT_BENEATH
98 Only allow to change flags for a file which is beneath of
99 the starting directory.
100 .El
101 .Pp
102 If
103 .Fn chflagsat
104 is passed the special value
105 .Dv AT_FDCWD
106 in the
107 .Fa fd
108 parameter, the current working directory is used.
109 If also
110 .Fa atflag
111 is zero, the behavior is identical to a call to
112 .Fn chflags .
113 .Pp
114 The flags specified are formed by
115 .Em or Ns 'ing
116 the following values
117 .Pp
118 .Bl -tag -width ".Dv SF_IMMUTABLE" -compact -offset indent
119 .It Dv SF_APPEND
120 The file may only be appended to.
121 .It Dv SF_ARCHIVED
122 The file has been archived.
123 This flag means the opposite of the DOS, Windows and CIFS
124 FILE_ATTRIBUTE_ARCHIVE attribute.
125 This flag has been deprecated, and may be removed in a future release.
126 .It Dv SF_IMMUTABLE
127 The file may not be changed.
128 .It Dv SF_NOUNLINK
129 The file may not be renamed or deleted.
130 .It Dv SF_SNAPSHOT
131 The file is a snapshot file.
132 .It Dv UF_APPEND
133 The file may only be appended to.
134 .It Dv UF_ARCHIVE
135 The file needs to be archived.
136 This flag has the same meaning as the DOS, Windows and CIFS
137 FILE_ATTRIBUTE_ARCHIVE attribute.
138 Filesystems in FreeBSD may or may not have special handling for this flag.
139 For instance, ZFS tracks changes to files and will set this bit when a
140 file is updated.
141 UFS only stores the flag, and relies on the application to change it when
142 needed.
143 .It Dv UF_HIDDEN
144 The file may be hidden from directory listings at the application's
145 discretion.
146 The file has the DOS, Windows and CIFS FILE_ATTRIBUTE_HIDDEN attribute.
147 .It Dv UF_IMMUTABLE
148 The file may not be changed.
149 .It Dv UF_NODUMP
150 Do not dump the file.
151 .It Dv UF_NOUNLINK
152 The file may not be renamed or deleted.
153 .It Dv UF_OFFLINE
154 The file is offline, or has the Windows and CIFS FILE_ATTRIBUTE_OFFLINE
155 attribute.
156 Filesystems in FreeBSD store and display this flag, but do not provide any
157 special handling when it is set.
158 .It Dv UF_OPAQUE
159 The directory is opaque when viewed through a union stack.
160 .It Dv UF_READONLY
161 The file is read only, and may not be written or appended.
162 Filesystems may use this flag to maintain compatibility with the DOS, Windows
163 and CIFS FILE_ATTRIBUTE_READONLY attribute.
164 .It Dv UF_REPARSE
165 The file contains a Windows reparse point and has the Windows and CIFS
166 FILE_ATTRIBUTE_REPARSE_POINT attribute.
167 .It Dv UF_SPARSE
168 The file has the Windows FILE_ATTRIBUTE_SPARSE_FILE attribute.
169 This may also be used by a filesystem to indicate a sparse file.
170 .It Dv UF_SYSTEM
171 The file has the DOS, Windows and CIFS FILE_ATTRIBUTE_SYSTEM attribute.
172 Filesystems in FreeBSD may store and display this flag, but do not provide
173 any special handling when it is set.
174 .El
175 .Pp
176 If one of
177 .Dv SF_IMMUTABLE , SF_APPEND ,
178 or
179 .Dv SF_NOUNLINK
180 is set a non-super-user cannot change any flags and even the super-user
181 can change flags only if securelevel is 0.
182 (See
183 .Xr init 8
184 for details.)
185 .Pp
186 The
187 .Dv UF_IMMUTABLE , UF_APPEND , UF_NOUNLINK , UF_NODUMP ,
188 and
189 .Dv UF_OPAQUE
190 flags may be set or unset by either the owner of a file or the super-user.
191 .Pp
192 The
193 .Dv SF_IMMUTABLE , SF_APPEND , SF_NOUNLINK ,
194 and
195 .Dv SF_ARCHIVED
196 flags may only be set or unset by the super-user.
197 Attempts to toggle these flags by non-super-users are rejected.
198 These flags may be set at any time, but normally may only be unset when
199 the system is in single-user mode.
200 (See
201 .Xr init 8
202 for details.)
203 .Pp
204 The implementation of all flags is filesystem-dependent.
205 See the description of the
206 .Dv UF_ARCHIVE
207 flag above for one example of the differences in behavior.
208 Care should be exercised when writing applications to account for
209 support or lack of support of these flags in various filesystems.
210 .Pp
211 The
212 .Dv SF_SNAPSHOT
213 flag is maintained by the system and cannot be toggled.
214 .Sh RETURN VALUES
215 .Rv -std
216 .Sh ERRORS
217 The
218 .Fn chflags
219 system call will fail if:
220 .Bl -tag -width Er
221 .It Bq Er ENOTDIR
222 A component of the path prefix is not a directory.
223 .It Bq Er ENAMETOOLONG
224 A component of a pathname exceeded 255 characters,
225 or an entire path name exceeded 1023 characters.
226 .It Bq Er ENOENT
227 The named file does not exist.
228 .It Bq Er EACCES
229 Search permission is denied for a component of the path prefix.
230 .It Bq Er ELOOP
231 Too many symbolic links were encountered in translating the pathname.
232 .It Bq Er EPERM
233 The effective user ID does not match the owner of the file and
234 the effective user ID is not the super-user.
235 .It Bq Er EPERM
236 One of
237 .Dv SF_IMMUTABLE , SF_APPEND ,
238 or
239 .Dv SF_NOUNLINK
240 is set and the user is either not the super-user or
241 securelevel is greater than 0.
242 .It Bq Er EPERM
243 A non-super-user attempted to toggle one of
244 .Dv SF_ARCHIVED , SF_IMMUTABLE , SF_APPEND ,
245 or
246 .Dv SF_NOUNLINK .
247 .It Bq Er EPERM
248 An attempt was made to toggle the
249 .Dv SF_SNAPSHOT
250 flag.
251 .It Bq Er EROFS
252 The named file resides on a read-only file system.
253 .It Bq Er EFAULT
254 The
255 .Fa path
256 argument
257 points outside the process's allocated address space.
258 .It Bq Er EIO
259 An
260 .Tn I/O
261 error occurred while reading from or writing to the file system.
262 .It Bq Er EOPNOTSUPP
263 The underlying file system does not support file flags, or
264 does not support all of the flags set in
265 .Fa flags .
266 .El
267 .Pp
268 The
269 .Fn fchflags
270 system call will fail if:
271 .Bl -tag -width Er
272 .It Bq Er EBADF
273 The descriptor is not valid.
274 .It Bq Er EINVAL
275 The
276 .Fa fd
277 argument
278 refers to a socket, not to a file.
279 .It Bq Er EPERM
280 The effective user ID does not match the owner of the file and
281 the effective user ID is not the super-user.
282 .It Bq Er EPERM
283 One of
284 .Dv SF_IMMUTABLE , SF_APPEND ,
285 or
286 .Dv SF_NOUNLINK
287 is set and the user is either not the super-user or
288 securelevel is greater than 0.
289 .It Bq Er EPERM
290 A non-super-user attempted to toggle one of
291 .Dv SF_ARCHIVED , SF_IMMUTABLE , SF_APPEND ,
292 or
293 .Dv SF_NOUNLINK .
294 .It Bq Er EPERM
295 An attempt was made to toggle the
296 .Dv SF_SNAPSHOT
297 flag.
298 .It Bq Er EROFS
299 The file resides on a read-only file system.
300 .It Bq Er EIO
301 An
302 .Tn I/O
303 error occurred while reading from or writing to the file system.
304 .It Bq Er EOPNOTSUPP
305 The underlying file system does not support file flags, or
306 does not support all of the flags set in
307 .Fa flags .
308 .It Bq Er ENOTCAPABLE
309 The
310 .Dv AT_BENEATH
311 flag was specified but
312 .Fa path
313 is not strictly relative to the starting directory.
314 For example,
315 .Fa path
316 is absolute or includes a ".." component that escapes the starting directory.
317 .El
318 .Sh SEE ALSO
319 .Xr chflags 1 ,
320 .Xr fflagstostr 3 ,
321 .Xr strtofflags 3 ,
322 .Xr init 8 ,
323 .Xr mount_unionfs 8
324 .Sh HISTORY
325 The
326 .Fn chflags
327 and
328 .Fn fchflags
329 system calls first appeared in
330 .Bx 4.4 .
331 The
332 .Fn lchflags
333 system call first appeared in
334 .Fx 5.0 .
335 The
336 .Fn chflagsat
337 system call first appeared in
338 .Fx 10.0 .