使Python脚本以root权限运行

使Python脚本以root权限运行,python,root,sudo,sudoers,visudo,Python,Root,Sudo,Sudoers,Visudo,我有一个Python脚本,它需要在没有root权限的情况下在Ubuntu服务器上装载磁盘。 我使脚本可执行(使用#!/usr/bin/env-python)。我还将其重命名为“.sh”(可能不重要),并chmod使其可执行 然后,我在sudoers文件中输入以下行: ALL ALL = (ALL) NOPASSWD: /home/sazulay/.scripts/mount_disks.sh/ 如果我删除最后一个“/”,visudo会声称我有语法错误 如果我这样离开它并从我的用户运行以下行:

我有一个Python脚本,它需要在没有root权限的情况下在Ubuntu服务器上装载磁盘。 我使脚本可执行(使用
#!/usr/bin/env-python
)。我还将其重命名为“.sh”(可能不重要),并
chmod
使其可执行

然后,我在sudoers文件中输入以下行:

ALL ALL = (ALL) NOPASSWD: /home/sazulay/.scripts/mount_disks.sh/
如果我删除最后一个“/”,visudo会声称我有语法错误

如果我这样离开它并从我的用户运行以下行:

sudo /home/sazulay/.scripts/mount_disks.sh
我仍然被提示输入密码,这正是我试图避免的


我做错了什么?

行的末尾不应该有斜杠。你的sudoers文件应该是这样的

ALL ALL = (ALL) NOPASSWD: /home/sazulay/.scripts/mount_disks.sh
现在,谈谈你的实际问题

如果我删除最后一个“/”,visudo会声称我有语法错误

我怀疑您添加的行在文件的末尾。现在,传统上,如果文件不以换行符结尾,unix命令就会出现问题。大多数linux编辑器(据我所知)都添加了这个。可能您正在使用的任何编辑器都不会。因此,在文件末尾添加一行,使您的行不是最后一行。所以应该是这样的

ALL ALL = (ALL) NOPASSWD: /home/sazulay/.scripts/mount_disks.sh
<--- empty line --->
ALL ALL=(ALL)NOPASSWD:/home/sazulay/.scripts/mount_disks.sh

无关:
.sh
扩展用于shell脚本,
.py
扩展用于Python脚本。我建议你也修一下。谢谢米科!我这样做只是因为我认为它可能会有一些影响…你根本不需要任何扩展,你不在古老的DOS/Windows系统上。谢谢你的评论Ultrich,我删除了所有扩展