Unix権限

Unix権限

私は現在、過去10秒以内に自分のメールを受信したサーバーにタスクを実行させることで、自分のメールシステムを改善しようとしています。アイデンティティ探す。必須のiptablesルールは完全に機能しますが、インストールに問題があります。承認するパック。

コマンドラインから呼び出すと、in.authd目的の結果が生成されます。

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

ただし、Webソケットを介して同じ操作を試みると、最大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.authdidentユーザーとして呼び出すと期待どおりに機能します。

# 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ルートとして起動を許可しても、この現象が発生します。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、2つのポートをカンマで区切って入力します。選択した2つのポートには、localhostまたは127.0.0.1の外部アドレスと一致するローカルアドレスが必要です。それ以外の場合、NO-USER エラーが返されます。

おすすめ記事