NAME
fchmod — change
mode of a file
SYNOPSIS
#include
<sys/stat.h>
int fchmod(int fildes, mode_t mode);
DESCRIPTION
The fchmod () function shall be equivalent
to chmod(3) except that the file whose permissions are
changed is specified by the file descriptor fildes.
[SHM]
If fildes references a shared memory object, the
fchmod () function need only affect the S_IRUSR,
S_IWUSR, S_IRGRP, S_IWGRP, S_IROTH, and S_IWOTH file permission bits.
[TYM]
If fildes references a typed memory object, the behavior
of fchmod () is unspecified.
If fildes refers to a socket, the behavior of
fchmod () is unspecified.
RETURN VALUE
Upon successful completion, fchmod ()
shall return 0. Otherwise, it shall return -1 and set
errno to
indicate the error.
ERRORS
The fchmod () function shall fail if:
- [EBADF]
- The fildes argument is not an open file descriptor.
- [EPERM]
- The effective user ID does not match the owner of the file and the process does not have appropriate privileges.
- [EROFS]
- The file referred to by fildes resides on a read-only file system.
The fchmod () function may fail if:
EXAMPLES
Changing the Current Permissions for a File
The following example shows how to change the permissions for a file named /home/cnd/mod1 so that the owner and group have read/write/execute permissions, but the world only has read/write permissions.
#include <sys/stat.h>
#include <fcntl.h>
mode_t mode;
int fildes;
...
fildes = open("/home/cnd/mod1", O_RDWR);
fchmod(fildes, S_IRWXU | S_IRWXG | S_IROTH | S_IWOTH);
APPLICATION USAGE
None.
RATIONALE
None.
FUTURE DIRECTIONS
None.
SEE ALSO
chmod(3), chown(3) , creat(3), fcntl(3), fstatat(3), fstatvfs(3), mknod(3), open(3), read(3), write(3)
XBD <sys/stat.h>
CHANGE HISTORY
First released in Issue 4, Version 2.
Issue 5
Moved from X/OPEN UNIX extension to BASE and aligned with
fchmod () in the POSIX Realtime Extension.
Specifically, the second paragraph of the DESCRIPTION is added and a second
instance of [EINVAL] is defined in the list of optional errors.
Issue 6
The DESCRIPTION is updated for alignment with IEEE Std
1003.1j-2000 by stating that fchmod () behavior is
unspecified for typed memory objects.
Issue 8
Austin Group Defect 1330 is applied, removing obsolescent interfaces.