您的位置:首頁技術文章
文章詳情頁

類UNIX系統基礎:文件安全與權限

瀏覽:94日期:2024-06-15 18:35:04

當創建一個文件的時候,系統保存了有關該文件的全部信息,包括:

" 文件的位置。

" 文件類型。

" 文件長度。

" 哪位用戶擁有該文件,哪些用戶可以訪問該文件。

" i節點。

" 文件的修改時間。

" 文件的權限位。

讓我們用touch命令創建一個文件:

CODE:$ touch temp創建了一個空文件,現在用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所列出的入口占用空間的字節數(以K為單位)。

1該文件硬鏈接的數目。

root:文件屬主。

root:文件屬組(一般是文件屬主所在的缺省組。)

34890:字節來表示的文件長度,記住,不是K字節!

10月 19 20:17:件的更新時間。

temp or httd.conf :件名。QUOTE:原帖由 "sunsroad " 發表:

BTW:要檢查該目錄所有文件占用的空間應該用這個命令:du。

譬如說前面說的36是如何計算出來:

首先我們要先了解你所用的文件系統的IO BLOCK(中文叫作簇)為多少,在你所使用的這個文件系統的IO BLOCK大小是4096 Bytes。

他意義是文件系統最小的讀寫及分配單位,每次讀寫操作你都不能小于這個尺寸。即使你的文件是只有一個字節。而且文件在硬盤上的存儲也是以這個為單位,就是說如果文件尺寸小于這個值,那么它在磁盤上占用的空間就是4096字節。

占用空間的具體算法是:(進一(文件尺寸/4096))×4096。根據這個你就可以計算出你所列舉的例子中的文件的空間使用狀況:34890除以4096,大約等于8.5,進一法取得為9,就是說文件在磁盤上占用了9個BLOCk,每個BLOCK為4K,所以這兩個文件占用的空間就是36K。

這個規則也適合于目錄,不過不會出現為0的目錄,即使是空目錄

-rw-r--r-- :這是該文件的權限位。

第一個橫杠:指定文件類型,表示該文件是一個普通文件。(所創建的文件絕大多數都是普通文件或符號鏈接文件)。

除去最前面的橫杠,一共是9個字符,他們分別對應9個權限位。通過這些權限位,可以設定用戶對文件的訪問權限。對這兩個文件的精確解釋是:

CODE:rw-:前三位,文件屬主可讀、寫

r--:中間三位,組用戶可讀

r--:最后三位,其他用戶只可讀

在創建的時候并未給屬主賦予執行權限,在用戶創建文件時,系統不會自動地設置執行權限位。這是出于加強系統安全的考慮。

現在分開詳細說明:

文件類型

前面提到的第一條橫杠,表示該文件是普通文件型

文件類型有七種,它可以從ls -l命令所列出的結果的第一位看出。

七種類型:

CODE:d 目錄。

l 符號鏈接(指向另一個文件)。

s 套接字文件。

b 塊設備文件。

c 字符設備文件。

p 命名管道文件。

- 普通文件,或者更準確地說,不屬于以上幾種類型的文件。

文件的權限位中中每一組字符中含有三個權限位:

CODE:r 讀權限

w 寫/更改權限

x 執行該腳本或程序的權限

如:

CODE:r-- --- --- 文文件屬主可讀,但不能寫或執行

r-- r-- --- 文文件屬主和屬組用戶(一般來說,是文件屬主所在的缺省組)可讀

r-- r-- r- - 文任何用戶都可讀,但不能寫或執行

rwx r-- r- - 文文件屬主可讀、寫、執行,屬組用戶和其他用戶只可讀

rwx r-x --- 文文件屬主可讀、寫、執行,屬組用戶可讀、執

rwx r-x r- x 文文件屬主可讀、寫、執行,屬組用戶和其他用戶可讀、執行

rw- rw- --- 文文件屬主和屬組用戶可讀、寫

rw- rw- r- - 文文件屬主和屬組用戶可讀、寫,其他用戶可讀

rw- rw- --- 文文件屬主和屬組用戶及其他用戶讀可以讀、寫,慎用這種權限

設置,因為任何用戶都可以寫入該文件

使用chmod來改變權限位

這一命令有符號模式和絕對模式。

符號模式

chmod命令的一般格式為:

chmod [who] operator [permission] filename

w h o的含義是:

CODE:u 文件屬主權限。

g 屬組用戶權限。

o 其他用戶權限。

a 所有用戶(文件屬主、屬組用戶及其他用戶)。

o p e r a t o r的含義:

CODE:+ 增加權限。

- 取消權限。

= 設定權限。

p e r m i s s i o n的含義:

CODE:r 讀權限。

w 寫權限。

x 執行權限。

s 文件屬主和組set-ID。

t 粘性位*。

l 給文件加鎖,使其他用戶無法訪問。

