access

ファイルのアクセス権限をチェックするにはaccessを使う。

Man page of ACCESS

呼び出し元プロセスから見てアクセスできるかを判定する模様。
(基本的に実行したユーザってことかな・・・。)

test.txtを普通に作った時のアクセス権限をチェックする。

第2引数が、R_OKで読み込みのみチェック、W_OKで書き込みのみチェック、X_OKで実行のみのチェック。

$ pwd
/home/bg1/project/cloud/github.com/Sample/unixsyscall/access/access/src/access
$ vi access.c
$ gcc access.c -o access
$ vi test.txt
$ ls -al
合計 36
drwxrwxr-x. 2 bg1 bg1  4096  9月 29 19:12 .
drwxrwxr-x. 3 bg1 bg1  4096  9月 29 18:59 ..
-rwxrwxr-x. 1 bg1 bg1 18384  9月 29 19:12 access
-rw-rw-r--. 1 bg1 bg1  1470  9月 29 19:12 access.c
-rw-rw-r--. 1 bg1 bg1     6  9月 29 19:12 test.txt
$ ./access
Read OK
Write OK
Exec NG
$

test.txtは664なので、読み込み書き込みは可能だが実行はできない。

Sample/unixsyscall/access/access/src/access at master · bg1bgst333/Sample · GitHub