setfacl:これら2つのコマンドは同じですか?

setfacl:これら2つのコマンドは同じですか?

Symfony2をインストールするために特定のサーバーに対する権限を設定するデプロイスクリプト(capifonyベース)があります。複数のディレクトリでこれを行うための次の2つのコマンドが含まれています。

setfacl -R -m u:www-data:rwx -m u:`whoami`:rwX app/cache
setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwX app/cache

これら2つのコマンドは、権限を変更する方法としてSymfony2サイトにありますが、私の目には驚くほど似ているようです。だからマンページを見て、setfacl2番目のコマンドは最初のコマンドとまったく同じことをしますが、追加のオプションがもう1つ含まれていることを理解しました。私の質問は私の家が正しいですか?それでは、最初のコマンドを削除しても同じ効果はありますか?

答え1

最初のコマンドは、既存のファイル/ディレクトリの権限を変更します。 2 番目のコマンドのコマンドは、-dすべてのディレクトリにデフォルトの権限を設定するために不可欠です。これにより、そのディレクトリ内のすべてのファイルのデフォルトのACLセットが提供されます。

メモ:どちらの場合も、コマンドは-Rスイッチを介して繰り返し実行されます。

スイッチについては、マニュアルページの以下を-d参照してください。setfacl

   -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--

関連情報