我的Python脚本以sudo权限运行,因为它需要监听端口。但是,这意味着程序运行时创建的
.pyc
文件和 __pycache__
文件也由 root 创建和拥有,需要 sudo 权限才能删除它们。
如何避免带来不便?
仅以 root 身份运行脚本以便可以侦听特权端口并不是一个好习惯(除非脚本确实需要 root 权限)。
如果您的脚本不需要 root,那么我建议您在设置特权端口套接字后使用
setuid/setgid
来删除特权;
这个问题已经在这里详细回答了;
编辑:OP提到创建的
pyc
文件仍然具有root权限。您可以使用 suid 位 (chmod u+s script.py
) 然后使用 setuid(0)
在运行时获得 root 权限,确保文件所有权不是 root。仅为文件所有者设置 suid 位也意味着其他用户不能滥用 suid 位。