PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sudo mit Passwort sichern



semy
31.08.06, 22:31
Hallo,

ich verwende Sudo damit ich per PHP-Script Systembefehle ausführen kann.
Allerdings gibt das Probleme, da ich meinen Server noch für Unteruser vermiete.

Meine Idee wäre den Aufruf von Sudo nur durch ein bestimmtes Passwort zuzulassen.

Hier erstmal meine momentane Sudo-Datei:

#
# 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

# Cmnd alias specification

# User privilege specification

root ALL=(ALL) ALL
www-data ALL = NOPASSWD: ALL


So und hier noch ein Beispiel-PHP-Script:

<?php

// MySQL-Verbindung aufbauen
mysql_connect("localhost","root","********");
mysql_select_db("provider");

// soll die Systemzeit geupdatet werden (wenn nein, Script abbrechen)?
$r = mysql_query("SELECT value FROM settings WHERE name='update_systime';");
$row = mysql_fetch_array($r);
$do = $row['value'];
if (!$do)
{
mysql_close();
die();
}
// sonst Systemzeit updaten
else
{
$r = mysql_query("UPDATE settings SET value='0' WHERE name='update_systime';");
exec("sudo rdate time.fu-berlin.de");
}

// MySQL-Verbindung schließen
mysql_close();

?>

Das ganze funktioniert wunderbar, jedoch sollen keine anderen User solche Befehle ausführen dürfen.

Wenn das mit dem Passwort ginge, wäre mir das am liebsten. Es sollten jedoch weiterhin über PHP in Verbindung mit Sudo und Passwort Systembefehle ausführbar sein.

Ich könnte ja einfach für die ganzen anderen User über die PHP.INI die gefährlichen Funktionen sperren. Aber wie siehts dann bei Perl, CGI etc. aus? Muss ich da auch was beachten?

Oder soll ich ganz auf Sudo ******en und es gibt eine Möglichkeit anders über PHP Systembefehle auszuführen?

Ich würde mich freuen wenn mir jemand helfen kann.

Liebe Grüße
Semy!

gadget
31.08.06, 22:38
Hä? Sudo macht doch gerade dann Sinn, wenn Du es nur bestimmten Usern oder Groups erlaubst. Das kannst Du in Deiner sudoers definieren.


man sudo

Gruß,
gadget

semy
31.08.06, 22:45
ja aber typerschweise arbeitet apache ja mit default www-data. aber andere user können ja auch php-scripte erstellen und diese laufen ja dann auch in der selben gruppe oder nicht?!

vielleicht habe ich da auch was falsch verstanden...

könnte mir das jemand evtl. mal versuchen zu erklären?

Ich würde mich au jeden Fall freuen.

Gruß semy

zyrusthc
31.08.06, 23:16
Oder soll ich ganz auf Sudo ******en und es gibt eine Möglichkeit anders über PHP Systembefehle auszuführen?
Schreibe den Befehl der ausgeführt werden soll in ein Script: /pfad/zum/script

#!/bin/sh
sudo rdate time.fu-berlin.de
Datei ausführbar machen.... auf keinen Fall für andere User schreibbar.

In der /etc/sudoers:

www-data ALL=NOPASSWD: /pfad/zum/script

Mit php dann so aufrufen:

$output = shell_exec("/pfad/zum/script");
echo $output;

Dann kann der Benutzer www-data den Befehl aus dem Script ohne Passwort ausführen. Und zwar nur dieses Script.

Hoffe es hilft...

Gruss Oli