Provided by: manpages-ja-dev_0.5.0.0.20131015+dfsg-2_all bug

名前

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

書式

       #include <sys/stat.h>

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

   glibc 向けの機能検査マクロの要件 (feature_test_macros(7)  参照):

       fchmod():
           _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
           || /* glibc 2.12 以降: */ _POSIX_C_SOURCE >= 200809L

説明

       これらのシステムコールはファイルのアクセス許可  (permission) を変更する。 システムコール間
       の違いは、ファイルの指定の仕方だけである。

       * chmod()  は、 path で指定されたパス名を持つファイルの許可を変更する。 path  がシンボリッ
         クリンクの場合は、リンクの展開が行われる。

       * fchmod()  は、オープンされたファイルディスクリプタ fd により参照されるファイルの許可を変
         更する。

       新しいファイル許可は mode で指定される。 mode は、以下に示す値の 0 個以上の OR (論理和) を
       とって作成される ビットマスクである。

       S_ISUID  (04000)  set-user-ID (execve(2)  時にプロセスの実効ユーザ ID にセットされる)

       S_ISGID  (02000)  set-group-ID (以下の場合に (execve(2)  実行時にプロセスの実効グループ ID
                         にセットされる、 強制ロック (mandatory locking) を行う (fcntl(2)  の説明
                         を参照)、   新しいファイルのグループとして親ディレクトリと同じものを使う
                         (chown(2)  と (mkdir(2) の説明を参照)

       S_ISVTX  (01000)  スティッキービット (sticky bit) (削除制限フラグ、 unlink(2)   の説明を参
                         照)

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

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

       S_IXUSR  (00100)  所有者による実行  (execute) / 検索 (search)  (「検索」はディレクトリに対
                         して適用されるもので、  そのディレクトリ内のエントリーへアクセスできるか
                         を意味する)

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

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

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

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

       S_IWOTH  (00002)  他人による書き込み

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

       呼び出したプロセスの実効 (effective) UID がファイルの所有者と一致するか、 そのプロセスが特
       権を持たなければならない (Linux では CAP_FOWNER ケーパビリティ (capability) を持たなければ
       ならない)。

       呼び出したプロセスに特権がなく  (Linux では CAP_FSETID ケーパビリティがなく)、かつファイル
       のグループ ID が プロセスの実効グループ ID または補助的なグループ ID  にマッチしない場合、
       S_ISGID ビットはオフにされるが、これによってエラーが返されることはない。

       安全のための処置として、 ファイルシステムによっては、ファイルの書き込みを行う時に セット・
       ユーザー ID とセット・グループ ID ビットと実行ビットが オフにされることがある。 (Linux  で
       は、書き込みプロセスが    CAP_FSETID   ケーパビリティを持っていない場合に、これが起こる。)
       ファイルシステムの中には、スーパーユーザーだけが  特別の意味を持つスティッキービットを設定
       できるものがある。 スティッキービットとディレクトリに対する セット・ユーザー (グループ) ID
       ビットについては、 stat(2)  を見よ。

       NFS ファイルシステム上では、パーミッションを制限すると、  既にオープンされているファイルに
       対してすぐに影響が及ぶ。 これはアクセス制御がサーバー上で行われているが、 オープンされてい
       るファイルはクライアント側で管理されているためである。      クライアント側でファイル属性の
       キャッシュが有効になっている場合に、 パーミッションの制限を緩くすると、 他のクライアントに
       情報が伝わるのが遅れるかもしれない。

返り値

       成功した場合は 0 が返される。エラーの場合は -1 が返され、 errno が適切に設定される。

エラー

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

       EACCES パス名の構成要素に検索許可がない (path_resolution(7)  も見よ)。

       EFAULT path がアクセスできるアドレス空間外を指している。

       EIO    I/O エラーが発生した。

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

       ENAMETOOLONG
              path が長過ぎる。

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

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

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

       EPERM  実効  UID がファイルの所有者と一致せず、プロセスに特権がない (Linux では CAP_FOWNER
              ケーパビリティを持たない)。

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

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

       EBADF  ファイルディスクリプタ fd が有効でない。

       EIO    上記を参照。

       EPERM  上記を参照。

       EROFS  上記を参照。

準拠

       4.4BSD, SVr4, POSIX.1-2001.

関連項目

       chown(2), execve(2), fchmodat(2), open(2), stat(2), path_resolution(7)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 3.54 の一部  である。プロジェクト
       の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。