python中的smtp代理需要根身份验证才能运行



我在Linux 上有以下简单的python代码

import smtpd
proxy = smtpd.PureProxy(('0.0.0.0',25), None)

当作为sudo运行时运行良好,但当作为标准用户运行时会出现socket.error: [Errno 13] Permission denied错误。我的问题是:如何让这个代码段与普通用户一起运行。

谢谢,

Alex

如果您想绑定到端口25(或1024以下的任何端口),您必须是root。但是,一旦套接字绑定完成,就可以更改为其他用户。

>>> import os
>>> import smtpd
>>> import pwd
>>> uid = pwd.getpwnam('nobody').pw_uid
>>> gid = pwd.getpwnam('nobody').pw_gid
>>> proxy = smtpd.PureProxy(('0.0.0.0',25), None)
>>> os.setgid(gid)
>>> os.setuid(uid)
>>> os.system('whoami')
nobody
0
>>> 

当然,这是一种单向操作。一旦您更改为其他用户,就不能再更改用户。

相关内容

  • 没有找到相关文章

最新更新