Я хочу использоватьsetfaclчтобы установить разрешения dir
для группы пользователей. Я делаю что-то вроде этого:
mkdir /Employee
chgrp employeers /Employee
setfacl -m d:g::rwx /Employee
И теперь, когда я пытаюсь создать файл (от пользователей, входящих в эту группу), я получаю ошибку «Нет разрешения».
root@debian:~# ls -la /Employee
all 8
drwxr-xr-x+ 2 root employeers 4096 maj 21 14:50 .
drwxr-xr-x 23 root root 4096 maj 21 14:50 ..
Что я делаю не так?
решение1
d
— это сокращение от default
. Разрешения по умолчанию и фактические разрешения независимы. Запустите команду setfacl второй раз без d:
, тогда разрешения должны работать так, как нужно. Я предполагаю, что вы хотите получить эффект от обеих команд.
Вывод getfacl
может подсказать вам этот вывод,
- показ
default:
развернутого - показаны исходные записи контроля доступа, которые не содержат слово «default», что указывает на то, что в сделанной вами записи есть что-то другое.
В свою очередь, +
в выводе ls -l
, показывает, что есть ACE, которые разрешают доступ, который иначе не ожидался бы от базового режима (нет способа, которым стандартные ACE POSIX могут запретить доступ, разрешенный базовым режимом, который вы видите)[1]. После второй команды setfacl вы заметите, что базовый режим меняется на rwxrwxr-x
. Это происходит потому, employeers
что это основная группа файла, и setfacl избегает создания дублирующей записи.
[1] Списки контроля доступа Windows и NFSv4 позволяют запрещать записи. Многие считают это ловушкой сложности, включая страницу руководства для nfs4_acl. Естественно, это означает, что порядок ACL имеет значение. По-видимому, графические интерфейсы Windows меняют их на «предпочтительный» порядок с явными запрещающими записями в начале и унаследованными записями в конце.