当前位置: 首页 > 面试题库 >

在python脚本中更改为sudo用户

公良飞尘
2023-03-14
问题内容

我有个问题。我正在编写一个软件,该软件需要执行要求用户处于sudo模式的操作。运行’sudo python
filename.py’不是一个选项,这使我想到了我的问题。有没有一种方法可以在python脚本中途更改为sudo,安全性不是问题,因为用户将知道程序应以以下方式运行以说明问题的sudo密码

  1. 以普通用户身份运行的程序
  2. ......执行操作
  3. 用户输入sudo密码
  4. 用户更改为sudo
  5. 运行需要sudo权限的子程序
  6. 甚至在触发时(子程序结束)用户再次成为普通用户
  7. ......执行操作

我的问题出在第3步,您可能会建议的任何指针或框架都会有很大帮助。

干杯

克里斯


问题答案:

使用Tcl和Expect,再加上子过程来提升自己。所以基本上是这样的:

sudo.tcl

spawn sudo
expect {
    "Password:" {
        send "password"
    }
}

sudo.py

import subprocess
subprocess.call(['tclsh', 'sudo.tcl'])

然后运行sudo.py。



 类似资料:
  • 问题内容: 每次执行脚本时,我都试图编写一个小的脚本来挂载VirtualBox共享文件夹。我想用Python来做,因为我正在尝试学习它的脚本。 问题是我需要特权才能启动安装命令。我可以将脚本作为sudo运行,但是我更喜欢它自己制作sudo。 我已经知道将密码写入.py文件并不安全,但是我们谈论的是根本不重要的虚拟机:我只想单击.py脚本并使它工作。 这是我的尝试: 我的python版本是2.6 问

  • 问题内容: 我想实现一个userland命令,该命令将使用其参数之一(路径)并将目录更改为该目录。程序完成后,我希望外壳位于该目录中。所以我想用外部程序来实现命令。 可以在python脚本中完成还是必须编写bash包装器? 例: 问题答案: 其他人指出,您不能从孩子那里更改父母的工作目录。 但是有一种方法可以实现您的目标-如果从shell函数中进行cd,则 可以 更改工作目录。将此添加到您的〜/

  • 问题内容: 我无法弄清楚这是怎么回事。当我在终端中运行它并输入密码时,什么也没发生,但是如果我在终端中单独运行每个命令,它就可以工作。谢谢! 问题答案: Command 启动一个交互式根外壳程序,但不会将当前外壳程序转换为根外壳程序。 做您想要的事情的成语与此类似(感谢@CharlesDuffy的额外注意): 这个想法是检查当前用户是否是root用户,如果不是,请使用以下命令重新运行同一命令

  • 问题内容: 我正在编写一个简单的脚本,该脚本可以重新启动hadoop从属服务器。在脚本中,我必须以root用户身份进行一些初始更改。之后,我必须更改为用户“ hadoop”并执行命令集。我使用os.system运行命令,但是我怀疑它是否运行良好。例如: 再一次,我必须以root用户身份执行一些命令,然后再次成为用户“ hadoop”并执行: 我在这里有三个问题, os.system是我可以用来发出

  • 问题内容: 有没有办法更改在Linux上运行python脚本的进程的名称? 当我执行时,我得到的只是“ python”进程名称。 问题答案: http://code.google.com/p/procname/ 用法示例: 它仅在存在系统调用并支持命令的系统上工作。

  • html标记被忽略。我想为html标记(如table,br)进行漂亮的打印。 你用什么简单的方法来做这件事?