useradd命令詳解

Craftor發表於2014-06-27

useradd是Linux新增新使用者的命令,這個命令提供了一次性建立新使用者賬戶及設定使用者HOME目錄結構的簡便方法。

1、useradd命令加引數-D參看系統的預設值:

# useradd -D 
GROUP=100 
HOME=/home 
INACTIVE=-1 
EXPIRE= 
SHELL=/bin/bash 
SKEL=/etc/skel 
CREATE_MAIL_SPOOL=yes
解釋:
1)新使用者新增到GID為100的公共組
2)新使用者的HOME目錄將會位於/homoe/username
3)新使用者賬戶密碼在過期後不會被禁用
4)新使用者賬戶未被設定為某個日期後就過期
5)新使用者賬戶將bash shell作為預設shell
6)系統會將/etc/skel目錄下的內容複製到使用者的HOME目錄下
7)系統為該使用者賬戶在mail目錄下建立一個用於接收郵件的檔案

倒數第2個值很有意思。useradd命令允許管理員建立一個預設的HOME目錄配置,然後把它作為建立新使用者HOME目錄的模板。這樣,就能自動在每個新使用者的HOME目錄裡放置預設的系統檔案。在Ubuntu Linux系統上,/etc/skel目錄下有下列檔案:

$ ls -la /etc/skel 
total 32 
drwxr-xr-x 2 root root 4096 Jun 24 09:43 . 
drwxr-xr-x 132 root root 12288 Jun 19 09:53 .. 
-rw-r--r-- 1 root root 220 Apr 3 2012 .bash_logout 
-rw-r--r-- 1 root root 3486 Apr 3 2012 .bashrc 
-rw-r--r-- 1 root root 179 Apr 3 2012 example.desktop 
-rw-r--r-- 1 root root 675 Apr 3 2012 .profile 
$

在建立使用者時,可以使用下面的命令列引數改變預設值或預設行為:

============================================================================
參 數 描 述
----------------------------------------------------------------------------
-c comment 給新使用者新增備註
-d home_dir 為主目錄指定一個名字(如果不想用登入名作為主目錄名的話)
-e expire_date 用YYYYY-MM-DD格式指定一個賬戶過期的日期
-f inactive_days 指定這個帳戶密碼過期後多少天這個賬戶被禁用;0表示密碼一過期就立即禁
用,-1表示禁用這個功能
-g initial_group 指定使用者登入組的GID或組名
-G group ... 指定使用者除登入組之外所屬的一個或多個附加組
-k 必須和-m一起使用,將/etc/skel目錄的內容複製到使用者的HOME目錄
-m 建立使用者的HOME目錄
-M 不建立使用者的HOME目錄(當預設設定裡指定建立時,才用到)
-n 建立一個同使用者登入名同名的新組
-r 建立系統賬戶
-p passwd 為使用者賬戶指定預設密碼
-s shell 指定預設登入shell
-u uid 為賬戶指定一個唯一的UID
============================================================================

同樣,你可以用-D引數後面跟一個要修改的值的引數,來修改系統預設的新使用者值。這些引數如下表:

============================================================================
參 數 描 述
----------------------------------------------------------------------------
-b default_home 更改預設的建立使用者HOME目錄的位置
-e expiration_date 更改預設的新賬戶的過期日期
-f inactive_days 更改預設的新使用者從密碼過期到賬戶被禁用的天數
-g group 更改預設的組名稱或GID
-s shell 更改預設的登入shell
============================================================================

如 #useradd -D -s /bin/tsch ,修改預設的shell為/bin/tsch。

另外,刪除使用者,使用userdel命令。預設情況下,userdel命令只會刪除/etc/passwd檔案中的資訊,而不會刪除系統中屬於該賬戶的任何檔案。
如果加上-r,userdel會刪除使用者的HOME目錄以及mail目錄。然後,系統上仍可能存有歸已刪除使用者所有的其他檔案。這在有些環境中會造成問題。
PS:在有大量使用者的環境中使用-r引數時要特別小心。你永遠不知道使用者是否在他的HOME目錄下存放了其他使用者或其他程式要使用的重要檔案。記住在刪除使用者的HOME之前一定要檢查清楚!