gpt4 book ai didi

python - 在 Python 中删除 Root 权限

转载 作者:IT老高 更新时间:2023-10-28 12:36:08 24 4
gpt4 key购买 nike

我想让一个 Python 程序开始监听端口 80,但之后在没有 root 权限的情况下执行。有没有办法删除 root 或在没有它的情况下获取端口 80?

最佳答案

如果没有 root 权限,您将无法在端口 80 上打开服务器,这是对操作系统级别的限制。因此,唯一的解决方案是在打开端口后放弃 root 权限。

以下是在 Python 中删除 root 权限的可能解决方案:Dropping privileges in Python .这通常是一个很好的解决方案,但您还必须将 os.setgroups([]) 添加到函数中以确保不保留 root 用户的组成员身份。

我稍微复制和清理了代码,并删除了日志记录和异常处理程序,因此由您来正确处理 OSError (当不允许该进程时,它将被抛出切换其有效的 UID 或 GID):

import os, pwd, grp

def drop_privileges(uid_name='nobody', gid_name='nogroup'):
if os.getuid() != 0:
# We're not root so, like, whatever dude
return

# Get the uid/gid from the name
running_uid = pwd.getpwnam(uid_name).pw_uid
running_gid = grp.getgrnam(gid_name).gr_gid

# Remove group privileges
os.setgroups([])

# Try setting the new uid/gid
os.setgid(running_gid)
os.setuid(running_uid)

# Ensure a very conservative umask
old_umask = os.umask(077)

关于python - 在 Python 中删除 Root 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2699907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com