5-5 帳戶管理命令
內容:
以下將介紹一些較常用的帳戶管理命令,譬如新增帳戶(useradd)、刪除帳戶(userdel)、新增群組(addgroup)、刪除群組(delgroup)等功能;以上功能必須具有 root 權限者才可執行,且於執行後,系統會相對編輯 /etc/passwd、/etc/group、/etc/shadow 與 /etc/gshadow 等控制檔。當然,直接修改上述控制檔也可以達到管理帳戶的功能,但一般系統還是建議管理者執行控制命令,最好不要直接修改控制檔,以免出差錯。
5-5-1 新增使用者 - useradd
系統管理者可利用 useradd(/usr/sbin/useradd)命令新增或編輯帳戶,其命令格式如下:
# man useradd
useradd [-c comment] [-d home_dir]
[-e expire_date] [-f inactive_time]
[-g initial_group] [-G group[,...]]
[-m [-k skeleton_dir] | -M] [-n] [-o] [-p passwd] [-r]
[-s shell] [-u uid] login
useradd -D [-g default_group] [-b default_home]
[-e default_expire_date] [-f default_inactive]
[-s default_shell] |
其中:
-
-c <備註>:將備註文字填入 /etc/passwd 備註欄位中。
-
-d <家目錄>:使用者家目錄(Home directory)位置,如 /home。
-
-e <有效期限>:該帳戶的有效期限;-1 表示沒有限制到期日。
-
-f <緩衝時間>:密碼到期後的緩衝時間。
-
-g <群組>:使用者所屬群組;-G <群組> 為使用者所附加的其他群組。
-
-m:自動建立家目錄;-M 為不自動建立家目錄;- n 則是不自動建立群組。
-
-s <shell>:使用者起始 Shell,如 /bin/sh。
-
-u <uid>:指定使用者識別碼(User ID)。
-
-D:建立預設值(default)參數,如 -g(預設群組)、預設家目錄、預設到期日等等;預設值儲存於 /etc/default/adduser 檔案內。
【A. 預設值帳戶】
以下範例是完全採用內定值來產生一個新帳戶。通常系統為了方便操作,都會事先建立一些內定值,管理者如沒有特別指定,則可利用內定參數建立一個新帳戶,範例如下:(新帳戶名稱為 nien1)
[root@linux-1 ~]#useradd nien1 è 增加 nien1 使用者
[root@linux-1 ~]#
passwd nien1 ==è 設定 nien1 密碼
Changing password for user nien1.
New password: #######
Retype new password:
######
passwd: all authentication tokens updated successfully. |
【B.
新增帳戶範例 - nien1】
第一個命令(#
useradd nien1)為增加新帳戶 nien1;第二個命令(# passwd nien1)是設定新帳戶,系統會要求重複輸入密碼兩次。執行完畢後,上述四個控制檔將會被變更其內容,範例如下:
#
cat /etc/passwd |grep nien1
nien1:x:618:618::/home/nien1:/bin/bash
#
cat /etc/group |grep nien1
nien1:x:618:
#
cat /etc/shadow |grep nien1
nien1:$1$ZGV1ApHR$/0aH8NbGWB8ZgBvIc2v2F/:13016:0:99999:7:::
#
cat /etc/gshadow |grep nien1
nien1:!:: |
由 /etc/passwd 檔案,可以看出已增加 nien1 記錄,並從中可以了解其屬性,如下:
-
登入名稱:nien1。
-
密碼:已隱藏至
/etc/shadow。
-
使用者識別碼(UID):618。
-
群組識別碼(GID):618。
-
註解:此欄位目前空白,可利用 vi 編輯其內容。
-
家目錄:/home/nien1
-
登入 Shell:/bin/bash
在
/etc/group 檔案內也會增加
nien1 記錄,則表示已增加 nien1 群組;記錄內容如下:
同樣於 /etc/shadow 與 /etc/gshadow 檔案內也都會增加 nien1 記錄,至於其內容下個範例再介紹。
【C. 帳戶預設檔】
上述範例增加帳戶時,大部分的參數皆是預設值,且預設值是參考到檔案 /etc/default/adduser。如變更預設檔的內容,再增加帳戶時也會依照新的預設值。該檔案範例如下:
#
cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
# /usr/sbin/adduser -D -b /home/data
# cat /etc/default/useradd
# useradd defaults file
….
HOME=/home/data
……. |
【D. 指定參數帳戶】
管理者也可以直接指定帳戶參數,但沒有特別指定的參數還是會引用 /etc/default/adduser 的內容。操作範例如下:
#
useradd -u 800 -g 100 -d /home/nien2 nien2
# passwd nien2
Changing password for user nien2.
New UNIX password:#####
Retype new UNIX password:######
passwd: all authentication tokens updated successfully.
# cat /etc/passwd |grep nien2
nien2:x:800:100::/home/nien2:/bin/bash
# |
上述範例中,建立新帳戶名為 nien2,其中 UID 為 800、GID 為 100、家目錄是 /home/nien2,如果家目錄不存在時,系統會新開啟該目錄。
5-5-2 刪除使用者 - userdel
刪除帳戶的命令格式如下:
其中 –r 表示刪除使用者登入目錄及該目錄下的所有檔案。操作範例如下:
#
userdel -r nien2
#
cat /etc/passwd |grep nien2
#
cat /etc/group |grep nien2
#
cat /etc/shadow |grep nien2 |
上述範例刪除 nien2 帳戶,同時可以發現於 /etc/passwd、/etc/group 與 /etc/shadow 內原有的 nien2
記錄也都被刪除了。
5-5-3 修改使用者 – usermod
建立後的帳戶可利用 usermod 命令修改其參數,命令格式如下:
usermod [-c comment] [-d home_dir [-m]]
[-e expire_date] [-f inactive_time]
[-g initial_group] [-G group [,...]]
[-l login_name] [-p passwd]
[-s shell] [-u uid [-o]] [-L|-U] login |
大致上,修改帳戶的參數大多與建立帳戶命令(useradd)相同。以下範例我們先建立一個帳戶,再修改該帳戶的參數(將 UID從 800修改為 801),且觀察修該前後設定檔(/etc/passwd)的變化如何,操作範例如下:
#useradd -u 800 -g 100 -d /home/nien2 nien2
#
cat /etc/passwd |grep nien2
nien2:x:800:100::/home/nien2:/bin/bash
# usermod -u 801 nien2
#
cat /etc/passwd |grep nien2
nien2:x:801:100::/home/nien2:/bin/bash |
5-5-4 變更密碼 - passwd
使用者登入系統(如帳號 nien2)後,立即可以利用 passwd 命令變更密碼,操作範例如下:
$
passwd
Changing password for user nien2.
Changing password for nien2
(current) UNIX password:####### (原來舊密碼)
New UNIX password:###### (新密碼)
Retype new UNIX password:###### (重複輸入新密碼)
passwd: all authentication tokens updated successfully. |
變更密碼時,系統會要求重新輸入原來密碼,確認是否是真正帳戶使用者。確認密碼正確後,才會允許變更密碼,並要求重新輸入新密碼一次。
【使用者遺失密碼】
對於密碼的設定,大多是系統管理者建立帳戶時,幫使用者設定好之後,再通知使用者。通常會要求使用者於第一次登入系統時,立即變更成自己選定的密碼。但使用者也有可能遺失密碼而無法登入系統,此時將求助於系統管理者。解決的方法有兩種:一者是系統管理者重新設定使用者密碼,再通知使用者使用;二者是直接刪除帳戶密碼,使用者登入後再重新設定密碼。第一種方法操作如下(重新設定 nien2 密碼):
# passwd nien2
Changing password for user nien2.
New UNIX password:
#####
Retype new UNIX password
######:
passwd: all authentication tokens updated successfully. |
若直接刪除帳戶密碼,使用者可不用密碼就可以登入系統,登入後再自行設定新密碼,操作範例如下(刪除 nien2 密碼):
#
passwd -d nien2
Removing password for user nien2.
passwd: Success
[root@linux-1 root]# |
5-5-5 設定密碼參數 - passwd
如果系統有安裝 Shadow 套件的話,則可針對帳戶密碼的使用期限加以限制,這些設定值將會記錄於 /etc/shadow 檔案內。設定密碼期限也是使用 passwd 命令,其格式如下:
passwd [-k] [-l] [-u [-f]] [-d] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [username] |
較常用的選項有:
-
-d :刪除帳戶密碼。
-
-f :重新設定帳戶密碼。
-
-l :關閉密碼登入,限制使用者帳戶使用。
-
-u :開啟密碼登入,密碼被 –l 關閉後,可使用 –u 重新開放。
-
-n mindays:設定密碼變更的最少天數。
-
-x maxdays:設定密碼最多使用天數。
-
-w warndays:設定密碼過期前,開始警告的天數。
-
-i inactivedays:設定密碼過期後,鎖定帳戶的天數。
設定範例如下:
# cat /etc/shadow |grep nien2
nien2:$1$ladMn0AI$4rMA0Fezim/IfeQQY.8a.0:13018:0:99999:7:::
# passwd -n 8 -x 30 -w 3 -i 7 nien2
Adjusting aging data for user nien2.
passwd: Success
#
cat /etc/shadow |grep nien2
nien2:$1$ladMn0AI$4rMA0Fezim/IfeQQY.8a.0:13018:8:30:3:7:: |
上述範例,設定了 nien2 帳戶的密碼參數,其中包含最小天數(-n)、最高天數(-x)、警告天數(-w)與過期天數(-i),並由設定前後的 /etc/shadow 檔案觀察出 nien2
記錄的變化。
5-5-6 關閉/開啟帳戶 - passwd
【
關閉帳戶】
許多情況系統管理者會暫停某些帳戶,當然也可能再重新開放。譬如有些系統的使用者沒有繳交月租費,管理者會暫停該帳戶登入,直到該帳戶補繳費用,再重新開啟。由此可見,此情況的帳戶僅是暫停使用,而非遭到刪除。我們可用 –l 與 –u 選項來達到此功能。關閉帳戶的操作如下:
#
passwd -l nien2
Locking password for user nien2.
passwd: Success |
【
開啟帳戶】
開啟暫停帳戶的操作如下:
#
passwd -u nien2
Unlocking password for user nien2.
passwd: Success. |
5-5-7 增加群組 - groupadd
增加群組的命令格式如下:
groupadd [-g gid [-o]] [-r] [-f] group |
其中常用的選項有:
以下範例是產生一個 project 群組,並指定其識別碼為 800:
# grep project /etc/group
#
groupadd -g 800 project
#
grep project /etc/group
project:x:800: |
5-5-8 刪除群組 – groupdel
刪除群組的操作範例如下:
# grep project /etc/group
project:x:800:
#
groupdel project
# grep project /etc/group
[root@linux-1 ~]# |
第一個命令是查閱 /etc/group 檔案內有一筆 project 群組記錄,執行第二個刪除群組命令之後,該筆記錄已不見了。
如同使用者帳戶一樣,也可以針對群組記錄做某些修改,其命令格式如下:
groupmod [-g gid [-o]] [-n group_name ] group |
命令參數也與 groupadd 命令相同,在此便不再另述。
|