Назад | Перейти на главную страницу

Права доступа к файлам меняются после распаковки .gz файла; как мне предотвратить это?

У меня есть файловая система 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

Сохранить и выйти