如何让从存档中提取的文件继承父文件夹的权限

如何让从存档中提取的文件继承父文件夹的权限

我正在使用 Centos 8 Linux,多个用户属于同一组,访问同一 FS (xfs) 中的多个 ff 文件夹/子文件夹和文件。我希望所有文件和文件夹都具有将 umask 设置为 0002 的组的写入权限,允许用户创建的新文件具有正确的权限,但我有 tar 和其他压缩文件被用户提取,提取的文件保持它们在原始状态下拥有的权限并且不会更改,导致某些文件仅具有所有者权限,而不是组权限我正在尝试找到一种自动设置权限的方法,而不需要用户运行 chmod 以允许为组写入我尝试分配 g+ s 在主文件夹上,但我只能让新文件夹继承组权限而不是单个文件。我尝试启用 ACL,但同样没有让文件继承父文件夹权限。这是我的主文件夹的样子

drwxrwsr-x+ 4 owner group 4.0K Mar 6 10:26 test

以及里面解压出一个tgz文件后的内容

drwxrwsr-x+ 8 owner group 202 Mar 6 09:56 folder1 
drwxrwsr-x+ 8 owner group 202 Mar 6 10:12 folder2

但是当我到达第一个包含文件的文件夹时,文件权限仅适用于所有者

ll test/folder1
-rwx------. 1 owner group 195K Jun 6 2018 file1
-rwx------. 1 owner group 225K Aug 4 2018 file2
-rwx------. 1 owner group 211K Aug 20 2018 file3
-rwx------. 1 owner group 100K Sep 9 2018 file4
-rwx------. 1 owner group 200K Oct 24 2018 file5
-rwx------. 1 owner group 199K Nov 9 2018 file6

即使执行后

setfacl -R -m d:o:rwx test

文件没有改变它们的权限

有没有办法强制从压缩存档中创建或提取的所有文件继承主文件夹的权限?

答案1

我仍在寻找更好的解决方案,但现在我创建了一个脚本,将 tar 输出传输到 chmod 命令

#!/bin/bash -
set -o pipefail
tar xvf "$@" | xargs -rd '\n' chmod 770 --

我不太喜欢它,因为指示 100 个或更多用户使用不同的命令会很棘手,但如果找不到更好的解决方案,我会保留它。只是为了来自手册页 tar 的信息似乎有一个选项应该忽略文件权限

--no-same-permissions

但似乎只有当 umask 权限比提取文件上的权限更严格时才有效,想知道这是否是一个错误

答案2

你可以使用star实施tar及其-chmod在提取时设置文件权限的选项:

star -x -o -f file.tar -find -chmod ug+rwX

相关内容