python删除权限,未更改的环境变量(主文件夹)

时间:2014-04-28 18:55:32

标签: python environment-variables sudo privileges

当我以root身份执行以下代码时

import os
try:
  if os.getuid() == 0:
    import pwd, grp
    os.setgroups([])
    os.setgid(grp.getgrnam('my_user').gr_gid)
    os.setuid(pwd.getpwnam('my_group').pw_uid)
    os.umask(077)
    print 'dropped privileges successfully'
  else:
    print 'no need to drop privileges'
except:
  print 'unable to drop privileges'

print os.system('ls -lsa ~/')

然后最后一个语句打印ls: cannot open directory /root/: Permission denied

原因很清楚,但问题是:我需要做什么才能~扩展为/home/my_user

1 个答案:

答案 0 :(得分:0)

在这种情况下,我需要root权限才能绑定到特权端口,结果是以root身份启动服务器的错误方法。

使用authbind证明是正确的解决方案,因此sudo python server.py最终成为authbind python server.py

我已经读过authbind似乎有一些ipv6问题,可以在Is there a way for non-root processes to bind to “privileged” ports (<1024) on Linux?找到更多有用的信息