| 

.NET C# Java Javascript Exception

1
hallo

ich betreibe einen Debian server auf dem eine php seite läuft , jetzt würde ich gerne von dieser php ( settings ) seite auf config files ( Shell ) zugreifen und diese Editieren oder zb. ein passwort in einen plazhalter einsetzen.

ich hoffe ihr versteht mich :)

danke für eure infos oder links
News:
31.05.2013
snuffy 231 1 5
Das klingt für mich ein bisschen so, als würdest du Fragen wie man die Büchse der Pandora aufmachen kann...
Welche configs willst du via php ändern und was genau bezweckst du damit?
phg 01.06.2013
4 Antworten
0
ich habe per hand editierte config files in debian, passworte und benutzernamen, ich will mir nur eine php seite bauen in der ich die settings eingeben kann und sie werden dann in das entsprechende config file geschrieben oder editiert.

ich stelle mir da einfach einen platzhalter im config file vor oder irgend wie so

ich weis leider nicht wo ich ansetzen soll

danke
01.06.2013
snuffy 231 1 5
Kannst du noch etwas mehr ins Detail gehen? Benutzer und Passwörter können ja Zugangsdaten für eine Webseite (z.B. htpasswd-Datei) oder System-Benutzer (/etc/passwd ...) oder die Accounts für einen Mailserver etc. sein.
Abhängig davon braucht dein php-Script unterschiedliche Schreibrechte um die Dateien zu editieren und auch mehr oder weniger hinreichenden Schutz gegen Angreifer.
Eine User-Story würde schon reichen, so ala "Ich möchte in einer Webseite Benutzernamen und Passwort eintragen und dann wird ein System-Benuzter mit Mailaccount auf dem Server erzeugt" oder so...
phg 01.06.2013
0
ok ein beispiel:

ich habe diese config file erzeugt

cat << EOF > /etc/xdg/lxsession/LXDE/autostart

> lxpanel --profile LXDE
> pcmanfm --desktop --profile LXDE
> xset s off
> xset -dpms
> xset s noblank
> midori -e Fullscreen -a http://www.test.at/
> EOF

das file autostart mochte ich jetzt über php , schöne eingabe maske editieren. in diesem fall würde ich gerne die url ändern.

oder gibt es eine möglichkeit alle config scripte in eines zusammen zu fassen, spich ich hab in den original files $irgendwas und das wird aus einem zentralen file ausgelesen?

sorry kann mich schlecht ausdrücken

danke
01.06.2013
snuffy 231 1 5
0
Ok jetzt kann ich (in etwa) folgen und dir einen Ansatz geben.

Warnung: Das ist ein Ansatz! Je nach dem von wo aus die Webseite zum ändern der Config erreichbar ist und welche configs geändert werden, muss der User-Input viel besser validiert werden! Zumindest striktes filtern nach erlaubten Zeichen ist Pflicht, noch besser ist eine Whitelist für erlaubte Parameter.

0. (optional) Default config File anlegen (default.php)
<?php
$url = 'http://www.example.com/default';
// ...
?>


1. Variablen via Webinterface (mit php) in Datei schreiben, in etwa so
<?php
$cfg = '<?php
$url = "'. $sauber_validierte_url .'";
?>';

$f = fopen('config.php', 'w');
fputs($f, $cfg);
fclose($f);
?>

2. Template für die Config-Datei anlegen
<?php
$template = "lxpanel --profile LXDE
pcmanfm --desktop --profile LXDE
xset s off
xset -dpms
xset s noblank
midori -e Fullscreen -a $url";
?>

3. Via cronjob ein weiteres PHP-Script ausführen (mit passenden Rechten, jede Minute oder so)
<?php
if(file_exists('config.php')) {
require_once('default.php'); // nur falls Option 0 verwendet wird.
require_once('config.php');
require_once('template.php');
$f = fopen('/etc/xdg/lxsession/LXDE/autostart', 'w');
fputs($f, $template);
fclose($f);
unlink('config.php');
}
?>

Anmerkungen:

  • Statt der Ausgabe der Parameter über die config.php kann man das auch über eine SQL-Datenbank machen.
  • Ggf. muss der Cronjob nach Änderungen an der config noch den Daemon darauf hinweisen (/etc/init.d/daemon restart|reload)
  • Ich würde so etwas nie auf einem Root-Server machen, egal für wie sicher ich den Zugriff auf das Webinterface halte!
01.06.2013
phg 1,6k 3
0
wow, schon mal super

DANKE

besteht auch eine möglichkeit ein haupt config.conf file zu haben das ich einfach in alle config files include und mit variablen arbeite ? oder geht das in einem shell file nicht?

ich habe ca 10 files die ich jedes mal bearbeiten muss, da wäre ja eines viel leichter und zentraler zu bearbeiten.

lg
01.06.2013
snuffy 231 1 5
Im Prinzip geht das schon, aber für mehrere Config-Dateien würde ich eine Datenbank verwenden statt einer Datei. Dann kannst du für jeden Config-Eintrag ein Flag setzten, das anzeigt ob es schon in die Config-Datei geschrieben wurde oder nicht. Der Cronjob prüft dann auf das Flag und setzt es nach dem Schreiben in die config-Datei zurück.
Der DB-Ansatz hat den Vorteil, dass bei einer Änderung an einer Datei nicht alle configs neu geschrieben werden müssen.
Btw. Verwende doch bitte (nach Möglichkeit) den Link "Kommentieren" statt jedes mal eine neue Antwort zu schreiben ;)
phg 01.06.2013

Stelle deine Php-Frage jetzt!