我正在使用 Linux Mint 20,并且想使用快捷键以 root 权限运行脚本。我想这样做而不必输入我的 root 密码。为此,我已在 /etc/sudoers.d 中注册了该脚本。
/etc/sudoers.d/myscript
username ALL=(ALL) NOPASSWD: /home/xoric/scripts/myscript.sh
出于测试目的,此脚本仅创建两个文件夹。第一个需要 root 权限,第二个不需要。
/home/xoric/scripts/myscript.sh
#!/bin/bash
mkdir /etc/test1 #requires root
mkdir /home/xoric/test2 #does not require root
接下来,我创建一个运行此脚本的自定义快捷键。我用它注册了组合键 Ctrl+Alt+W。
第一次尝试
这仅用于测试目的。当按 Ctrl+Alt+W 时,将创建第二个文件夹。未创建第一个文件夹(需要 root 权限)。这是可以预料的,因为我在没有 root 权限的情况下运行脚本。
第二次尝试
当按 Ctrl+Alt+W 时,没有任何反应。这两个文件夹均未创建,即脚本未执行。我的期望是该脚本将以 root 权限运行并且没有密码提示(因为它是在 sudoers.d 中注册的)。然而,这种情况并非如此。
第三次尝试
当按 Ctrl+Alt+W 时,会打开一个终端并要求我输入 root 密码。当我这样做时,脚本将被执行并创建两个文件夹。这就是我想要实现的,但无需输入密码。
对 Linux (Mint) 有更好了解的人知道为什么第二次尝试不起作用吗? Linux Mint 不允许使用 root 权限的快捷键吗?或者我在 sudoers.d 中注册脚本时犯了一个错误?提前谢谢了。
答案1
在朋友的帮助下我终于找到了问题所在。我在 sudoers.d 中的条目已损坏。它实际上包含字符串“用户名”,而不是我的实际用户名“xoric” - 一个典型的复制和粘贴错误。
更正该条目后,第二次尝试工作正常:按 Ctrl+Alt+W 现在会创建两个文件夹(脚本以 root 权限运行,无需密码提示)。