当我跑步时
C:\Windows\System32\bash.exe -c "sudo updatedb"
从(如果需要,则是特权)Windows 命令行,我得到了输入 sudo 密码的提示。
拥有ALL ALL=NOPASSWD: /usr/bin/updatedb.mlocate -D
任何区别。
sudo updatedb
无论 sudoers 中的上述行如何,我都可以在 bash 内部运行而无需密码提示。
不使用 sudo 运行会产生标准和预期的结果updatedb: can not open a temporary file for '/var/lib/mlocate/mlocate.db'
我想找到一个可以运行的 Windows cmd 行,以便我可以将 updatedb 放入计划任务中。如果需要修改 sudoers,那就好了。
答案1
如果您使用私人计算机工作且不存在密码保护方面的安全问题,则可以使用以下解决方法:
C:\Windows\System32\bash.exe -c "echo 'my_password' | sudo -S updatedb"
该-S
标志表示 sudo 将从 stdin 读取密码。明显的问题是您必须在命令中明确输入密码,这并不安全。
编辑:
附注:我在 /etc/sudoers 文件末尾添加了以下行:
ALL ALL=NOPASSWD: /usr/bin/apt-get*
之后,C:\Windows\System32\bash.exe -c "sudo apt-get update"
从 cmd.exe 运行一切顺利。你确定你的规则没有被覆盖吗?如果你的 sudoers 文件中存在权限冲突,bash 将使用最后写入的规则。确保将你的ALL ALL=NOPASSWD:
行放在文件末尾。