У меня есть файловая система NFS4 с настройкой аутентификации на основе AD и соответствующими ACLS. Я контролирую доступ к машинам, которые монтируют файловую систему, поэтому списки ACL очень простые. Один запрещает пользователям переименовывать или удалять папки на родительском уровне. Второй ACL дает «всем» и «пользователям домена» полный доступ к «подпапкам и файлам».
у меня проблема в одной из подпапок, где есть файл * .pax.gz. Если я войду в клиент Linux и перейду в эту папку, я смогу увидеть файл и правильные разрешения. Если я запустил gunzip "filename" затем создается файл * .pax, но разрешения "Все" и "Пользователи домена" пропадают, и я становлюсь владельцем этого файла.
Можно ли установить ACL или что-то еще, что в конечном итоге приведет к тому, что файл * .pax сохранит те же разрешения, что и файл * .pax.gz?
Вам нужно добавить ACE в родительский каталог с помощью 'f' и 'd' flags, чтобы заставить вновь созданные файлы и каталоги наследовать эти ACE.
со страницы руководства nfs4_acl:
INHERITANCE FLAGS - can be used in any directory ACE d directory-inherit - newly-created subdirectories will inherit the ACE. f file-inherit - newly-created files will inherit the ACE, minus its inheritance flags. Newly-created subdirectories will inherit the ACE; if directory-inherit is not also specified in the parent ACE, inherit-only will be added to the inherited ACE. n no-propagate-inherit - newly-created subdirectories will inherit the ACE, minus its inheritance flags. i inherit-only - the ACE is not considered in permissions checks, but it is heritable; however, the inherit-only flag is stripped from inherited ACEs.
Чтобы правильно хранить и восстанавливать информацию метаданных в виде списков управления доступом и т.п., вы должны использовать tar -pzcf
и tar -pzxf
а не просто gz
или gunzip
Это должно решить проблему:
sudo -u <current file owner> -g "Domain Users" gunzip *.pax.gz
Причина, по которой вам нужно сделать это таким образом, заключается в том, что когда вы распаковываете что-то, программа загружает gz в память, распаковывает его, записывает распакованную версию на диск как новый файл1 и отключает (удаляет) старую версию.
[1]: Когда вы создаете новый файл, пользовательский контекст, в котором вы находитесь, является владельцем, а их основная группа - это группа указанного файла, -g заставляет sudo изменить основную группу для этого сеанса.
Разрешить пользователям без полномочий root:
Создайте системную группу пользователей, для которых вы хотите использовать gunzip, в этом примере мы назовем ее «gunzip».
visudo
Добавить строку:
%gunzip ALL=(ALL) NOPASSWD:NOEXEC: gunzip
Сохранить и выйти