gpt4 book ai didi

python - 在 Python 脚本中使用 sudo

转载 作者:IT老高 更新时间:2023-10-28 22:01:23 24 4
gpt4 key购买 nike

每次执行脚本时,我都在尝试编写一个小脚本来挂载 VirtualBox 共享文件夹。我想用 Python 来做,因为我正在尝试学习它来编写脚本。

问题是我需要权限才能启动 mount 命令。我可以将脚本作为 sudo 运行,但我更喜欢它自己制作 sudo。

我已经知道将密码写入 .py 文件是不安全的,但我们谈论的是一个根本不重要的虚拟机:我只想单击 .py 脚本并让它工作。

这是我的尝试:

#!/usr/bin/env python
import subprocess

sudoPassword = 'mypass'
command = 'mount -t vboxsf myfolder /home/myuser/myfolder'

subprocess.Popen('sudo -S' , shell=True,stdout=subprocess.PIPE)
subprocess.Popen(sudoPassword , shell=True,stdout=subprocess.PIPE)
subprocess.Popen(command , shell=True,stdout=subprocess.PIPE)

我的python版本是2.6

最佳答案

许多答案都集中在如何使您的解决方案发挥作用,而很少有人认为您的解决方案是一种非常糟糕的方法。如果你真的想“练习来学习”,为什么不练习使用好的解决方案呢?硬编码您的密码正在学习错误方法!

如果您真正想要的是无密码 mount对于该卷,也许 sudo 根本不需要!那么我可以建议其他方法吗?

  • 使用/etc/fstabmensi建议。使用选项 usernoauto让普通用户挂载该卷。

  • 使用Polkit对于无密码操作:配置 .policy使用 <allow_any>yes</allow_any> 为您的脚本创建文件并在 /usr/share/polkit-1/actions 下车

  • 编辑 /etc/sudoers允许您的用户使用 sudo无需输入密码。正如@Anders 所建议的那样,您可以将此类使用限制为特定命令,从而避免您的帐户中无限制的无密码根权限。见 this answer更多详情请访问 /etc/sudoers .

以上所有都允许无密码的 root 权限,没有一个要求你硬编码你的密码。选择任何方法,我可以更详细地解释它。

至于为什么硬编码密码是一个非常糟糕的主意,这里有一些很好的链接供进一步阅读:

关于python - 在 Python 脚本中使用 sudo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13045593/

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