ACLと標準のファイル権限は同期されているようです。
$ getfacl test.cpp
# file: test.cpp
# owner: scdmb
# group: scdmb
user::rw-
group::rw-
other::r--
$ ls -l test.cpp
-rw-rw-r-- 2 scdmb scdmb 173 Jan 1 1970 test.cpp
ただし、私が読んだように、iノードにはファイルパーミッション(i_modeフィールド)を保存するための2つの場所と、ACLが配置されるこれらの拡張ファイル属性があります。それで、ファイルにアクセスするとき、どのファイルパーミッションが使用されますか?標準またはACL?それとも、これは異なる方法で提示された同じものですか?
getfacl
manpage から:
Getfaclの出力形式は次のとおりです。
1: # file: somedir/
2: # owner: Lisa
3: # group: staff
4: user::rwx
5: user:joe:rwx #effective:r-x
6: group::rwx #effective:r-x
7: group:cool:r-x
8: mask:r-x
9: other:r-x
10: default:user::rwx
11: default:user:joe:rwx #effective:r-x
12: default:group::r-x
13: default:mask:r-x
14: default:other:---
4、6、9行目は、ファイルモード許可ビットのユーザー、グループ、およびその他のフィールドに対応しています。これらの3つは、ベースACLエントリと呼ばれます。 5行目と7行目は、名前付きユーザーおよび名前付きグループのエントリです。 8行目は有効な権利マスクです。このエントリは、すべてのグループと指定されたユーザーに付与される有効な権限を制限します。 (ファイル所有者およびその他の権限は、有効な権利マスクの影響を受けません。他のすべてのエントリは影響を受けます。)10〜14行目は、このディレクトリに関連付けられたデフォルトのACLを示しています。ディレクトリにはデフォルトのACLがある場合があります。通常のファイルにはデフォルトのACLがありません。
::
ではなく<user|group|other>:<name>:<perms>
のみの行が表示されるという事実は、拡張ACLがないことを示しています。この特定のファイルでは、ls -la
(ユーザー/グループ/その他のアクセス許可ビット(別名「ベースACL」)に表示されるのと同じ情報を取得するための凝った方法としてgetfacl
を使用しています。
どの権限が使用されるかについて:簡単な答えは、ACLの順序に依存するということです。詳細については、 ここ および ここ を参照してください。一般に、拒否がACLリストの最初に来る場合、後で明示的な許可を使用して許可を返すことはできません。拒否は常に優先されます。
Unix.SEには、さらに多くの参照があるさらに長い記事があります ここ 。