Gentoo LAMP init-script

Hab grad auf die Schnelle ein init-script im Gentoo-Stil gebastelt, das nix andres macht als Apache und MySQL zu starten/stoppen.

#!/sbin/runscript

depend() {
	use apache2 mysql
}

start() {
	ebegin "Starting Apache"
	/etc/init.d/apache2 start
	eend $?

	ebegin "Starting Mysql"
	/etc/init.d/mysql start
	eend $?
}

stop() {
	ebegin "Stopping Apache"
	/etc/init.d/apache2 stop
	eend $?

	ebegin "Stopping Mysql"
	/etc/init.d/mysql stop
	eend $?

	eend 0
}

Apache, mod_authn_dbd, SHA1 und MySQL

Hi,

wie bereits im vorherigen Eintrag angekündigt, will ich euch natürlich mitteilen, wie ich den Apache dazu gebracht habe sich an einem MySQL-Server zu authentifizieren.

An sich ist das ja kein Problem, solange man sich aussuchen kann in welcher verschlüsselten Form die Passwörter in der Datenbank abgespeichert sind. Will man aber ein bereits bestehendes System nutzen kann es unter Umständen schon heikler werden. In meinem Fall lagen die Passwörter als SHA1-Hash vor.

Wie bereits erwähnt, mangelt es MySQL an Funktionen für die Base64 De-/Kodierung. Hat man diese aber nachgerüstet, lässt sich der Apache relativ einfach dazu bewegen auch SHA1 zu schlucken.

Es hat eine Weile gedauert bis ich auf diese Seite gestoßen bin, die genau erklärt, in welchem Format mod_authn_dbd die Passwörter erwartet.

Danach war es nur noch eine Kleinigkeit und herausgekommen ist:

AuthDBDUserPWQuery "SELECT CONCAT('{SHA}',BASE64_ENCODE(UNHEX(hashed_password))) AS pass FROM users WHERE login=%s"

Ich hoffe, ich konnte dem ein oder anderen ein paar Stunden Suche ersparen!

MySQL und Base64

Tach,

Vor ein paar Tagen wollte ich eine an MySQL gebundene Authentifizierung meines Apache Webservers an ein bereits bestehendes System koppeln. Dazu mehr in einem anderen Beitrag.
Jedenfalls brauchte ich dazu eine Funktion direkt in MySQL, die mir einen String in base64 kodiert.

Leider bietet MySQL von Haus aus keine Base64 Implementation. Nach etwas googlen habe ich aber eine brauchbare Lösung gefunden. Ian Gulliver hat sich aufgeopfert und die Funktionen nachgerüstet.

Base64 Funktion für MySQL

Einfach das SQL-File importieren und schon kanns losgehen!

Viel Spaß damit!