最初のコマンドは、既存のファイル/ディレクトリの権限を変更します。-d
2番目のコマンドでは、順番にこれらのディレクトリ内のすべてのファイルのACLのデフォルトセットを提供する任意のディレクトリ、のために今後既定のアクセス許可を設定するために重要です。
注:どちらの場合も、コマンドは-R
スイッチを介して再帰的に実行されます。
-d
スイッチについては、setfacl
manページから:
-d, --default
All operations apply to the Default ACL. Regular ACL entries in the
input set are promoted to Default ACL entries. Default ACL entries
in the input set are discarded. (A warning is issued if that happens).
この抜粋はそれをかなりよく説明しています:
ACLには、アクセスACLとデフォルトACLの2つのタイプがあります。アクセスACLは、特定のファイルまたはディレクトリのアクセス制御リストです。デフォルトACLはディレクトリにのみ関連付けることができます。ディレクトリ内のファイルにアクセスACLがない場合は、ディレクトリのデフォルトACLのルールを使用します。デフォルトACLはオプションです。
出典:8.2。アクセスACLの設定。
例
このディレクトリ構造があるとします。
$ tree
.
|-- dir1
| |-- dirA
| | `-- file1
| `-- fileA
`-- file1
2 directories, 3 files
次にsetfacl
、質問の最初のコマンドを使用して権限を設定します。
$ setfacl -R -m u:saml:rwx -m u:samtest:rwX .
次の結果になります。
$ getfacl dir1/ file1
# file: dir1
# owner: saml
# group: saml
user::rwx
user:saml:rwx
user:samtest:rwx
group::rwx
mask::rwx
other::r-x
# file: file1
# owner: saml
# group: saml
user::rw-
user:saml:rwx
user:samtest:rwx
group::rw-
mask::rwx
other::r--
なければ-dR
、ここでのコマンドの実行、新しいディレクトリは、あなたのACLでカバーされないでしょう。
$ mkdir dir2
$ getfacl dir2
# file: dir2
# owner: saml
# group: saml
user::rwx
group::rwx
other::r-x
しかし、このディレクトリを削除してsetfacl -dR ...
コマンドを実行し、上記の操作を繰り返した場合:
$ rmdir dir2
$ setfacl -dR -m u:saml:rwx -m u:samtest:rwX .
これで、アクセス許可はかなり異なります。
$ getfacl dir1/ file1
# file: dir1/
# owner: saml
# group: saml
user::rwx
user:saml:rwx
user:samtest:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:saml:rwx
default:user:samtest:rwx
default:group::rwx
default:mask::rwx
default:other::r-x
# file: file1
# owner: saml
# group: saml
user::rw-
user:saml:rwx
user:samtest:rwx
group::rw-
mask::rwx
other::r--
そして、新しく作成されたディレクトリは、これらの「デフォルト」権限を取得します。
$ mkdir dir2
$ getfacl dir2
# file: dir2
# owner: saml
# group: saml
user::rwx
user:saml:rwx
user:samtest:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:saml:rwx
default:user:samtest:rwx
default:group::rwx
default:mask::rwx
default:other::r-x
これらの権限を有効にdir2
すると、以下のファイルにdir2
もこれらの権限が適用されます。
$ touch dir2/fileA
$ getfacl dir2/fileA
# file: dir2/fileA
# owner: saml
# group: saml
user::rw-
user:saml:rwx #effective:rw-
user:samtest:rwx #effective:rw-
group::rwx #effective:rw-
mask::rw-
other::r--
app/cache
と呼ばれるディレクトリを含むディレクトリがある場合dev
、最初のコマンドはそれに適用されますが、2番目のコマンドは適用されません。そして、後で別のディレクトリが追加された場合(例:)prod
、2番目のコマンドは権限を設定しますか?そうでない場合は、2番目のコマンドをスキップできますか?