Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ fchmod(2) — svr4 — mips UMIPS RISC/os 5.01

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

chown(2)

creat(2)

fcntl(2)

mknod(2)

open(2)

read(2)

CHMOD(2-SVR4)

stat(2)

write(2)

mkfifo(3C)

stat(5)

chmod(1)



CHMOD(2-SVR4)       RISC/os Reference Manual        CHMOD(2-SVR4)



NAME
     chmod, fchmod - change mode of file

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

     int chmod(const char *path, modet mode);

     int fchmod(int fildes, modet mode);

DESCRIPTION
     chmod and fchmod set the access permission portion of the
     mode of the file whose name is given by path or referenced
     by the descriptor fildes to the bit pattern contained in
     mode.  Access permission bits are interpreted as follows:

     S_ISUID   04000   Set user ID on execution.
     S_ISGID   020#0   Set group ID
                       on execution if # is 7, 5, 3, or 1
                       Enable mandatory file/record
                       locking if # is 6, 4, 2, or 0
     S_ISVTX   01000   Save text image  after execution.
     S_IRWXU   00700   Read, write, execute by owner.
     S_IRUSR   00400   Read by owner.
     S_IWUSR   00200   Write by owner.
     S_IXUSR   00100   Execute (search if a directory) by owner.
     S_IRWXG   00070   Read, write, execute by group.
     S_IRGRP   00040   Read by group.
     S_IWGRP   00020   Write by group.
     S_IXGRP   00010   Execute by group.
     S_IRWXO   00007   Read, write, execute (search) by others.
     S_IROTH   00004   Read by others.
     S_IWOTH   00002   Write by others
     S_IXOTH   00001   Execute by others.

     Modes are constructed by OR'ing the access permission bits.

     The effective user ID of the process must match the owner of
     the file or the process must have the appropriate privilege
     to change the mode of a file.

     If the process is not a privileged process and the file is
     not a directory, mode bit 01000 (save text image on execu-
     tion) is cleared.

     If neither the process nor a member of the supplementary
     group list is privileged, and the effective group ID of the
     process does not match the group ID of the file, mode bit
     02000 (set group ID on execution) is cleared.





                        Printed 11/19/92                   Page 1





CHMOD(2-SVR4)       RISC/os Reference Manual        CHMOD(2-SVR4)



     If a 0410 executable file has the sticky bit (mode bit
     01000) set, the operating system will not delete the program
     text from the swap area when the last user process ter-
     minates.  If a 0413 or ELF executable file has the sticky
     bit set, the operating system will not delete the program
     text from memory when the last user process terminates.  In
     either case, if the sticky bit is set the text will already
     be available (either in a swap area or in memory) when the
     next user of the file executes it, thus making execution
     faster.

     If a directory is writable and has the sticky bit set, files
     within that directory can be removed or renamed only if one
     or more of the following is true [see unlink(2) and
     rename(2)]:

            the user owns the file
            the user owns the directory
            the file is writable by the user
            the user is a privileged user


     If the mode bit 02000 (set-group-ID-on-execution) is set and
     the mode bit 00010 (execute or search by group) is not set,
     mandatory file/record locking will exist on a regular file.
     This may affect future calls to open(2), creat(2), read(2),
     and write(2) on this file.

     If the set-group-ID bit is set on a directory, BSD group
     ownership semantics on file creation are used but are
     applied on a case-by-case basis instead of system-wide.
     (See the description of riscos_group_parent in kopt(8-BSD)).

     Upon successful completion, chmod and fchmod mark for update
     the st_ctime field of the file.

     chmod will fail and the file mode will be unchanged if one
     or more of the following are true:

     EACCES              Search permission is denied on a com-
                         ponent of the path prefix of path.

     EFAULT              path points outside the allocated
                         address space of the process.

     EINTR               A signal was caught during execution of
                         the system call.

     EIO                 An I/O error occurred while reading from
                         or writing to the file system.

     ELOOP               Too many symbolic links were encountered



 Page 2                 Printed 11/19/92





CHMOD(2-SVR4)       RISC/os Reference Manual        CHMOD(2-SVR4)



                         in translating path.

     EMULTIHOP           Components of path require hopping to
                         multiple remote machines and file system
                         type does not allow it.

     ENAMETOOLONG        The length of the path argument exceeds
                         {PATH_MAX}, or the length of a path com-
                         ponent exceeds {NAME_MAX} while
                         _POSIX_NO_TRUNC is in effect.

     ENOTDIR             A component of the prefix of path is not
                         a directory.

     ENOENT              Either a component of the path prefix,
                         or the file referred to by path does not
                         exist or is a null pathname.

     ENOLINK             fildes points to a remote machine and
                         the link to that machine is no longer
                         active.

     EPERM               The effective user ID does not match the
                         owner of the file and the process does
                         not have appropriate privilege.

     EROFS               The file referred to by path resides on
                         a read-only file system.

     fchmod will fail and the file mode will be unchanged if:

     EBADF               fildes is not an open file descriptor

     EIO                 An I/O error occurred while reading from
                         or writing to the file system.

     EINTR               A signal was caught during execution of
                         the fchmod system call.

     ENOLINK             path points to a remote machine and the
                         link to that machine is no longer
                         active.

     EPERM               The effective user ID does not match the
                         owner of the file and the process does
                         not have appropriate privilege.

     EROFS               The file referred to by fildes resides
                         on a read-only file system.

SEE ALSO
     chown(2), creat(2), fcntl(2), mknod(2), open(2), read(2),



                        Printed 11/19/92                   Page 3





CHMOD(2-SVR4)       RISC/os Reference Manual        CHMOD(2-SVR4)



     stat(2), write(2), mkfifo(3C), stat(5).
     chmod(1) in the User's Reference Manual.

DIAGNOSTICS
     Upon successful completion, a value of 0 is returned.  Oth-
     erwise, a value of -1 is returned and errno is set to indi-
     cate the error.
















































 Page 4                 Printed 11/19/92



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026