本文節(jié)選至
http://www.chinalinuxpub.com/doc/manual/9.0/rhl-gsg-zh_CN-9/s1-navigating-ownership.html
所有權(quán)和許可權(quán)限
讀取、寫入、和執(zhí)行是許可權(quán)限中的三個(gè)主要設(shè)置。既然用戶在他們的帳號(hào)創(chuàng)建之時(shí)就被編入一個(gè)組群,你還可以指定哪些組群可以讀取、寫入、或執(zhí)行某一文件。
讓我們用帶有 -l (長(zhǎng))選項(xiàng)的 ls 命令來仔細(xì)查看一下文件 sneakers.txt。
這里提供了許多細(xì)節(jié)。你可以看到誰能讀取(r)和寫入(w)文件,以及誰創(chuàng)建了這個(gè)文件(test),所有者所在的組群(test)。請(qǐng)記住,按照默認(rèn)設(shè)置,你的組群名和你的登錄名相同。
sneakers.txt 的許可權(quán)限
在組群右側(cè)的信息包括文件大小、創(chuàng)建的日期和時(shí)間,以及文件名。
第一列顯示了當(dāng)前的權(quán)限;它有十位。第一位代表文件類型。其余九位實(shí)際上是用于三組不同用戶的三組權(quán)限。
例如:
-rw-rw-r--
那三組是:文件的所有者,文件所屬的組群,和“其他人”,這是前面沒有包括的用戶和組群。
-?? (rw-)?(rw-) (r--) 1 test test
|???? |?????|???? |
類型 所有者 組群? 其他人
第一個(gè)項(xiàng)目指定文件類型,它可以顯示以下幾種:
-
d — 目錄
-
-(短線)— 常規(guī)文件(而不是目錄或鏈接)
-
l — 到系統(tǒng)上其它位置的另一個(gè)程序或文件的符號(hào)鏈接
在第一個(gè)項(xiàng)目之后的三組中,你可以看到下面幾種類型:
-
r — 文件可以被讀取
-
w — 文件可以被寫入
-
x — 文件可以被執(zhí)行(如果它是程序的話)
當(dāng)你在所有者、組群、或其他人中看到一個(gè)短線(“-”),這意味著相應(yīng)的權(quán)限還沒有被授予。再看一看文件 sneakers.txt 的第一列,然后辯別它的許可權(quán)限。
ls -l sneakers.txt
-rw-rw-r-- 1 test test 39 3月 11 12:04 sneakers.txt
文件的所有者(這個(gè)情況下是 test)有讀取和寫入該文件的權(quán)限。組群test 也有讀取和寫入 sneakers.txt的權(quán)限。它不是一個(gè)程序,因此所有者和組群都沒有執(zhí)行它的權(quán)限。
使用 chmod 命令來改變權(quán)限。這個(gè)例子顯示了如何使用 chmod 命令來改變 sneakers.txt 文件的權(quán)限。
帶有初始權(quán)限設(shè)置的最初文件與下面相仿:
-rw-rw-r-- 1 test test 39 3月 11 12:04 sneakers.txt
如果你是這個(gè)文件的所有者或者你登錄為根用戶身份,你可以改變所有者、組群、和其他人的權(quán)限。
此刻,所有者和組群可以讀取和寫入文件,組群之外的任何人只能讀取文件(r--)。 小心
請(qǐng)記住,文件權(quán)限是一種安全措施。無論何時(shí)你允許其他人讀取、寫入或執(zhí)行文件,你都在增加文件被篡改或刪除的危險(xiǎn)。作為一種基本原則,你應(yīng)該只給那些真正需要這些文件的人以讀寫權(quán)限。
在下面的例子中,你想給每個(gè)人以寫入文件的權(quán)限,因此他們可以讀取文件,在其中加注,并保存文件。這意味著你非得改變文件權(quán)限中的“其他人”部分不可了。
讓我們先來看一看這個(gè)文件。在 shell 提示下,鍵入:
ls -l sneakers.txt
前面的命令顯示了這個(gè)文件信息:
-rw-rw-r-- 1 test test 39 3月 11 12:04 sneakers.txt
現(xiàn)在,鍵入下面的命令:
chmod o+w sneakers.txt
o+w 命令告訴系統(tǒng)你想給其它人寫入文件 sneakers.txt 的權(quán)限。要查看結(jié)果,再次列出文件的細(xì)節(jié)。現(xiàn)在,這個(gè)文件看起來與下面的輸出相仿:
-rw-rw-rw- 1 test test 39 3月 11 12:04 sneakers.txt
現(xiàn)在,每個(gè)人都可以讀取和寫入這個(gè)文件。
要從 sneakers.txt 中刪除讀寫權(quán)限,使用 chmod 命令來取消讀取和寫入這兩個(gè)的權(quán)限。
chmod go-rw sneakers.txt
通過鍵入 go-rw,你在告訴系統(tǒng)刪除文件 sneakers.txt 中組群和其它人的讀取和寫入權(quán)限。
結(jié)果與下面的輸出相似:
-rw------- 1 test test 39 3月 11 12:04 sneakers.txt
當(dāng)你想用 chmod 命令來改變權(quán)限時(shí),把它們當(dāng)做速記符號(hào)來記憶,因?yàn)槟銓?shí)際要做的只是記住幾個(gè)符號(hào)而已。
下面是一個(gè)速記符號(hào)含義的列表:
- 身份
-
u — 擁有文件的用戶(所有者)
g — 所有者所在的組群
o — 其他人(不是所有者或所有者的組群)
a — 每個(gè)人或全部(u、g、和 o)
- 權(quán)限
-
r — 讀取權(quán)
w — 寫入權(quán)
x — 執(zhí)行權(quán)
- 行動(dòng)
-
+ — 添加權(quán)限
- — 刪除權(quán)限
= — 使它成為唯一權(quán)限
想測(cè)試一下你的許可權(quán)限技巧么?從文件 sneakers.txt 中刪除所有權(quán)限 — 包括每個(gè)人的權(quán)限。
-rw------- 1 test test 39 3月 11 12:04 sneakers.txt
現(xiàn)在,讓我們來看看你是否還能夠使用 cat sneakers.txt 來讀取這個(gè)文件,它所返回的輸出應(yīng)如下所示:
cat: sneakers.txt: Permission denied
刪除所有的權(quán)限,包括你自己的,會(huì)成功地鎖住這個(gè)文件。但是由于這個(gè)文件屬于你,你可以隨時(shí)使用以下命令把它的權(quán)限改回來:
chmod u+rw sneakers.txt
使用命令 cat sneakers.txt 來試試看你作為文件所有者是否還能夠讀取該文件。
這里是幾個(gè)可以用在 chmod 命令設(shè)置上的常用例子:
-
g+w — 為組群添加寫入權(quán)
-
o-rwx — 刪除其它人的所有權(quán)限
-
u+x — 允許文件所有者執(zhí)行這個(gè)文件
-
a+rw — 允許每個(gè)人讀取并寫入文件
-
ug+r — 允許所有者和組群讀取文件
-
g=rx — 只允許組群讀取和執(zhí)行(不能寫入)
通過添加 -R 選項(xiàng),你可以為整個(gè)目錄樹改變權(quán)限。
因?yàn)槟悴荒芟髨?zhí)行程序一樣地“執(zhí)行”目錄,當(dāng)你為目錄添加或刪除執(zhí)行權(quán)限時(shí),你實(shí)際上是在允許(或拒絕)在目錄中搜索的權(quán)限。
如果你不想給其它人對(duì)目錄 tigger 的執(zhí)行權(quán)限,那么誰有讀取或?qū)懭霗?quán)限便無關(guān)緊要了。除非他們知道他們想要的確切文件名,沒人能夠進(jìn)入那個(gè)目錄。
譬如,鍵入:
chmod a-x tigger
來刪除每個(gè)人的執(zhí)行權(quán)限。
下面是當(dāng)你試圖使用 cd 命令來進(jìn)入 tigger 目錄時(shí)會(huì)發(fā)生的情況:
bash: tigger: Permission denied
下一步,恢復(fù)你自己和你的組群的權(quán)限:
chmod ug+x tigger
現(xiàn)在,如果你用 ls -dl 命令來檢查一下,你會(huì)發(fā)現(xiàn)只有其它人(others)被拒絕了到目錄 tigger 的訪問權(quán)。
還記得關(guān)于 chmod 的速記符號(hào)的方法嗎?這里向你介紹另一個(gè)改變權(quán)限的方法,一開始,它可能會(huì)顯得有點(diǎn)復(fù)雜。
回到 sneakers.txt 文件的原始權(quán)限:
-rw-rw-r-- 1 test test 39 3月 11 12:04 sneakers.txt
每種權(quán)限設(shè)置都可以用一個(gè)數(shù)值來代表:
-
r = 4
-
w = 2
-
x = 1
-
- = 0
當(dāng)這些值被加在一起,它的總和便用來設(shè)立特定的權(quán)限。譬如,如果你想有讀取和寫入的權(quán)限,你會(huì)得到一個(gè)值為 6 的總和;4(讀取)+ 2(寫入)= 6。
sneakers.txt 文件的數(shù)字權(quán)限設(shè)置如下:
- (rw-) (rw-) (r--)
| | |
4+2+0 4+2+0 4+0+0
所有者的總和為六,組群的總和為六,其他人的總和為四。這個(gè)權(quán)限設(shè)置讀作 664。
如果你想改變 sneakers.txt 文件的權(quán)限,因此你的組群中的人沒有寫入權(quán),但是仍舊能夠讀取文件的話,從這組數(shù)字中減掉二(2)就可以刪除寫入權(quán)限了。
然后,這組數(shù)值就變成六四四(644)。
要實(shí)現(xiàn)這些新設(shè)置,鍵入:
chmod 644 sneakers.txt
現(xiàn)在,列舉這個(gè)文件來校驗(yàn)改變。鍵入:
ls -l sneakers.txt
輸出應(yīng)為:
-rw-r--r-- 1 test test 39 3月 11 12:04 sneakers.txt
現(xiàn)在,組群和其他人都沒有了到文件 sneakers.txt 的寫入權(quán)。要?dú)w還組群到文件的寫入權(quán),在第二組權(quán)限中加上 w (2) 的值就可以了。
chmod 664 sneakers.txt
警告
把權(quán)限設(shè)為 666 會(huì)允許每個(gè)人對(duì)文件或目錄都有讀取和寫入的權(quán)限。把權(quán)限設(shè)為 777 允許每個(gè)人都有讀取、寫入和執(zhí)行的權(quán)利。這些權(quán)限可能會(huì)允許對(duì)機(jī)密文件的篡改,因此,一般來說,使用這類設(shè)置是不明智的。
這里是一個(gè)某些常用設(shè)置、數(shù)值、以及它們的含義的列表:
-
-rw------- (600) — 只有所有者才有讀取和寫入的權(quán)限。
-
-rw-r--r-- (644) — 只有所有者才有讀取和寫入的權(quán)限;組群和其他人只有讀取的權(quán)限。
-
-rwx------ (700) — 只有所有者才有讀取、寫入、和執(zhí)行的權(quán)限。
-
-rwxr-xr-x (755) — 所有者有讀取、寫入、和執(zhí)行的權(quán)限;組群和其他人只有讀取和執(zhí)行的權(quán)限。
-
-rwx--x--x (711) — 所有者有讀取、寫入、和執(zhí)行權(quán)限;組群和其他人只有執(zhí)行權(quán)限。
-
-rw-rw-rw- (666) — 每個(gè)人都能夠讀取和寫入文件。(請(qǐng)謹(jǐn)慎使用這些權(quán)限。)
-
-rwxrwxrwx (777) — 每個(gè)人都能夠讀取、寫入、和執(zhí)行。(再重申一次,這種權(quán)限設(shè)置可能會(huì)很危險(xiǎn)。)
下面列舉了一些對(duì)目錄的常見設(shè)置:
-
drwx------ (700) — 只有所有者能在目錄中讀取、寫入。
-
drwxr-xr-x (755) — 每個(gè)人都能夠讀取目錄,但是其中的內(nèi)容卻只能被所有者改變。