我正在尝试编写一个小脚本来在每次执行脚本时安装 VirtualBox 共享文件夹。我想用Python 来做这件事,因为我正在尝试学习它来编写脚本。
问题是我需要特权才能启动挂载命令。我可以将脚本作为 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
许多答案都集中在如何使您的解决方案发挥作用,而很少有人建议这样做你的解决方案是very bad方法。如果你真的想“通过实践来学习”,为什么不练习使用好的解决方案呢?对密码进行硬编码正在学习wrong方法!
如果您真正想要的是无密码mount
对于那个卷,也许sudo
不需要at all!那么我可以建议其他方法吗?
-
Use /etc/fstab
as mensi https://stackoverflow.com/users/871665/mensi建议。使用选项user
and noauto
让普通用户安装该卷。
-
Use Polkit
对于无密码操作:配置.policy
您的脚本文件<allow_any>yes</allow_any>
并落在/usr/share/polkit-1/actions
-
Edit /etc/sudoers
允许您的用户使用sudo
无需输入密码。正如 @Anders 所建议的,您可以将此类使用限制为特定命令,从而避免您的帐户中无限的无密码 root 权限。看这个答案 https://askubuntu.com/a/155827/42796欲了解更多详细信息/etc/sudoers
.
以上所有内容都允许无密码 root 权限,不需要您对密码进行硬编码。选择任何方法,我都可以更详细地解释它。
As for why对密码进行硬编码是一个非常糟糕的主意,这里有一些很好的链接供进一步阅读:
- 为什么编程时不应该对密码进行硬编码 http://www.security-faqs.com/why-you-shouldnt-hard-code-your-passwords-when-programming.html
- 如何保守秘密
(硬编码密码的替代方案) https://security.web.cern.ch/security/recommendations/en/password_alternatives.shtml
- 什么更安全?对凭证进行硬编码或将其存储在数据库中? https://security.stackexchange.com/questions/92465
- 使用硬编码凭证,一个危险的编程错误:CWE https://blogs.manageengine.com/it-security/passwordmanagerpro/2010/02/17/use-of-hard-coded-credentials-a-dangerous-programming-error-cwe.html
- 硬编码密码仍然是一个关键的安全缺陷 https://www.csoonline.com/article/3038302/application-development/hard-coded-passwords-remain-a-key-security-flaw.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)