Arch-Linux
登錄失敗時如何正確使用 PAM 執行腳本
當我的 Arch Linux 系統上的登錄失敗時,我正在嘗試使用 Pluggable Authentication Module 執行腳本。Arch Linux 沒有 common-auth 文件,我也決定不創建。相反,我發現 PAM 堆棧將 system-auth 文件用於某些功能,因此我決定對其進行編輯。
原來的system-auth文件如下
#%PAM-1.0 auth required pam_unix.so try_first_pass nullok auth optional pam_permit.so auth required pam_env.so account required pam_unix.so account optional pam_permit.so account required pam_time.so password required pam_unix.so try_first_pass nullok sha512 shadow password optional pam_permit.so session required pam_limits.so session required pam_unix.so session optional pam_permit.so
為了在登錄失敗時執行腳本,我將 auth 塊更改如下
auth [success=1 default=ignore] pam_unix.so try_first_pass nullok auth optional pam_exec.so <path to the script file> auth optional pam_permit.so auth required pam_env.so account required pam_unix.so account optional pam_permit.so account required pam_time.so password required pam_unix.so try_first_pass nullok sha512 shadow password optional pam_permit.so session required pam_limits.so session required pam_unix.so session optional pam_permit.so
sudo 命令是在我係統的 PAM 堆棧中使用此 system-auth 文件的命令。但是,當我在上面編輯文件後嘗試使用 sudo 命令時,即使我輸入了錯誤的密碼,sudo 命令也會執行。
如果有人能告訴我這裡出了什麼問題並幫助我糾正它,我將不勝感激
從
man pam.d
, 的描述required
:required [success=ok new_authtok_reqd=ok ignore=ignore default=bad]
使用
default=ignore
,來自pam_unix
is 的失敗不再導致身份驗證失敗,因為您的腳本,然後pam_permit.so
將被使用並pam_permit.so
始終成功。pam_unix
應該還有default=bad
:bad this action indicates that the return code should be thought of as indicative of the module failing. If this module is the first in the stack to fail, its status value will be used for that of the whole stack.