Su

讓 su 多次詢問密碼

  • March 27, 2017

我使用的是 Debian 8,當我輸入su密碼提示時只出現一次。如果我輸入了錯誤的密碼,我希望重試並立即再次開始輸入,但密碼的一部分在 shell 上是可見的。

如何配置su以重新提示輸入密碼,直到我用Ctrl+取消它C

我嘗試查看/etc/sudoers,和這個unix.SE 問題/etc/pam.d/*,不幸的是它不完整。/etc/login.defs

這些PAM模組可以提供一定程度的靈活性,幾乎可以完全滿足您的需求。根據您在評論中的回复,您很樂意允許su在失敗之前提供三次嘗試。這就是我在這裡提供的。

我強烈建議您備份PAM您更改的每個配置文件,並且您已經在某個地方打開了一個根 shell,準備恢復損壞的更改。在進行任何更改後PAM,測試您仍然可以登錄並獲得 root 訪問權限非常重要。如果你弄錯了,你可以完全使用你的系統。

這些PAM文件位於 中/etc/pam.d,您將需要 root 訪問權限才能更改它們。

Debian 8 上的su文件包含一個身份驗證行和對包含文件的引用common-auth。把它們放在一起,我們得到這個:

auth    sufficient pam_rootok.so

auth    [success=1 default=ignore]      pam_unix.so nullok_secure
auth    requisite                       pam_deny.so

auth    required                        pam_permit.so
auth    optional                        pam_cap.so

令人興奮的部分是對 的呼叫pam_unix.so,它根據密碼數據庫 (/etc/passwd/etc/shadow) 進行身份驗證。該[success=N]組件告訴PAM如果模組返回成功狀態,則跳過接下來的 N 個模組。所以如果從pam_unix.so配置中獲得成功返回會跳過失敗模組pam_deny.so

我們可以使用這種方法來建構另外兩次身份驗證嘗試,如下所示:

auth    sufficient pam_rootok.so

auth    [success=3 default=ignore]      pam_unix.so nullok_secure
auth    [success=2 default=ignore]      pam_unix.so nullok_secure
auth    [success=1 default=ignore]      pam_unix.so nullok_secure
auth    requisite                       pam_deny.so

auth    required                        pam_permit.so
auth    optional                        pam_cap.so

到了,大功告成。


請注意,如果您正在執行 SAMBA 或其他一些外部身份驗證方案,則需要稍微調整更改。在我的一個系統上,通過pam_winbind.so. 這也需要被複製,所以你會從這個開始:

auth    [success=2 default=ignore]      pam_unix.so nullok_secure
auth    [success=1 default=ignore]      pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass
auth    requisite                       pam_deny.so

對此:

auth    [success=6 default=ignore]      pam_unix.so nullok_secure
auth    [success=5 default=ignore]      pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass
auth    [success=4 default=ignore]      pam_unix.so nullok_secure
auth    [success=3 default=ignore]      pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass
auth    [success=2 default=ignore]      pam_unix.so nullok_secure
auth    [success=1 default=ignore]      pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass
auth    requisite                       pam_deny.so

引用自:https://unix.stackexchange.com/questions/353765