Nichts, wie ich sehen kann.
Der Linux - man - Seite Unix (7) sagt , dass die Berechtigungen des Verzeichnisses eine Buchse enthält , gelten in der Regel (dh Sie müssen +x
auf /foo
eine Verbindung herstellen /foo/sock
, und +w
auf /foo
erstellen /foo/sock
) , und dass Schreibberechtigung Kontrollen an die Steckdose anschließen selbst:
Unter Linux erfordert die Verbindung zu einem Stream-Socket-Objekt eine Schreibberechtigung für diesen Socket. Das Senden eines Datagramms an einen Datagramm-Socket erfordert ebenfalls eine Schreibberechtigung für diesen Socket.
Anscheinend verhalten sich einige andere Systeme anders:
POSIX gibt keine Aussage über die Auswirkung der Berechtigungen auf eine Socket-Datei ab, und auf einigen Systemen (z. B. älteren BSDs) werden die Socket-Berechtigungen ignoriert. Tragbare Programme sollten sich aus Sicherheitsgründen nicht auf diese Funktion verlassen.
unix(4)
on FreeBSD beschreibt ähnliche Anforderungen. In der Linux-Manpage wurde nicht angegeben, ob der Socket-Zugriff auf einigen Systemen auch die Verzeichnisberechtigungen ignoriert .
Das Entfernen des x
Bits aus dem Socket scheint einen anderen Fehler beim Ausführen des Sockets zu verursachen, aber das ist kein großer praktischer Unterschied:
$ 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
(Ich habe auch getestet, dass tatsächlich nur das w
Bit für den Zugriff auf den Socket unter Debians Linux 4.9.0 von Bedeutung zu sein scheint.)
Vielleicht hatten die Sockets, die Sie meinten, alle Berechtigungsbits vom Benutzer entfernt, oder Sie meinten das x
Bit im Verzeichnis?