Включить sudo без пароля для конкретного пользователя


26

В моей системе два пользователя: itsadokмой основной пользователь и elasticsearchпользователь с другим ulimit для запуска ElasticSearch.

Я хотел бы иметь возможность запускать вещи как дополнительный пользователь, не запрашивая пароль каждый раз.

Я добавил следующую строку /etc/sudoers:

itsadok ALL=(elasticsearch:elasticsearch) NOPASSWD: ALL

Насколько я понимаю, это должно позволить пользователю itsadok на любом хосте запускать любую команду как (пользователь или группа )asticsearch без пароля. Тем не менее, пытаясь что-то вроде

itsadok@dev001$ sudo -u elasticsearch ls

запрашивает у меня пароль. Перезагрузка машины не помогла.

Что я делаю не так?

ОБНОВЛЕНИЕ :

Оказывается, что порядок строк в sudoersзначим. Я поместил строку в «Спецификацию привилегий пользователя», которая звучала как правильное место, но строка для %adminгруппы, которая появляется позже, переопределяла настройку.

Помещение той же строки в конец файла sudoers решило проблему.

Ответы:


12

Пересмотренный ответ из комментариев: если вы разместите директивы ниже #includedir, они игнорируются. Переместите строку рядом с определениями sudoили adminгруппы или поместите ее в отдельный файл в /etc/sudoers.d/.


Не сработало Кроме того, в файле уже есть root ALL=(ALL:ALL) ALLпробелы без двоеточия, поэтому он не выглядит правильным. Просто чтобы быть в безопасности, я пытался просто (elasticsearch). Не работает
itadok

Вы правы, это работает без пробелов в 12.10 по крайней мере. Какой Ubuntu вы используете и где именно sudoersвы разместите эту строку? Я слабо помню, что если в старых системах вы ставили строку после первой #includedir, она игнорировалась. Если он находится в конце файла, попробуйте вставить его над включенным.
Туминоид

1
Ваш комментарий поставил меня на правильный путь: порядок записей имеет значение. Более поздние настройки отменяют более ранние настройки.
itadok

16

Следуй этим шагам:

  1. Отредактируйте файл sudoers (это может быть в /etc/sudoers.d/file_name)
sudo visudo -f /etc/sudoers
  1. Добавить строку в конец файла
usernameusedforlogin ALL=(ALL) NOPASSWD:ALL
  1. Сохранить файл
esc :wq!

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