Scripting
Linux:如何允許普通使用者“su - anotherUser”?
我編寫了一個 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
作為ls
peeradmin 使用者,/etc/sudoers
文件中的規則應如下所示:
nagios ALL=(peeradmin) NOPASSWD: /bin/ls, /bin/touch
如果您想執行更多命令,請添加這些命令(帶有完整路徑),用逗號分隔。
完成此操作後,只需以 nagios 使用者身份使用以下命令:
sudo -u peeradmin touch /path/to/the/mount
或者
sudo -u peeradmin ls
那是因為它是
sudo
config,而你不執行sudo
.
sudo su - peeradmin -c "ls"
可能會奏效。但實際上,如果只是執行命令,應該更多地考慮直接使用 sudo 。例如
sudo -u peeradmin ls
您需要一個別名:
nagios ALL=(peeradmin) NOPASSWD: /bin/ls