使用root权限运行Python脚本

3
我有一个Python脚本需要在Ubuntu服务器上挂载磁盘,但没有root权限。 我将脚本设置为可执行文件(使用#!/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

我仍然被提示输入密码,这正是我尝试避免的。

我做错了什么?


1
无关的提示:.sh 扩展名用于 shell 脚本,.py 扩展名用于 Python 脚本。我建议您也修复一下这个问题。 - Mikko Ohtamaa
谢谢Mikko!我这样做只是因为我认为它可能会产生一些影响... - ShaharA
你根本不需要任何扩展,因为你不是在古老的DOS/Windows系统上。 - Ulrich Eckhardt
感谢您的评论,Ultrich。我已经删除了所有扩展名。 - ShaharA
1个回答

3

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

ALL ALL = (ALL) NOPASSWD: /home/sazulay/.scripts/mount_disks.sh

现在,让我们来看看您实际的问题!
如果我删除最后一个'/',visudo会报告语法错误。我怀疑您添加的行在文件末尾。现在,传统上,Unix命令存在一个问题,即文件没有以换行符'\n'结尾。大多数Linux编辑器(我知道的)都会添加这个。可能您使用的编辑器没有添加。因此,请在文件末尾添加一行额外的内容,以便您的行不是最后一行。所以应该像这样:
ALL ALL = (ALL) NOPASSWD: /home/sazulay/.scripts/mount_disks.sh
<--- empty line --->

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接