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