linux: tar解压之后属主和属组不是当前用户问题
文章目录
- 一、问题背景
- 二、问题原因
- 2.1、查看压缩包中文件信息
- 三、解决方法
- 3.1、方式一:解压后使用chown命令更改属组
- 3.2、方式二:解压时指定参数--no-same-owner
一、问题背景
当前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 7月 22 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