7.6 passwd:修改用戶密碼


7.6 passwd:修改用戶密碼

    passwd命令可以修改用戶密碼及密碼過期時間等內容,是工作中很常用的命令。普通用戶和超級用戶都可以運行passwd命令,但普通用戶只能更改自身的用戶密碼,超級用戶root則可以設置或修改所有用戶的密碼。
 
-k        為密碼已經過期的用戶更新有效期
-l        鎖定用戶,被鎖定的用戶將不能登錄。僅root用戶有權使用該選項
-stdin    從標准輸入讀取密碼字符串深
-u        解除對用戶的鎖定。僅root用戶有權使用該選項
-d        刪除用戶的密碼,使密碼為空。僅root用戶有權使用該選項
-e        使用戶密碼立即過期,將在用戶下次登錄時強制要求用戶修改密碼。僅root用戶有權使用該選項
-n        設置修改密碼的最短天數。僅root用戶有權使用該選項
-x        設置修改密碼的最長天數。僅root用戶有權使用該選項
-w        設置用戶在密碼過期前收到警告信息的天數。僅root用戶有權使用該選項
-i        設置密碼過期多少天后禁用賬戶。僅root用戶有權使用該選項
-S        顯示用戶密碼相關的簡單描述。僅root用戶有權使用該選項
 
除了上述說明,還要強調以下兩點。
    root用戶可以修改任何用戶的密碼,普通用戶只能修改自身的密碼。
    root用戶修改密碼時,如果不符合系統密碼規則,則給出警告信息,但密碼設置仍然生效。普通用戶修改密碼時,如果使用弱密碼,則給出告警信息,且修改無效。
 
修改用戶密碼的例子。
[root@cs6 ~]# passwd
Changing password for user root.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
[root@cs6 ~]# passwd lewen
Changing password for user lewen.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
[root@cs6 ~]# su lewen
[lewen@cs6 root]$ passwd
Changing password for user lewen.
Changing password for lewen.
(current) UNIX password:
New password:
BAD PASSWORD: it is too simplistic/systematic    #<==如果密碼太短則不允許設置(root用戶修改密碼只是警告)
New password:
BAD PASSWORD: it is too simplistic/systematic
New password:
 
顯示賬號密碼信息的例子。
[root@cs6 ~]# passwd -S root
root PS 2019-05-11 0 99999 7 -1 (Password set, SHA512 crypt.)
 
一條命令設置密碼(生產使用技巧)。
[root@cs6 ~]# echo '123456'|passwd --stdin lewen
Changing password for user lewen.
passwd: all authentication tokens updated successfully.
 
要求lewen用戶7天內不能更改密碼,60天以后必須修改密碼,過期前10天通知用戶,過期后30天后禁止用戶登錄。
[root@cs6 ~]# passwd -n 7 -x 60 -w 10 -i 30 lewen
Adjusting aging data for user lewen.
passwd: Success
[root@cs6 ~]# passwd -S lewen
lewen PS 2019-05-11 7 60 10 30 (Password set, SHA512 crypt.)
[root@cs6 ~]# chage -l lewen
Last password change                    : May 11, 2019
Password expires                    : Jul 10, 2019
Password inactive                    : Aug 09, 2019
Account expires                        : never
Minimum number of days between password change        : 7
Maximum number of days between password change        : 60
Number of days of warning before password expires    : 10

生產案例:批量創建10個用戶stu01-stu10,並且設置8位隨機密碼

    范例7-15:批量創建10個用戶stu01-stu10,並且設置8位隨機密碼,要求不能使用Shell的循環(例如:for、while等),只能用Linux命令及管道來實現。
 
第一步:生成符合題意的10個用戶名。
[root@cs6 ~]# echo stu{01..10}
stu01 stu02 stu03 stu04 stu05 stu06 stu07 stu08 stu09 stu10
第二步:使用tr命令將上述10個用戶名豎行顯示。
[root@cs6 ~]# echo stu{01..10}|tr " " "\n"            #或者用xargs -n 1
stu01
stu02
stu03
stu04
stu05
stu06
stu07
stu08
stu09
stu10
第三步:在每一行的前面加上useradd命令,即可拼出添加用戶的所有命令。
[root@cs6 ~]# echo stu{01..10}|tr " " "\n"|sed -r 's#(.*)#useradd \1#g'
useradd stu01
useradd stu02
useradd stu03
useradd stu04
useradd stu05
useradd stu06
useradd stu07
useradd stu08
useradd stu09
useradd stu10
上面三步是完整的命令,第四步開始實際上是不同的命令,因此用分號分隔。
第四步:定義8位隨機數變量。
[root@cs6 ~]# pass=$((RANDOM+88888888))
[root@cs6 ~]# echo $pass
88905344
第五步:以第一二步作為結果使用sed -r 's#(.*)#最終命令#g'。
[root@cs6 ~]# echo stu{01..10}|tr " " "\n"|sed -r 's#(.*)#useradd \1;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin \1;echo -e "\1 `echo "$pass"`">>/tmp/lewen.log#g'
useradd stu01;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu01;echo -e "stu01 `echo "$pass"`">>/tmp/lewen.log
useradd stu02;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu02;echo -e "stu02 `echo "$pass"`">>/tmp/lewen.log
useradd stu03;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu03;echo -e "stu03 `echo "$pass"`">>/tmp/lewen.log
useradd stu04;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu04;echo -e "stu04 `echo "$pass"`">>/tmp/lewen.log
useradd stu05;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu05;echo -e "stu05 `echo "$pass"`">>/tmp/lewen.log
useradd stu06;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu06;echo -e "stu06 `echo "$pass"`">>/tmp/lewen.log
useradd stu07;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu07;echo -e "stu07 `echo "$pass"`">>/tmp/lewen.log
useradd stu08;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu08;echo -e "stu08 `echo "$pass"`">>/tmp/lewen.log
useradd stu09;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu09;echo -e "stu09 `echo "$pass"`">>/tmp/lewen.log
useradd stu10;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu10;echo -e "stu10 `echo "$pass"`">>/tmp/lewen.log
[root@cs6 ~]# echo stu{01..10}|tr " " "\n"|sed -r 's#(.*)#useradd \1;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin \1;echo -e "\1 `echo "$pass"`">>/tmp/lewen.log#g'|bash
拼接后的命令拆解解析
 
useradd stu10;                        添加用戶
pass=$((RANDOM+10000000));            密碼隨機數定義
echo "$pass"|passwd --stdin stul0;    非交互式設置密碼
echo -e "stu10 `echo "$pass"`" >>/tmp/lewen.log 將密碼生成到文件里並記錄
第六步:將得出的10條語句通過管道交給bash命令來執行。
[root@cs6 ~]# echo stu{01..10}|tr " " "\n"|sed -r 's#(.*)#useradd \1;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin \1;echo -e "\1 `echo "$pass"`">>/tmp/lewen.log#g'|bash
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
Changing password for user stu01.
passwd: all authentication tokens updated successfully.
......

 

 
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM