fchmod -- Change Directory or File Mode

SYNOPSIS

 #include <sys/types.h>
 #include <sys/stat.h>

 int fchmod(int fileDescriptor, mode_t mode);
 

DESCRIPTION

fchmod changes the file permission flags for the directory or file specified by fileDescriptor. The mode argument can be any combination of the following symbols, which are defined in <stat.h>:
S_ISUID
sets the user ID for execution. When the specified file is processed through an exec function, the user ID of the process is also set for execution.
S_ISGID
sets group ID for execution. When the specified file is processed through an exec function, the group ID of the process is also set for execution.
S_ISVTX
specifies shared text.
S_IRUSR
sets file owner permission to read.
S_IWUSR
sets file owner permission to write.
S_IXUSR
sets file owner permission to execute.
S_IRWXU
sets file owner permission to read, write, and execute.
S_IRGRP
sets group permission to read.
S_IWGRP
sets group permission to write.
S_IXGRP
sets group permission to execute.
S_IRWXG
sets group permission to read, write, and execute.
S_IROTH
sets general permission to read.
S_IWOTH
sets general permission to write.
S_IXOTH
sets general permission to execute.
S_IRWXO
sets general permission to read, write, and execute.

RETURN VALUE

fchmod returns 0 if it is successful. If unsuccessful, a - 1 is returned.

EXAMPLE

This example changes a file whose file number is passed so that it can be executed by any user who can read it:
  #include <sys/types.h>
  #include <sys/stat.h>

  int fchexec(int fd) {
     struct stat stat_data;
     mode_t newmode;
     int rc;

     rc = fstat(fd, &stat_data);
     if (rc != 0) {
        perror("fstat failure");
        return -1;
     }
     newmode = stat_data.st_mode;
     if (newmode & S_IRUSR) newmode |= S_IXUSR;
     if (newmode & S_IRGRP) newmode |= S_IXGRP;
     if (newmode & S_IROTH) newmode |= S_IXOTH;

        /* If the mode bits changed, make them effective. */
     if (newmode != stat_data.st_mode) {
        rc = fchmod(fd, newmode);
        if (rc != 0) perror("fchmod failure");
        return rc;
     }
     return(0);    /* No change was necessary.            */
  }

 

RELATED FUNCTIONS

chmod, chown

SEE ALSO


Copyright (c) 1998 SAS Institute Inc. Cary, NC, USA. All rights reserved.