Я хочу установить ACL, например, для папки /tmp/test следующим образом:
Владелец /tmp/test — пользователь "gaspar", член группы "testgroup".
Пользователь "testuser" также является членом группы "testgroup", и я хочу предоставить права rwx только этому пользователю + владельцу (пользователь "gaspar").
Также мне нужно автоматически установить тот же acl для всех вновь создаваемых файлов/каталогов в /tmp/test.
Когда я устанавливаю facl следующим образом:
setfacl -Rdm u:testuser:rwx,g:testgroup:-,o::- /tmp/test/
getfacl -p /tmp/test/
дает разрешения:
# file: /tmp/test/
# owner: gaspar
# group: testgroup
user::rwx
group::---
other::---
default:user::rwx
default:user:testuser:rwx
default:group::---
default:group:testgroup:---
default:mask::rwx
default:other::---
И тогда у пользователя "testuser" нет прав на папку /tmp/test. Можете ли вы подсказать, в чем проблема, что мне исправить?
Когда я устанавливаю acl следующим образом (без опции «d»), у пользователя «testuser» есть необходимые разрешения, но, очевидно, вновь созданные файлы/каталоги не имеют такого же acl:
setfacl -Rm u:testuser:rwx,g:testgroup:-,o::- /tmp/test/
getfacl -p /tmp/test/
# file: /tmp/test/
# owner: gaspar
# group: testgroup
user::rwx
user:testuser:rwx
group::---
group:testgroup:---
mask::rwx
other::---
Буду признателен за любые советы!
решение1
В вашей системе файлы /tmp
исчезают при перезагрузке, верно? Возможно, это не лучшее место для постоянного решения. При установке ACL для каталога, который должен применять ACL ко всем новым объектам файловой системы в каталоге, не забудьте установить две маски: (1) маску для самого каталога и (2) маску по умолчанию (для всех новых объектов файловой системы).
setfacl -m u::rwx,g::r-x,o::--- /tmp/test
setfacl -d -m u::rwx,g::r-x,o::--- /tmp/test
Выше -m
переключатель является маской для /tmp/test
, и -d
переключатель делает маску маской по умолчанию для всех новых объектов файловой системы в том же каталоге. Это эквивалентно 0750. Также можно использовать восьмеричные значения.
Маски пользователя, группы и другие работают одинаково: g:groupname:---
или в комбинации: u:username:---,g:groupname:---,o::---
. Если не указывать имя пользователя или группы, маска применяется к текущему владельцу пользователя/группы.
Имейте в виду, что не все программное обеспечение знает о ACL. Например, не все клиенты SFTP/SCP пока знают о них.
решение2
Это работает так, как и должно.
man acl
по поводу списков ACL по умолчанию можно сказать следующее:
ТИПЫ ACL
Каждый объект можно рассматривать как связанный с ним ACL, который управляет дискреционным доступом к этому объекту; этот ACL называется ACL доступа. Кроме того, каталог может иметь связанный ACL, которыйуправляет начальным ACL доступа для объектов, созданных в этом каталоге; этот ACL называетсяACL по умолчанию.
(Выделено мной)
То, что вы указали в вашем ACL, заключается в том, что только владелец имеет права rwx для каталога. ACL по умолчанию для каталога определяет следующее:
- Все файлы, созданные внутри, будут иметь ACL, установленный таким же, как ACL по умолчанию для родительского каталога.
- все каталоги, созданные внутри, будут иметь оба своих ACL по умолчанию, установленные так же, как ACL по умолчанию родительского каталога
Если вы измените разрешения для родительского каталога или добавите ACL для группы/пользователя, разрешающий доступ, то все файлы внутри него будут работать так, как и ожидалось.
решение3
Вам нужно понять, что такое "user::rwx и default:user::rwx" Раздел по умолчанию для наследования acl.
Для получения дополнительной информации вам нужно прочитать "man setfacl" и, возможно, этот документ вам поможет:
https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.bpxb200/aclinhe.htm