Server schalten mit Scripten

zurück
pk-applets


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
echo
echo "Oeffne Laufwerk Allerlei zum Schreiben fuer alle"
cp /etc/samba/smb.open /etc/samba/smb.conf
/etc/init.d/smb restart
echo "Fertig!!"

 

Das Script close

#!/bin/sh
echo
echo "Oeffne Laufwerk Allerlei zum Schreiben fuer alle"
cp /etc/samba/smb.close /etc/samba/smb.conf
/etc/init.d/smb restart
echo "Fertig!!"

 

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
echo
echo "Oeffne Laufwerk Allerlei zum Schreiben fuer alle"
# cp /etc/samba/smb.open /etc/samba/smb.conf
# /etc/init.d/smb restart
echo "Fertig!!"
whoami

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
echo
echo "Oeffne Laufwerk Allerlei zum Schreiben fuer alle"
sudo /bin/cp /etc/samba/smb.open /etc/samba/smb.conf
sudo /etc/init.d/smb restart
echo "Fertig!!"
echo "."
echo "Zum Test : "
whoami
sudo –l

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>
        Order deny,allow
        Deny from all
        Allow from 192.168.2.110
</Directory>

Neustart von Xampp bzw Apache:
Das Unterverzeichnis schalten kann nun nur von der IP 192.168.2.110 genutzt werden.