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?

Заранее спасибо,

2 ответа

Решение

Хотя и правильный, я думаю, что приведенный выше ответ немного неполон.

Для того, чтобы сделать оба 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 конфиг, а ты не запускаешь sudo,

sudo su - peeradmin -c "ls" может работать.

Но на самом деле, следует больше думать об использовании sudo напрямую, если он просто запускает команды. например

sudo -u peeradmin ls

Для которого вам нужен псевдоним:

nagios ALL=(peeradmin) NOPASSWD: /bin/ls
Другие вопросы по тегам