Проблема при выполнении команды от имени другого пользователя с помощью sudo -u


12

Когда я пытаюсь выполнить lsот имени пользователя abcследующую команду, я получаю сообщение об ошибке:

xyz@host:~/temp$ sudo -u abc ls
[sudo] password for xyz:
Sorry, user xyz is not allowed to execute '/bin/ls' as abc on host.

Но если я делаю, su abcа затем выполняю, lsу меня нет проблем

Ответы:


17

Вы должны настроить политику безопасности sudo так, чтобы пользователь xyz выполнял что-то как пользователь abc. Прочитайте 'man sudoers' и используйте команду visudo для настройки / etc / sudoers.

Например, давайте разрешим пользователю xyz exec / usr / bin / whoami в качестве пользователя abc без пароля. Добавьте эту строку в / etc / sudoers (с помощью visudo не редактируйте / etc / sudoers напрямую):

xyz ALL = (abc) NOPASSWD: /usr/bin/whoami

А теперь проверьте это:

xyz@host:~$ sudo -u abc /usr/bin/whoami
abc

Вы не могли объяснить, почему следует избегать редактирования / etc / sudoers напрямую?
Ади Прасетьо

Потому что, когда вы редактируете / etc / sudoers напрямую, вы можете ошибиться, сломать файл sudoers и (в худшем случае) заблокировать себя с помощью sudo. Visudo - это не просто редактор, он также проверяет синтаксис файла sudoers и помогает избежать ошибок, опечаток и т. Д.
svq

4

Это потому что sudoотличается от su. Когда вы su abcстановитесь пользователем, abcнасколько это касается системы. Затем вы можете делать все, что abcможете.

С другой стороны, sudoиспользуется, чтобы позволить другим пользователям выполнять некоторые команды через прокси. Другими словами, ваша sudoконфигурация позволяет вам выполнять некоторые команды от имени abc. Если команда, которую вы пытаетесь выполнить, не является одной из них, вы получите сообщение об ошибке, о которой вы сообщили.


0

В случае, если все выглядит хорошо, но вы все равно получаете Sorry user xxx cannot execute...сообщение, и он постоянно просит вас sudoввести пароль.

Ты можешь сделать это:

  1. В /etc/sudoersстроке удаления с вашими настройками пользователя
  2. Сохранить файл
  3. Откройте файл, введите (NO COPING) ваши параметры для этого пользователя
  4. Сохранить файл
  5. Попытайся.

Это сработало для меня. Оказалось, что конец этой строки был плохим, потому что я копировал команды, которые требовали выполнения, из электронной почты.


Разумеется, если бы вы использовали его visudoдля редактирования, вам бы об этом сказали?
Auspex

Нет, ты бы не стал.
Borbar

Ах хорошо. Я действительно подумал бы ... В любом случае, я думаю, что вы гораздо чаще получаете ошибки при наборе текста вручную, чем при копировании и вставке. Просто знайте, что концы линий отличаются.
Auspex
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.