man 7 unix
Linuxの状態:
Linuxの実装では、ファイルシステムに表示されるソケットは、それらが存在するディレクトリのアクセス許可を尊重します。その所有者、グループ、およびアクセス許可は変更できます。プロセスに、ソケットが作成されたディレクトリに対する書き込みおよび検索(実行)権限がない場合、新しいソケットの作成は失敗します。ソケットオブジェクトへの接続には読み取り/書き込み権限が必要です。この動作は多くのBSDとは異なります。 -UNIXドメインソケットのアクセス許可を無視する派生システム。ポータブルプログラムは、セキュリティのためにこの機能に依存しないでください。
UNIXドメインソケットのアクセス許可を無視するシステムはどれですか?
たとえば、HP-UXはソケットファイルのアクセス許可を無視します。
ドキュメントがソケットファイルの権限について話していることに注意してください。すべての実装は、親ディレクトリのアクセス許可を尊重します。ポータブルプログラムは、パブリックディレクトリで(umask
を介して)制限付きのアクセス許可を持つソケットを作成するのではなく、プライベートディレクトリにソケットを作成する必要があります。
それを考えると、彼らが何を意味するのかわからない
connect()
には書き込み権限が必要であると記載されています。POSIXは requireconnect()
が失敗するようには見えませんが、ソケットファイルが書き込み可能でない場合は失敗しますが、明示的に許可します(connect
は失敗する可能性があります[...]指定されたソケットが書き込み可能でない場合)。その "may"は、許可を尊重しないシステムが実際に存在する可能性があることを示唆していますが、BSDから派生したものではないかと思います。