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?

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

1
задан 17 December 2014 в 12:10
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

1
ответ дан 3 December 2019 в 17:40

Это потому, что это конфигурация sudo , а вы не запускаете sudo .

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

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

sudo -u peeradmin ls

, для которого вам понадобится псевдоним:

nagios ALL=(peeradmin) NOPASSWD: /bin/ls
3
ответ дан 3 December 2019 в 17:40

Теги

Похожие вопросы