1. 程式人生 > >許可權【TLCL】

許可權【TLCL】

使用者帳戶 定義在/etc/passwd 檔案裡面,使用者組定義在/etc/group 檔案裡面。

/etc/shadow 包含了關於使用者密碼的資訊

 

檔案屬性:

屬性 檔案型別
- 一個普通檔案
d 一個目錄
l 一個符號連結。注意對於符號連結檔案,剩餘的檔案屬性總是"rwxrwxrwx",而且都是 虛擬值。真正的檔案屬性是指符號連結所指向的檔案的屬性。
c 一個字元裝置檔案。這種檔案型別是指按照位元組流來處理資料的裝置。 比如說終端機或者調變解調器
b 一個塊裝置檔案。這種檔案型別是指按照資料塊來處理資料的裝置,例如一個硬碟或者 CD-ROM 盤。

許可權屬性:

屬性 檔案 目錄
r 允許開啟並讀取檔案內容。 允許列出目錄中的內容,前提是目錄必須設定了可執行屬性(x)。
w 允許寫入檔案內容或截斷檔案。但是不允許對檔案進行重新命名或刪除,重新命名或刪除是由目錄的屬性決定的。 允許在目錄下新建、刪除或重新命名檔案,前提是目錄必須設定了可執行屬性(x)。
x 允許將檔案作為程式來執行,使用指令碼語言編寫的程式必須設定為可讀才能被執行。 允許進入目錄,例如:cd directory 。

 

更改檔案模式——chmod

只有檔案的所有者或者超級使用者才 能更改檔案或目錄的模式

chmod 命令支援兩種不同的方法來改變檔案模式:八進位制數字表示法或 符號表示法

chmod 命令符號表示法

u "user"的簡寫,意思是檔案或目錄的所有者。
g 使用者組。
o "others"的簡寫,意思是其他所有的人。
a "all"的簡寫,是"u", "g"和“o”三者的聯合。

執行的操作可能是一個“”字元,表示加上一個許可權, 一個“”,表示刪掉一個許可權,或者是一個“”,表示只有指定的許可權可用,其它所有的許可權被刪除。

許可權由 “r”、“w”和 “x” 來指定。

 

umask

0002

先忽略掉開頭的三個零,掩碼中若出現一個數字1,則刪除檔案模式中和這個1在相同位置的屬性

其中之一是 setuid 位(八進位制4000),這種操作通常會應用到 一些由超級使用者所擁有的程式。

第二個是 setgid 位(八進位制2000),這個相似於 setuid 位,把有效使用者組 ID 從真正的 使用者組 ID 更改為檔案所有者的組 ID。

如果設定了一個目錄的 setgid 位,則目錄中新建立的檔案 具有這個目錄使用者組的所有權,而不是檔案建立者所屬使用者組的所有權。

第三個是 sticky 位(八進位制1000)。這個繼承於 Unix,在 Unix 中,它可能把一個可執行檔案 標誌為“不可交換的”。

在 Linux 中,會忽略檔案的 sticky 位,但是如果一個目錄設定了 sticky 位, 那麼它能阻止使用者刪除或重新命名檔案,除非使用者是這個目錄的所有者,或者是檔案所有者,或是 超級使用者。

 

chmod u+s program  授予一個程式 setuid 許可權。

chmod g+s dir            授予一個目錄 setgid 許可權。

chmod +t dir              授予一個目錄 sticky 許可權

 

su [-[l]] [user]

如果包含"-l"選項,那麼會為指定使用者啟動一個需要登入的 shell。這意味著會載入此使用者的 shell 環境, 並且工作目錄會更改到這個使用者的家目錄。

選項"-l"可以縮寫為"-",這是經常用到的形式。

如果不指定使用者,那麼就假定是 超級使用者。

 輸入"exit",則返回到原來的 shell

 

su -c 'command'

使用這種模式,命令傳遞到一個新 shell 中執行。把命令用單引號引起來很重要,因為我們不想 命令在我們的 shell 中展開,但需要在新 shell 中展開。

 

sudo - 以另一個使用者身份執行命令

su 和 sudo 之間的一個重要區別是 sudo 不會重新啟動一個 shell,也不會載入另一個 使用者的 shell 執行環境。

 

chown - 更改檔案所有者和使用者組

chown [owner][:[group]] file...

chown 命令被用來更改檔案或目錄的所有者和使用者組。

引數 結果
bob 把檔案所有者從當前屬主更改為使用者 bob。
bob:users 把檔案所有者改為使用者 bob,檔案使用者組改為使用者組 users。
:admins 把檔案使用者組改為組 admins,檔案所有者不變。
bob: 檔案所有者改為使用者 bob,檔案使用者組改為使用者 bob 登入系統時所屬的使用者組。

 

chgrp - 更改使用者組所有權

 

更改使用者密碼

passwd [user]