linux Python如何创建pycache文件夹而不使用超级用户的权限?

kzmpq1sx  于 2023-06-21  发布在  Linux
关注(0)|答案(2)|浏览(129)

我需要监听linux的端口来运行我的服务。所以,我总是运行python程序以sudo权限启动,这使得程序创建的文件,如pycahee和.pyc文件也获得了超级用户的权限,文件和目录只能在sudo模式下删除。那太不方便了。那么,有没有一种方法可以指定python来创建普通的文件夹和文件?

yiytaume

yiytaume1#

以root身份运行脚本,只是为了监听特权端口,这不是一个好的做法(除非脚本确实需要root)。
如果你的脚本不需要root,那么我建议在你设置了特权端口套接字之后,使用setuid/setgid来删除特权;
这一点在这里已经详细回答过了;
Dropping Root Permissions In Python
编辑:OP提到创建的pyc文件仍然具有root权限。您可以使用suid位(chmod u+s script.py),然后使用setuid(0)在运行时获得root权限,确保文件所有权不是root。仅为文件所有者设置suid位也意味着其他用户不能滥用suid位。

l0oc07j2

l0oc07j22#

一个可能的策略是首先以普通用户的身份运行compileall,这样pyc文件就已经存在,root用户就不必创建它们。

python -m compileall

文档是here

相关问题