Nach meiner Erfahrung kann ein nicht privilegierter Benutzer nicht auf einen Unix-Socket zugreifen, den er nicht besitzt, ohne dass das x-Bit gesetzt ist. Was macht dieses Bit genau? Vielen Dank
linux
permissions
unix-sockets
Владимир Тюхтин
quelle
quelle
0644
bedeutet nur Leseberechtigung für die Gruppenmitglieder und "andere", sodass nur der Eigentümer auf den Socket zugreifen kann (da die Schreibberechtigung ihn steuert).0666
oder nur0222
weil keine Leseberechtigung erforderlich ist, würde dies ausreichen, um allen Zugriff zu gewähren. Aber anstatt jedem Berechtigungen zu erteilen, würde ich versuchen, Gruppen zu verwenden, um den Zugriff zu ermöglichen.Antworten:
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:Anscheinend verhalten sich einige andere Systeme anders:
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:(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?quelle