我有一些使用Python的setuptools作为console_scripts安装的脚本。此脚本作为www-data用户运行。但该脚本还需要访问只能由root用户读取的SSL证书。
我看到解决此问题的可能解决方案之一是在生成的console_script上设置SUID。我可以使用Makefile手动完成,但我正在寻找更多的已经由Python生态系统中的任何打包工具提供的开箱即用的解决方案。
这有可能吗?或者使用Makefile设置SUID是我最好的选择吗?
答案 0 :(得分:1)
更好的选择可能是自己编写包装器脚本,在打包之前设置相应的SUID和GUID位,然后通过scripts
设置而不是console_scripts
入口点进行分发。这样可以省去不得不依赖make
而牺牲额外的项目维护费用的问题。
另一种选择是在安装的控制台脚本上运行os.chmod()
或os.fchmod()
的安装后挂钩,但请记住,这不适用于.egg二进制发行版(或可能Python 3 .wheel。)This SO answer has details on that.请注意,这意味着安装程序必须以root身份运行,无论程序包实际安装到何处(包括本地环境)。