Python如何在不使用超级用户权限的情况下创建pycache文件夹? [重复]

问题描述 投票:0回答:2

我的Python脚本以sudo权限运行,因为它需要监听端口。但是,这意味着程序运行时创建的

.pyc
文件和
__pycache__
文件也由 root 创建和拥有,需要 sudo 权限才能删除它们。

如何避免带来不便?

python linux filesystems
2个回答
0
投票

仅以 root 身份运行脚本以便可以侦听特权端口并不是一个好习惯(除非脚本确实需要 root 权限)。

如果您的脚本不需要 root,那么我建议您在设置特权端口套接字后使用

setuid/setgid
来删除特权;

这个问题已经在这里详细回答了;

在 Python 中删除 root 权限

编辑:OP提到创建的

pyc
文件仍然具有root权限。您可以使用 suid 位 (
chmod u+s script.py
) 然后使用
setuid(0)
在运行时获得 root 权限,确保文件所有权不是 root。仅为文件所有者设置 suid 位也意味着其他用户不能滥用 suid 位。


0
投票

一个潜在的策略是首先以普通用户身份运行

compileall
,以便 pyc 文件已经存在并且 root 不必创建它们。

python -m compileall

文档位于此处

© www.soinside.com 2019 - 2024. All rights reserved.