Anaconda kickstart 和 rootpw 選項
我已經嘗試了幾種在 SL 6.5 上生成加密密碼的不同方法,但似乎沒有什麼對我有用。我在各種 /var/log/anaconda* 文件中的任何地方都沒有發現任何錯誤,但我無法登錄,所以它顯然不起作用。
/root/anaconda-ks.cfg
我用作模板的原始自動創建文件如下所示:rootpw --iscrypted $6$...(about 100 characters) authconfig --enableshadow --passalgo=sha512
接下來我嘗試
openssl passwd -1
了它給了我:rootpw --iscrypted $1$...(about 30 characters) authconfig --enableshadow --passalgo=sha512
我意識到這不是 SHA-512,所以我嘗試了一個在幾個地方重複的 Python 單線:
rootpw --iscrypted $6...(about 10 characters) authconfig --enableshadow --passalgo=sha512
沒有任何作用;我無法登錄,最終不得不在單使用者模式下重置 root 密碼。
確保您的機器上有 shadow 和 passalgo=sha512,將 root 密碼設置為您想要在該機器上使用的任何密碼,然後從 /etc/shadow 中獲取並將其放入 kickstart。這不建議用於生產用途。
要以程式方式進行,請使用生成 kickstart 文件的所選語言的 crypt 庫:
紅寶石:
'password'.crypt('$6$' + (Base64.encode64(6.times.map{ Random.rand(256).chr }.join)).strip)
PHP:
crypt ('password', '$6$' . base64_encode (openssl_random_pseudo_bytes(6)));
珀爾:
crypt ('password', '$6$' . encode_base64 (join '' => map chr (rand (256)), 0..5))
Python:
crypt.crypt('password', '$6$' + base64.b64encode(os.urandom(6)))
強烈建議您每次都使用隨機鹽,就像我在這裡所做的那樣,特別是如果您在所有伺服器上使用相同的密碼。
編輯: Python 3:
crypt.crypt("password", crypt.mksalt())
將呼叫替換為
os.random
crypt 特定的mksalt
.請參閱Python 標準庫:crypt :
crypt.mksalt()
:“返回指定方法的隨機生成的鹽。如果沒有給出方法,則使用由 methods() 返回的最強方法”編輯:
- ’ $ 6 $ ’ 用於 SHA512。您需要將其替換為您選擇的加密類型。
2)您也可以將其中任何一個轉換為一個襯裡,以便從 bash 中完成。
3)與 GNU 相比,BSD crypt 是一種不同的實現,因此它們不兼容。如果你想在 BSD 系統(如 OSX)上使用它,你可以使用 PHP(PHP 版本 > 5.3.0)版本,因為它實現了自己的crypt()函式。
mac 上的另一種選擇是使用passlib:
python -c 'import getpass; import passlib.hash; h=passlib.hash.sha512_crypt.hash(getpass.getpass()); print(h if (passlib.hash.sha512_crypt.verify(getpass.getpass("Confirm:"), h)) else "")'
或者,使用 glibc 的預設編號。回合數(5000):
python -c 'import getpass; import passlib.hash; h=passlib.hash.sha512_crypt.using(rounds=5000).hash(getpass.getpass()); print(h if (passlib.hash.sha512_crypt.verify(getpass.getpass("Confirm:"), h)) else "")'