euidaccess, eaccess -
ファイルへのアクセス権を実効ユーザーでチェックする
#define _GNU_SOURCE /* feature_test_macros(7) 参照 */
#include <unistd.h>
int euidaccess(const char *pathname, int mode);
int eaccess(const char *pathname, int mode);
access(2) と同様、
euidaccess()
は引数
pathname
で指定されたファイルの許可
(permission)
と存在のチェックを行う。
access(2) はプロセスの実
(real) ユーザーID /
実グループID
を用いてチェックを行うのに対し、
euidaccess() は実効 (effective) ID
を用いる。
mode は
R_OK,
W_OK,
X_OK,
F_OK
の一つ以上から構成されるマスクである。
R_OK,
W_OK,
X_OK,
F_OK は
access(2)
と同じ意味を持つ。
eaccess() は
euidaccess()
の同義語であり、他のいくつかのシステムとの互換性のために提供されている。
成功した場合
(要求した全てについて許可が得られたら)、ゼロが返される。
エラーの場合 (
mode
の少なくとも一つのビットで要求した許可がなかった場合や、
他のエラーが起こった場合)、-1
が返され、
errno
が適切に設定される。
access(2) と同じ。
eaccess() 関数は glibc
のバージョン 2.4
で追加された。
この節で使用されている用語の説明については、
attributes(7) を参照。
インターフェース |
属性 |
値 |
euidaccess(), eaccess() |
Thread safety |
MT-Safe |
これらの関数は非標準である。
他のいくつかのシステムには
eaccess() 関数がある。
警告:
ある操作を実行する前にこの関数を使ってファイルに対するプロセスのアクセス許可を
確認してから、その情報に基づいて操作を行うと、競合条件が発生する可能性がある。
これは二つの操作の間でファイルのアクセス許可が変化する場合があるからである。
一般的には、必要な操作のみを行い、その際に発生したアクセス許可に関するエラーを
処理する方が安全である。
この関数は常にシンボリックリンクの展開を行う。
シンボリックリンクのアクセス許可を確認する必要がある場合は、
フラグ
AT_EACCESS と
AT_SYMLINK_NOFOLLOW
を付けて
faccessat(2)
を使うこと。
access(2),
chmod(2),
chown(2),
faccessat(2),
open(2),
setgid(2),
setuid(2),
stat(2),
credentials(7),
path_resolution(7)
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。