apache + php +rechte

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
mchacker
Beiträge: 27
Registriert: 31.07.2003 13:57:26
Wohnort: Monheim
Kontaktdaten:

apache + php +rechte

Beitrag von mchacker » 30.09.2003 15:43:02

hi,

ich wollte mir ein webinterface in php schreiben für bouncer, gameserver etc neustarten zu können ... aber da jeder bouncer als anderer user läuft kann ich das nicht machen weil der apache keine rechte dafür hat.. wie kann ich das am besten machen ?
das ich als user : www-data genug rechte hab um andere prozesse zu killen und neuzustarten.. am idealsten wären natürlich root rechte...

thx im vorraus..

mfg

mc

svenputze

Eine Möglichkeit...

Beitrag von svenputze » 30.09.2003 16:07:43

Schreib ein Script in /usr/local/sbin (shellscript, Perl, whatever), dass die gewünschten Veränderungen vornimmt.
Dieses Script läuft mit ROOT-Rechten, darf es also alles.

Editiere die Datei /etc/sudoers, am besten mit visudo.
Trage hier z.B. ein:
%www-data localhost=/usr/local/sbin/DeinSkriptName
(siehe auch http://www.fibel.org/linux/node243.html)
Das heißt, die Mitglieder der Gruppe www-data (sollte der Apache ja sein) dürfen per Kommando sudo (führe einen Befehl mit Root-Rechten aus) den Befehl /usr/local/sbin/DeinScriptName ausführen.

In dem PHP-Script kommt dann entsprechend eine Zeile hinzu:

Code: Alles auswählen

exec ("sudo /usr/local/sbin/DeinSkriptName", $output, $ret);
(siehe auch http://www.php.net)
$output ist ein Array, das die Ausgabe Deines Skripts enthält, $ret enthält den Rückgabe-Code - i.d.R 0 für alles OK.


So kann der Apache Kommandos ausführen, die Root-Rechte benötogen, ohne das Risiko einzugehen, dass er alles im System darf.

Gruss
Sven

mchacker
Beiträge: 27
Registriert: 31.07.2003 13:57:26
Wohnort: Monheim
Kontaktdaten:

Beitrag von mchacker » 30.09.2003 19:33:09

hi
thx erstma.. an sowas wäre ich bestimmt erst in 2 jahren gekommen ;))
wenn ich in der console bin und es ausführen will kommt das hier :

Code: Alles auswählen

darula:/usr/local/sbin$ sudo /usr/local/sbin/bncupgrade.sh

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these two things:

        #1) Respect the privacy of others.
        #2) Think before you type.

Password:
welches pw will der von mir ????

mfg

mc

floschi
Beiträge: 791
Registriert: 17.09.2002 14:36:18
Wohnort: München
Kontaktdaten:

Beitrag von floschi » 30.09.2003 21:36:02

Du kannst auch den Confixx-Weg gehen, d.h. du schreibst alle Veränderungen in eine DB oder ein Textfile und darüber läuft alle paar Minuten per cronjob (mit Rootrechten) ein Skript, dass ggf. Weiteres veranlasst ;)

svenputze

password...

Beitrag von svenputze » 30.09.2003 21:46:24

der will bestimmt das Passwort von dem aufrufenden Benutzer.

In diesem Falle wäre es wohl sinnvoll, den Aufruf ohne Passwort zu ermöglichen. Das ist immer noch besser, als das PW in PHP-Scripts zu hinterlegen.

/etc/sudoers

Code: Alles auswählen

# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

# Host alias specification

# User alias specification

User_Alias      WWW = www-data

# Cmnd alias specification

Cmnd_Alias      BNDUPGRADE = /usr/local/sbin/bncupgrade.sh

# User privilege specification
root    ALL=(ALL) ALL

WWW  ALL=NOPASSWD: BNDUPGRADE

ist das gleiche, was Du schon hast. Jetzt sind nur die Aliase hinzugekommen und die Einstellung, dass kein Passwort verlangt wird.

Gruss
Sven

Antworten