天天看點

騰>龍>公>司>開>戶l>7665445111

www.TL3090.com,Linux是一個多使用者作業系統,在多使用者作業系統上我們需要一種方法來允許或者拒絕通路特定的檔案和目錄。檔案有所屬人和相關的單個組。我們可以設定所屬人或者租的權限,以及所有其他人的權限。

檔案隻具有三個應用權限的使用者類别。檔案的所有者,通常是建立檔案的使用者。檔案的所有組,通常是建立改檔案的使用者所在的主要組,但是可以進行更改。可以為檔案的所屬人、所屬組和系統中除所屬人和所屬組的其它使用者設定不同的權限。

id指令可以檢視使用者的主要組和補充組成員

可以使用三種權限:

權限,也就是對檔案和目錄的影響

r(讀取):可以讀取檔案的内容,可以累出目錄的内容(檔案名)

w(寫入):可以更改檔案的内容,可以建立或者是删除目錄中的任一檔案

x(執行):可以作為指令執行的檔案,可以通路目錄的内容(取決于目錄中檔案的權限)

使用ls -l 和ls -ld指令來檢視所有權、類型,和檔案的權限

一個檔案的常見權限是:無,讀 或者讀/寫

一個目錄的時候,他們想要的一般是ls讀取和cd執行

一個檔案的寫權限是允許修改檔案(nano或者重定向),一個目錄的寫權限是允許修改目錄的内容(touch,mkdir,cp,mv,rm)

通常使用者對隻讀目錄具有read和exec權限,是以他們可以列出目錄并通路其中的内容。如果使用者對目錄具有read通路的權限,可以列出其中檔案的名稱,但是其他資訊都不可以通路。如果使用者對某個目錄具有exec通路的權限,則他們不能列出該目錄中檔案的名稱,但是他們如果已經知道具有讀取權限的問價名稱,那麼可以通過絕對路徑的方式來通路檔案的内容。

對問價的所在目錄具有寫入權限的任何人都可以删除該目錄下的檔案,不論檔案的所屬人和權限如何。

更改檔案/目錄的權限

指令行更改權限可以使用chmod(change mode 更改指令)。

符号法:

chmod whowhatwhich file|directory

-who 是指u、g、o、a(表示使用者,組,其她,全部)

-what是指+、-、=(表示添加,删除,精确設定)

-which 是指r、w、x(表示讀取,寫入,執行)

數值法:

chmod ### file|directory

-每個數字代表一個通路的級别:使用者、組、其他

-#是r=4,w=2,x=1的組合

更改目錄/檔案的所屬人和所屬組

預設情況下,我虛拟鍵檔案的所屬人為建立該檔案的使用者,所屬組為該使用者的主要組

使用chown指令可以更改檔案的所有權

配合-R選項,可以遞歸更改這個目錄樹的所有權

chown也可以用于更改檔案的所屬組,隻需在組名稱之前加上冒号(:)

練習:

一個目錄可以讓ateam組中的所有成員通路,alex建立的檔案可以讓zhang修改

1,在/home總中建立ateam-text目錄

2、将ateam-text目錄的所有權更改為ateam

3、確定組成員在ateam-text中可以建立和删除檔案

4、去報ateam-text禁止他人通路

5、退出root,切換到alex

6、進入/home/ateam-text

7、建立檔案alexfile3

8、觀察新檔案預設的所屬人和所屬組

9、将檔案的所屬組更改為ateam

10、切換到zhang

11、進入/home/ateam-text,編輯alexfile3

配置一個目錄,在這個目錄下新建立檔案,目錄的所屬成員自動具有寫權限,使用特殊權限,和預設的umask設定

特殊權限

對于可執行的檔案setuid(或setgid)權限表示以檔案所屬人(或者所屬組)的身份運作指令,而不是以執行者的身份運作,例如passwd指令

目錄的粘滞位(sticky)可以設定删除檔案的特殊權限:僅檔案的所有者(和root)可以删除目錄中的檔案,例如/tmp目錄:

目錄的setgid權限表示在該目錄中建立的檔案将繼承該目錄的所屬組,額不是建立使用者的主要組。

設定特殊權限

用符号表示:setuid=u+s;setgid=g+s;sticky=o+t

用數值表示(第一位數字):setuid=4;setgid=2;sticky=1

在一個目錄總建立的檔案自動繼承目錄的組

預設設定允許系統上的素有使用者組檢視公共區域的檔案,調整使得建立的檔案擁有更多限制的權限。

預設檔案權限

在系統中建立檔案和目錄的時候都會有預設權限,檔案時666,目錄是777.

但是我們會發現建立出的檔案和目錄不是666和777,這是因為其中一些權限被shell的umask屏蔽了。

bash shell的系統預設umask在/etc/profile 和/etc/bashrc檔案中定義。使用者可以通過自己的家目錄中的.bash_profile 和.bashrc 檔案的設定來覆寫系統預設值

建立新檔案,檢視預設umask對權限的影響

将umask設定為0,次設定不會屏蔽新檔案的任何權限

将umask設定為007,此設定将屏蔽其他人的權限

将umask設定為027,次設定将屏蔽組的寫權限和其他人的所有權限

使用root使用者登入更改費特權使用者預設的umask,拒絕非組中的使用者所有通路。

修改/etc/bshrc 和/etc/profile更改bash shell 使用者的預設umask,因為非特權使用者的預設umask是002,在檔案中找到umask指令設定umask值,更改他們,所屬組為007.

1、切換到alex使用者,确定使用者的umask

2、建立新目錄/tmp/shared 和新檔案/tmp/shared/defaults,檢視預設umask對權限的影響

3、将/tmp/share目錄所屬組改為ateam

4、在/tmp/shared目錄中建立一個新的檔案

5、確定在/tmp/shared目錄中建立的檔案能夠繼承ateam組

6、更改Alex的umask,使得建立的新檔案所屬組擁有隻讀權限,其他人,沒有通路權限

7、切換到alex,打開一個新的shell檢視umask

8、将Alex預設的umask更改為禁止不屬于組的使用者的所有通路權限

從新使用Alex登入

繼續閱讀