ACCESS(2) FreeBSD システムコールマニュアル ACCESS(2)
名称
access, eaccess − ファイルのアクセス可能性をチェックする |
ライブラリ
標準 C ライブラリ (libc, −lc) |
書式
#include <unistd.h> int |
access(const char *path, int mode); int |
eaccess(const char *path, int mode); |
解説 |
access() システムコールと eaccess() システムコールは、 mode 引数によって 示されたアクセス許可について path 引数で指定されるファイルのアクセス可能 性をチェックします。 mode の値は、チェックされるアクセス許可 (読取り許可 については R_OK 、書込み許可については W_OK 、実行 / 検索許可については X_OK) のビット単位の OR、または存在試験 ( F_OK ) のどちらかです。 さらなる情報は、 intro(2) の ファイルアクセスパーミッションセクションを参 照してください。 eaccess() システムコールは、実効ユーザ ID とグループアクセスリストを用い て要求を許可します。一方 access() システムコールは、実効ユーザ ID の代わ りに実ユーザ ID を、実効グループ ID の代わりに実グループと残りのグループ アクセスリストを用います。 プロセスの実ユーザもしくは実効ユーザに適切な特権があり、 X_OK について成 功を示していても、実際にはファイルの実行許可ビットが設定されていないこと があります。同じことが、 R_OK および W_OK にも該当します。 |
戻り値
成功して終了したときには値 0 を返します。そうでない場合、値 -1 が返され、 グローバル変数 errno が設定されてエラーを示します。 |
エラー
ファイルへのアクセスは次の場合に拒絶されます: |
[ENOTDIR]
パスの構成要素中にディレクトリ以外のものが含まれていま す。 [ENAMETOOLONG] [ENOENT] [ELOOP] [EROFS] [ETXTBSY] [EACCES] [EFAULT] [EIO] セキュリティに関する考察 |
access() システムコールは、競合状態によって潜在的なセキュリティホールとな るので、使うべきではありません。ユーザ ID 設定とグループ ID 設定されたア プリケーションは、実効ユーザ ID もしくは実効グループ ID を復元するように してください。そして実ユーザ ID もしくは実グループ ID でのアクセスを、 access() を使用して模擬的にチェックするのではなく、直接実行するべきです。 不適切に使用された場合、 eaccess() 呼び出しも同様にして競合の対象となるこ とがあります。 |
関連項目
規格
access() システムコールは ISO/IEC 9945-1:1990 (‘‘POSIX.1’’) に適合してい ます。 |
歴史
access() 関数は Version 7 AT&T UNIX で登場しました。 FreeBSD 10.0 September 21, 2001 FreeBSD 10.0 |