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

Отключить запрос sudo без отключения необходимости ввода пароля sudo

Я думаю, это довольно сложно или, по крайней мере, не очень часто.

Что я не после является:

Отключение пароля с помощью

 user    ALL=(ALL) NOPASSWD:    ALL

Или подобный трюк.

Я знаю, как читать пароль sudo из stdin, и это работает нормально, но вы все равно получаете сообщение:

$ echo $PW | sudo -S whoami
[sudo] password for oz123: root

На странице руководства показано, что я могу использовать -p.

$ echo $PW | sudo -S -p "foo " whoami
foo root

$ echo $PW | sudo -S -p " " whoami
 root

Единое пространство работает.

Передача пустой строки, похоже, не работает ...

$ echo $PW | sudo -S -p "" whoami
[sudo] password for oz123: root

Итак, вопрос:

Как определить пустую строку как допустимое значение для -p?

обновление - версия sudo

$ sudo --version
Sudo version 1.8.21p2
Sudoers policy plugin version 1.8.21p2
Sudoers file grammar version 46
Sudoers I/O plugin version 1.8.21p2

(в Ubuntu 18.04)

Похоже, что с более новыми версиями sudo эта проблема решена:

На моем ноутбуке Gentoo:

$ sudo -k
$ echo "$PW" | sudo -S -p "" whoami
root

$ sudo --version
Sudo version 1.8.25p1
Sudoers policy plugin version 1.8.25p1
Sudoers file grammar version 46
Sudoers I/O plugin version 1.8.25p1

На старых машинах с Ubuntu вы можете просто перенаправить приглашение на /dev/null:

sudo -S 2>/dev/null whoami