.gz 文件使用 gunzip 压缩后,文件权限被改变;我该如何防止这种情况发生?

.gz 文件使用 gunzip 压缩后,文件权限被改变;我该如何防止这种情况发生?

我有一个 NFS4 文件系统,它具有基于 AD 的身份验证设置和与之匹配的 ACLS。我正在控制对挂载文件系统的计算机的访问,因此 ACL 非常基础。一个 ACL 阻止用户在父级重命名或删除文件夹。第二个 ACL 为“所有人”和“域用户”提供对“子文件夹和文件”的完全访问权限

我遇到的问题是,在其中一个子文件夹中有一个“*.pax.gz”文件。如果我登录到 Linux 客户端并 cd 到该文件夹​​,我就可以看到该文件和正确的权限。如果我运行 gunzip“filename”,它会创建一个 *.pax 文件,但“所有人”和“域用户”权限都消失了,我成为了该文件的所有者。

是否可以设置 ACL 或任何内容,使最终结果是 *.pax 文件保留与 *.pax.gz 文件相同的权限?

答案1

您需要使用以下命令将 ACE 添加到父目录中'F'‘d’标志强制新创建的文件和目录继承该 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.

答案2

这应该可以解决问题:

sudo -u <current file owner> -g "Domain Users" gunzip *.pax.gz

您需要这样做的原因是,当您使用 gunzip 压缩某些内容时,程序会将 gz 加载到内存中并对其进行解压缩,将解压缩的版本作为新文件1写入磁盘并取消链接(删除)旧版本。

[1]:当你创建一个新文件时,你所处的用户上下文就是所有者,并且他们的主要组是该文件的组,-g 会导致 sudo 更改该会话的主要组。

允许非 root 用户执行此操作:

创建一个您希望能够使用 gunzip 的用户系统组,在此示例中我们将其称为“gunzip”。

visudo

添加行:

%gunzip ALL=(ALL) NOPASSWD:NOEXEC: gunzip

保存并退出

答案3

为了正确地存储和恢复元数据信息作为 ACL 等,你应该使用tar -pzcfandtar -pzxf而不是普通的gzorgunzip

相关内容