在Python中删除根权限

我想让一个Python程序开始在端口80上侦听,但是此后无需root权限即可执行。有没有办法删除根或没有它获得端口80?

回答:

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

这是在Python中删除

root特权的可能解决方案:在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中删除根权限 的全部内容, 来源链接: utcz.com/qa/404284.html

回到顶部