Linux沿用了Unix檔案權限的方法,允許使用者群組根據每個檔案和目錄的安全性設定來通路檔案。
使用者權限通過建立使用者時配置設定的使用者ID(UID)來跟蹤的。每個使用者有唯一的ID,但是登入時用的不是UID,而是登入名。
7.1.1 /etc/passwd 檔案
這個檔案将使用者的登入名比對到對應的UID中,還包含了一些與使用者相關的資訊。
root使用者賬戶是Linux系統的管理者,UID是0.
有些賬戶是系統賬戶:系統上運作的各種服務程序通路資源用的特殊賬戶。
所有運作在背景的服務都需要用一個系統使用者賬戶登入到linux系統上。
UID 500 以下是系統預留給系統賬戶的。
/etc/passwd 檔案包含的資訊有:登入使用者名,密碼,UID,組ID(GID),文本描述,HOME目錄的位置,預設的shell。
7.1.2 /etc/shadow 檔案
對Linux系統密碼管理提供了更多的控制。隻有root才能通路
為每個使用者賬戶都儲存了一條記錄。
這樣Linux系統可以更好的控制使用者密碼。
7.1.3 添加新使用者
useradd,可以一次性建立新使用者賬戶及設定使用者HOME目錄結構。
可以檢視useradd指令用到的一些預設值, -D。
/etc/skel 目錄很有意思,建立使用者時會将這些預設檔案複制到你建立的每個使用者的HOME目錄中。
例子:
$user add -m test // 預設情況下不會建立HOME目錄,除非加了 -m。
// 建立了HOME目錄,并将/etc/skel 複制進去了
useradd還可以接一些參數。
還可以更改預設值的參數。
7.1.4 删除使用者
預設會删除/etc/passwd檔案中的使用者資訊。不會删除屬于該賬戶的任何檔案。
加上-r 會删除使用者的HOME目錄和郵件目錄,
userdel -r test
7.1.5 修改使用者
修改使用者賬戶資訊的
usermod: 修改使用者賬戶字段。可以加其他選項
passwd和chpasswd,改變使用者密碼
chpwsswd能從标準輸入自動讀取登入密碼和密碼對清單。
chsh:修改預設的使用者登入shell
chfn:
chage:幫助管理使用者賬戶的有效期
7.2 使用Linux組
組權限允許許多個使用者對系統中的對象(檔案,目錄,裝置......)共享一組共用的權限。
每個組都有唯一的組ID(GID)。還有唯一的組名。
7.2.1 /etc/group 檔案
可以檢視該檔案:包含組名 組密碼 GID 屬于該組的使用者清單
不能直接修改/etc/group 這個檔案來将一個使用者添加進組。而應該使用usermod指令。
7.2.2 建立新組
groupadd指令
7.2.3 修改組
groupmod指令
7.3 了解檔案權限
ls -l
- 代表檔案
d 代表目錄
l 連結
c 字元裝置
b 塊裝置
n 網絡裝置
-rwxrwxr-x 分别是檔案屬主、同組使用者、其他人的權限
7.3.2 預設檔案權限
建立一個檔案,會有個預設的權限。通過umask檢視
umask 第一個表示粘着位。
後面的3位表示檔案或目錄對應的umask對應的八進制值。
這個隻是一個掩碼。還要轉換一下才能得到真正的權限
對于檔案來說全權限是666(全都可讀可寫) rw-rw-rw-
對于目錄來說全權限是777(全都可讀可寫可執行)rwxrwxrwx
建立新檔案的權限=全權限 - umask
比如:umask 是222,那麼建立的檔案的權限就是 666 - 222 = 444(r--r--r--)
對于目錄來說就是 555 (r-xr-xr-x)
7.4 改變安全性設定
chmod 指令
chmod 777 newfile
chmod o+r newfile // 給其他使用者增加可執行權限
chmod u+r newfile // 給屬主增加可執行權限
chmod g+w newfile // 給組使用者增加寫權限
chmod a+r newfile // 給所有增加讀權限
還可以移除權限
chmod a-r newfile // 給所有移除讀權限
7.4.2 改變所屬關系
chown改變檔案的屬主,(可用登入名或UID來指定檔案的新屬主)
chgrp改變檔案的預設屬組(屬于哪個組group)
7.5 Linux上共享檔案的方法是建立組
目前建立一個檔案想讓其他人能通路,有兩個方法:
(1)改變其他使用者所在安全組的通路權限
(2)給檔案配置設定一個包含其他使用者的新預設屬組。
大規模操作就會很繁瑣。下面就來解決這問題。
Linux還為每個檔案和目錄存儲了3個額外的資訊位
設定使用者ID(SUID):檔案被使用者使用時,程式會以檔案屬主的權限運作
設定組ID(SGID):對檔案來說被使用時,以檔案屬組的權限運作。對目錄來說,建立的新檔案會已目錄的預設屬組作為預設屬組。
粘着位:程序結束後檔案還駐留在記憶體中。
SGID非常重要,啟用SGID之後可以強制在一個共享目錄下建立的新檔案都屬于該目錄的屬組,這個組也就成為了每個使用者的屬組。
要建立共享目錄,使目錄裡的新檔案都能沿用目錄的屬組,隻需将該目錄的SGID位置位。