u,g,o 針對文件屬主、屬組用戶及其他用戶的操作。

*在列文件或目錄時,有時會遇到“ t位。“t代表了粘性位。如果在一個目錄上出現“t位,這就意味著該目錄中的文件只有其屬主才可以刪除,即使某個屬組用戶具有和屬主同等的權限。不過有的系統在這一規則上并不十分嚴格。

如果在文件列表時看到“ t,那么這就意味著該腳本或程序在執行時會被放在交換區(虛存)。

對"t"還沒弄清楚這是"sunsroad"的解釋:

QUOTE:原帖由 "sunsroad"]"t"權限用在文件上面是沒有意義的,不是什么在交換區的概念,它跟文件的執行沒有關系,而主要是為了文件共享設置的。 [/quote 發表:

[quote]原帖由 "風流涕淌" 發表:

1,t 權限是粘著位,例:TMP目錄下,任何人都有讀寫執行權限,但是不是任何人對里邊的可寫權限的文件就可以刪除呢,當然不是了,這個就是粘著位的做用,只有所有者才有權刪除自已的文件,當然,ROOT除外

2,關于文件安全的另一種權限,

i權限 也就是不可修改權限 例:chattr u+i aaa 則aaa文件就不可修改,無論任何人,如果刪除就用u-i就好了

a權限 也就是只追加權限, 對于日志系統很好用,這個權限讓目標文件只能追加,不能刪除,而且不能通過編輯器追加。方法和i權限一樣加

如果想要看某個文件是不是有這個權限,用lsattr filename就行了

例如

CODE:chmod a-x temp //rw- rw- rw- 收回所有用戶的執行權限

chmod og-w temp //rw- r-- r- - 收回屬組用戶和其他用戶的寫權限

chmod g+w temp //rw- rw- r- - 賦予屬組用戶寫權限

chmod u+x temp //rwx rw- r- - 賦予文件屬主執行權限

chmod go+x temp //rwx rwx r- x 賦予屬組用戶和其他用戶執行權限

舉如

當創建temp文件時,它具有這樣的權限:

CODE:-rw-r--r--1 rootroot     0 10月 19 20:16 temp

如果要使屬主和屬組用戶具有有執行權限,并取消其他用戶(所有其他用戶)的寫權限,可以用:

CODE:$ chmod ug+x temp

$ chmod o-w temp

這樣,該文件的權限變為:

CODE:-rwxr--r--1 rootroot     0 10月 19 20:16 temp

現在已經使文件屬主對temp文件具有讀、寫執行的權限,屬組用戶真有讀寫權限,其它用戶沒有權限了。

絕對模式

chm d命令絕對模式的一般形式為:

chmod [mode] file

其中m o d e是一個八進制數。

在絕對模式中,權限部分有著不同的含義。每一個權限位用一個八進制數來代表,如

CODE:0 4 0 0 文件屬主可讀

0 2 0 0 文件屬主可寫

0 1 0 0 文件屬主可執行

0 0 4 0 屬組用戶可讀

0 0 2 0 屬組用戶可寫

0 0 1 0 屬組用戶可執行

0 0 0 4 其他用戶可讀

0 0 0 2 其他用戶可寫

0 0 0 1 其他用戶可執行

在設定權限的時候,只需按照上面查出與文件屬主、屬組用戶和其他用戶所具有的權限相對應的數字,并把它們加起來,就是相應的權限表示。

可以看出,文件屬主、屬組用戶和其他用戶分別所能夠具有的最大權限值就是7。

再來看看前面舉的例子:

CODE:-rwxr--r-- 1 root     0 10月 19 20:16 temp

相應的權限是:

CODE:rwx-:0400 + 0200 +0100 (文件屬主可讀、寫、執行) = 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

有一個計算八進制權限表示的更好辦法,如下:

CODE:文件屬主:r w x:4 + 2 + 1

屬組用戶:r w x:4 + 2 + 1

其他用戶:r w x:4 + 2 + 1

這上面這相,更容易地計算出相應的權限值,只要分別針對文件屬主、屬組用戶和其他用戶把相應權限下面的數字加在一起就可以了。

temp文件具有這樣的權限:

CODE:r w xr - - r - -

4+2+1 44

把相應權限位所對應的值加在一起,就是7 4 4。

如:

CODE:chmod 666 rw- rw- rw- 賦予所有用戶讀和寫的權限

chmod 644 rw- r-- r- - 賦予所有文件屬主讀和寫的權限,所有其他用戶讀權限

chmod 744 rwx r-- r- - 賦予文件屬主讀、寫和執行的權限,所有其他用戶讀的權限

chmod 664 rw- rw- r- - 賦予文件屬主和屬組用戶讀和寫的權限,其他用戶讀權限

chmod 70

標簽: Unix系統
国产综合久久一区二区三区