2013-01-09 44 views
0

我正在編寫一個腳本,使用CocoaDialog提示登錄用戶輸入密碼以啓動FileVault 2加密。使用Python標準庫驗證OS X用戶密碼的最佳方法是什麼?

理想情況下,我想驗證密碼是否正確,但我還沒有找到一個好辦法。我嘗試通過子進程模塊產生/ usr/libexec/chkpasswd,但它似乎打回來之前,我可以將密碼傳遞給標準輸入。 (我只是得到「對不起」,這是一個錯誤密碼的標準輸出。)

我簡單地看了一下pexpect,但我想這樣做沒有第三方工具,以保持部署簡單。

所有的Mac都將運行OS X 10.8.2。

回答

1

快速瀏覽一下:the Darwin source for PAM authentication in chkpasswd。它看起來像chkpasswd使用它自己的子TTY讓你的密碼:

/* Initialize PAM. */ 
pamc.conv = &openpam_ttyconv; 
pam_start(progname, uname, &pamc, &pamh); 

printf("Checking password for %s.\n", uname); 

[然後看到更多的PAM特定的代碼,如果密碼工作了]

這是很好的安全性,但對您不利:您將無法使用I/O重定向來發送密碼。根據觀察者的工作方式,它可能甚至不能完成它:它可能會繼續向運行chkpasswd的TTY發送輸入,而不是發送到子終端。我對每個組件的佈線知之甚少,無法對其進行測試。

我知道這並不能真正解決您的問題,但我認爲這值得注意。

+0

我會將此標記爲解決方案,因爲它讓我思考了正確的方向。我最終在腳本中重新使用了來自PAM認證模塊(http://atlee.ca/software/pam/)的代碼。 –

+0

謝謝,我很高興你有一個解決方案! – Matt

相關問題