Scripting

Linux:如何允許普通使用者“su - anotherUser”?

  • December 17, 2014

我編寫了一個 Nagios 檢查腳本,它檢查使用者 peeradmin 是否能夠在伺服器上的某個掛載中訪問文件。

Nagios 使用者是: nagios 。

我已經編輯/etc/sudoers並添加了這些行,但沒有一個起作用:

nagios  ALL=NOPASSWD: /bin/su - peeradmin -c /bin/touch
nagios  ALL=(peeradmin) NOPASSWD: /bin/su
nagios  ALL=(peeradmin) NOPASSWD: /bin/su - peeradmin

但是,當以 nagios 使用者身份登錄時,我無法以使用者 peeradmin 身份執行任何命令,而不會被要求輸入密碼:

[nagios@hadoop-nn1 ~]$ su - peeradmin -c "ls"
Password:

我做錯了什麼,如何允許使用者 nagios 以使用者 peeradmin 身份執行命令?

提前致謝,

雖然正確,但我認為上述答案有點不完整。

為了同時touch作為lspeeradmin 使用者,/etc/sudoers文件中的規則應如下所示:

nagios ALL=(peeradmin) NOPASSWD: /bin/ls, /bin/touch

如果您想執行更多命令,請添加這些命令(帶有完整路徑),用逗號分隔。

完成此操作後,只需以 nagios 使用者身份使用以下命令:

sudo -u peeradmin touch /path/to/the/mount

或者

sudo -u peeradmin ls

那是因為它是sudoconfig,而你不執行sudo.

sudo su - peeradmin -c "ls"可能會奏效。

但實際上,如果只是執行命令,應該更多地考慮直接使用 sudo 。例如

sudo -u peeradmin ls

您需要一個別名:

nagios ALL=(peeradmin) NOPASSWD: /bin/ls

引用自:https://serverfault.com/questions/653141