Linux 伺服器系統管理第五章 帳戶管理  上一頁    下一頁

5-5 帳戶管理命令

內容:

  • 5-5-1 新增使用者 - useradd

  • 5-5-2 刪除使用者 - userdel

  • 5-5-3 修改使用者 - usermod

  • 5-5-4 變更密碼 - passwd

  • 5-5-5 設定密碼參數 - passwd

  • 5-5-6 關閉/開啟帳戶 - passwd

  • 5-5-7 增加群組 - groupadd

  • 5-5-8 刪除群組 - groupdel

以下將介紹一些較常用的帳戶管理命令,譬如新增帳戶(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 群組;記錄內容如下:

  • 群組名稱:nien1

  • 密碼:已隱藏於 /etc/gshadow 檔案內,目前此欄位沒有使用。

  • 群組識別碼(GID):618

  • 群組成員: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 800GID 100、家目錄是 /home/nien2,如果家目錄不存在時,系統會新開啟該目錄。

5-5-2 刪除使用者 - userdel

刪除帳戶的命令格式如下:

userdel [-r] login

其中 –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

其中常用的選項有:

  • -g gid :指定群組的識別碼。

  • -r :指定新群組為系統群組。

  • -f :強制執行。無論群組名稱或識別碼是否已存在,皆強制執行產生。

以下範例是產生一個 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 命令相同,在此便不再另述。

翻轉工作室:粘添壽

 

Linux 伺服器系統管理 - CentOS:

 

 

 

翻轉電子書系列: