Я записал сценарий проверки 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
, а вы не запускаете sudo
.
sudo su - peeradmin -c "ls"
может работать.
Но на самом деле следует больше думать об использовании sudo напрямую, если он просто выполняет команды. например
sudo -u peeradmin ls
, для которого вам понадобится псевдоним:
nagios ALL=(peeradmin) NOPASSWD: /bin/ls