如何使用 Windows 任务计划程序运行 updatedb?

如何使用 Windows 任务计划程序运行 updatedb?

当我跑步时

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:行放在文件末尾。

相关内容