Pythonscript 中的 sudo 执行命令

Pythonscript 中的 sudo 执行命令

我想从 pythonscript 中 sudo 一个命令,而无需在其中硬编码我的密码。Pythonscript 是 Apache2 上的 web 服务的一部分。由于它是 web 服务的一部分,因此每次都要求用户输入密码不是一个选择,也不授予整个文件夹的完整权限。

该命令应执行已编译的 C++ 文件(其名称存储在变量“CMDexecutable”中)。此已编译的 C++ 文件位于作为服务的一部分创建的临时文件夹中,名称为随机。路径存储在变量“rundir_temp”中。此目录可通过网络自由访问。

现在,我的 Pythonscript 中有以下内容:

Popen(os.path.join(rundir_temp,CMDexecutable),stdout=PIPE)

这不会执行我拥有的脚本。我只能在“rundir_temp”目录中在终端中键入以下内容来执行已编译的 C++ 文件:

sudo ./CMDexecutable

一切都进行得很顺利。

我怎样才能在不硬编码密码的情况下在我的 Pythonscript 中授予此命令的 sudo 权限?

我发现此主题讨论了一个非常相似的主题,但我就是无法让它工作...我对 Python 和 Ubuntu 都不熟悉,所以可能忽略了一些基本的东西?

我有 Ubuntu 14.04 LTS 和 Python 2.7.6

提前致谢!!

答案1

从你的问题来看,尚不清楚你是否需要里面目录CMDexecutable(因此是cd第一个)或者完整路径就可以了,但我看到的唯一选项是将脚本添加到文件中sudoers,如下所述这里
然后您可以使用 运行脚本sudo,而无需输入密码。
您可以简单地运行(python)脚本,然后通过命令

sudo <script>

如上所述,无需输入密码。

(非常)重要的提示

很明显,您需要将脚本存储在没有权限就无法编辑的位置sudo。由于脚本无需输入密码即可运行,因此您需要确保其内容不会被任何其他进程或可能的恶意代码更改。

此外,(可能是多余的,但由于我不知道确切的背景)出于同样的原因,您需要绝对确保它所CMDexecutable运行的一切都不是“恶意更改”的可能目标。

编辑

既然你提到你不能改变最初的命令来运行你的python脚本sudo,你可以执行以下操作:

  • 里面你的python脚本,创建一个命令来运行次要的脚本,使用 sudo 运行:

      sudo <script>
    
  • 将此辅助脚本添加到sudoers文件中,无需密码即可运行。这样,python(主)脚本将运行命令而无需输入密码。

不过我想强调的是,这似乎是拼凑起来的,我对可能的安全风险一无所知。无论如何,确保从第一个sudo命令“树”的线程运行的所有文件都不是恶意编辑的可能目标。

相关内容