1. 程式人生 > >(轉)linux passwd批量修改用戶密碼

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

如果 快速 引號 ini out 運行 每次 pass 行修改

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,是因為它不在命令行上等待輸入而只是執行腳本程序。

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