chmod

CHMOD(2)                          System calls                          CHMOD(2)



名前
       chmod, fchmod - ファイルのモードを変更する

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

       int chmod(const char *path, mode_t mode);
       int fchmod(int fildes, mode_t mode);

説明
       path で与えられたファイル、 または filedes で参照されるファイルのモードを変更する。

       モードは、次の各モードの or をとったもので指定する:


              S_ISUID   04000 実行時のセット・ユーザー・ID(set user ID)

              S_ISGID   02000 実行時のセット・グループ・ID(set group ID)

              S_ISVTX   01000 スティッキー(sticky)ビット

              S_IRUSR (S_IREAD)
                        00400 所有者(owner)による読み取り(read)

              S_IWUSR (S_IWRITE)
                        00200 所有者による書き込み(write)

              S_IXUSR (S_IEXEC)
                        00100 所有者による実行(execute)/検索(search)

              S_IRGRP   00040 グループによる読み取り

              S_IWGRP   00020 グループによる書き込み

              S_IXGRP   00010 グループによる実行/検索

              S_IROTH   00004 他人(others)による読み取り

              S_IWOTH   00002 他人による書き込み

              S_IXOTH   00001 他人による実行/検索


       プロセスの実効(effective)UIDがゼロであるか、 ファイルの所有者と一致しなければならない。

       実効UIDまたは実効GIDが、実行ビット設定するのに適切でなければならない。

       ファイル・システムによっては、ファイルの書き込みを行う時に セット・ユーザーIDとセットグループIDビットと実行ビットが
       オフにされることがある。ファイル・システムの中には、 スーパー・ユーザーだけがスティッキー・ビットを設定できる。
       それは特別な意味をもつ。(ディレクトリの場合、所有者かスーパー・ユーザー だけがファイルを削除できる)


返り値
       成功すると、0 を返す。失敗すると、-1を返し、 errno に適切な値を設定する。

エラー
       ファイルシ・ステムによっては他のエラーが返す場合がある。 chmod で一般的なエラーを以下に挙げる


       EPERM   実効UIDがファイルの所有者と一致せず、スーパー・ユーザーでもない。

       EROFS   ファイルが読み込み専用(read only)のファイル・システム上にある。

       EFAULT  path が割り当てられたアドレス空間外を指している。

       ENAMETOOLONG
               path が長過ぎる。

       ENOENT  ファイルが存在しない。

       ENOMEM  カーネルに十分なメモリがない。

       ENOTDIR path の構成要素がディレクトリではない。

       EACCES  パス名の構成要素に検索許可がない。

       ELOOP   path を解決する際に遭遇したシンボリック・リンクが多過ぎる。

       fchmod で一般的なのエラーを挙げる:

       EBADF   ディスクリプターが有効でない。

       ENOENT  上記を参照。 EIO iノード(inode)を修正する際に低レベル I/O エラーが発生した。 EPERM 上記を参照。

       EROFS   上記を参照。

準拠
       chmod は SVr4, SVID, POSIX, X/OPEN, 4.4BSD と互換性がある。 SVr4 は EINTR, ENOLINK,
       EMULTIHOP は返すが ENOMEM は返さない。 POSIX.1 には ENOMEM, ELOOP についての記述はない。

       fchmod は 4.4BSD, SVr4 と互換性がある。 SVr4 には他に EIO, EINTR, ENOLINK エラー状態の記述はない。

       POSIX と X/OPEN にはスティッキー・ビットについての記述はない。

関連項目
       open(2), chown(2), stat(2)



                                January 12, 1997                        CHMOD(2)