Linux 用戶和組管理
用戶管理,主要的工作就是建立一個合法的用戶帳戶、設置和管理用戶的密碼、修改用戶帳戶的屬性以及在必要時刪除已經廢棄的用戶帳號。
1. 增加一個新用戶
在Linux系統中,只有root用戶才能夠創建一個新用戶,如下的命令將新建一個登錄名user1的用戶。
# useradd user1
但是,這個用戶還不能夠登錄,因為還沒給它設置初始密碼,而沒有密碼的用戶是不能夠登錄系統的。在默認情況下,將會在/home目錄下新建一個與用戶名相同的用戶主目錄。如果需要另外指定用戶主目錄的話,那麼可以使用如下命令:
# useradd -d /home/xf user1
同時,該用戶登錄時將獲得一個Shell程序:/bin/bash,而假如你不想讓這個用戶登錄,也就可以指定該用戶的Shell程序為:/bin/false,這樣該用戶即使登錄,也不能夠執行Linux下的命令:
# useradd -s /bin/false user1
在Linux中,新增一個用戶的同時會創建一個新組,這個組與該用戶同名,而這個用戶就是該組的成員。如果你想讓新的用戶歸屬於一個已經存在的組,則可以使用如下命令:
# useradd -g user user1
這樣該用戶就屬於user組的一員了。而如果只是想讓其再屬於一個組,那麼應該使用:
# useradd -G user user1
完成了這一操作後,你還應該使用passwd命令為其設置一個初始密碼。
2. 刪除一個用戶
刪除用戶,只需使用一個簡單的命令“userdel 用戶名”即可。不過最好將它留在系統上的文件也刪除掉,你可以使用“userdel -r 用戶名”來實現這一目的。
3. 修改用戶屬性
在前面我們看到了在新建一個用戶的時候如何指定它的用戶主目錄,如何指定它的Shell,如何設置它所屬的組…等等。在Linux中提供了一個命令來實現:
usermod -g組名 -G 組名 -d 用戶主目錄 -s 用戶Shell
還有一種直接的方法,那就是修改/etc/passwd文件,在這個文件中每個用戶占用一行,它的內容為:
用戶名:密碼:用戶ID:組ID:用戶全名:用戶主目錄:用戶Shell
不過值得注意的是,密碼這一項通常是用一個*號代替的,你是看不到的。
4. 增加一個組
還記得Linux的文件可以為同組的人、非同組的人設置不同的訪問權限嗎?我們可以根據自己的需要創建用戶組:
groupadd 組名
5. 刪除一個組
同樣的,我們有時會需要刪除一個組,它的命令就是groupdel 組名。
6. 修改組成員
如果我們需要將一個用戶加入一個組,只需編輯/etc/group文件,將用戶名寫到組名的後面。例如將newuser用戶加入到softdevelop組,只需找到softdevelop這一行:
softdevelop:x:506:user1,user2
然後在後面加上newuser,形成:
softdevelop:x:506:user1,user2,newuser
另外,在Red Hat Linux中還提供一個圖形化的用戶管理工具:userconf,通過它可以更直接地進行用戶管理。
兩個重要文件:passwd與group
在linux的安全機制裡,/etc/passwd與/etc/group這兩個文件占著非常重要的地位。它們控制著linux的用戶和組一些重要設置。
◆/etc/passwd文件說明 (用於設置用戶的屬性)
可用 vi /etc/passwd 查看
在passwd的文件裡,每一行被冒號(":")分成7個部分,分別是:
[用戶名]:[密碼]:[UID]:[GID]:[身份描述]:[主目錄]:[登錄shell]
其中:
[UID]雖然是系統用來標志文件歸屬,確定各種權限的標志,但這個區域的內容並不要求唯一的。比較常見而又與安全問題相關的一個例子是有多個UID和GID均為0的用戶帳號。注意到在該文件最後一行還有一個UID和GID為0的用戶imnotroot,雖然它聲稱自己不是root,但是它卻有和root完全相同的權限,因為系統並非根據[用戶名],而是根據UID和GID來分用戶的權力的。所以,這種情況無疑為系統埋下了安全的炸彈。但是,當imnorroot做鎖定屏幕等操作的時候,如果它的密碼和root的不一樣,它將無法解鎖,因為系統只是查到第一個UID為0的用戶(自然是root)後,就不在往下查找了——它當UID也是唯一的。
[GID]用戶默認的組ID,這個ID可以在文件 /etc/group裡查到對應的組名。
<注意>:[UID]和[GID]小於500的一般都是系統自己保留,不做普通用戶和組的標識的,所以新增加的用戶和組一般都是UID和GID大於500的。
◆/etc/group文件說明
vi /etc/group 查看其內容
它總共分四個部分:
[組名]:[密碼域]:[GID]:[組員列表]