X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=draft%2Fman2%2Fchmod.2;h=403d700b14423dba17e07781b8fd452cfd1ff0d8;hb=5e1d43dd8cff93ca6fb21fea939c28233332b846;hp=5e8a039f8135b7a9a8bab56e984a8b01e26f4cf5;hpb=0da9bbd99ec28dbd3b5d09ed1710bcbbb7bf8202;p=linuxjm%2FLDP_man-pages.git diff --git a/draft/man2/chmod.2 b/draft/man2/chmod.2 index 5e8a039f..403d700b 100644 --- a/draft/man2/chmod.2 +++ b/draft/man2/chmod.2 @@ -1,4 +1,5 @@ .\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992 +.\" and Copyright (C) 2006, 2014 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this @@ -42,16 +43,23 @@ .\" Updated & Modified 2004-12-29, Yuichi SATO .\" Updated 2008-08-09, Akihiro MOTOKI , LDP v3.05 .\" -.TH CHMOD 2 2010\-09\-26 Linux "Linux Programmer's Manual" +.TH CHMOD 2 2014\-02\-21 Linux "Linux Programmer's Manual" .SH 名前 -chmod, fchmod \- ファイルのモードを変更する +chmod, fchmod, fchmodat \- ファイルのモードを変更する .SH 書式 +.nf \fB#include \fP .sp -\fBint chmod(const char *\fP\fIpath\fP\fB, mode_t \fP\fImode\fP\fB);\fP +\fBint chmod(const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB);\fP .br \fBint fchmod(int \fP\fIfd\fP\fB, mode_t \fP\fImode\fP\fB);\fP .sp +\fB#include \fP /* AT_* 定数の定義 */ +\fB#include \fP +.sp +\fBint fchmodat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB, int \fP\fIflags\fP\fB);\fP +.fi +.sp .in -4n glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): .in @@ -65,12 +73,27 @@ _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTEND || /* glibc 2.12 以降: */ _POSIX_C_SOURCE\ >=\ 200809L .RE .PD +.sp +\fBfchmodat\fP(): +.PD 0 +.ad l +.RS 4 +.TP 4 +glibc 2.10 以降: +_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L +.TP +glibc 2.10 より前: +_ATFILE_SOURCE +.RE +.ad +.PD .ad .SH 説明 -これらのシステムコールはファイルのアクセス許可 (permission) を変更する。 システムコール間の違いは、ファイルの指定の仕方だけである。 +システムコール \fBchmod\fP() と \fBfchmod\fP() は、ファイルのアクセス許可 (permission) を変更する。 +システムコール間の違いは、ファイルの指定の仕方だけである。 .IP * 2 -\fBchmod\fP() は、 \fIpath\fP で指定されたパス名を持つファイルの許可を変更する。 \fIpath\fP -がシンボリック・リンクの場合は、リンクの展開が行われる。 +\fBchmod\fP() は、 \fIpathname\fP で指定されたパス名を持つファイルの許可を変更する。 \fIpathname\fP +がシンボリックリンクの場合は、リンクの展開が行われる。 .IP * \fBfchmod\fP() は、オープンされたファイルディスクリプタ \fIfd\fP により参照されるファイルの許可を変更する。 .PP @@ -86,7 +109,7 @@ set\-group\-ID (以下の場合に (\fBexecve\fP(2) 実行時にプロセスの 新しいファイルのグループとして親ディレクトリと同じものを使う (\fBchown\fP(2) と \fB(\fPmkdir\fB(2)\fP の説明を参照) .TP \fBS_ISVTX\fP (01000) -スティッキー・ビット (sticky bit) (削除制限フラグ、 \fBunlink\fP(2) の説明を参照) +スティッキービット (sticky bit) (削除制限フラグ、 \fBunlink\fP(2) の説明を参照) .TP \fBS_IRUSR\fP (00400) 所有者による読み取り @@ -123,37 +146,58 @@ set\-group\-ID (以下の場合に (\fBexecve\fP(2) 実行時にプロセスの プロセスの実効グループ ID または補助的なグループ ID にマッチしない場合、 \fBS_ISGID\fP ビットはオフにされるが、これによってエラーが返されることはない。 -As a security measure, depending on the filesystem, the set\-user\-ID and -set\-group\-ID execution bits may be turned off if a file is written. (On -Linux this occurs if the writing process does not have the \fBCAP_FSETID\fP -capability.) On some filesystems, only the superuser can set the sticky -bit, which may have a special meaning. For the sticky bit, and for -set\-user\-ID and set\-group\-ID bits on directories, see \fBstat\fP(2). +安全のための処置として、 ファイルシステムによっては、ファイルの書き込みを行う時に セット・ユーザー ID とセット・グループ ID +ビットと実行ビットが オフにされることがある。 (Linux では、書き込みプロセスが \fBCAP_FSETID\fP +ケーパビリティを持っていない場合に、これが起こる。) ファイルシステムの中には、スーパーユーザーだけが +特別の意味を持つスティッキービットを設定できるものがある。 スティッキービットとディレクトリに対する セット・ユーザー (グループ) ID +ビットについては、 \fBstat\fP(2) を見よ。 + +.\" +.\" +NFS ファイルシステム上では、パーミッションを制限すると、 既にオープンされているファイルに対してすぐに影響が及ぶ。 +これはアクセス制御がサーバー上で行われているが、 オープンされているファイルはクライアント側で管理されているためである。 +クライアント側でファイル属性のキャッシュが有効になっている場合に、 パーミッションの制限を緩くすると、 +他のクライアントに情報が伝わるのが遅れるかもしれない。 +.SS fchmodat() +\fBfchmodat\fP() システムコールは \fBchmod\fP() と全く同様に動作するが、以下で説明する点が異なる。 + +\fIpathname\fP で指定されたパス名が相対パスの場合、このパス名はファイルディスクリプター \fIdirfd\fP +が参照するディレクトリに対する相対パスと解釈される (\fBchmod\fP() +に相対パス名を渡した場合のように、呼び出したプロセスのカレントワーキングディレクトリに対する相対パスではない)。 + +\fIpathname\fP で指定されたパス名が相対パスで、 \fIdirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 (\fBchmod\fP() +と同様に) \fIpathname\fP は呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。 -On NFS filesystems, restricting the permissions will immediately influence -already open files, because the access control is done on the server, but -open files are maintained by the client. Widening the permissions may be -delayed for other clients if attribute caching is enabled on them. +\fIpathname\fP で指定されたパス名が絶対パスの場合、 \fIdirfd\fP は無視される。 + +\fIflags\fP には 0 か、以下のフラグを指定することができる。 +.TP +\fBAT_SYMLINK_NOFOLLOW\fP +\fIpathname\fP +がシンボリックリンクの場合、リンクの展開を行わない。代わりに、リンク自身に対して操作を行う。このフラグは現在のところ実装されていない。 +.PP +\fBfchmodat\fP() の必要性についての説明については \fBopenat\fP(2) を参照。 .SH 返り値 成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 .SH エラー -Depending on the filesystem, other errors can be returned. The more general -errors for \fBchmod\fP() are listed below: +ファイルシステムによっては、下記の一覧にない他のエラーが返されることもある。 + +\fBchmod\fP() のごく一般的なエラーを挙げる: .TP \fBEACCES\fP パス名の構成要素に検索許可がない (\fBpath_resolution\fP(7) も見よ)。 .TP \fBEFAULT\fP -\fIpath\fP がアクセスできるアドレス空間外を指している。 +\fIpathname\fP がアクセス可能なアドレス空間の外を指している。 .TP \fBEIO\fP I/O エラーが発生した。 .TP \fBELOOP\fP -\fIpath\fP を解決する際に遭遇したシンボリック・リンクが多過ぎる。 +\fIpathname\fP を解決するときに、解決すべきシンボリックリンクが多すぎた。 .TP \fBENAMETOOLONG\fP -\fIpath\fP が長過ぎる。 +\fIpathname\fP が長過ぎる。 .TP \fBENOENT\fP ファイルが存在しない。 @@ -168,12 +212,12 @@ I/O エラーが発生した。 実効 UID がファイルの所有者と一致せず、プロセスに特権がない (Linux では \fBCAP_FOWNER\fP ケーパビリティを持たない)。 .TP \fBEROFS\fP -The named file resides on a read\-only filesystem. +ファイルが読み込み専用 (read only) のファイルシステム上にある。 .PP \fBfchmod\fP() で一般的なエラーを挙げる: .TP \fBEBADF\fP -ファイル・ディスクリプター \fIfd\fP が有効でない。 +ファイルディスクリプタ \fIfd\fP が有効でない。 .TP \fBEIO\fP 上記を参照。 @@ -183,12 +227,35 @@ The named file resides on a read\-only filesystem. .TP \fBEROFS\fP 上記を参照。 +.PP +\fBchmod\fP() で発生するのと同じエラーが \fBfchmodat\fP() でも起こる。 \fBfchmodat\fP() では以下のエラーも発生する。 +.TP +\fBEBADF\fP +\fIdirfd\fP が適切なファイルディスクリプタでない。 +.TP +\fBEINVAL\fP +\fIflags\fP に無効なフラグが指定された。 +.TP +\fBENOTDIR\fP +\fIpathname\fP が相対パスで、 \fIdirfd\fP がディレクトリ以外のファイルを参照しているファイルディスクリプタである。 +.TP +\fBENOTSUP\fP +\fIflags\fP に対応していないフラグ \fBAT_SYMLINK_NOFOLLOW\fP が指定された。 +.SH バージョン +\fBfchmodat\fP() はカーネル 2.6.16 で Linux に追加された。 ライブラリによるサポートはバージョン 2.4 以降の glibc +で利用できる。 .SH 準拠 -4.4BSD, SVr4, POSIX.1\-2001. +\fBchmod\fP(), \fBfchmod\fP(): 4.4BSD, SVr4, POSIX.1\-2001i, POSIX.1\-2008. + +\fBfchmodat\fP(): POSIX.1\-2008. +.SH 注意 +GNU C ライブラリの \fBfchmodat\fP() ラッパー関数は、このページで説明している POSIX +で規定されたインターフェースを実装している。このインターフェースは、内部で呼ばれる Linux のシステムコールとは異なる。システムコールは +\fIflags\fP 引き数を\fI持たない\fP。 .SH 関連項目 -\fBchown\fP(2), \fBexecve\fP(2), \fBfchmodat\fP(2), \fBopen\fP(2), \fBstat\fP(2), -\fBpath_resolution\fP(7) +\fBchown\fP(2), \fBexecve\fP(2), \fBopen\fP(2), \fBstat\fP(2), \fBpath_resolution\fP(7), +\fBsymlink\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.54 の一部 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.67 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man\-pages/ に書かれている。