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