web-dev-qa-db-ja.com

ファイル作成時にデフォルトの(継承しない)ACL権限を設定するにはどうすればよいですか?

これはfreenasボックス(FreeNAS-9.3-STABLE-201506292130)付きです。

DebianベースのLinuxでは、通常、ファイル/ディレクトリに対するデフォルトのパーミッションは644/755です(現在は664/775?)。私が理解しているように、これは、umaskが022または002に設定されているために発生します。これは、新しいファイルを作成するためのデフォルトのアクセス許可を管理します。ただし、freenas(windows aclスタイルのパーミッション)では、デフォルトのファイル作成は単にそれを含むディレクトリのパーミッションを継承します。 setfaclのmanページからわかります

setfacl(1)のマニュアルページ

継承フラグがあること。ただし、継承ではなくデフォルトを探しています。これを変更して、作成動作をDebianベースのシステムで行われる動作に近づける方法はありますか?つまり、ファイルを644、ディレクトリを755にします。ディレクトリがアクセス許可として使用されるため、新しく作成されたファイルが755のアクセス許可を取得するだけでは不十分です。

私は何かを機能させるために頭を悩ませてきました。私は現在NFSv4ACLを使用しており、POSIX ACLを使用しようとすると「ブランドの不一致」エラーが発生するため、windows-style、freenas、freebsd、NFSv4、setfacl/getfaclコマンドでできることを使用し続けています。そして、私が試したものから上記の動作を得ることができませんでした。

$ mkdir test
$ cd test
$ ls -lat
drwxr-xr-x+  2 user  user   2 Aug  1 12:40 . 
drwxr-xr-x+ 67 user  user  67 Aug  1 12:40 ..
$ touch testfile
$ ls -lat
drwxr-xr-x+  2 user  user   3 Aug  1 12:40 .
-rwxr-xr-x+  1 user  user   0 Aug  1 12:40 testfile
drwxr-xr-x+ 67 user  user  67 Aug  1 12:40 ..
# file: .
# owner: user
# group: user
            owner@:rwxpDdaARWcCos:fd----:allow
            group@:r-x---a-R-c--s:fd----:allow
         everyone@:r-x---a-R-c--s:fd----:allow
$ getfacl testfile
# file: testfile
# owner: user
# group: user
            owner@:rwxpDdaARWcCos:------:allow
            group@:r-x---a-R-c--s:------:allow
         everyone@:r-x---a-R-c--s:------:allow
4
Joe

NFSv4ACLには「デフォルトACL」はありません。ただし、何を何によって継承するかを正確に制御できます。特に、ファイルに継承されるACEと、ディレクトリに継承できる別のセットを追加できます。このように、最初の3つはディレクトリに適用され、次の3つはファイルに適用されます。ディレクトリは両方を継承しますが、「file」エントリには「i」(inherit_only)フラグが設定されるため、ディレクトリ自体には適用されません。ディレクトリ内のファイルによってのみ継承されることに注意してください。したがって、これは親ディレクトリのACLです。

        owner@:rwxp----------:-di----:allow
        group@:r-x-----------:-di----:allow
     everyone@:r-x-----------:-di----:allow
        owner@:rw-p----------:f-i----:allow
        group@:r-------------:f-i----:allow
     everyone@:r-------------:f-i----:allow
        owner@:rwxp--aARWcCos:-------:allow
        group@:r-x---a-R-c--s:-------:allow
     everyone@:r-x---a-R-c--s:-------:allow

これはファイルによって継承されるものです(「I」フラグはエントリが継承されたことを意味します。FreeBSD11-CURRENTより前には存在しませんでした):

        owner@:rw-p----------:------I:allow
        group@:r-------------:------I:allow
     everyone@:r-------------:------I:allow

これはディレクトリによって継承されるものです(「i」フラグは「inherit_only」を意味します-ACEは存在しますが、実際のアクセス許可には影響しません。継承されるだけです):

        owner@:rwxp----------:-d----I:allow
        group@:r-x-----------:-d----I:allow
     everyone@:r-x-----------:-d----I:allow
        owner@:rw-p----------:f-i---I:allow
        group@:r-------------:f-i---I:allow
     everyone@:r-------------:f-i---I:allow