ACCESS(2)

名称
access - ファイルまたはパス名のアクセス許可をチェックする

ライブラリ
libc

書式
<unistd.h> int access(const char *path, int mode)

解説
access() 関数は、 mode によって示されたアクセス許可について path で指定されるファイルのアクセス可能性をチェックします。 mode の値は、チェックされるアクセス許可 (読取り許可については R_OK 、書込み許可については W_OK 、実行 / 検索許可については X_OK) のビット単位の OR、または存在試験 F_OK です。 パス名 path のすべての構成要素がアクセス許可についてチェックされます (F_OK も含まれます)。

実ユーザ ID は実効ユーザ ID の代わりに使用され、 実グループアクセスリスト (実グループ ID を含む) がパーミッションを検証するために実効 ID の代わりに使用されます。

プロセスに適切な特権があり、 X_OK について成功を示していても、実際にはファイルの実行許可ビットが 設定されていないことがあります。同じことが、 R_OK および W_OK にも該当します。

戻り値
path が見つからない場合、または希望のアクセスモードが認められない場合、 値 -1 が返されます。そうでない場合は、値 0 が返されます。

エラー
ファイルへのアクセスは次の場合に拒絶されます。

[ENOTDIR]
    パスの構成要素中にディレクトリ以外のものが含まれています。

[ENAMETOOLONG]
    パス名の構成要素が 255 文字を越えているか、 またはパス名全体が 1023 文字を越えています。

[ENOENT]
    指定されたファイルが存在しません。

[ELOOP]
    パス名を変換するときに検出されたシンボリックリンクが多すぎます。

[EROFS]
    読取り専用ファイルシステム上のファイルについて書込みアクセスが 要求されました。

[ETXTBSY]
    現時点で実行中の純粋な手続き (共有テキスト) ファイルについて書込みアクセスが要求されています。

[EACCES]
    ファイルモードの許可ビットが要求されたアクセスを許容しないか、 またはパスの構成要素について検索許可が拒絶されています。 ファイルの所有者は ``所有者 (owner)'' の読取り、書込み、 および実行のモードビットに従ってチェックされた許可を持ちます。 所有者以外のファイルのグループのメンバは ``グループ (group)'' モードビットに 従ってチェックされた許可を持ち、 他のすべてのものは ``その他 (other)'' モードビットに 従ってチェックされた許可を持ちます。

[EFAULT]
    path は、プロセスに割り当てられたアドレス空間の範囲外を指しています。

[EIO]
    ファイルシステムに読み書きしている間に入出力エラーが発生しました。

関連項目
chmod(2), stat(2)

規格
access() 関数は p1003.1-90 に準拠しています。

警告
access() は、セキュリティホールになる可能性があり、決して使用しないようにしてください。

歴史
access() 関数は AT&T UNIX で登場しました。