讓 su 多次詢問密碼
我使用的是 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