Назад | Перейти на главную страницу

Linux: как разрешить обычному пользователю «su - another User»?

Я написал сценарий проверки 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