我使用 Python 的设置工具将某些脚本安装为 console_scripts。此脚本以 www-data 用户身份运行。但是该脚本还需要访问只能由 root 用户读取的 SSL 证书。
我认为解决此问题的可能解决方案之一是在生成的 console_script 上设置 SUID。我可以使用 Makefile 手动执行此操作,但我一直在寻找更多已由 Python 生态系统中的任何打包工具提供的开箱即用的解决方案。
这可能吗?或者使用 Makefile 设置 SUID 是我的最佳选择?
最佳答案
更好的选择可能是自己编写包装器脚本,在打包前设置适当的 SUID 和 GUID 位,然后通过 scripts
分发它。设置而不是 console_scripts
入口点。这为您省去了必须依赖 make
的问题。以一些额外的项目维护为代价。
另一种选择是有一个运行 os.chmod()
的安装后 Hook 或 os.fchmod()
在已安装的控制台脚本上,但请记住,这不适用于 .egg 二进制发行版(或可能是 Python 3 .wheel。)This SO answer has details on that.请注意,这意味着安装程序必须以 root 用户身份运行,无论软件包实际安装到何处(包括本地环境)。
关于python - 是否可以设置由 Python setuptools 创建的 console_script 的 SUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23383216/