我有一个基于AD的身份validation设置和ACLS匹配的NFS4文件系统。 我正在控制对安装文件系统的机器的访问,所以ACL是非常基本的。 防止用户在父级别重命名或删除文件夹。 第二个ACL给“所有人”和“域用户”完全访问“子文件夹和文件”
我的问题是在其中一个子文件夹中有一个* .pax.gz文件,如果我login到一个Linux客户端,然后cd到那个文件夹,我可以看到这个文件和正确的权限,如果我运行gunzip “文件名”,然后创build一个*。pax文件,但“所有人”和“域用户”权限已经消失,我成为该文件的所有者。
是否有可能设置一个ACL或任何最终结果是* .pax文件保留与* .pax.gz文件相同的权限?
您需要使用'f'和'd'标志将ACE添加到父目录中,以执行新创build的文件和目录以inheritance该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.
这应该解决这个问题:
sudo -u <current file owner> -g "Domain Users" gunzip *.pax.gz
你需要这样做的原因是,当你用gunzip把程序加载到内存中时,将解压缩后的版本作为新文件1写入磁盘,并取消旧版本的链接(删除)。
[1]:当你创build一个新文件时,你所在的用户上下文是所有者,而他们的主要组是所述文件的组,-g使sudo更改该会话的主组。
允许非root用户执行此操作:
在这个例子中创build一个你想要使用gunzip的用户的系统组,我们将其称为“gunzip”。
visudo
添加行:
%gunzip ALL=(ALL) NOPASSWD:NOEXEC: gunzip
保存并退出
要正确地将元数据信息存储和恢复为ACL等,您应该使用tar -pzcf
和tar -pzxf
而不是普通的gz
或gunzip