天天看點

《Linux指令行與shell腳本程式設計大全》 第七章了解Linux檔案權限

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。

《Linux指令行與shell腳本程式設計大全》 第七章了解Linux檔案權限

/etc/skel   目錄很有意思,建立使用者時會将這些預設檔案複制到你建立的每個使用者的HOME目錄中。

例子:

$user add -m test   // 預設情況下不會建立HOME目錄,除非加了 -m。

                                      // 建立了HOME目錄,并将/etc/skel 複制進去了

《Linux指令行與shell腳本程式設計大全》 第七章了解Linux檔案權限

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檢視

《Linux指令行與shell腳本程式設計大全》 第七章了解Linux檔案權限

umask  第一個表示粘着位。

後面的3位表示檔案或目錄對應的umask對應的八進制值。

這個隻是一個掩碼。還要轉換一下才能得到真正的權限

對于檔案來說全權限是666(全都可讀可寫) rw-rw-rw-

對于目錄來說全權限是777(全都可讀可寫可執行)rwxrwxrwx

建立新檔案的權限=全權限 - umask

比如:umask 是222,那麼建立的檔案的權限就是 666 - 222 = 444(r--r--r--)

《Linux指令行與shell腳本程式設計大全》 第七章了解Linux檔案權限

對于目錄來說就是 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位置位。

繼續閱讀