在提取tgz
文件时,我注意到权限发生了奇怪的变化! tgz 文件属于 root:root,但是该文件夹属于 502:games
[root@rocks7 common]# ls -l
-rw-r--r-- 1 root root 4779534 May 2 2012 scalapack-2.0.2.tgz
[root@rocks7 common]# tar xf scalapack-2.0.2.tgz
[root@rocks7 common]#
[root@rocks7 common]# ls -l
total 98576
drwxr-xr-x 10 502 games 4096 May 2 2012 scalapack-2.0.2
-rw-r--r-- 1 root root 4779534 May 2 2012 scalapack-2.0.2.tgz
这里有什么问题呢?
答案1
tarball 包含scalapack-2.0.2
用户 id 502 拥有的目录以及与游戏组(或者可能是游戏组名称)对应的任何组 id。你可以通过运行看到这一点
tar tvf scalapack-2.0.2.tgz
Tar 档案除了文件内容之外还存储所有权和权限;由于您以 root 身份提取,因此该元数据将应用于提取的文件。 tarball 本身的所有权对提取的数据的所有权没有影响。
由于您运行的是 CentOS,因此您可能正在运行 GNU tar
,并且您可以使用--no-same-owner
和--no-same-permissions
选项来提取 tarball,而无需应用存储的所有权和权限。其他tar
实现可能有类似的选项(例如 -o
在自由BSDtar
)。