類(lèi)UNIX系統(tǒng)基礎(chǔ):文件安全與權(quán)限
當(dāng)創(chuàng)建一個(gè)文件的時(shí)候,系統(tǒng)保存了有關(guān)該文件的全部信息,包括:
" 文件的位置。
" 文件類(lèi)型。
" 文件長(zhǎng)度。
" 哪位用戶(hù)擁有該文件,哪些用戶(hù)可以訪問(wèn)該文件。
" i節(jié)點(diǎn)。
" 文件的修改時(shí)間。
" 文件的權(quán)限位。
讓我們用touch命令創(chuàng)建一個(gè)文件:
CODE:$ touch temp創(chuàng)建了一個(gè)空文件,現(xiàn)在用ls -l命令查看該目錄下文件的屬性(我這里用中文版):
如下:
CODE:[root@Linux_chenwy temp]# ls -l
總用量 36
-rw-r--r--1 rootroot 34890 10月 19 20:17 httpd.conf
-rw-r--r--1 rootroot 0 10月 19 20:16 tempCODE:總用量 36:是ls所列出的入口占用空間的字節(jié)數(shù)(以K為單位)。
1該文件硬鏈接的數(shù)目。
root:文件屬主。
root:文件屬組(一般是文件屬主所在的缺省組。)
34890:字節(jié)來(lái)表示的文件長(zhǎng)度,記住,不是K字節(jié)!
10月 19 20:17:件的更新時(shí)間。
temp or httd.conf :件名。QUOTE:原帖由 "sunsroad " 發(fā)表:
BTW:要檢查該目錄所有文件占用的空間應(yīng)該用這個(gè)命令:du。
譬如說(shuō)前面說(shuō)的36是如何計(jì)算出來(lái):
首先我們要先了解你所用的文件系統(tǒng)的IO BLOCK(中文叫作簇)為多少,在你所使用的這個(gè)文件系統(tǒng)的IO BLOCK大小是4096 Bytes。
他意義是文件系統(tǒng)最小的讀寫(xiě)及分配單位,每次讀寫(xiě)操作你都不能小于這個(gè)尺寸。即使你的文件是只有一個(gè)字節(jié)。而且文件在硬盤(pán)上的存儲(chǔ)也是以這個(gè)為單位,就是說(shuō)如果文件尺寸小于這個(gè)值,那么它在磁盤(pán)上占用的空間就是4096字節(jié)。
占用空間的具體算法是:(進(jìn)一(文件尺寸/4096))×4096。根據(jù)這個(gè)你就可以計(jì)算出你所列舉的例子中的文件的空間使用狀況:34890除以4096,大約等于8.5,進(jìn)一法取得為9,就是說(shuō)文件在磁盤(pán)上占用了9個(gè)BLOCk,每個(gè)BLOCK為4K,所以這兩個(gè)文件占用的空間就是36K。
這個(gè)規(guī)則也適合于目錄,不過(guò)不會(huì)出現(xiàn)為0的目錄,即使是空目錄
-rw-r--r-- :這是該文件的權(quán)限位。
第一個(gè)橫杠:指定文件類(lèi)型,表示該文件是一個(gè)普通文件。(所創(chuàng)建的文件絕大多數(shù)都是普通文件或符號(hào)鏈接文件)。
除去最前面的橫杠,一共是9個(gè)字符,他們分別對(duì)應(yīng)9個(gè)權(quán)限位。通過(guò)這些權(quán)限位,可以設(shè)定用戶(hù)對(duì)文件的訪問(wèn)權(quán)限。對(duì)這兩個(gè)文件的精確解釋是:
CODE:rw-:前三位,文件屬主可讀、寫(xiě)
r--:中間三位,組用戶(hù)可讀
r--:最后三位,其他用戶(hù)只可讀
在創(chuàng)建的時(shí)候并未給屬主賦予執(zhí)行權(quán)限,在用戶(hù)創(chuàng)建文件時(shí),系統(tǒng)不會(huì)自動(dòng)地設(shè)置執(zhí)行權(quán)限位。這是出于加強(qiáng)系統(tǒng)安全的考慮。
現(xiàn)在分開(kāi)詳細(xì)說(shuō)明:
文件類(lèi)型
前面提到的第一條橫杠,表示該文件是普通文件型
文件類(lèi)型有七種,它可以從ls -l命令所列出的結(jié)果的第一位看出。
七種類(lèi)型:
CODE:d 目錄。
l 符號(hào)鏈接(指向另一個(gè)文件)。
s 套接字文件。
b 塊設(shè)備文件。
c 字符設(shè)備文件。
p 命名管道文件。
- 普通文件,或者更準(zhǔn)確地說(shuō),不屬于以上幾種類(lèi)型的文件。
文件的權(quán)限位中中每一組字符中含有三個(gè)權(quán)限位:
CODE:r 讀權(quán)限
w 寫(xiě)/更改權(quán)限
x 執(zhí)行該腳本或程序的權(quán)限
如:
CODE:r-- --- --- 文文件屬主可讀,但不能寫(xiě)或執(zhí)行
r-- r-- --- 文文件屬主和屬組用戶(hù)(一般來(lái)說(shuō),是文件屬主所在的缺省組)可讀
r-- r-- r- - 文任何用戶(hù)都可讀,但不能寫(xiě)或執(zhí)行
rwx r-- r- - 文文件屬主可讀、寫(xiě)、執(zhí)行,屬組用戶(hù)和其他用戶(hù)只可讀
rwx r-x --- 文文件屬主可讀、寫(xiě)、執(zhí)行,屬組用戶(hù)可讀、執(zhí)
rwx r-x r- x 文文件屬主可讀、寫(xiě)、執(zhí)行,屬組用戶(hù)和其他用戶(hù)可讀、執(zhí)行
rw- rw- --- 文文件屬主和屬組用戶(hù)可讀、寫(xiě)
rw- rw- r- - 文文件屬主和屬組用戶(hù)可讀、寫(xiě),其他用戶(hù)可讀
rw- rw- --- 文文件屬主和屬組用戶(hù)及其他用戶(hù)讀可以讀、寫(xiě),慎用這種權(quán)限
設(shè)置,因?yàn)槿魏斡脩?hù)都可以寫(xiě)入該文件
使用chmod來(lái)改變權(quán)限位
這一命令有符號(hào)模式和絕對(duì)模式。
符號(hào)模式
chmod命令的一般格式為:
chmod [who] operator [permission] filename
w h o的含義是:
CODE:u 文件屬主權(quán)限。
g 屬組用戶(hù)權(quán)限。
o 其他用戶(hù)權(quán)限。
a 所有用戶(hù)(文件屬主、屬組用戶(hù)及其他用戶(hù))。
o p e r a t o r的含義:
CODE:+ 增加權(quán)限。
- 取消權(quán)限。
= 設(shè)定權(quán)限。
p e r m i s s i o n的含義:
CODE:r 讀權(quán)限。
w 寫(xiě)權(quán)限。
x 執(zhí)行權(quán)限。
s 文件屬主和組set-ID。
t 粘性位*。
l 給文件加鎖,使其他用戶(hù)無(wú)法訪問(wèn)。
u,g,o 針對(duì)文件屬主、屬組用戶(hù)及其他用戶(hù)的操作。
*在列文件或目錄時(shí),有時(shí)會(huì)遇到“ t位。“t代表了粘性位。如果在一個(gè)目錄上出現(xiàn)“t位,這就意味著該目錄中的文件只有其屬主才可以刪除,即使某個(gè)屬組用戶(hù)具有和屬主同等的權(quán)限。不過(guò)有的系統(tǒng)在這一規(guī)則上并不十分嚴(yán)格。
如果在文件列表時(shí)看到“ t,那么這就意味著該腳本或程序在執(zhí)行時(shí)會(huì)被放在交換區(qū)(虛存)。
對(duì)"t"還沒(méi)弄清楚這是"sunsroad"的解釋?zhuān)?/p>
QUOTE:原帖由 "sunsroad"]"t"權(quán)限用在文件上面是沒(méi)有意義的,不是什么在交換區(qū)的概念,它跟文件的執(zhí)行沒(méi)有關(guān)系,而主要是為了文件共享設(shè)置的。 [/quote 發(fā)表:
[quote]原帖由 "風(fēng)流涕淌" 發(fā)表:
1,t 權(quán)限是粘著位,例:TMP目錄下,任何人都有讀寫(xiě)執(zhí)行權(quán)限,但是不是任何人對(duì)里邊的可寫(xiě)權(quán)限的文件就可以刪除呢,當(dāng)然不是了,這個(gè)就是粘著位的做用,只有所有者才有權(quán)刪除自已的文件,當(dāng)然,ROOT除外
2,關(guān)于文件安全的另一種權(quán)限,
i權(quán)限 也就是不可修改權(quán)限 例:chattr u+i aaa 則aaa文件就不可修改,無(wú)論任何人,如果刪除就用u-i就好了
a權(quán)限 也就是只追加權(quán)限, 對(duì)于日志系統(tǒng)很好用,這個(gè)權(quán)限讓目標(biāo)文件只能追加,不能刪除,而且不能通過(guò)編輯器追加。方法和i權(quán)限一樣加
如果想要看某個(gè)文件是不是有這個(gè)權(quán)限,用lsattr filename就行了
例如
CODE:chmod a-x temp //rw- rw- rw- 收回所有用戶(hù)的執(zhí)行權(quán)限
chmod og-w temp //rw- r-- r- - 收回屬組用戶(hù)和其他用戶(hù)的寫(xiě)權(quán)限
chmod g+w temp //rw- rw- r- - 賦予屬組用戶(hù)寫(xiě)權(quán)限
chmod u+x temp //rwx rw- r- - 賦予文件屬主執(zhí)行權(quán)限
chmod go+x temp //rwx rwx r- x 賦予屬組用戶(hù)和其他用戶(hù)執(zhí)行權(quán)限
舉如
當(dāng)創(chuàng)建temp文件時(shí),它具有這樣的權(quán)限:
CODE:-rw-r--r--1 rootroot 0 10月 19 20:16 temp
如果要使屬主和屬組用戶(hù)具有有執(zhí)行權(quán)限,并取消其他用戶(hù)(所有其他用戶(hù))的寫(xiě)權(quán)限,可以用:
CODE:$ chmod ug+x temp
$ chmod o-w temp
這樣,該文件的權(quán)限變?yōu)椋?/p>
CODE:-rwxr--r--1 rootroot 0 10月 19 20:16 temp
現(xiàn)在已經(jīng)使文件屬主對(duì)temp文件具有讀、寫(xiě)執(zhí)行的權(quán)限,屬組用戶(hù)真有讀寫(xiě)權(quán)限,其它用戶(hù)沒(méi)有權(quán)限了。
絕對(duì)模式chm d命令絕對(duì)模式的一般形式為:
chmod [mode] file
其中m o d e是一個(gè)八進(jìn)制數(shù)。
在絕對(duì)模式中,權(quán)限部分有著不同的含義。每一個(gè)權(quán)限位用一個(gè)八進(jìn)制數(shù)來(lái)代表,如
CODE:0 4 0 0 文件屬主可讀
0 2 0 0 文件屬主可寫(xiě)
0 1 0 0 文件屬主可執(zhí)行
0 0 4 0 屬組用戶(hù)可讀
0 0 2 0 屬組用戶(hù)可寫(xiě)
0 0 1 0 屬組用戶(hù)可執(zhí)行
0 0 0 4 其他用戶(hù)可讀
0 0 0 2 其他用戶(hù)可寫(xiě)
0 0 0 1 其他用戶(hù)可執(zhí)行
在設(shè)定權(quán)限的時(shí)候,只需按照上面查出與文件屬主、屬組用戶(hù)和其他用戶(hù)所具有的權(quán)限相對(duì)應(yīng)的數(shù)字,并把它們加起來(lái),就是相應(yīng)的權(quán)限表示。
可以看出,文件屬主、屬組用戶(hù)和其他用戶(hù)分別所能夠具有的最大權(quán)限值就是7。
再來(lái)看看前面舉的例子:
CODE:-rwxr--r-- 1 root 0 10月 19 20:16 temp
相應(yīng)的權(quán)限是:
CODE:rwx-:0400 + 0200 +0100 (文件屬主可讀、寫(xiě)、執(zhí)行) = 0 7 0 0
r--:0 0 4 0 (屬組用戶(hù)可讀) = 0 0 4 0
r--:0 0 4 0 (屬組用戶(hù)可讀) = 0 0 4 0
0 7 4 4
有一個(gè)計(jì)算八進(jìn)制權(quán)限表示的更好辦法,如下:
CODE:文件屬主:r w x:4 + 2 + 1
屬組用戶(hù):r w x:4 + 2 + 1
其他用戶(hù):r w x:4 + 2 + 1
這上面這相,更容易地計(jì)算出相應(yīng)的權(quán)限值,只要分別針對(duì)文件屬主、屬組用戶(hù)和其他用戶(hù)把相應(yīng)權(quán)限下面的數(shù)字加在一起就可以了。
temp文件具有這樣的權(quán)限:
CODE:r w xr - - r - -
4+2+1 44
把相應(yīng)權(quán)限位所對(duì)應(yīng)的值加在一起,就是7 4 4。
如:
CODE:chmod 666 rw- rw- rw- 賦予所有用戶(hù)讀和寫(xiě)的權(quán)限
chmod 644 rw- r-- r- - 賦予所有文件屬主讀和寫(xiě)的權(quán)限,所有其他用戶(hù)讀權(quán)限
chmod 744 rwx r-- r- - 賦予文件屬主讀、寫(xiě)和執(zhí)行的權(quán)限,所有其他用戶(hù)讀的權(quán)限
chmod 664 rw- rw- r- - 賦予文件屬主和屬組用戶(hù)讀和寫(xiě)的權(quán)限,其他用戶(hù)讀權(quán)限
chmod 70
