Ubuntu 18.04 侏儒德。
我制作了一个简单的 bash 脚本文件,标记我下次重新启动以选择 windows grub 条目。用于直接从 Linux DE 快速重新启动到 Windows。
问题是我必须使用 dconf 修改可执行文件来询问,所以我可以在终端中单击运行,它会自动询问密码。否则,只执行文件什么都不做,因为它正在等待密码输入。
有没有办法以固有的 sudo 权限运行这样的 bash 脚本文件,因此它不需要询问密码?
编辑(即使它是针对@waltinator,因为评论格式很糟糕):
也会
/bin/kill
是我的 bash 脚本文件的位置和名称吗?例如,我的 bash 脚本文件名为 restart2windows 并且位于我的桌面上:
/home/myusername/Desktop/restart2windows
所以我只需要将这一行添加到 /etc/sudoers (我仍然不清楚使用 visudo 编辑该文件,以及是否应该按照建议编辑 sudoers.d):
myusername mymachinename = NOPASSWD: /home/myusername/Desktop/restart2windows
这是正确的吗?
编辑 2
我尝试通过 visudo 编辑 sudoers:
sudo visudo
并在注释行下方添加了我上面建议的行:
#includedir /etc/sudoers.d
然后尝试从我的桌面运行我的 bash 脚本文件,但它什么也没做。如果我选择在终端中运行它,终端正在等待密码输入。
这是我的 bash 脚本文件内容,很简单:
#!/bin/bash
sudo grub-reboot 2
sudo reboot now
在这里发现了这个问题,看来我需要在某处添加 sudo ?我对这个问题的答案感到困惑,因为他来自 OP 的代码行与 OP 不匹配。
编辑3:
我也在 Ubuntuforums.org 上提交了同样的帖子:https ://ubuntuforums.org/showthread.php?t=2434878
读取
man sudoers
- 它可以让您授予对单个命令的无密码访问权限。也读man visudo
。从
man
页面:另外,我会注意到“使现有
bash
脚本运行为root
”是许多非常悲惨的安全故事的开始。不要让脚本运行为
root
,而是允许您的用户无密码访问脚本中的 2 个命令的(完整路径)。