Linux 伺服器系統管理第十四章 系統管理程式設計  上一頁    下一頁

14-2 帳戶管理程式

內容:

雖然利用 useradd 命令可以增加單一帳戶,但每次操作此命令之前,必須再次的詳細閱讀操作語法,我們期望發展一個交談式工具,讓我們隨時都可方便的利用它來管理帳戶。

14-2-1 交談式建立帳戶

我們利用 Shell script 製作一個簡單範例,如下$vi ex14_3):

#! /bin/bash

# 功能: Add one user

echo "歡迎使用 ex14_3 增加一個帳戶"

 

# 輸入帳戶參數

read -p "請輸入帳戶名稱 =>" name

read -p "請輸入群組名稱 =>" groupName

read -p "請輸入帳戶註解 =>" comment

read -p "請輸入帳戶密碼 =>" pass

 

# 執行 useradd 命令

useradd -g $groupName -c $comment $name

 

# 設定帳戶密碼

echo $pass | passwd --stdin $name

執行結果如下:

[root@Secure-1 book]# ex14_3

歡迎使用 ex14_3 增加一個帳戶

請輸入帳戶名稱 =>user1

請輸入群組名稱 =>users

請輸入帳戶註解 =>資管系學生

請輸入帳戶密碼 =>csuguest

Changing password for user user1.

passwd: all authentication tokens updated successfully.

[root@Secure-1 book]# cat /etc/passwd | grep user1

user1:x:864:100:資管系學生:/home/user1:/bin/bash

[root@Secure-1 book]# ls -l /home |grep user1

drwxr-xr-x  3 user1       users        4096  8  5 10:19 user1

14-2-2設定帳戶使用期限

雖然利用 passwd 命令可以設定帳戶的密碼使用期限,但每次下命令時都必須詳加閱讀命令格式,我們可以寫一個簡單程式,利用交談式輸入各項參數,程式範例如下$vi ex14_4):

#! /bin/bash

echo "歡迎使用 ex14_4 管理帳戶使用期限"

 

# 輸入密碼參數

read -p "請輸入帳戶名稱 =>" name

read -p "請輸入密碼最長使用期間 =>" maxDays

read -p "請輸入密碼過期前幾天警告 =>" warnDays

read -p "請輸入密碼到期後幾天鎖定帳戶 =>" inactiveDays

 

# 執行 passwd 命令

passwd -x $maxDays -w $warnDays -i $inactiveDays $name

執行結果如下:

[root@Secure-1 book]# ex14_4

歡迎使用 ex14_4 管理帳戶使用期限

請輸入帳戶名稱 =>user1

請輸入密碼最長使用期間 =>30

請輸入密碼過期前幾天警告 =>3

請輸入密碼到期後幾天鎖定帳戶 =>0

Adjusting aging data for user user1.

passwd: Success

[root@Secure-1 book]# cat /etc/shadow |grep user1

user1:$1$MY6d/Gs8$pwej4.ukFnd4eX5m80y7L1:14461:0:30:3:0::

14-2-3 建立帳戶並產生密碼

系統管理者依照客戶要求建立帳號後,大多會利用亂數產生一個密碼,再通知使用者利用此密碼登入系統後,再變更自行設定的密碼。我們製作一個不但可建立帳戶,也順便產生密碼的程式如下:$vi ex14_5

#! /bin/bash

echo "歡迎使用 ex14_5 增加帳戶並產生密碼"

 

# 輸入帳戶參數

read -p "請輸入帳戶名稱 =>" name

read -p "請輸入群組名稱 =>" groupName

read -p "請輸入帳戶註解 =>" comment

 

# 執行 useradd 命令

useradd -g $groupName -c $comment $name

 

# 產生亂數密碼,至少 8 個字元

pass=""                     # 設定密碼為空字串

until [ ${#pass} -ge 8 ]          # 測試密碼是否超過 8 個字元

do

   pass_nu=$(($RANDOM*50/32767+30))     # 利用亂數產生

   pass_ch=`printf "\x$pass_nu"`    # 將所產生的亂數轉換為字元

   pass=$pass$pass_ch                 # 與上次產生的密碼串接

done

echo "$name 帳號的密碼是 $pass"

 

# 設定帳戶密碼

echo $pass | passwd --stdin $name

執行結果如下:

[root@Secure-1 book]# ex14_5

歡迎使用 ex14_5 增加帳戶並產生密碼

請輸入帳戶名稱 =>user1

請輸入群組名稱 =>users

請輸入帳戶註解 =>資工系學生

user1 帳號的密碼是 gf2RsqYe

Changing password for user user1.

passwd: all authentication tokens updated successfully.

 

翻轉工作室:粘添壽

 

Linux 伺服器系統管理 - CentOS:

 

 

 

翻轉電子書系列: