|
|
Server schalten mit Scripten |
Durch Aufruf der Scripte wird die Funktion eines Servers geschaltet oder
geändert.
Diese Scripte werden durch Aufruf im Brouser ausgeführt.
Im Beispiel unten wollen wird die Funktionen des Samba-Servers zur Laufzeit ändern.
Entwicklung des Scripts
Das Script open wird zunächst am Server entwickelt.
|
#!/bin/sh |
Das Script close
|
#!/bin/sh |
Wir haben im Verzeichnis /etc/samba zwei Konfigurationsdateien
für den Samba-Server
smb.open
: Öffnet das Share Allerlei zum Lesen und Schreiben für jeden User
smb.close
: User haben im Share Allerlei nur die Leserechte
Der Befehl
cp /etc/samba/smb.open /etc/samba/smb.conf
kopiert smb.open auf die Datei smb.conf, also smb.conf
ist nun smb.open mit den geöffnetem Share /allerlei
Durch den Befehl
/etc/init.d/smb restart
startet Samba erneut. Dabei wird die neue Konfigurationsdatei smb.conf
eingelesen und /allerlei ist nun offen.
Er derartiges Script wird als User root entwickelt und ausgiebig getestet.
Aufruf des Scripts am Brouser eines Clients
Das Script wird zunächst in das cgi-bin Verzeichnis des
Webservers kopiert.
Bei xampp ist dies /opt/lampp/cgi-bin
Bei apache ist das Verzeichnis /srv/www/cgi-bin
Hier wird ein Unterverzeichnis schalten angelegt für derartige Scripten
Dann werden zunächst alle relevanten Befehle auskommentiert und der Befehl whoami
eingefügt:
|
#!/bin/sh |
Aufruf am Client des Brousers mit der URL
http://linux/cgi-bin/schalten/open
linux ist dabei der Name des Servers und open der
Name das Scripts.
Der Befehl whoami ( Wer bin ich ) gibt den Namen des Users
aus, unter dem das Script nun läuft.
Bei Xampp ist das nobody, bei apache wwwrun.
Rechte von nobody erweitern
Der User nobody hat nicht das Recht, smb.conf zu
überschreiben oder samba neu zu starten.
Diese Rechte müssen mit sudo ( Superuser do ) erweitert werden.
Dazu wird in der Datei /etc/sudoers erweitert
nobody ALL
= NOPASSWD: /etc/init.d/smb restart
nobody ALL
= NOPASSWD: /bin/cp /etc/samba/smb.open /etc/samba/smb.conf
nobody ALL
= NOPASSWD: /bin/cp /etc/samba/smb.close /etc/samba/smb.conf
User nobody erhält damit das Recht, die Befehle
/etc/init.d/smb restart
/bin/cp /etc/samba/smb.open /etc/samba/smb.conf
/bin/cp /etc/samba/smb.close /etc/samba/smb.conf
auszuführen, und zwar ohne Passworteingabe.
Beim Editieren der Datei sudoers muß in diesem Fall hinter nobody
das Tabulator-Zeichen, sonst Leerzeichen.
Die Befehle müssen mit vollständiger Pfadeingabe aufgeführt sein.
Sudo testen mit dem Befehl sudo -l auf der
Konsole bzw im Script!
Das Script hat nun folgendes Aussehen
|
#!/bin/sh |
Nach Test und Fehlerkorrektur werden die letzten 4 Zeilen entfernt.
Sicherheit
Natürlich erhält der User nobody bzw wwwrun nur
die Rechte, die er in den Scripten braucht.
Damit ansonsten nicht jeder die Scripte aufrufen kann, wird der Zugriff auf das
Verzeichnis schalten in cgi-bin eingeschränkt:
In der http.conf wird eingefügt:
|
<Directory
/opt/lampp/cgi-bin/schalten> |
Neustart von Xampp bzw Apache:
Das Unterverzeichnis schalten kann nun nur von der IP 192.168.2.110 genutzt
werden.