sudo для пользователей с пустыми паролями

Я хочу, чтобы sudo вел себя так, для всех пользователей:

  1. Если у пользователя есть непустой пароль, запросите пароль.

  2. Если пользователь в настоящее время имеет пустой пароль, либо запрашивает пароль и принимает пустую строку, либо вообще не запрашивает и разрешает.

Это возможно? Прямо сейчас у меня (1), но это то, что происходит для пользователя с пустым паролем:

$ sudo echo Sorry, try again. Sorry, try again. Sorry, try again. sudo: 3 incorrect password attempts 

В качестве альтернативы, я могу отключить проверку паролей для каждого пользователя, но это не то, что я хочу, потому что пользователь может установить пароль позже, а затем sudo должен запросить его.

Я не думаю, что это возможно, потому что sudo не будет знать, что у пользователя нет пароля или что это пустая строка, пока она ( sudo ) не представит пароль, пустой или другой, для модуля PAM для проверки. Поэтому перед продолжением необходимо всегда запрашивать пароль у пользователя.

Здесь вы можете настроить пользователей, которым не требуется использование пароля с опцией NOPASSWD в файле sudoers. Но это очень неуверенно, и я бы рекомендовал вам серьезно рассмотреть, какова ваша конечная цель здесь, прежде чем приступать к этому методу.

… так что я не забочусь о безопасности …

Сначала установите «пустой» пароль

Это U & L Q & A под названием: Как вы создаете пользователя без пароля? предложил использовать этот метод, который работал для меня.

 $ sudo passwd --delete samtest Removing password for user samtest. passwd: Success 

Теперь проверьте это

Теперь добавьте такую ​​строку в файл /etc/sudoers . ПРИМЕЧАНИЕ. Всегда редактируйте этот файл, используя sudo visudo .

 samtest ALL=(ALL) NOPASSWD: ALL 

Теперь попробуйте войти в систему как пользователь «samtest» без пароля.

 $ su - samtest $ 

Теперь попробуйте использовать эту учетную запись, используя sudo :

 $ whoami samtest $ sudo echo $ 

Это было ошибкой в ​​моем сценарии «auth» PAM: сценарий заканчивался без получения «ok» или «done».

Интересно, почему sudo через консоль работает, когда он запрашивает пароль через SSH?

По крайней мере, на Ubuntu 16.04 политика по умолчанию в /etc/pam.d/common-auth содержит:

 auth [success=1 default=ignore] pam_unix.so nullok_secure 

Документы pam_unix (8), которые nullok_secure разрешают пустые пароли только при использовании одного из TTY в /etc/securetty . Если это ограничение нежелательно, можно заменить nullok_secure на nullok .

В качестве альтернативы можно разрешить одному конкретному пользователю использовать пустые пароли с помощью NOPASSWD sudoers NOPASSWD как описано slm.