thomasba.lima-city.de

.htpasswd-Generator

Wie man auf Lima-City einen Passwortschutz mit .htaccess einrichtet hat der karpfen ja schon in seinem Blog fishmod.de erklärt. Wie man aber eine .htpasswd mit Passwörtern füllt verschweigt er dabei ^^

Da heute im Support-Chat jemand nachgefragt hat, wie man das mit den Passwörtern am besten macht, habe ich ein kleines Tool geschrieben, womit man sich eine .htpasswd-Datei erzeugen kann. Zu finden ist dieses hier: thomasba.lima-city.de/stuff/htpasswd.php

Da in der .htpasswd-Datei pro User eine Zeile ist, kann man einen User einfach Löschen, indem man die passende Zeile entfernt. Zudem kann man einen Neuen User einfach in eine neue Zeile schreiben. Deswegen muss man nicht immer die komplette .htpasswd-Datei neu generieren.

Die Passwörter sehen nachher so kryptisch aus, da diese mit einer speziellen Funktion gehasht werden (Hier: SHA-256). Da es jedoch schon einige Rainbow-Tables (Liste mit vorberechneten Hashes) existieren, wird das Password zusätzlich mit einem Salt gesalzen und in mehreren Runden gehasht.

Dateiberechtigungen ändern (Nur lesen)

So manche Software möchte, das man die Rechte der config-Datei auf 0444 (nur lesen) setzt. Wenn dem nicht so ist geben diese oft eine Fehlermeldung aus. Um diese Fehlermeldung weg zu bekommen, muss man die Rechte der Datei ändern. Der erste Gedanke ist, einen FTP-Client wie Filezilla zu verwenden, um diese zu ändern. Doch leider unterbindet es der bei Lima-City eingesetzte FTP-Server (siehe Unten), das man niedrigere Rechte als Lesen/Schreiben für den Besitzer, lesen für alle anderen (0644) setzt. Somit muss man sich einen anderen Weg suchen.

PHP hat die Funktion chmod, mit welcher man die Dateiberechtigungen ändern kann. Dabei muss man dieser Funktion lediglich den Dateinamen und die Berechtigungen übergeben:

1 <?php
2 if( chmod("cfg.php",0444) ) {
3     echo "Done";
4 }else{
5     echo "Error";
6 }
7 ?>

In diesem Fall ist cfg.php die Config Datei, deren Rechte geändert werden soll. Die Rechte, hier 0444 geben die gewünschten Berechtigungen im Unix-Format an.

Bei z.B. osCommerce ist die Konfigurationsdatei im Ordner includes, welchen man nicht im Browser aufrufen kann. In so einem Fall die PHP-Datei einfach im selben Verzeichnis wie die index.php anlegen und den Pfad, im Bsp. cfg.php anpassen. Im Falle von osCommerce also includes/cfg.php

 

Der Customer-Proof, welcher die Änderung der Rechte auf 0444 verhindert:

# Be 'customer proof' : workaround against common customer mistakes like
# 'chmod 0 public_html', that are valid, but that could cause ignorant
# customers to lock their files, and then keep your technical support busy
# with silly issues. If you're sure all your users have some basic Unix
# knowledge, this feature is useless. If you're a hosting service, enable it.
CustomerProof yes

Backup-Script für Lima-City

Mir war vor kurzem mal wieder Langweilig, da hab ich dieses kleine Backup-Script für Linux geschrieben, dabei werden Datenbanken und der Webspace gesichert.

Im ersten Teil des Scripts sind die Einstellungen, in welchen man die Zugangsdaten zu den einzelnen Diensten angeben kann. Dort ist es auch möglich das Backup des Download-Servers Ein- und Auszuschalten, da das Herunterladen der Dateien Download-Volumen verbraucht.

Um Speicherplatz zu sparen werden lediglich 4 alte und das neue Backup gespeichert. Die alten werden gelöscht.

Das Datenbank-Backup wird mit dem Programm mysqldump gemacht und gleich bzip-Komprimiert. Da man bei Lima keine Tabellen sperren kann, wird die Option --lock-tables=false benötigt. Zudem werden alle Einstellungen an das Programm übergeben.

 50 ######################
 51 # do database backup #
 52 ######################
 53 
 54 if [ ! "$DATABASE" = '-A' ] ; then
 55     DATABASE="--databases $DATABASE"
 56 fi
 57 
 58 echo "Saving MySQL backup..."
 59 mysqldump --lock-tables=false -u$DB_USER -h$DB_HOST -p$DB_PASSWORD $DATABASE | \
 60     bzip2 > ${DIR}${DATE}.sql.bz2
 61 echo "Backup saved as '$DIR$DATE.sql.bz2'"

Für das Webspace Update wird zuerst ein Temporäres Verzeichnis, in welches die Dateien heruntergeladen werden. Das Herunterladen erfolgt mit lftp, mit -e werden die Befehle übergeben, die lftp ausführen soll. mirror . lädt alle Dateien und Verzeichnisse herunter, nach dem Herunterladen wird dann mit quit die Verbindung zum FTP-Server geschlossen. Anschließend werden die Dateien mit tar gepackt und die Temporären Dateien gelöscht.

 63 ######################
 64 # do webspace backup #
 65 ######################
 66 
 67 echo "Making backup of Webspace..."
 68 # temp dir
 69 mkdir tmp
 70 cd tmp
 71 # download the files
 72 lftp -u "$USER:$PASSWORD" $HOST -e 'mirror . ; quit'
 73 # put them in an archive
 74 tar cavf "../${DIR}${DATE}_webspace.tar.bz2" *
 75 #and remove the temp files
 76 cd ..
 77 rm -rf tmp
 78 echo "Backup saved as ${DIR}${DATE}_webspace.tar.bz2"

Da man beim Download Server via FTP nur Dateien hochladen kann, aber nicht herunter, muss man sich eine Liste der Dateien besorgen und diese anschließend via HTTP herunterladen. Die Liste kann man mit lftp erzeugen, dazu wird der Befehl find verwendet, welcher alle Dateien auflistet mit sed werden unnötige Leerzeichen am Ende der Zeilen entfernt. Danach werden die Dateien mit wget heruntergeladen, gepackt und die Temporären Dateien gelöscht.

 80 ##########################
 81 # Backup Download-Server #
 82 ##########################
 83 
 84 if [ $DL -eq 1 ] ; then
 85     echo "Backing Up Download-Server..."
 86     # temp dir
 87     mkdir tmp
 88     cd tmp
 89     # receive filelist
 90     FILES=$(lftp -u "$DL_USER:$DL_PASSWORD" $DL_HOST -e 'find;quit'|\
 91         sed -rn 's_^\./(.+[^/ ])\s*$_\1_p')
 92     for i in $FILES ; do
 93         d="./${i%$(basename $i)}"
 94         [ ! -d "$d" ] && mkdir "$d"
 95         wget "http://download.lima-city.de/$USER/$i" -O "$i"
 96     done
 97     tar cavf "../${DIR}${DATE}_download.tar.bz2" *
 98     cd ..
 99     rm -rf tmp
100     echo "Backup saved as ${DIR}${DATE}_download.tar.bz2"
101 fi

Das komplette Script gibt es hier, da man auf Lima-City leider keine Bash-Dateien hochladen kann, ist es der Code in einer HTML-Datei:
thomasba.lima-city.de/stuff/lima_backup.sh.html