Когда я запускаю
C:\Windows\System32\bash.exe -c "sudo updatedb"
из (привилегированной, если необходимо) командной строки Windows, я получаю запрос на ввод пароля sudo.
Наличие ALL ALL = NOPASSWD: /usr/bin/updatedb.mlocate -D
в / etc / sudoers не имеет значения.
Я могу запустить sudo updatedb
без запроса пароля из самого bash, независимо от строки выше в sudoers.
Запуск без sudo приводит к стандартному и ожидаемому обновленному b: невозможно открыть временный файл для '/var/lib/mlocate/mlocate.db'
Я хотел бы найти строку cmd для Windows, которая работает так Я могу поставить updateb в запланированное задание. Если нужно изменить sudoers, прекрасно.
Если Вы работаете над частным компьютером и не имеете никакой проблемы безопасности относительно защиты паролем, Вы могли использовать следующее обходное решение:
C:\Windows\System32\bash.exe -c "echo 'my_password' | sudo -S updatedb"
-S
флаг означает, что sudo считает пароль из stdin. Очевидная проблема - то, что Вы имеете к explicitely, пишут Ваш пароль в Вашей команде, которая не действительно безопасна.
РЕДАКТИРОВАНИЕ:
Как заметка на полях, я добавил следующую строку в конце своего/etc/sudoers файла:
ALL ALL=NOPASSWD: /usr/bin/apt-get*
Позже, работая C:\Windows\System32\bash.exe -c "sudo apt-get update"
из cmd.exe работал безупречно. Вы удостоверялись, что Ваше правило не было перезаписано? Если будет конфликт разрешения в Вашем sudoers файле, то удар будет использовать последнее записанное правило. Удостоверьтесь, что Вы помещаете Ваш ALL ALL=NOPASSWD:
строка в конце файла.