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

sudo запрашивает пароль по ssh

У меня есть sudo, настроенный для пользователя (myuser) следующим образом на "hostname" (содержимое sudoers):

Cmnd_Alias SCRIPT=/path/script*
myuser ALL=(suser) NOPASSWD: SCRIPT

это работает нормально, поэтому я могу запустить следующее, авторизовавшись локально как myuser на имени хоста, без необходимости ввода пароля:

sudo -u suser /path/script

однако, когда я использую ssh (с настроенными ключами, поэтому пароль не требуется) для входа и запуска, как показано ниже:

ssh hostname sudo -u suser /path/script 

Мне предлагается ввести пароль, и при вводе пароля я получаю:

Sorry, user myuser is not allowed to execute '/path/script' as suser on hostname
.

ОБНОВИТЬ Проблема решается удалением "*" в конце команды в sudoers. * Был добавлен, чтобы разрешить передачу параметров в сценарий, но на самом деле в этом нет необходимости. Все еще не понимаю, почему * позволяет sudo работать локально, но не по ssh. Так что вопрос все еще стоит

Вы не указали хост в sudoers, поэтому он работает только локально, как вы его сейчас настроили.

Поэтому, если вы установите для параметра хоста значение ALL, он будет работать на любом хосте.

Из человек sudoers:

Зарезервированное слово ALL - это встроенный псевдоним, который всегда приводит к успешному совпадению. Его можно использовать везде, где в противном случае можно было бы использовать Cmnd_Alias, User_Alias, Runas_Alias ​​или Host_Alias.

...

По умолчанию, если тег NOPASSWD применяется к любой из записей для пользователя на текущем хосте, он или она сможет запустить sudo -l без пароля. Кроме того, пользователь может запускать sudo -v без пароля только в том случае, если тег NOPASSWD присутствует для всех записей пользователя, относящихся к текущему хосту. Это поведение можно изменить с помощью параметров verifypw и listpw.

Дополнительный факт, что следующее работает на терминале, похоже, подтверждает, что хост является причиной того, что вам предлагается.

$ ssh имя хоста

$ sudo -u пользователь / путь / сценарий

Синтаксис, который вы показываете для файла sudoers, неверен, и visudo не позволит вам создать файл с таким синтаксисом. Это должно быть что-то вроде

testuser hostname=(user) NOPASSWD: /path/script*

Используя этот синтаксис, я могу использовать ssh для имени хоста и выполнить сценарий, не запрашивая пароль.

РЕДАКТИРОВАТЬ

Из чтения комментариев кажется, что в вашем файле sudoers есть неправильная конфигурация. Это могло бы быть связано с частью строки Host_Alias ​​или указанием имени хоста.

Я установил тестового пользователя в системе CentOS 6, пробовал различные конфигурации и не могу найти тот, который работает, когда я вошел в систему локально, но отказывает мне в доступе при попытке через ssh.