【问题标题】:Making a Python script run with root privileges使 Python 脚本以 root 权限运行
【发布时间】:2015-12-24 07:37:03
【问题描述】:

我有一个 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

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

我做错了什么?

【问题讨论】:

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

标签: python root sudo sudoers visudo


【解决方案1】:

行尾不应有斜线。您的 sudoers 文件应如下所示,

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

现在,解决您的实际问题!

如果我删除最后一个 '/' ,visudo 声称我有语法错误。

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

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

【讨论】:

    猜你喜欢
    • 2012-05-03
    • 2010-09-28
    • 2012-12-11
    • 2014-09-16
    • 2011-09-01
    • 1970-01-01
    • 2013-06-29
    • 2011-09-15
    相关资源
    最近更新 更多