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.
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:
CustomerProof yes
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
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
65
66
67 echo "Making backup of Webspace..."
68
69 mkdir tmp
70 cd tmp
71
72 lftp -u "$USER:$PASSWORD" $HOST -e 'mirror . ; quit'
73
74 tar cavf "../${DIR}${DATE}_webspace.tar.bz2" *
75
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
82
83
84 if [ $DL -eq 1 ] ; then
85 echo "Backing Up Download-Server..."
86
87 mkdir tmp
88 cd tmp
89
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