Мы хотим имитировать поведение общесистемной маски 002 в определенном каталоге. foo
, чтобы обеспечить следующий результат:
foo
будет иметь 775 разрешенийfoo
и подкаталоги будут иметь 664 разрешенияПри условии, что ACL включен в нашем разделе это команда, которую мы придумали:
setfacl -R -d -m mask:002 foo
... но это не работает. Новые файлы, созданные в каталоге, выглядят так:
-rw - w-r - +
Когда я бегу getfacl
в новом файле я получаю:
# файл: newfile.py
# владелец: root
# группа: группа
пользователь :: rw-
группа :: rwx # эффективная: -w-
маска :: - w-
другое :: r--
Другими словами, применяя mask:200
с ACL есть не то же самое, что и применение umask 200
.
Так является есть ли способ применить umask для каталога с ACL?
Это типичная работа для ACL :-)
$ mkdir /tmp/foo
Установите разрешения для самого каталога
$ setfacl -m g::rwx -m o::rx /tmp/foo
Установите разрешения для вновь созданного каталога и файлов в этом каталоге.
$ setfacl -m default:g::rwx -m o::rx /tmp/foo
Тест
$ mkdir /tmp/foo/bar
$ touch /tmp/foo/bar/baz.py
$ ls -ld /tmp/foo/bar /tmp/foo/bar/baz.py
drwxrwxr-x+ 2 jdoe jdoe 4096 Mar 10 00:06 /tmp/foo/bar
-rw-rw-r-- 1 jdoe jdoe 0 Mar 10 00:06 /tmp/foo/bar/baz.py
mask:r-x
+ group:foo:rwx
=> действующие разрешения = r-x
)chmod 2755
), поэтому вы контролируете, какая группа может записывать в файл.setfacl -m group:dev_team:rwx
Вы можете использовать dnotify и сценарий, запускаемый каждый раз при создании файла. Видеть: https://serverfault.com/a/127686/30946