Настройка umask для каждого каталога с использованием ACL

Мы хотим подражать поведению общесистемного umask 002 в определенном каталоге foo, чтобы обеспечить следующий результат:

  1. Все подкаталоги, созданные под foo будет иметь 775 разрешений
  2. Все файлы, созданные под foo и подкаталоги будут иметь 664 разрешения
  3. 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

Другие вопросы по тегам