UNIXソケットでx(実行)アクセス許可は何をしますか?


11

私の経験では、非特権ユーザーはxビットが設定されていないと所有していないUNIXソケットにアクセスできません。このビットは正確に何をしますか?ありがとう


それはソケットまたはディレクトリに対する許可ですか?
Rui F Ribeiro

ソケット上。ディレクトリにはモード0755があるため、ユーザーはコンテンツを監視できます。ソケットにはモード0644があるため、論理的にユーザー(ソケットを所有していないため「その他」に属し、グループ所有ソケットに属している)は、ソケットに書き込むことができるはずです。しかし、モード0777がソケットに適用されていない限り、ユーザーは許可拒否メッセージを受け取ります。
ВладимирТюхтин

2
@ВладимирТюхтин 0644は、グループメンバーと「その他」の読み取り権限のみを意味するため、所有者だけがソケットにアクセスできます(書き込み権限がソケットを制御するため)。0666、または0222読み取り権限が必要ないのと同じように、すべてのユーザーにアクセス権を与えるのに十分です。ただし、すべてのユーザーにアクセス許可を与えるのではなく、グループを使用してアクセスを許可することを検討します。
ilkkachu 2018

回答:


9

私が見ることができるように、何もありません。

、LinuxのmanページUNIX(7)は、ソケットを含むディレクトリのパーミッションが(つまりは、あなたが必要と正常に適用されることを述べている+x/fooに接続する/foo/sockと、+w/foo作成する/foo/sock)と、その書き込みソケット自体に接続するアクセス許可のコントロール:

Linuxでは、ストリームソケットオブジェクトに接続するには、そのソケットに対する書き込み権限が必要です。同様に、データグラムをデータグラムソケットに送信するには、そのソケットに対する書き込み許可が必要です。

どうやら他のいくつかのシステムは異なる動作をします:

POSIXは、ソケットファイルに対するアクセス許可の影響については何も述べていません。一部のシステム(たとえば、古いBSD)では、ソケットのアクセス許可は無視されます。ポータブルプログラムは、セキュリティのためにこの機能に依存すべきではありません。

unix(4)FreeBSDでは、同様の要件について説明しています。Linuxのmanページには、一部のシステムでのソケットアクセスがディレクトリのアクセス権も無視するかどうかが記載されていませんでした。

xソケットからビットを削除すると、ソケットを実行しようとしたときに別のエラーが発生するように見えますが、実際にはそれほど違いはありません。

$ ls -l test.sock
srwxr-xr-x 1 user user 0 Jun 28 16:24 test.sock=
$ nc -U ./test.sock
Hello
$ ./test.sock
bash: ./test.sock: No such device or address
$ chmod a-x test.sock
$ nc -U ./test.sock
Hello
$ ./test.sock
bash: ./test.sock: Permission denied

(私はまたw、DebianのLinux 4.9.0でソケットにアクセスするために実際問題となるのはほんの少しだけであることをテストしました。)

おそらく、あなたが意図したソケットは、すべての許可ビットがユーザーから削除されているのxでしょうか、それともディレクトリのビットを意味しているのでしょうか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.