Linux的許可權和屬性
在 Linux 中我們通常使用以下兩個命令來修改檔案或目錄的所屬使用者與許可權:
- chown (change ownerp) : 修改所屬使用者與組。
- chmod (change mode) : 修改使用者的許可權。
- 在 Linux 中我們可以使用ll或者ls –l命令來顯示一個檔案的屬性以及檔案所屬的使用者和組
在 Linux 中第一個字元代表這個檔案是目錄、檔案或連結檔案等等。
- 當為d則是目錄
- 當為-則是檔案;
- 若是l則表示為連結文件(link file);
- 若是b則表示為裝置檔案裡面的可供儲存的介面裝置(可隨機存取裝置);
- 若是c則表示為裝置檔案裡面的串列埠裝置,例如鍵盤、滑鼠(一次性讀取裝置)。
rwx的三個引數的組合。其中,r代表可讀(read)、w代表可寫(write)、x代表可執行(execute)。 要注意的是,這三個許可權的位置不會改變,如果沒有許可權,就會出現減號-而已
更改檔案屬性
1、chgrp:更改檔案屬組
語法:
chgrp [-R] 屬組名 檔名
引數選項
- -R:遞迴更改檔案屬組,就是在更改某個目錄檔案的屬組時,如果加上-R的引數,那麼該目錄下的所有檔案的屬組都會更改。
2、chown:更改檔案屬主,也可以同時更改檔案屬組
語法:
chown [–R] 屬主名 檔名 chown [-R] 屬主名:屬組名 檔名
3、chmod:更改檔案9個屬性
Linux檔案屬性有兩種設定方法,一種是數字,一種是符號。
Linux 檔案的基本許可權就有九個,分別是owner/group/others(擁有者/組/其他)三種身份各有自己的read/write/execute許可權。
先複習一下剛剛上面提到的資料:檔案的許可權字元為:-rwxrwxrwx, 這九個許可權是三個三個一組的!其中,我們可以使用數字來代表各個許可權,各許可權的分數對照表如下:
- r:4
- w:2
- x:1
每種身份(owner/group/others)各自的三個許可權(r/w/x)分數是需要累加的,例如當權限為:-rwxrwx---分數則是:
- owner = rwx = 4+2+1 = 7
- group = rwx = 4+2+1 = 7
- others= --- = 0+0+0 =0
-
所以等一下我們設定許可權的變更時,該檔案的許可權數字就是770。變更許可權的指令 chmod 的語法是這樣的:
chmod [-R] xyz 檔案或目錄
選項與引數:
- xyz : 就是剛剛提到的數字型別的許可權屬性,為 rwx 屬性數值的相加。
- -R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案都會變更
-
符號型別改變檔案許可權
還有一個改變許可權的方法,從之前的介紹中我們可以發現,基本上就九個許可權分別是:
- user:使用者
- group:組
- others:其他
那麼我們就可以使用u, g, o來代表三種身份的許可權。
此外,a則代表all,即全部的身份。讀寫的許可權可以寫成r, w, x。
-
新增新的使用者賬號使用useradd命令,其語法如下:
useradd 選項 使用者名稱
引數說明:
-
選項:
- -c comment 指定一段註釋性描述。
- -d 目錄 指定使用者主目錄,如果此目錄不存在,則同時使用-m選項,可以建立主目錄。
- -g 使用者組 指定使用者所屬的使用者組。
- -G 使用者組,使用者組 指定使用者所屬的附加組。
- -s Shell檔案 指定使用者的登入Shell。
- -u 使用者號 指定使用者的使用者號,如果同時有-o選項,則可以重複使用其他使用者的標識號。
-
使用者名稱:
指定新賬號的登入名。
-
-
1、增加一個新的使用者組使用groupadd命令。其格式如下:
groupadd 選項 使用者組
可以使用的選項有:
- -g GID 指定新使用者組的組標識號(GID)。
- -o 一般與-g選項同時使用,表示新使用者組的GID可以與系統已有使用者組的GID相同。
2、如果要刪除一個已有的使用者組,使用groupdel命令,其格式如下:
groupdel 使用者組
3、修改使用者組的屬性使用groupmod命令。其語法如下:
groupmod 選項 使用者組
常用的選項有:
- -g GID 為使用者組指定新的組標識號。
- -o 與-g選項同時使用,使用者組的新GID可以與系統已有使用者組的GID相同。
- -n新使用者組 將使用者組的名字改為新名字
/etc/passwd檔案是使用者管理工作涉及的最重要的一個檔案。
1)"使用者名稱"是代表使用者賬號的字串。
通常長度不超過8個字元,並且由大小寫字母和/或數字組成。登入名中不能有冒號(:),因為冒號在這裡是分隔符。
為了相容起見,登入名中最好不要包含點字元(.),並且不使用連字元(-)和加號(+)打頭。
2)“口令”一些系統中,存放著加密後的使用者口令字。
雖然這個欄位存放的只是使用者口令的加密串,不是明文,但是由於/etc/passwd檔案對所有使用者都可讀,所以這仍是一個安全隱患。因此,現在許多Linux 系統(如SVR4)都使用了shadow技術,把真正的加密後的使用者口令字存放到/etc/shadow檔案中,而在/etc/passwd檔案的口令欄位中只存放一個特殊的字元,例如“x”或者“*”。
3)“使用者標識號”是一個整數,系統內部用它來標識使用者。
一般情況下它與使用者名稱是一一對應的。如果幾個使用者名稱對應的使用者標識號是一樣的,系統內部將把它們視為同一個使用者,但是它們可以有不同的口令、不同的主目錄以及不同的登入Shell等。
通常使用者標識號的取值範圍是0~65 535。0是超級使用者root的標識號,1~99由系統保留,作為管理賬號,普通使用者的標識號從100開始。在Linux系統中,這個界限是500。
4)“組標識號”欄位記錄的是使用者所屬的使用者組。
它對應著/etc/group檔案中的一條記錄。
5)“註釋性描述”欄位記錄著使用者的一些個人情況。
例如使用者的真實姓名、電話、地址等,這個欄位並沒有什麼實際的用途。在不同的Linux 系統中,這個欄位的格式並沒有統一。在許多Linux系統中,這個欄位存放的是一段任意的註釋性描述文字,用做finger命令的輸出。
6)“主目錄”,也就是使用者的起始工作目錄。
它是使用者在登入到系統之後所處的目錄。在大多數系統中,各使用者的主目錄都被組織在同一個特定的目錄下,而使用者主目錄的名稱就是該使用者的登入名。各使用者對自己的主目錄有讀、寫、執行(搜尋)許可權,其他使用者對此目錄的訪問許可權則根據具體情況設定。
7)使用者登入後,要啟動一個程序,負責將使用者的操作傳給核心,這個程序是使用者登入到系統後執行的命令直譯器或某個特定的程式,即Shell。
Shell是使用者與Linux系統之間的介面。Linux的Shell有許多種,每種都有不同的特點。常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。
系統管理員可以根據系統情況和使用者習慣為使用者指定某個Shell。如果不指定Shell,那麼系統使用sh為預設的登入Shell,即這個欄位的值為/bin/sh。
使用者的登入Shell也可以指定為某個特定的程式(此程式不是一個命令直譯器)。
利用這一特點,我們可以限制使用者只能執行指定的應用程式,在該應用程式執行結束後,使用者就自動退出了系統。有些Linux 系統要求只有那些在系統中登記了的程式才能出現在這個欄位中。
8)系統中有一類使用者稱為偽使用者(pseudo users)。
這些使用者在/etc/passwd檔案中也佔有一條記錄,但是不能登入,因為它們的登入Shell為空。它們的存在主要是方便系統管理,滿足相應的系統程序對檔案屬主的要求。