Unix 权限

Unix 权限

我目前正在尝试通过允许在过去十秒内收到我的邮件的服务器执行来增强我的邮件系统身份查找。虽然所需的 iptables 规则运行完美,但我在安装时遇到了问题授权包裹。

从命令行调用in.authd会产生所需的结果:

# in.authd -t60 --xerror --os -E 993,53558
993 , 53558 : USERID : OTHER :[U2FsdGVkX19EFvZ6dxXLJJl2oKKW/PVOKmX5ER0WWWs=]

然而,当通过网络套接字尝试相同的操作时,我会遇到长达 10 秒的延迟,然后出现错误:

# time echo 993, 53558 | nc localhost 113
993 , 53558 : ERROR :NO-USER

real    0m5.036s
user    0m0.003s
sys 0m0.007s

这种延迟让我相信存在权限问题导致超时。查看 authd 的源代码,如果读取/proc/net/tcp*失败或对这些文件的查找重复失败,则可能会发生这种情况。但:

Unix 权限

识别用户

# finger ident
Login: ident                    Name: 
Directory: /                            Shell: /sbin/nologin
Never logged in.
No mail.
No Plan.

团体会员资格

# id ident
uid=98(ident) gid=98(ident) groups=98(ident)

鉴于此,in.authd以 ident 用户身份调用将按预期工作:

# sudo -u ident in.authd -t60 --xerror --os -E 993,53558
993 , 53558 : USERID : OTHER :[U2FsdGVkX1/CxIcvTsEmTnhLSGjnwZ/X9TCwQ4ovZXk=]

文件权限

# ls -alZ /proc/net/tcp*
-r--r--r--. root root system_u:object_r:proc_net_t:s0  /proc/net/tcp
-r--r--r--. root root system_u:object_r:proc_net_t:s0  /proc/net/tcp6

SELinux

这里没有什么可疑的:

# grep ident /var/log/audit/audit.log | audit2why
Nothing to do
# grep auth /var/log/audit/audit.log | audit2why
Nothing to do

我有点没主意了。当我允许in.authd以 root 身份启动时也会发生这种情况。journalctl并没有太大帮助,因为它只是记录有问题的单元进入失败状态:

# journalctl -ln5 --unit=auth@*
systemd[1]: Started Authd Ident Protocol Requests Server ([::1]:55841).
systemd[1]: Starting Authd Ident Protocol Requests Server ([::1]:55841)...
systemd[1]: auth@7-::1:113-::1:55841.service: main process exited, code=exited, status=1/FAILURE
systemd[1]: Unit auth@7-::1:113-::1:55841.service entered failed state.
systemd[1]: auth@7-::1:113-::1:55841.service failed.

进入in.authd“调试”模式(如果你可以这样称呼它)不会透露任何其他信息。我缺乏通过强制执行用户名的能力,--username因为我更关心延迟而不是输出的正确性。诚然,在虚拟用户大量托管的时代,返回的值一开始就很难正确,但我真的很喜欢在这里返回一些有意义的东西的想法。任何帮助表示赞赏。

答案1

愿其他人不要陷入同样的​​陷阱。其实一切都很好。来自 authd 文档的测试部分:

执行“ telnet localhost auth”并键入两个端口,并用逗号分隔。所选的两个端口必须具有 localhost 或 127.0.0.1 的外部地址以及匹配的本地地址。如果不这样做,将返回 NO-USER 错误。

相关内容