我創建了一個名為 的用戶intelmq
,該用戶有權運行名為 的程式intelmqctl
。然後我創建了一個名為的用戶apache
,我想以該用戶的身份apache
執行。我將以下幾行添加到文件中:intelmqctl
intelmq
sudoers
Defaults:apache !requiretty
apache ALL=(intelmq) NOPASSWD: /usr/bin/intelmqctl
但是,每次我嘗試以使用者身分執行以下命令時,apache
都會返回以下內容:
命令:sudo -u apache sudo -u intelmq /usr/bin/intelmqctl --type json stop abusech-ip-parser
輸出:
Sorry, user apache is not allowed to execute '/bin/sudo -u intelmq /usr/bin/intelmqctl --type json stop abusech-ip-parser' as apache on localhost.localdomain.
我使用的是 CentOS 7。
以下是我安裝的步驟intelmqctl
以及問題本身的更好解釋,也許我在安裝過程中失敗了:https://github.com/certtools/intelmq/issues/981
如果我嘗試執行sudo -iu apache
為root
,它將更改為用戶apache
,然後如果我執行該命令sudo -u intelmq /usr/bin/intelmqctl
,它會起作用,它會顯示要執行的所有選項intelmqctl
。
但是,如果我sudo -iu apache
以apache
用戶身份運行該命令,它將返回:Sorry, user apache is not allowed to execute '/bin/bash' as apache on localhost.localdomain.
答案1
您可以向該二進位檔案新增 setuid 權限並將所有權變更為 intelmq。
chmod u+s /usr/bin/intelmqctl
chown intelmq /usr/bin/intelmqctl
然後您可以使用 intelmq 的進程所有權來執行此可執行檔。