以另一個使用者身分執行命令

以另一個使用者身分執行命令

我創建了一個名為 的用戶intelmq,該用戶有權運行名為 的程式intelmqctl。然後我創建了一個名為的用戶apache,我想以該用戶的身份apache執行。我將以下幾行添加到文件中:intelmqctlintelmqsudoers

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 apacheroot,它將更改為用戶apache,然後如果我執行該命令sudo -u intelmq /usr/bin/intelmqctl,它會起作用,它會顯示要執行的所有選項intelmqctl

但是,如果我sudo -iu apacheapache用戶身份運行該命令,它將返回: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 的進程所有權來執行此可執行檔。

相關內容