我有一个 tar.gz 存档,其中包含一些可执行文件。有没有办法在我提取存档时自动使它们不可执行?我尝试使用 --mode 标志,但它显然没有任何作用。
tar xzf archive.tar.gz --mode 'a-x'
如果可能的话,我想使用 tar 本身设置权限,因为我事先不知道 tar 生成的文件夹的名称是什么。我可以使用 GNU tar 功能。
我有一个 tar.gz 存档,其中包含一些可执行文件。有没有办法在我提取存档时自动使它们不可执行?我尝试使用 --mode 标志,但它显然没有任何作用。
tar xzf archive.tar.gz --mode 'a-x'
如果可能的话,我想使用 tar 本身设置权限,因为我事先不知道 tar 生成的文件夹的名称是什么。我可以使用 GNU tar 功能。
如果使用
star
(包含在schilytools中,由@schily(已故))代替 GNUtar
是一种选择,您可以这样做:可以使用类似的接口
find
来操作存档成员。使用 libarchive
bsdtar
,假设存档不包含除目录和常规文件以外的任何类型的文件,并且不包含硬链接,并且您不关心恢复任何文件元数据,则可以将存档转换为zip
格式(不支持权限)在提取之前动态:这将创建具有默认权限的所有文件,并且
umask
还应用了默认权限。因此umask 022
,使用 ,您将获得具有权限的目录rwxr-xr-x
和具有rw-r--r--
.使用 GNU
tar
,您可以实现类似的目标:附加限制是,它不会创建下面没有常规文件的目录,并且如果某些目录名称以换行符结尾,则会失败。
您应该能够将设置 a
umask
与 usingtar
的--no-same-permissions
参数结合起来,从而防止在提取时设置可执行位。