新聞中心
在Linux中,tar命令常常用來將文件或目錄壓縮成一個(gè)tar包。但是,在實(shí)際應(yīng)用中,我們有時(shí)需要在壓縮的時(shí)候保持原有的文件權(quán)限,以保證在后續(xù)的操作中文件的功能和安全性不受到影響。本文將會(huì)介紹如何使用tar命令來保持文件權(quán)限。

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的枝江網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
一、什么是tar命令?
tar命令是Linux系統(tǒng)下用于歸檔文件的指令。它可以將一系列文件打包成一個(gè)文件,通常是以tar擴(kuò)展名結(jié)尾的文件,并可選地進(jìn)行壓縮處理。使用tar命令可以更加方便地對(duì)多個(gè)文件進(jìn)行管理。
二、tar命令的基本用法
使用tar命令最基本的用法是:
“`bash
tar [-options] filename.tar.gz file1 file2 file3
“`
把文件 file1, file2, file3打包成一個(gè)名為filename.tar.gz的文件。
常用的選項(xiàng)有:
* -z:使用gzip進(jìn)行壓縮/解壓縮。
* -c:創(chuàng)建一個(gè)文檔。
* -x:從保存的文檔中提取文檔。
* -v:顯示壓縮/解壓縮進(jìn)程。
* -f:指定待處理的文檔。
三、如何保護(hù)文件權(quán)限
默認(rèn)情況下,tar命令會(huì)在壓縮時(shí)重置文件的權(quán)限。如果不想重置,需要使用以下選項(xiàng):
* -p:保留文件權(quán)限。
使用下面的命令可以將文件夾test.tar.gz中的文件及文件夾壓縮,并保留文件的權(quán)限:
“`bash
tar -zcvfp test.tar.gz test/
“`
這里的選項(xiàng)-z表示將文件壓縮成tar包,-c表示創(chuàng)建新的歸檔文件,-v表示顯示處理進(jìn)度,-f指定歸檔文件,-p保留文件的權(quán)限。
四、如何還原文件權(quán)限
在解壓縮時(shí),tar命令也會(huì)默認(rèn)重置文件的權(quán)限,如果需要保留文件原有的權(quán)限,需要加上-p參數(shù)。使用下面的命令可以解壓縮保留權(quán)限的文件:
“`bash
tar -zxvpf test.tar.gz
“`
選項(xiàng)-z表示將文件解壓縮出來,-x表示提取文件,-v表示顯示處理進(jìn)度,-f指定歸檔文件,-p保留文件的權(quán)限。
五、
在使用Linux系統(tǒng)中的tar命令進(jìn)行文件歸檔時(shí),如果需要保留文件的權(quán)限,需要在壓縮和解壓縮時(shí)加上-p參數(shù),這樣能夠保持文件原有的權(quán)限,維護(hù)文件的功能和安全性。tar命令是Linux系統(tǒng)中一個(gè)十分實(shí)用的文件打包工具,我們可以根據(jù)不同的情況選擇不同的選項(xiàng)來實(shí)現(xiàn)想要的操作。
相關(guān)問題拓展閱讀:
- Linux操作系統(tǒng)文件訪問權(quán)限詳解
Linux操作系統(tǒng)文件訪問權(quán)限詳解
rwx 421
一直以root登陸使用linux的人來說很少有權(quán)限被拒這種概念,但某些時(shí)候又深受權(quán)限拒絕困擾。
知道為什么很多程序中需要使用getuid(),setuid()?為什么以普通權(quán)限登陸的用戶不能進(jìn)入/root,為什么在/目錄下執(zhí)行l(wèi)s -l后可以顯示root的信息,但ls /root -al卻是權(quán)限不夠?為什么有些文件夾可以繼續(xù)創(chuàng)建文件,但就是不能ls?等等,相信看了此文就能明白。
主要是學(xué)習(xí)筆記,不足之處請(qǐng)指正。
CentOS 5.4 $ uname -a Linux xxx 2.6.18-164.el5xen #1 P Thu Sep 3 04:47:32 EDT 2023 i686 i686 i386 GNU/Linux
一、口令文件1,格式存儲(chǔ)文件/etc/passwd,格式如下:root:x:0:0:root:/root:/bin/bash aaa:x:501:501:bj, bj,,:/home/aaa:/bin/bash用戶名:加密密碼:用戶ID:組ID:注釋:工作目錄:shell:
默認(rèn)情況是之一行的格式;注釋字段可以自行修改,用逗號(hào)隔開,如第二行格式,這主要是給finger命令使用時(shí)可解析。
可以vi /etc/passwd修改,但為了保證其格式的正確性,請(qǐng)用vipw命令編譯此文件。
sh-3.2# finger aaa Login: aaa Name: bj Directory: /home/aaa Shell: /bin/bash Office: bj,Home Phone:Never logged in. No mail. No Plan.
2,編程實(shí)例
/*getpwnam_pwuid.c*/ #include #include #include
int main(void)
{ //struct passwd *pwd = getpwnam(“aaa”);struct passwd *pwd = getpwuid(501);if(pwd == NULL)
{ printf(“err.\n”);return 1;}
printf(“name:%s\n”, pwd->pw_name);printf(“passwd:%s\n”, pwd->pw_passwd);printf(“description:%s\n”悄歷, pwd->pw_gecos);printf(“uid:%d\n”, pwd->pw_uid);printf(“gid:%d\n”, pwd->pw_gid);printf(“dir:%s\n”, pwd->pw_dir);printf(“shell:%s\n”, pwd->pw_shell);
return 0;}
sh-3.2# gcc getpwnam_pwuid.c -o app sh-3.2# ./app name:aaa passwd:x description:bj, bj,,uid:501 gid:501 dir:?jiǎn)⒆兴?home/aaa shell:/bin/bash
二、組文件1,格式存儲(chǔ)文戚沒件/etc/group,格式如下root:x:0:root bin:x:1:root,bin,daemon aaa:x:501:組名:加密密碼:組ID:指向的各用戶名
2,改變文件uid和gid.
sh-3.2# pwd /root/study sh-3.2# ls -al -rw-r——r—— 1 root root:23 test.c
chgrp 改變所屬組ID,當(dāng)然只有root權(quán)限才可以修改。
sh-3.2# chgrp aaa test.c sh-3.2# ls -al -rw-r——r—— 1 root aaa:23 test.c
這個(gè)aaa就是新組名,其在/etc/group中,可以通過adduser aaa自行添加sh-3.2# cat /etc/group root:x:0:root bin:x:1:root,bin,daemon daemon:x:2:root,bin,daemon.
gdm:x:42:sabayon:x:86:plmtest:x:500:aaa:x:501:
chown 改變用戶ID或組ID sh-3.2# chown aaa:aaa test.c sh-3.2# ls -al -rw-r——r—— 1 aaa aaa:23 test.c
3,編程實(shí)例
/*getgrnam.c*/ #include #include
int main(int argc, char *argv)
{ if(argv == NULL)
{ printf(“input error.\n”);return 1;}
struct group *gp = getgrnam(argv);if(gp == NULL)
{ printf(“err.\n”);return 1;}
printf(“name:%s\n”, gp->gr_name);printf(“psswd:%s\n”, gp->gr_passwd);printf(“gid:%d\n”, gp->gr_gid);
int i;for(i = 0; gp->gr_mem != NULL; i++)
{ printf(“group name:%s\n”, gp->gr_mem);}
return 0;}
sh-3.2# gcc getgrnam.c -o app sh-3.2# ./app bin name:bin psswd:x gid:1 group name:root group name:bin group name:daemon 4,文件權(quán)限不細(xì)講了sh-3.2# ls -al總計(jì)drwxr-x—— 13 root root:01 . drwxr-xr-x 32 root root:15 ……
-rw-r——r—— 1 root root25 22:33 3.3..tgz -rw—— 1 root root:16 .bash_history -rw-r——r—— 1 root root .bash_logout -rw-r——r—— 1 root root6 .bash_profile -rw-r——r—— 1 root root6 .bashrc drwxrwxrwxusers:16 cflow-1.3 -rw-r——r—— 1 root root20:13 cflow.tar.gz -rw-r——r—— 1 root root6 .cshrc -rwxr-xr-x 1 root root:48 delete_M.sh -rw-r——r—— 1 root root:25 .dir_colors
主要是最左邊一列:drwxr-x——10個(gè)字符,最左邊是文件類型,-默認(rèn)為普通文件;d:目錄文件;l符號(hào)鏈接……
后面9個(gè),3個(gè)一組共三組,分別表示所屬用戶uid的權(quán)限;所屬組或者附屬組gid的權(quán)限;其它權(quán)限。
三個(gè)字符分別是讀、寫、執(zhí)行權(quán)限讀4,寫2, 執(zhí)行1
所以chmod 777 test.c,提升到讀、寫、執(zhí)行權(quán)限。
5,組權(quán)限操作實(shí)例此節(jié)演示相同組的成員之間共享資源,即不同uid但相同gid的用戶共享同一組的資源。
為了方便起見,我同時(shí)開了兩個(gè)終端。
”sh-3.2#”以root權(quán)限登陸的shell /bin/sh “”以testa用戶登陸的shell
注:下文提到的“用戶”是指/etc/passwd里定義的通過終端登陸的用戶(此文即以下增加的三個(gè)賬號(hào)名)。
sh-3.2# useradd testa sh-3.2# useradd testb sh-3.2# useradd testc
sh-3.2# tail -f /etc/passwd -n 4 sabayon:x:86:86:Sabayon user:/home/sabayon:/in/nologin testa:x:500:500::/home/testa:/bin/bash testb:x:501:501::/home/testb:/bin/bash testc:x:502:502::/home/testc:/bin/bash
再開一個(gè)終端登陸testa,之前那個(gè)終端保持。
sh-3.2# su testa $ id uid=500(testa) gid=500(testa) groups=500(testa)
$ ls -al總計(jì) 28 drwxr-xr-x 5 root root:52 . drwxr-xr-x 32 root root:15 ……
drwx—— 3 testa testa:56 testa drwx—— 3 testb testb:48 testb drwx—— 3 testc testc:52 testc
$ cd testb bash: cd: testb: 權(quán)限不夠
通過root修改testb目錄權(quán)限為770,即當(dāng)前uid或者gid相同的用戶均有讀寫執(zhí)行權(quán)限。
sh-3.2# cd /home/ sh-3.2# chmod 770 testb
$ ls -al總計(jì) 28 drwxr-xr-x 5 root root:52 . drwxr-xr-x 32 root root:15 ……
drwx—— 3 testa testa:56 testa drwxrwx—— 3 testb testb:48 testb (here modify)
drwx—— 3 testc testc:52 testc
$ cd testb bash: cd: testb: 權(quán)限不夠$ id uid=500(testa) gid=500(testa) groups=500(testa)
此時(shí)雖然開放了testb的所屬組權(quán)限,但用戶testa的gid=500(testa) groups=500(testa),它還不屬于testb組。
下面修改testa的gid為testb(或者增加其附屬組groups值為testb)
sh-3.2# usermod -G testb testa (增加用戶testa的附屬組testb)
sh-3.2# id testa uid=500(testa) gid=500(testa) groups=500(testa),501(testb)
此時(shí)testa終端需要重新登下,使剛才更改生效$ exit exit # su testa $ id uid=500(testa) gid=500(testa) groups=500(testa),501(testb)
$ cd /home/ $ ls -al總計(jì) 28 drwxr-xr-x 5 root root:52 . drwxr-xr-x 32 root root:15 ……
drwx—— 3 testa testa:56 testa drwxrwx—— 3 testb testb:48 testb drwx—— 3 testc testc:52 testc $ cd testb $ pwd /home/testb
以上是增加了用戶testa的附屬組testb,使其對(duì)于屬于testb組的資源有了訪問權(quán)限。
下面再使用newgrp切換用戶testa的gid.
$ id uid=500(testa) gid=500(testa) groups=500(testa),501(testb)
$ newgrp testb $ id uid=500(testa) gid=501(testb) groups=500(testa),501(testb)
此時(shí)testa用戶的gid已改為501(testb)。
組之前的關(guān)系在文件/etc/group sh-3.2# tail -f /etc/group -n 4 sabayon:x:86:testa:x:500:testb:x:501:testa (最后一列:組內(nèi)用戶列表。即組testb里包含testa,testa屬于testb組,大概就這意思吧……)
testc:x:502:
雖然知道控制組關(guān)系的文件,但不能直接修改些文件,否則執(zhí)行newgrp時(shí)會(huì)出現(xiàn)”抱歉”錯(cuò)誤提示。
當(dāng)然root用戶權(quán)限是無限制的,它訪問文件時(shí)不需要進(jìn)行權(quán)限檢查。
三、相關(guān)系統(tǒng)調(diào)用getuid();getgid();int setuid(uid_t uid);int setgid(gid_t gid);
只有超級(jí)用戶或者需要設(shè)置的uid和當(dāng)前用戶的uid一致才可以設(shè)置,否則返回-1,置errno = EPERM, errno可以通過strerror()翻譯。
其它:$ su testa $ sudo touch aa
testa is not in the sudoers file. This incident will be reported.
以root權(quán)限vim /etc/sudoers增加testa ALL=(ALL) ALL
參考:APUE2E,1.8, 4.4, 8.11
linux下文件權(quán)限分為四段:drwxrwxrwx
d表示這絕含是一個(gè)目錄,是一段,有時(shí)之一段也可能是l(l表示軟連接)也可能沒有,就用“-”表示
第二段是所屬限,r:4(讀取);w:2(寫入);x:1(執(zhí)行),rwx表示所屬主用于并槐笑所有權(quán)明鋒限,第三段和第四段也是一個(gè)意思,但第三段表示的是所屬組,第四段表示的是其他人,懂了么?
關(guān)于linux tar 保持權(quán)限的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
新聞標(biāo)題:如何在Linux中使用tar命令保持文件權(quán)限?(linuxtar保持權(quán)限)
轉(zhuǎn)載源于:http://m.fisionsoft.com.cn/article/cohdhsg.html


咨詢
建站咨詢
