xref: /freebsd-14.2/lib/libc/sys/chflags.2 (revision 50c9ba2c)
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 Apr 13, 2012
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 toggle these flags by non-super-users are rejected.
118These flags may be set at any time, but normally may only be unset when
119the system is in single-user mode.
120(See
121.Xr init 8
122for details.)
123.Pp
124The
125.Dv SF_SNAPSHOT
126flag is maintained by the system and cannot be toggled.
127.Sh RETURN VALUES
128.Rv -std
129.Sh ERRORS
130The
131.Fn chflags
132system call will fail if:
133.Bl -tag -width Er
134.It Bq Er ENOTDIR
135A component of the path prefix is not a directory.
136.It Bq Er ENAMETOOLONG
137A component of a pathname exceeded 255 characters,
138or an entire path name exceeded 1023 characters.
139.It Bq Er ENOENT
140The named file does not exist.
141.It Bq Er EACCES
142Search permission is denied for a component of the path prefix.
143.It Bq Er ELOOP
144Too many symbolic links were encountered in translating the pathname.
145.It Bq Er EPERM
146The effective user ID does not match the owner of the file and
147the effective user ID is not the super-user.
148.It Bq Er EPERM
149One of
150.Dv SF_IMMUTABLE , SF_APPEND ,
151or
152.Dv SF_NOUNLINK
153is set and the user is either not the super-user or
154securelevel is greater than 0.
155.It Bq Er EPERM
156A non-super-user attempted to toggle one of
157.Dv SF_ARCHIVED , SF_IMMUTABLE , SF_APPEND ,
158or
159.Dv SF_NOUNLINK .
160.It Bq Er EPERM
161An attempt was made to toggle the
162.Dv SF_SNAPSHOT
163flag.
164.It Bq Er EROFS
165The named file resides on a read-only file system.
166.It Bq Er EFAULT
167The
168.Fa path
169argument
170points outside the process's allocated address space.
171.It Bq Er EIO
172An
173.Tn I/O
174error occurred while reading from or writing to the file system.
175.It Bq Er EOPNOTSUPP
176The underlying file system does not support file flags, or
177does not support all of the flags set in
178.Fa flags .
179.El
180.Pp
181The
182.Fn fchflags
183system call will fail if:
184.Bl -tag -width Er
185.It Bq Er EBADF
186The descriptor is not valid.
187.It Bq Er EINVAL
188The
189.Fa fd
190argument
191refers to a socket, not to a file.
192.It Bq Er EPERM
193The effective user ID does not match the owner of the file and
194the effective user ID is not the super-user.
195.It Bq Er EPERM
196One of
197.Dv SF_IMMUTABLE , SF_APPEND ,
198or
199.Dv SF_NOUNLINK
200is set and the user is either not the super-user or
201securelevel is greater than 0.
202.It Bq Er EPERM
203A non-super-user attempted to toggle one of
204.Dv SF_ARCHIVED , SF_IMMUTABLE , SF_APPEND ,
205or
206.Dv SF_NOUNLINK .
207.It Bq Er EPERM
208An attempt was made to toggle the
209.Dv SF_SNAPSHOT
210flag.
211.It Bq Er EROFS
212The file resides on a read-only file system.
213.It Bq Er EIO
214An
215.Tn I/O
216error occurred while reading from or writing to the file system.
217.It Bq Er EOPNOTSUPP
218The underlying file system does not support file flags, or
219does not support all of the flags set in
220.Fa flags .
221.El
222.Sh SEE ALSO
223.Xr chflags 1 ,
224.Xr fflagstostr 3 ,
225.Xr strtofflags 3 ,
226.Xr init 8 ,
227.Xr mount_unionfs 8
228.Sh HISTORY
229The
230.Fn chflags
231and
232.Fn fchflags
233system calls first appeared in
234.Bx 4.4 .
235