答案1
pam_exec 為您指明了正確的方向,但 setuid 是個壞建議;大多數(全部?)現代 Linux 在 shell 腳本上忽略它,只在二進位執行檔上尊重它。
如果腳本在登入以外的時間執行(以 root 身分),會出現問題嗎?如果它可以比嚴格要求的更頻繁地運行,您可以建立一個包裝腳本,該腳本在每次 ssh 登入時執行,並使用使用者權限,使用 sudo(無密碼)以 root 身份執行腳本。然而,這意味著用戶也可以根據需要手動(以 root 身份)運行它。
若要進行設置,請將此行新增至 /etc/pam.d/sshd
account optional pam_exec.so /etc/pam.d/LoginWrapper.sh
然後建立檔案 /etc/pam.d/LoginWrapper.sh ,其內容為:
#!/bin/bash if [[ $EUID -ne 0 ]]; then # Execute only when a user other than root logs in /usr/bin/sudo /path/to/your/root_script.sh fi
請注意,如果您的 sudo 位於不同的路徑中,您應該在上面更新它。
現在在 /etc/sudoers 中新增以下行:
ALL ALL=(root) NOPASSWD: /path/to/your/root_script.sh
答案2
透過將所有使用者新增至名為 mygroup 的群組來解決此問題
sudo groupadd mygroup
sudo usermod -aG mygroup user1
sudo usermod -aG mygroup user2
然後透過將以下內容新增至 sudoers 進行修改以允許該群組在沒有密碼的情況下/etc/sudoers
執行sudo pkill
%mygroup ALL=(ALL) NOPASSWD: /usr/bin/pkill
然後我只是將命令添加sudo pkill
到底部/etc/profile
,它發揮了作用。