(轉)linux passwd批量修改用戶密碼


linux passwd批量修改用戶密碼
 原文:http://blog.csdn.net/xuwuhao/article/details/46618913
對系統定期修改密碼是一個很重要的安全常識,通常,我們修改用戶密碼都使用 passwd user 這樣的命令來修改密碼,但是這樣會進入交互模式,即使使用腳本也不能很方便的批量修改,除非使用expect 這樣的軟件來實現,難道修改一下密碼還需要單獨安裝一個軟件包嗎? 不,我們其實還有其他很多方法可以讓我們避開交互的,下面具體寫一下具體的實現方式:
第一種:
echo "123456" | passwd --stdin root
優點:方便快捷
缺點:如果你輸入的指令能被別人通過history或者其他方式捕獲,那么這樣的方式是很不安全的,更重要的是如果密碼同時含有單引號和雙引號,那么則無法通過這種方法修改。
說明:
批量修改linux密碼 passwd --stdin user 從標准輸入中讀取密碼,所以用戶可以在腳本中使用如 echo NewPasswd | passwd --stdin username 這種方式來批量更改密碼 但在其它的一些發行版(如Debian/Suse)所提供的passwd並不支持--stdin這個參數 
 
第二種:
a. 首先將用戶名密碼一起寫入一個臨時文件.
cat chpass.txt
root:123456
zhaohang:123456
b. 使用如下命令對用戶口令進行修改:
chpasswd < chpass.txt
c. 可以使用 123456 來登錄系統,密碼修改完畢.
優點:可以很快速方便的修改多個用戶密碼
缺點:明文密碼寫在文件里仍然顯得不夠安全,但是避免了第一種修改方式不能有特殊字符串密碼的情況.
 
第三種:
a. 用 openssl passwd -1 來生成用戶口令,連同用戶名一起寫入文件.
cat chpass.txt
root:$1$ri2hceVU$WIf.firUBn97JKswK9ExO0
zhaohang:$1$i/Gou7.v$Bh2K6sXmxV6/UCxJz8N7b.
b. 使用如下命令對用戶口令進行修改:
chpasswd -e < chpass.txt
c. 可以使用 123456 來登錄系統,密碼修改完畢.
優點:可以很快速方便的修改多個用戶密碼
缺點:和上面兩種相比大大增強了安全性
附加介紹:
openssl passwd -1 命令可以輸出shadow里面的密碼,把這個命令生成的秘串更改為你shadow里的密碼,那么下次你登錄系統就可以用你的生成密碼的口令來登錄了,使用這個命令,即使口令一樣,多次執行生成的密碼串也不一樣。那個hash值對應的密碼是完全隨機的基於64位字符編碼的28位長,因此要破解它是非常困難的,只要不用那些密碼已經公布出來的hash值創建賬號,即使這些密碼文件被公布也還是比較安全的。使用舊的unix哈希可以去掉 -1 參數。
[root@WEB01 ~]# openssl passwd -1
Password: 123456
Verifying - Password: 123456
$1$ri2hceVU$WIf.firUBn97JKswK9ExO0
 
也可以直接使用如下命令來直接生成:
[root@WEB01 ~]# openssl passwd -1 123456
[root@WEB01 ~]# openssl passwd -1 -salt "yoctor" 123456
 
上面命令中的 salt 自己隨便輸入些東西
因為設置密碼的時候密碼密文是 MD5 加密的,在產生哈希值的時候 系統回在密文中加如鹽從而使密文無法反向破譯。
passwd加密的時候系統加的salt是 時間
////////////////////////////////////////////////////////////////////////////////////////////////////

在Redhat Redflag centos fc linux系統里面腳本的啟動
先后:
第一步:通過/boot/vm進行啟動 vmlinuz
第二步:init /etc/inittab
第三步:啟動相應的腳本,並且打開終端
rc.sysinit
rc.d(里面的腳本)
rc.local
第四步:啟動login登錄界面 login
第五步:在用戶登錄的時候執行sh腳本的順序:每次登錄的時候都會完全執行的
/etc/profile.d/file
/etc/profile
/etc/bashrc
/root/.bashrc
/root/.bash_profile

//////////////////////////////////////////////////////////////////////////////////////////
因為嵌入式系統中沒有chpasswd,useradd命令,而第一種方式某些版本不支持--stdin,所以可用以下方式來替代
/etc/profile中添加如下,可以實現開機后進入普通用戶civintec,而不是默認登入root
passwd root <<EOF
112233           
112233
EOF   
   
chmod 4755 /bin/busybox
                       
echo "$123456$123456" | adduser civintec
su civintec
/etc/profile 
/etc/bashrc 
~/.bash_profile 
~/.bashrc 
~/.bash_logout 
每一個文件都有特殊的功用並對登陸和交互環境有不同的影響。 
/etc/profile 和 ~/.bash_profile 是在啟動一個交互登陸shell的時候被調用。 
/etc/bashrc 和 ~/.bashrc 是在一個交互的非登陸shell啟動的時候被調用。 
~/.bash_logout 在用戶注銷登陸的時候被讀取 
一個交互的登陸shell會在 /bin/login 成功登陸之后運行。
一個交互的非登陸shell是通過命令行來運行的,如[prompt] $/bin/bash。
一般一個非交互的shell出現在運行shell腳本的時候。之所以叫非交互的shell,是因為它不在命令行上等待輸入而只是執行腳本程序。


免責聲明!

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



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