#include <sys/stat.h>
int chmod(const char *path, mode_t mode);
int fchmod(int fd, mode_t mode);
示例:
fp = fopen("/home/b001/file01", "w");
/* change permissions to 644
*/
if (fchmod (fileno(fp), S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH) != 0 )
{
fprintf(fp, "failed to change file permissions\n");
}
含义:
These system calls change the permissions of a file. They differ only in how the file is specified:
*
chmod() changes the permissions of the file specified whose pathname is given in path, which is dereferenced if it is a symbolic link.
*
fchmod() changes the permissions of the file referred to by the open file descriptor fd.
The new file permissions are specified in mode, which is a bit mask created by ORing together zero or more of the following:
S_ISUID (04000)
set-user-ID (set process effective user ID on execve(2))
S_ISGID (02000)
set-group-ID (set process effective group ID on execve(2); mandatory locking, as described in fcntl(2); take a new file's group from parent directory, as described in chown(2) and mkdir(2))
S_ISVTX (01000)
sticky bit (restricted deletion flag, as described in unlink(2))
S_IRUSR (00400)
read by owner
S_IWUSR (00200)
write by owner
S_IXUSR (00100)
execute/search by owner ("search" applies for directories, and means that entries within the directory can be accessed)
S_IRGRP (00040)
read by group
S_IWGRP (00020)
write by group
S_IXGRP (00010)
execute/search by group
S_IROTH (00004)
read by others
S_IWOTH (00002)
write by others
S_IXOTH (00001)
execute/search by others