web-dev-qa-db-ja.com

mkdir -pはfaclを無視しますか?

特定のdirのセット全体で777のファイルパーマを適用しようとしています。 「setfacl-md:o :: rwx」を使用して、適切な権限と思われるものを取得しました

$ getfacl .
# file: .
# owner: blah
# group: blah
# flags: -s-
user::rwx
group::rwx
other::rwx
default:user::rwx
default:group::rwx
default:other::rwx

Mkdirを実行すると、適切な権限を持つdirが取得されます。

$ mkdir test
$ ll -d test
drwxrwsrwx+ 2 blah blah 4096 Oct 28 10:26 test

「mkdir-p」を実行すると、ACLではなくumaskに一致するパーマが取得されます。

$ mkdir -p test1
$ ll -d test1
drwxrwsr-x+ 2 blah blah 4096 Oct 28 10:27 test1

足りないものはありますか?

4
Kevin

これが正しい動作だと思います。 info mkdirを見てください:

`-p'
`--parents'
     Make any missing parent directories for each argument, setting
     their file permission bits to the umask modified by `u+wx'.  Ignore
     existing parent directories, and do not change their file
     permission bits.

     To set the file permission bits of any newly-created parent
     directories to a value that includes `u+wx', you can set the umask
     before invoking `mkdir'.  For example, if the Shell command
     `(umask u=rwx,go=rx; mkdir -p P/Q)' creates the parent `P' it sets
     the parent's permission bits to `u=rwx,go=rx'.  To set a parent's
     special mode bits as well, you can invoke `chmod' after `mkdir'.
     *Note Directory Setuid and Setgid::, for how the set-user-ID and
     set-group-ID bits of newly-created parent directories are
     inherited.

したがって、mkdir -pはumask値(u+rwで変更)を使用して、ツリーにないディレクトリを作成します。これは、すでに存在する親ディレクトリのアクセス許可にどのように対処するかという問題を検討する場合に意味があります。存在しますか?

抜粋にあるように、コマンドを実行する前にumaskを変更できますが、すべてが作成された後、親ディレクトリで再帰的なchmodを実行する方がはるかに簡単です。

4
Brett Levene