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