首页  >  文章  >  后端开发  >  如何在不硬编码密码的情况下安全地运行需要提升权限的 Python 脚本?

如何在不硬编码密码的情况下安全地运行需要提升权限的 Python 脚本?

Barbara Streisand
Barbara Streisand原创
2024-11-04 02:16:301016浏览

How to Securely Run Python Scripts Requiring Elevated Privileges Without Hardcoding Passwords?

将 sudo 与 Python 脚本结合使用:硬编码密码的安全替代方案

您正在尝试创建一个 Python 脚本来挂载 VirtualBox 共享文件夹执行。但是,这需要提升权限,导致您探索诸如以 sudo 身份运行脚本或在脚本中使用 sudo 等选项。

虽然当然不建议在 .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)

强烈建议不要采用这种方法。硬编码密码被认为是一种较差的安全做法,使您的系统容易受到未经授权的访问。

硬编码密码的替代方案

幸运的是,还有更安全的替代方案:

  • 使用 /etc/fstab: 根据 mensi 的建议,您可以配置 /etc/fstab 以允许普通用户无需 sudo 即可挂载卷。
  • 使用 Polkit: Polkit 提供了一种无密码操作的机制。您可以创建一个 .policy 文件,无需密码即可授予脚本权限。
  • 修改 /etc/sudoers: 通过编辑 /etc/sudoers,您可以授予用户有限的 sudo仅适用于特定命令的权限。这限制了对您想要的脚本的无密码执行。

这些替代方案允许您在不损害系统安全性的情况下实现您的目标。进一步阅读这些主题可以提供更深入的信息。

以上是如何在不硬编码密码的情况下安全地运行需要提升权限的 Python 脚本?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn