NetBSD 3.0 Server

BoS

Well-Known Member
Hi Folks,

ich suche eine Lösung für folgendes Problem:

- aus einem PHP-Script soll der Server mit poweroff ausgeschalten werden

atm ist das Script soweit fertig, bis auf die Tatsache, dass die Kiste sich nicht ausschalten lässt :(

(diese Vorgehensweise wurde erforderlich, da es Nutzer ohne Kenntnisse der Materie selbst in der eigenen Familie gibt :) )

es kommt eine Fehlermeldung, das der Nutzer (in diesem Fall sinnigerweise poweroff in der Gruppe root) keine Rechte dafür hat :(

atm verstehe ich die Welt nicht mehr - wie kann ich dieses Problem lösen?


Danke im Voraus,

BoS
 
Es kann gehen wenn du den User als Sekundaergruppe in 'operator' packst oder 'Sudo' verwendest.
 
Thx für euere Antworten.

Ich habe es mit sudo gemacht - folgende FehlerAusgabe:

-----------------------snip begin--------------------------------------------------------------------------
We trust you have received the usual lecture from the local system Administrator. It usually boils down these three things:
#1) Respect the privacy of others
#2) Think before you type
#3) Whit grear power comes great responsibility

Password:

-----------------------snip end--------------------------------------------------------------------------

Befehlszeile war folgende: sudo -u poweroff poweroff

und in der Datei: /usr/pkg/etc/sudoers

poweroff ALL=(daemon) NOPASSWORD:/sbin/poweroff

----------------------------------------------------------------------------------------------------------

funzt atm leider immer noch nicht

cu,
BoS
 
Update

An der Console macht sudo -u poweroff shutdown -p now genau das was es soll, aus dem PHP-Script aber nicht. Dort wird weiterhin ein Password verlangt - ich kann im Augenblick nicht ausschließen, dass es ein PHP Problem ist.

Vielleicht hat jemand eine andere Lösung für dieses Problem.

BoS
 
BoS schrieb:
An der Console macht sudo -u poweroff shutdown -p now genau das was es soll, aus dem PHP-Script aber nicht. Dort wird weiterhin ein Password verlangt - ich kann im Augenblick nicht ausschließen, dass es ein PHP Problem ist.

Vielleicht hat jemand eine andere Lösung für dieses Problem.

BoS

Ich sehe hier in einem aelteren Skript, dass ich es damals mit super anstelle von sudo geloest hatte. Mir ist nur der Grund dafuer entfallen. Aber es gab einen ...
 
BoS schrieb:
An der Console macht sudo -u poweroff shutdown -p now genau das was es soll, aus dem PHP-Script aber nicht. Dort wird weiterhin ein Password verlangt - ich kann im Augenblick nicht ausschließen, dass es ein PHP Problem ist.

Vielleicht hat jemand eine andere Lösung für dieses Problem.

BoS

Wenn das Skript vom Webserver heraus aufgerufen wird, läuft es unter der Benutzerkennung des Servers, bei Apache ist das www.

poweroff kann auch von einem Benutzer verwendet werden, der Operator ist. Aber es ist wohl einfacher einen ACPI-Kernel zu verwenden und den Ausschaltknopf am PC zu drücken, da braucht man keine speziellen Rechte zu, außer physikalischen Zugriff.


Was auch gehen mag, ist ein SSH-Benutzer anzulegen. Also einen Benutzer, der als Loginshell einen bestimmten Systembefehl (z.B. poweroff) ausführt. Wenn dem ein Login per Schlüssel erlaubt wird, ist nichtmal ein Passwort erforderlich. Und man sollte für den Benutzer einen eigenen sshd starten, der an einen Port != 22 und ans interne IF gebunden wird.
 
BoS schrieb:
Befehlszeile war folgende: sudo -u poweroff poweroff

und in der Datei: /usr/pkg/etc/sudoers

poweroff ALL=(daemon) NOPASSWORD:/sbin/poweroff

Uha, sorry, hatte beim ersten Reply nicht aufmerksam gelesen. Also Deine sudoer Syntax ist grosser Murks. Vorweg: Ich sehe aus Deinen Angaben weder, als welcher User Du den Aufruf gestartet hast noch mit welchen Rechten Dein httpd laeuft. Ich sehe auch nicht, wie die Rechte fuer /etc/poweroff gesetzt sind, ob das ein Script oder eine binary ist (kein netbsd zur Hand) oder wie und ob bei Dir der Nutzer poweroff eingerichtet ist. Deshalb muss ich etwas nebuloes bleiben.

Die Syntax ist vereinfacht (boeses boeses EBNF ;-)) so:

$USER $AT_HOSTS=($RUNAS_USER) $COMMAND

$USER ist der, der sudo aufruft. In dem Fall also die UID unter welcher der httpd laeuft (bei mir ist das www).
$AT_HOSTS ist in Deinem Fall nicht wichtig, also ALL
$RUNAS_USER ist der Nutzer, der Dein Kommando ausfuehren soll und darf. Kann weggelassen werden (dann ist es default, also root).
Und $COMMAND ist schliesslich der auszufuehrende Befehl. Davor kann als Praefix NOPASSWD stehen.
Bedeutet (fuer mein Beispiel):

www ALL= NOPASSWD: /etc/poweroff

oder mit einem angenommenen Nutzer poweroff, welcher /etc/poweroff ausfuehren darf:

www ALL=(poweroff) NOPASSWD: /etc/poweroff

Wenn Du nun sudo aufrufst, _kannst_ Du mit -u den $RUNAS_USER angeben. Was Du oben in Deinem Beispiel gemacht hast ist, den $USER anzugeben. Deshalb Murks. Den Nutzer kannst Du dann weglassen, wenn Du den Default (root) willst.
 
echo <Passwort> | sudo shutdown -h now

...Nur, dass dein Passwort dann im PHP-Quelltext stünde.
 
Zurück
Oben