今天給大家分享一個Linux小知識
背景
假設當前Linux下用戶是root,我們從網絡上或者其他環境下載了個壓縮包進行本地解壓。
結果發現解壓之后的文件或者文件夾的 屬主和屬主
都不是當前用戶root
# 檢查當前用戶
[root@test-xxxx-01-vm /tmp/colinspace ]# id
uid=0(root) gid=0(root) groups=0(root)
# 上傳文件然后查看上傳的文件屬主和屬組信息
[root@test-xxxx-01-vm /tmp/colinspace ]# ls -l mysqld_exporter-0.15.1.linux-amd64.tar.gz
-rw-r--r-- 1 root root 8287769 Jan 30 10:25 mysqld_exporter-0.15.1.linux-amd64.tar.gz
# 解壓文件之后查看
# 發現解壓之后的文件夾 屬主和屬組分別是 zhangsan 和 lisi
[root@test-xxxx-01-vm /tmp/colinspace ]# tar -zxf mysqld_exporter-0.15.1.linux-amd64.tar.gz
[root@test-xxxx-01-vm /tmp/colinspace ]# ll
total 8100
drwxr-xr-x 2 zhangsan lisi 4096 Dec 12 15:57 mysqld_exporter-0.15.1.linux-amd64
-rw-r--r-- 1 root root 8287769 Jan 30 10:25 mysqld_exporter-0.15.1.linux-amd64.tar.gz
# 檢查系統中zhangsan 和 lisi的信息
[root@test-xxxx-01-vm /tmp/colinspace ]# grep zhangsan /etc/passwd
zhangsan:x:1001:1001::/home/zhangsan:/bin/bash
[root@test-xxxx-01-vm /tmp/colinspace ]# grep lisi /etc/group
lisi:x:1002:
根源所在
其實根源在于你解壓的時候沒有明確指定
屬主和屬組的情況下。 解壓時使用的是壓縮文件中保存
的屬主和屬組信息。
可以通過 -tvf
參數組合來查看壓縮包的中文件信息( -t/--list means list the contents of an archive)
[root@test-xxxx-01-vm /tmp/colinspace ]# tar -tvf mysqld_exporter-0.15.1.linux-amd64.tar.gz
drwxr-xr-x circleci/circleci 0 2023-12-12 15:57 mysqld_exporter-0.15.1.linux-amd64/
發現這里展示的用戶和用戶組是circleci, 但是當然主機肯定沒有這個用戶,而且也不是root
[root@test-xxxx-01-vm /tmp/colinspace ]# grep circleci /etc/passwd /etc/group
這個時候使用另外一個參數 --numeric-owner
, 含義是 always use numbers for user/group names
[root@test-xxxx-01-vm /tmp/colinspace ]# tar -tvf mysqld_exporter-0.15.1.linux-amd64.tar.gz --numeric-owner
drwxr-xr-x 1001/1002 0 2023-12-12 15:57 mysqld_exporter-0.15.1.linux-amd64/
... ...
看到這里顯示的屬主和屬組分別是 1001 和 1002 ,不正是當前主機上對應的 zhangsan 和 lisi 么。
所以,解壓之后的屬主和屬組雖然不影響實際使用。但是顯示不是當前用戶的,總感覺有點'奇怪' ,對于運維人員而言,保持好奇心進行探究問題是好習慣哦~
寫在最后
如果想要對解壓之后的文件或者文件夾的屬主和屬組有要求,那么就只能是解壓之后再通過chown
來設定屬主和屬組了
這時有人就說不是有--owner=Name
和 --group=Name
參數可以用嗎?
當然 tar 命令確實有這兩個參數,但是它們不是在解壓的時候使用的。而是在壓縮的時候
來使用修改最終存放到壓縮包中文件或者文件夾的屬主和屬組
的。
注意這里說的是壓縮包總的文件或者文件夾
而不是最終的 壓縮包文件
哦~
最終的 壓縮包文件
的屬主和屬組是當前用戶。但是里面的文件或者文件夾的屬主和屬組會被修改為這兩個參數設定的值
我是菩提老鷹,熱愛分享,保持好奇和樂觀。有問題的小伙伴加我討論交流哦~