mkdir -p игнорирует facl?
Я пытаюсь навязать файл Perms 777 для определенного набора каталогов. Я использовал "setfacl -m d: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", я получаю perms, соответствующие umask, а не acl.
$ mkdir -p test1
$ ll -d test1
drwxrwsr-x+ 2 blah blah 4096 Oct 28 10:27 test1
Я что-то упускаю?
1 ответ
Я считаю, что это правильное поведение. Глядя на инфо 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 в родительском каталоге после того, как все будет создано.