Настройка umask для каждого каталога с использованием ACL
Мы хотим подражать поведению общесистемного umask 002 в определенном каталоге foo
, чтобы обеспечить следующий результат:
- Все подкаталоги, созданные под
foo
будет иметь 775 разрешений - Все файлы, созданные под
foo
и подкаталоги будут иметь 664 разрешения - 1 и 2 произойдут для файлов / каталогов, созданных всеми пользователями, включая root, и всех демонов.
Предполагая, что ACL включен в нашем разделе, это команда, которую мы придумали:
setfacl -R -d -m mask:002 foo
... но это не работает. Новые файлы, созданные в каталоге, в конечном итоге выглядят так:
-RW - сог - +
Когда я бегу getfacl
на новый файл я получаю:
# file: newfile.py
# владелец: root
# group: agroup
Пользователь:: rw-
group:: rwx #effective: -w-
маска:: - w-
другое:: r--
Другими словами, применяя mask:200
с ACL не совпадает с применением umask 200
,
Так есть ли способ применить маску для каждого каталога с помощью ACL?
2 ответа
Это типичная работа для 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
Пояснения
- Концепция маски сильно отличается с маской разрешений ACL и Unix. маска ACL является атрибутом файла... который ограничивает максимальное разрешение, предоставляемое через ACL (
mask:r-x
+group:foo:rwx
=> действующие разрешения =r-x
) - Предупреждение: изменение разрешения группы Unix, также изменяет маску ACL (по замыслу!).
Предложения
- Используйте setgid (как
chmod 2755
), поэтому вы контролируете, какая группа может записать в файл. - и / или явно предоставлять разрешения группе
setfacl -m group:dev_team:rwx
Вы можете использовать dnotify и скрипт, запускаемый при каждом создании файла. См.: /questions/233280/kak-ustanovit-strukturu-razreshenij-dlya-neskolkih-polzovatelej-redaktiruyuschih/233285#233285