So führen Sie ein PHP-Skript (über einen Webserver) als unterschiedlichen Benutzer unter Mac OS X aus

921
Michael

Ich versuche, eine ausführbare Datei von einem PHP-Skript aus aufzurufen, das als ein anderer Benutzer (NICHT root) ausgeführt werden muss, als der Webserver normalerweise als ausgeführt wird. Ich dachte, es sollte ausreichen, einfach das setuid-Bit für die betreffende ausführbare Datei zu setzen, da es bereits dem Benutzer gehört, unter dem es ausgeführt werden muss. Wenn ich das tue, bekomme ich jedoch diesen Fehler:

The application with bundle ID (null) is running setugid(), which is not allowed 

Anscheinend hat Mac OS X anscheinend die Möglichkeit zum Ausführen von Setuid-Programmen gebrochen, sofern Sie nicht als Root ausgeführt werden. Ich möchte auf keinen Fall, dass der Webserver als Root oder der andere Benutzer ausgeführt wird!

Es hat den Anschein, dass Apple einige spezielle Reifen hat, durch die Sie springen müssen, um das Eintreten eines solchen Ereignisses zuzulassen. Problem ist, wenn ich es richtig verstehe, fordert diese Methode den Benutzer zur Eingabe eines Kennworts oder etwas auf. Dies ist offensichtlich nicht akzeptabel, wenn ein Skript von einem Webserver ausgeführt wird! Ein weiteres mögliches Problem ist, dass ich die ausführbare Datei nicht ändern kann, um eine Art Authentifizierungsaufruf einzuführen.

2
Warum muss _need_ als anderer Benutzer ausgeführt werden? terdon vor 11 Jahren 0
Die ausführbare Datei muss eine Verbindung zum Windows-Server herstellen, um auf ein Gerät (die iSight) zugreifen zu können. sonst findet es keine geräte. Anscheinend können Sie mit den neuesten Versionen von OS X nicht einmal auf das Gerät zugreifen, es sei denn, jemand ist angemeldet. Dieser Benutzer ist der Benutzer, unter dem das Skript ausgeführt werden muss. Michael vor 11 Jahren 0
Genauer gesagt, der Fehler, den ich bekomme, wenn die ausführbare Datei von niemandem ausgeführt wird, lautet "_RegisterApplication (), FAILED TO, um die Standardverbindung zum WindowServer herzustellen, _CGSDefaultConnection () ist NULL." Danach kann das Gerät nicht gefunden werden. Michael vor 11 Jahren 0

0 Antworten auf die Frage