gpt4 book ai didi

python - 从需要 root 访问权限的 python 中运行命令

转载 作者:太空狗 更新时间:2023-10-29 22:20:12 26 4
gpt4 key购买 nike

我最近一直在研究子流程。随着我越来越多;我发现自己需要 root 访问权限。我想知道是否有一种简单的方法可以为需要 subprocess 模块的命令输入 root 密码。因此,当系统提示我输入密码时,我的脚本并提供它并运行命令。我知道这是不好的做法,因为代码将在沙盒中运行并与系统的其余部分分开;我也不想以 root 身份运行。

如果可能的话,我真的很感激小例子。我知道你可以用 expect 做到这一点,但我正在寻找更以 python 为中心的东西。我知道 pexpect 存在,但对于这个简单的任务来说有点矫枉过正。

谢谢。

最佳答案

最好利用 sudo对于运行 Python 程序的用户。您可以指定无需密码即可从 sudo 运行的特定命令和参数。这是一个例子:

有很多方法,但我更喜欢将命令集分配给组的方法。因此,假设我们要创建一个组以允许人们以 root 身份运行 tcpdump。所以我们称该组为 tcpdumpers

首先,您将创建一个名为 tcpdumpers 的组。然后修改/etc/sudoers (使用 visudo 命令):

# Command alias for tcpdump
Cmnd_Alias TCPDUMP = /usr/sbin/tcpdump

# This is the group that is allowed to run tcpdump as root with no password prompt
%tcpdumpers ALL=(ALL) NOPASSWD: TCPDUMP

现在任何添加到 tcpdumpers 组的用户都可以像这样运行 tcpdump:

% sudo tcpdump 

从那里您可以轻松地将此命令作为子进程运行。

这消除了将 root 密码硬编码到您的程序代码中的需要,并且可以精细控制谁可以在您的系统上以 root 权限运行什么。

关于python - 从需要 root 访问权限的 python 中运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6229358/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com