2010-01-13 139 views
6

我需要將用戶帳戶和密碼與系統上的外部源同步,其中busyboxopenssl已安裝。當外部來源告訴我的系統更新憑證時,如何在腳本中更改用戶的密碼?我將以純文本形式輸入密碼。如何用busybox和openssl在腳本中更改用戶密碼?

這必須是自動化的,並且從我所知道的busybox passwd是交互式的,並且我不特別想爲passwd編寫expect類型的腳本(如果甚至可能的話)。它看起來像openssl可以生成密碼哈希(openssl passwd -1 -alt「abcdefgh」{password}),但我將不得不直接修改/ etc/shadow嗎?

Busybox有these命令可用。

回答

6

你可以寫一個這樣的小腳本來更新密碼。將以下文本放在一個文件中並執行它。它會改變你的密碼。

#!/ bin/sh的
passwd文件< < EOF
<舊密碼>
<新密碼>
<新密碼>
EOF

5

結果顯示當前版本的busybox有chpasswdsource code)。 chpasswd在stdin上使用冒號分隔的一對username:password。我不知道我是否可以更新系統上的busybox,但我會留下這個答案以防其他人看到。

從busybox的文檔:

chpasswd 
chpasswd [--md5|--encrypted] 

Read user:password from stdin and update /etc/passwd 

Options: 

     -e,--encrypted Supplied passwords are in encrypted form 
     -m,--md5  Use MD5 encryption instead of DES