UNIX-domain-sockets nicht zugänglich für Benutzer?
Bin ich mit einem client/server-Anwendung auf Red Hat Enterprise mit der ZMQ für message-passing. Das IPC-socket zum verknüpfen eines client mit dem server ist implementiert mit einem Unix-domain-socket.
Wenn Benutzer A startet den server-Prozess, wie es scheint, nur clients gestartet, indem der Benutzer Eine Verbindung herstellen können und die Kommunikation über diesen socket. Unser Projekt erfordert, dass die clients in der Lage sein, die von verschiedenen Benutzern, so ist dies ein wichtiger Knackpunkt.
Dem sockel befindet sich unter /tmp/ipc_assoc mit Standard 755 Berechtigungen. chmod
777 nicht das problem zu beheben. chown
userB erlaubt user B den Zugriff auf die Steckdose, aber user A verliert dann den Zugriff. Nicht einmal root-Zugriff auf die Steckdose. Es gibt keine ACL oder SeLinux im Einsatz auf der Maschine.
Ist dies ein typisches Verhalten für die Unix-domain-sockets? Hat jemand herausgefunden, wie man es umgehen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
chmod(en.sun_path, 0777); nach dem hören der Steckdose.
Vorübergehend ändern der umask:
Natürlich, das ist eine schlechte Idee, wenn Sie die Verwendung von threads.
Mit etwas Hilfe von der ZMQ mailing-Liste, die ich gemacht habe, eine Arbeit um. Es ist hässlich, scheint aber konsequent zu arbeiten.
Hatte ich ein Unterverzeichnis unter /tmp und
chmod 777
es. Der server erstellt nun die Buchse in diesen neuen Ordner. Es auch programmgesteuertchmod 777
den sockel. Nun, solange der server als root ausgeführt werden, kann jeder Benutzer die Ausführung einer client-und reden an den server.Ich weiß nicht, warum UNIX-domain-socket auf diese Weise Verhalten, aber es ist sicher nervig.
Haben Sie versucht, indem UserA und UserB in einem gemeinsamen user group?
ls -l
auf den sockel, es druckt "srwxr-xr-x ... ipc_assoc"