Включить 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 решило проблему.

itsadok
источник

Ответы:

12

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

Tuminoid
источник
Не сработало Кроме того, в файле уже есть 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