我在 bash 中有一个脚本(名为 script),我想允许用户(名为“userScript”)以 root 身份运行它而无需提供任何密码。
因此,我编辑了文件 /etc/sudoers 并在末尾添加了两行:
Cmnd_Alias SCRIPT=/home/userScript/Desktop/script
userScript ALL:NOPASSWD: SCRIPT
(桌面中的脚本是符号链接,以防止任何修改)
它运行得很好。几天后,我的脚本太大了,所以我用python重写了它,包含多个文件、类...
因此,除了符号链接的目标之外,我没有做任何改变,但是现在当我尝试运行脚本时,终端会要求输入密码,并给我一个错误(如果这不是好消息,我很抱歉,因为我的 Ubuntu 不是英文的)
抱歉,用户 userScript 无权在 name_of_my_computer 上以 root 身份执行“/usr/bin/python 脚本”
我以用户“userScript”的身份运行如下脚本:
sudo python script
答案1
您的问题是,您尝试运行的命令sudo
是 python
;脚本是 的第一个参数python
。相反,您的脚本应该具有可执行权限,并且您应该将其作为 运行sudo script_name
。
其次,当您执行 时python script_name
,它不一定会查找您的脚本,无论它存储在何处。您要么必须提供完整路径,要么再次让脚本本身位于PATH
变量中列出的目录之一中。
答案2
你的 sudoers 文件看起来不错。我确实添加了一行 shebang 代码
#!/usr/bin/python3
并运行脚本
sudo script