| 日本−日本語 |
|
|
|
![]() |
HP-UX リファレンス: セクション 2 : システムコール > ggetaccess(2)HP-UX 11i Version 2: September 2004 |
|
名称getaccess ― あるユーザーの、ファイルへの実効アクセス権の取得。 構文#include <sys/getaccess.h> 説明getaccess() は、存在するファイルへの、あるユーザー ID のアクセス権 (読取り、書込み、実行/探索) を返します。 path はあるファイルへのパス名を指します。呼出しが成功すると、そのファイル に対するあるユーザーの実効アクセス権 (モード) を表わす、0 以上の値を返します。 アクセス権は、ビット (R_OK、 W_OK、 および X_OK) の 論理 OR として表わされます。これらの値はヘッダー <unistd.h> に定義されています。 0 が返された場合、アクセスが拒否されることを意味します。 uid パラメータはユーザー ID です。 <sys/getaccess.h> に定義されている特別な値は、呼び出したプロセスの実行、リアル、あるいは セーブされたユーザー ID を表わします。
ngroups は gidset 中のグループ ID の数で、 NGROUPS_MAX + 1 を超えません (NGROUPS_MAX は <limits.h> で定義されています )。 ngroups パラメータが正のときは、 gidset パラメータはチェックのときに使うグループ ID の値の配列です。 ngroups が認められた負の値であるときは、 gidset は無視されます。 ngroups が <sys/getaccess.h> で定義される特別な負の値であるとき、 プロセスの実効、リアル、およびセーブされたユーザー ID とその補助グループリストのさまざまな組合わせを表わします。
label と privs パラメータは将来の拡張用のものです。 現在は、これらのパラメータの値は (void *) 0 でなければなりません。 アクセス制御リストのアクセスチェックのルールは acl(5) で述べられています。 これに加えて、 読取り専用ファイルシステム上のファイルや、実行中の テキストを共有したプログラムの W_OK ビットはクリアされます。 access(2) と同様に、 書込みのできるテキストを共有したプログラムの X_OK ビットは消されません。これは書込みのできるファイルがテキストを共有したプログラム であることを知る簡単な方法がないからです。 呼び出したユーザー ID が 0 であるか、あるいは UID_EUID、 UID_RUID、 または UID_SUID で ( <sys/getaccess.h> を参照) プロセスの、各々のユーザー ID が 0 のとき、 R_OK と W_OK は常にセットされます。ただし、 読取り専用ファイルシステム上のファイルまたは実行中の テキストを共有したプログラムの W_OK がクリアされるときはセットされません。 X_OK がセットされるのは、ファイルが通常のファイルでないか、任意のファイルの ACL エントリーの中の実行ビットがセットされているときであり、かつそのときのみです。 getaccess() は、指定されたユーザー ID に関係なく、まず呼出し側の実効ユーザー ID、 有効グループ ID、 および補助グループリストによって、 path の各ディレクトリ構成要素をチェックします。 呼出し側がそのファイルへのパスを捜せないとき、 「no access allowed」ではないエラーが起きます。 (この場合は、呼出し側で、そのファイルのことを調べても意味がありません)。 access(2) と getaccess(2) の比較次の表は access() と getaccess() のさまざまな性質について比較したものです
戻り値getaccess() は正常終了すると、指定されたファイルへの指定されたユーザーのアクセス権を表す負でない 値を返します。 異常終了すると -1 を返し、エラーを示す値が errno にセットされます。 エラーgetaccess() は次の条件のいずれかを満たす場合に異常終了します。
例以下の呼出しでは、ファイル ``test'' への呼出し側の実効アクセス権が 調べられて、ユーザーが読取りアクセスを持っていれば成功します。 #include <unistd.h> 以下は、ファイル /tmp/hold へのユーザー ID 23、 グループ ID 109 のアクセス権をテストする方法です。 int gid = 109; 必要に応じ、以下のコードは、プロセスの有効グループ ID を含む gidset を生成します。 #include <limits.h> |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||