一、问题背景

当前Linux下的登录用户是root,我们从网络上或者其他环境下载了个压缩包进行本地解压。

结果发现解压之后的文件或者文件夹的 属主属组 都不是当前用户root
在这里插入图片描述
解压后发现文件夹的属主与属组根本不是linux上的用户。

二、问题原因

其实根源在于你解压的时候没有明确指定 属主属组的情况下。 解压时使用的是压缩文件中保存的属主和属组信息。

在Linux系统中,每个用户都有一个唯一的UID(User ID)号码。当我们在解压文件时,如果文件的创建者的UID在当前系统中不存在,则会出现属主变成数字的情况。这种情况通常发生在将文件从一个系统移动到另一个系统时。

2.1、查看压缩包中文件信息

可以通过 -tvf 参数组合来查看压缩包的中文件信息( -t/–list means list the contents of an archive)

[root@localhost test]# ll
-rw-r--r--.  1 root root  263081136 722 16:08 apache-dolphinscheduler-3.3.0-alpha-bin.tar.gz

[root@test ]# tar -tvf apache-dolphinscheduler-3.3.0-alpha-bin.tar.gz
drwxr-xr-x sbloodys/staff 0 2023-12-12 15:57 apache-dolphinscheduler-3.3.0-alpha-bin/

通过上述命令可以看到打包的用户与属组是sbloodys/staff 不是我们系统中的用户。

三、解决方法

3.1、方式一:解压后使用chown命令更改属组

可以在解压文件后,使用chown的命令更改属主与属组

chown -R root:root  apache*bin

3.2、方式二:解压时指定参数–no-same-owner

经过查找资料发现,tar命令在解压时会默认指定参数--same-owner,即打包的时候是谁的,解压后就给谁;

如果在解压时指定参数--no-same-owner(即tar --no-same-owner -zxvf xxxx.tar.gz),则会将执行该tar命令的用户作为解压后的文件目录的所有者。

tar --no-same-owner -zxvf apache*.tar.gz
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