第4章 管理使用者和使用者組
對使用者和使用者組的的管理是Fedora系統管理的重點之一。本章將講解如何在圖形介面和命令列兩種方式下增加、管理、刪除使用者和使用者組的方法,當然還包括更高階的一些功能,比如建立使用者組目錄。
4.1 使用者和使用者組的介紹
使用者可以是人(指的是與人相關聯的使用者賬號),也可以是特定程式使用的賬號,使用者組是邏輯上的組織者,用於通用的用途。同一個組內的使用者將擁有該組所指定的許可權,包括讀、寫和執行相應的檔案。
每個使用者都有一個唯一的數字形式的ID(UID),每個許可權組也都有一個數字形式的ID(GID)。建立檔案的使用者也是被建立檔案的使用者,以及該使用者所在組也是檔案的擁有者。檔案的許可權被分成讀、寫、可執行許可權,而且可以分配不同的許可權給擁有者、使用者組或所有人。只有ROOT使用者才能改變一個檔案的所有人,訪問許可權(讀、寫、執行)則由ROOT和檔案所有者都可以修改。
另外,FEDORA支援對檔案和目錄設定訪問許可權控制列表(ACLS),這樣可以指定非檔案擁有者以外的使用者具有訪問許可權。相關資訊請參考《儲存管理指南》中的“訪問許可權列表”章節。
4.1.1 使用者私有組
FEDORA系統使用了使用者私有許可權組(UPG),這樣更方便於管理使用者組。當建立新使用者時會自動增加一個使用者私有許可權組。這個許可權組的名字和使用者的名字是一樣的,而且這個使用者組裡有且只有新建立的這個使用者。
使用者私有許可權組的功能在於能夠安全的設定新建立的檔案和目錄的預設許可權,只允許其組內的使用者修改檔案和目錄。
決定新建檔案和目錄的許可權的設定叫UMASK,配置在/etc/bashrc檔案裡。類UNIX系統的UMASK通常設定為022,指的是僅允許檔案和目錄的建立者可以修改。在這個規則下,其它所有使用者,包括檔案建立者所在使用者組內的其它使用者都無權修改。但是,在使用者私有組規則下,由於使用者私有組只有同名的一個使用者,所以這個許可權保護其實沒有必要(因為同一使用者組內沒有其它使用者)。
所有的使用者都儲存在/etc/group檔案裡。
4.1.2 影子密碼
在多使用者環境下,用shadow-utils軟體提供的影子密碼功能增強系統的安全性以及加強授權管理是很有必要的。所以,系統預設安裝了該軟體。
下面是影子密碼相對於傳統類UNIX系統在密碼儲存方面的優點:
影子密碼增強了系統安全性:把加密的密碼由所有人可以讀的/etc/passwd檔案轉移到了/etc/shadow檔案,而這個檔案只有root使用者可以讀。
影子密碼儲存了密碼的有效期。
影子密碼允許使用/etc/login.defs檔案來加強安全策略。
大多數提供shadow-utils軟體的工具包無論是否啟用了影子密碼都是能正常工作的。但是,由於密碼有效期只儲存在/etc/shadow檔案裡,所以有些工具和命令在不啟用影子密碼的情況下有可能會不能正常工作:
chage工具,用於設定密碼有效期的引數。更多資訊請參考《RHEL7 安全指南》中的密碼安全部分。
gpasswd工具,用於管理/etc/group檔案的軟體。
帶-e -expiredate -f --inactive選項的usermod命令。
帶-e -expiredate -f --inactive選項的useradd命令。
4.2 在圖形介面下管理使用者
Users工具可以在圖形介面下檢視、修改、增加和刪除本地使用者。
4.2.1 使用使用者設定工具
按下super鍵,進入activities overview,鍵用users回車,users設定工具就出來了,super鍵可能由於鍵盤、硬體等不同而不同,但經常是Windows或command鍵,一般在空格鍵的左邊。
讓修改生效,首先要先點解鎖按鈕,此時會出現授權對話方塊,注意,除非你的使用者具有超級許可權,否則請使用ROOT使用者許可權。增加或刪除用使用者,點+或-號,增加一個使用者到管理員組,修改使用者型別為標準或管理員即可。修改使用者的語言,選擇語言後會有下拉選單可以選擇。
建立的新使用者要設定密碼後才生效。增加使用者選單有立即設定密碼的選項,或者也可以選擇在該使用者首次登陸的時候設定密碼。
4.3 使用命令列工具
除了前面說的在圖形介面下操作外,也可以在命令列下操作。
表4.1 管理使用者和組的命令列工具
id 顯示使用者和組ID
useradd ,usermod,userdel 使用者管理的標準工具,用於增加、修改、刪除使用者
groupadd,groupmod,groupdel 組管理的標準工具,用於增加、修改、刪除使用者組
gpasswd 管理/etc/group配置檔案的標準工具
pwck,grpck 驗證密碼和組以及影子密碼關聯檔案的工具。
pwconv,pwunconv 轉化為影子密碼,或把影子密碼轉化為普遍密碼的工具。
grpconv,grpunconv與上一個相似,轉化使用者組影子資訊的工具
4.3.1 增加新使用者
增加新使用者的命令(ROOT許可權):
useradd [options] username
options 參考表4.2
預設的useradd命令建立的使用者是鎖著的,解鎖則需要用下面的命令分配一個密碼:
passwd username
你可以同時設定密碼有效期,請見4.3.3
表4.2 useradd命令選項
-c 'comment' 指定別名,通常用於指定使用者的全名
-d 指定使用者目錄,不指定的話將預設為/home/username/.
-e 指定賬號的過期時間,格式為 YYYY-MM-DD.
-f 設定賬號過期後多少天后將停用,若指定為0,則過期後立即停用,-1則表示過期後也永不停用。
-g 指定使用者組的名字,必須是存在的使用者組的名。
-G group_list 需要加入的其它使用者組,用逗號分隔,必須是已經存在的使用者組,可以是名字,也可以是組ID。
-m 如果使用者目錄將建立它。
-M 不建立使用者目錄。
-N 不建立使用者私有許可權組。
-p password 對密碼加密(crpt方式)
-r 建立一個系統管理使用者(UID小於1000,並且沒有使用者目錄)
-s 登陸後的SHELL,預設為 /bin/bash.
-u uid 指定使用者的UID,不能與已有的重複,且必須大於999
usermod命令的選項也是一樣的。注意,如果要修改使用者加入另外一個組,應使用-a --append(與-G一起使用)。否則你原來的使用者組將被覆蓋掉。
過程示例
下面的步驟將說明useradd juan的過程中影子密碼將啟用:
增加新使用者juan時,
1./etc/passwd檔案將新增一行
juan:x:1001:1001::/home/juan:/bin/bash
這一行資訊有以下特徵:
以juan使用者名稱開始
後面跟著x,表示系統在使用影子密碼
UID大於999。Fedora系統中小於1000的UID是給系統使用者使用的,不會分配給新建立的使用者。
GID大於999.Fedora小於1000號的GID是給系統使用者組使用的,不會分配給新建的使用者組。
GECOS欄位是空白,主要是提供賬號的額外資訊的,比如全名或電話號碼等。
juan的使用者目錄為/home/juan/
預設shell是/bin/bash
2./etc/shadow裡新增一行資訊:
juan:!!:14798:0:99999:7:::
這行資訊有以下特徵:
以使用者juan開頭。
兩個感嘆號,表示賬號是鎖定的。
(注意:如果用了-p選項加密,它也將放在/etc/shadow檔案裡)
密碼永不過期
3./etc/group裡也增加了一行:
juan:x:1001:
使用者組的名子和使用者名稱是一樣的,叫UPG,詳細資訊請參考4.1.1
這一行有以下特徵:
以使用者賬號juan開頭。
x表示系統使用影子密碼。
GID與/etc/passwd中的一致。
4./etc/gshadow增加一行以組名開頭的資訊:
juan:!::
特徵如下:
以組名juan開頭。
/etc/gshadow的檔案中密碼位置是一個感嘆號,表示組被鎖定。
其它位置是空的。
5.在/home目錄下建立了juan的使用者目錄:
~]# ls -ld /home/juan
drwx------. 4 juan juan 4096 Mar 3 18:23 /home/juan
這個目錄的擁有者為使用者juan和許可權組juan.只有juan有讀、寫、執行許可權。
6./etc/skel(儲存使用者預設設定的目錄)目錄下的檔案被複制到/home/juan/目錄裡。/etc/skel/的檔案會根據安裝的程式不同而有所不同。
~]# ls -la /home/juan
total 24
drwx------. 4 juan juan 4096 Mar 3 18:23 .
drwxr-xr-x. 5 root root 4096 Mar 3 18:23 ..
-rw-r--r--. 1 juan juan 18 Jul 09 08:43 .bash_logout
-rw-r--r--. 1 juan juan 176 Jul 09 08:43 .bash_profile
-rw-r--r--. 1 juan juan 124 Jul 09 08:43 .bashrc
drwxr-xr-x. 4 juan juan 4096 Jul 09 08:43 .mozilla
這樣,一個被鎖定的賬戶juan就正式在系統中建立了。管理員用passwd命令分配密碼以後,這個賬號就生效了。
4.3.2 增加一個新使用者許可權組
以ROOT身份執行如下命令就可以給系統增加一個使用者許可權組:
groupadd [options] group_name
options請參考表4.3
表4.3 groupadd常用命令列選項
-f, --force 用-g gid選項增加組時,若組ID已存在,groupadd將選擇另外一個唯一GID。
-g gid 組ID,必須大於999,且不能重複。
-K, --key key=value 覆蓋 /etc/login.defs的預設設定。
-o, --non-unique 允許複製GID方式建立組。
-p, --password password 為組設定密碼password
-r 建立一個GID小於1000的系統使用者組。
4.3.3 啟用密碼有效期
從安全形度,建議使用者定期修改密碼。可以通過chage命令操作。
注意:影子密碼必須啟用,否則chage將不能使用。請參考4.1.2
配置密碼有效期的命令:
chage [options] username
options請參考表4.4。當chage命令後直接跟著使用者名稱時(沒有options選項),將顯示當前密碼有效期並允許你互動式修改。
表4.4 chage 命令的選項
-d days 自 1970-01-01起的有效期天數
-E date 以YYYY-MM-DD格式指定密碼的失效日期.也可以用自1970年1月1日起的天數代替。
-I days 指定過期後停用賬號的天數,若為0,則立即停用。
-l Lists 顯示當前賬號的有效期設定。
-m days 指定密碼有效期的最大天數。當用此選項指定時,必須在指定的那一天前修改密碼,與-d不同,-d在那一天修改即可。
-W days 指定密碼過期前多少天提示使用者。
你可以配置密碼在第一次登陸時過期並提示使用者修改密碼。這將強制使用者立即修改密碼。
1.設定初始密碼。兩種方式:可以設定初始密碼,或使用空密碼。
配置一個初始密碼用下面的命令:
passwd username
為使用者配置一個空密碼:
passwd -d username
警告:在任何情況下都應避免使用空密碼。
用空密碼雖然很方便,但很不安全,任何第三方都可以登陸系統。啟用使用者前一定要確保使用者密碼非空。
2.讓密碼立即過期的命令:
chage -d 0 username
這個命令將設定自上次修改密碼起計算的失效日期(從1970年1月1日計算)。這個設定的日期將強制密碼立即失效,而且不受密碼有效策略限制。
通過以上設定,使用者將被提示設定新密碼。
4.3.4 啟用自動登陸
使用者用ROOT登陸會給系統帶來風險。為減少這種風險,你可以配置系統在一定時間後自動退出登陸。
1.確保screen軟體已安裝,你可用以下命令安裝screen
dnf install screen
如何安裝軟體包請參考6.2.4
2.以ROOT身份在/etc/profile中增加一行資訊:
trap "" 1 2 3 15
3.在/etc/profile檔案末尾增加當使用者登陸時啟用screen會話的指令碼:
SCREENEXEC="screen"
if [ -w $(tty) ]; then
trap "exec $SCREENEXEC" 1 2 3 15
echo -n 'Starting session in 10 seconds'
sleep 10
exec $SCREENEXEC
fi
注意,每當新建會話時,都會顯示使用者需等待10秒鐘,可以用sleep命令修改等待的秒數。
4.在/etc/screenrc中增加以下資訊
idle 120 quit
autodetach off
意思是120秒後將關閉screenrc。可以用idle修改這個值。
你可以設定系統鎖定會話的方式處理:
idle 120 lockscreen
autodetach off
用以上方式,解除鎖屏時將需要輸入密碼,在重新登陸後生效。
4.3.5 建立使用者組目錄
系統管理員通常為每個專案分配一個組,所有需要訪問這個專案檔案的使用者都放到這個組裡。傳統方式下,這是非常困難的。當一個人建立了一個檔案,這個檔案將關聯到自己的組。當一個人為多個專案工作時,分配檔案許可權是非常困難的。但在UPG規則下,組和檔案的許可權對應自動由setgid ibt分配,可以很簡單的在組之間共享目錄。
比如,一組人可以訪問/opt/myproject/,同時另一組人可以修改這個目錄的檔案(不是所有人可以修改)。
1.用ROOT使用者建立/opt/myproject/目錄:
mkdir /opt/myproject
2.把myproject組加到系統裡:
groupadd myproject
3.把/opt/myproject/目錄關聯到myproject組:
chown root:myproject /opt/myproject
4.允許組內使用者建立檔案設定setgid bit:
chmod 2775 /opt/myproject
這時,myproject組裡的使用者都可以建立和修改/opt/myproject/下面的檔案,而且不需要管理員許可權。驗證許可權是否正確設定:
~]# ls -ld /opt/myproject
drwxrwsr-x. 3 root myproject 4096 Mar 3 18:31 /opt/myproject
5.把使用者加到myproject組裡:
usermod -aG myproject username
4.4 其它資訊
略