我在 Linux 和 OS X 上使用 Python,我正在想一个好的理由不是将我的 Python site-packages 目录的权限修改为 777。这似乎比每次我想进行最细微的修改时都要执行 sudo 操作要好。还是我疯了?请注意,这主要针对我的开发机器,而不是任何类型的生产服务器。
免责声明:是的,我知道这些注意事项。使用包管理器提供的东西是不好的。在大多数情况下,使用虚拟环境比修改全局 Python 安装pip install
更好。easy_install
答案1
如果那是你的机器,那么你不妨做任何适合你的事情。我保留权限的主要原因是,这意味着我不太可能意外破坏某些东西。
这实际上取决于你想承担何种程度的责任,如果这是你自己的机器,并且你很高兴你不会运行恶意软件并且不会意外破坏任何东西,那么没有理由不这样做。
我唯一担心的是,如果我正在开发一个包并且想要在现实生活中测试它及其部署,我将无法做到这一点,因为一切都是可写的。
我确实知道一些安全专家会不同意,但最终安全性应该与可用性相平衡。在一次谈话中,一位安全人员坚持认为应该改变操作系统,以不允许用户做某些事情。幸运的是,这时有人插话说:“对不起,戴夫,我不能让你这么做”……
答案2
这其实不是一个好主意。777 意味着任何用户都可以编写模块,包括被受感染的 webapp 脚本控制的 Web 服务器用户。如果该用户可以将 py 或 pyc 写入 site-packages,然后由其他用户(例如 root)导入,则您的低权限入侵将升级为严重的机器级入侵。如果您确信您的机器不会受到任何攻击,那么这是可以接受的,很好……但如果是这样,那么您还不如真的以 root 身份运行一切!
更好的办法:如果您想要只有您的用户可以访问并且可以更新的模块,而无需 ,sudo
请添加用户特定的模块路径。您可以使用PYTHONPATH
或 通过修改 来执行此操作sys.path
,但从 Python 2.6 开始,这不再是必需的,因为默认情况下会有一个~/.local/lib/python2.6/site-packages
。请参阅PEP 370了解详情。