它看起來像你想要做的是這樣的:
#!/bin/bash
md5pass="$(echo -n "$2" | md5)"
userdb $1 set uid=5000 gid=5000 home=/var/mail/$1 mail=/var/mail/$1 systempw="$md5pass"
......既然你已經選擇了使這一過程非交互,因此,輸入密碼不會處於ps
的安全事件嗅,或在某些情況下history
+任何其他記錄。
概述:
echo -n
:不要換行符添加到密碼
md5
:非交互的方式來獲得密碼的MD5
注意userdbpw
讀來自stdin。提供它作爲輸入的命令行參數不會使它更安全。
替代方式來獲得MD5:
一些其他途徑獲得的MD5,這取決於utils的/封裝可供選擇:
echo -n pass | openssl dgst -md5
1a1dc91c907325c69271ddf0c944bc72
echo -n pass | md5sum | cut -f1 -d ' '
1a1dc91c907325c69271ddf0c944bc72
echo -n pass | md5
1a1dc91c907325c69271ddf0c944bc72
In each of the above;
Would also be a suitable replacement for:
提供最小的可驗證樣本輸入和預期輸出。 – Inian
$ 1是用戶名,$ 2是我們用作參數的密碼。 如果我輸入這個命令,它會要求用戶手動輸入密碼並確認。這就是我想要避免的,然後,用戶根本不需要互動。 目前,使用該代碼創建用戶,但沒有密碼,因此,它並不真正起作用 – Michael003
當您以交互方式運行它時,這段代碼是否工作? – Aserre