Archiv

Artikel Tagged ‘Linux’

DMX mit Linux

Lang lang ists her, da haben wir mal mit ein paar Leuten angefangen, uns mit DMX zu beschäftigen. Nach vielerlei Versuchen sind wir irgendwann auf das DMX-Interface von Digital Enlightenment gestoßen, welches (wenn Elektronik-Grundkenntnisse vorhanden sind) leicht selbstzubauen ist. Leider gab es dafür aber keine Linux-Treiber oder sonstwas, weswegen wir einen kleinen Versuch starteten, diesen Treiber selbst zu schreiben.

Um nicht lange um den heißen Brei herumzureden: Wir haben es nicht geschafft (Zeit, Lust, und andere Ausreden…). Gestern hab ich nun eine nette Mail bekommen, dass es ab sofort unter https://github.com/fx5/usbdmx einen Linux-Treiber gibt. Vielen Dank an Frank Sievertsen für den freundlichen Hinweis und die Entwicklung eines solchen Treibers!

KategorienAllgemein Tags: ,

WebDAV-Server – Ich will nicht mehr

WebDAV? Der Begriff ist normalerweise nicht unbekannt, gerade für Remote-Laufwerke für z. B. Backuplösungen usw. werden WebDAV-Server sehr gerne verwendet, zumal sie selten durch Firewalls und/oder Proxies geblockt werden. Als dann an der Uni nach einem WebDAV-Server gefragt wurde, dachte ich “klar, kein Problem, ist bestimmt schnell einzurichten” – Fail. Mehr…

KategorienZIMK Tags: , , , ,

Linux-Rechner als Gateway zum Internet

Hallo!

Da ich immer wieder gefragt werde (und auch selbst immer wieder nach den entsprechenden Zeilen im Internet suche), wie man einen Linux Rechner, der mit dem Internet verbunden ist, Gateway für andere PCs spielen lassen kann, die sehr einfache Lösung hier als Copy&Paste. Bitte das Netzwerkinterface (bei mit eth0) anpassen, damit ist das ausgehende Netzwerkinterface des Gateway-Rechners gemeint:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

Jetzt bei dem/den Client-Rechner(n) die IP des Gateway-Rechners eintragen, fertig.

VMWare: Pfeiltasten öffnen Windows Startmenü

Aus verschiedenen Gründen habe ich unter meinem Linux eine Installation von VMWare mit einem Windows XP als Gastsystem. Allerdings quält mich schon seit geraumer Zeit das Problem, dass als Reaktion auf die Pfeiltasten das Windows-Startmenü geöffnet wird, statt den Cursor in die gewünschte Richtung zu bewegen. Nach ein wenig Googlen habe ich dafür eine ganz einfache Lösung gefunden, die ich hier einfach auch mal auf Deutsch poste:

Im Home-Verzeichnis einfach (sofern nicht vorhanden) ein Verzeichnis mit dem Namen .vmware anlegen, dort eine Datei config die folgenden Inhalt bekommt:

xkeymap.keycode.108 = 0×138 # Alt_R
xkeymap.keycode.106 = 0×135 # KP_Divide
xkeymap.keycode.104 = 0x11c # KP_Enter
xkeymap.keycode.111 = 0×148 # Up
xkeymap.keycode.116 = 0×150 # Down
xkeymap.keycode.113 = 0x14b # Left
xkeymap.keycode.114 = 0x14d # Right
xkeymap.keycode.105 = 0x11d # Control_R
xkeymap.keycode.118 = 0×152 # Insert
xkeymap.keycode.119 = 0×153 # Delete
xkeymap.keycode.110 = 0×147 # Home
xkeymap.keycode.115 = 0x14f # End
xkeymap.keycode.112 = 0×149 # Prior
xkeymap.keycode.117 = 0×151 # Next
xkeymap.keycode.78 = 0×46 # Scroll_Lock
xkeymap.keycode.127 = 0×100 # Pause
xkeymap.keycode.133 = 0x15b # Meta_L
xkeymap.keycode.134 = 0x15c # Meta_R
xkeymap.keycode.135 = 0x15d # Menu

Damit sollten die Probleme erledigt sein. Vielen Dank an http://throwingmywindows.blogspot.com/2008/12/vmware-arrow-key-problem.html, von dieser Seite habe ich diese Lösung.

KategorienAllgemein Tags: , ,

Authentifizierung über libnss-mysql

22. Februar 2009 Keine Kommentare

Manchmal hat man den Wunsch, ein zentrales Benutzerverzeichnis über mehrere Server hinweg anzubieten. Bei solchen Szenarien fällt einem eigentlich sofort LDAP ein, allerdings kann es manchmal von Vorteil sein, eine datenbankbasierte Authentifikation durchzuführen. Nach ein wenig Recherche im großen Netz bin ich dann auf libnss-mysql gestoßen (zu meinem großen Bedauern hab ich kein libnss-pgsql für PostgreSQL gefunden…). Ich Copy&Paste hier im Wesentlichen nun einfach meine Ergebnisse und Configs, falls ihr jemand das Bedürfnis habt, ein ähnliches System aufzusetzen.

Der Server mit den Benutzerdaten ist ein “echter” Host, der irgendwo als physische Maschine rumsteht. Damit man sich nicht groß mit SSL, Verschlüsselung und Sicherheit rumschlagen muss habe ich kurzerhand auf Server und Client OpenVPN installiert. Wie genau die Einrichtung funktioniert entnehme man bitte der verlinkten Seite. Jedenfalls hatte ich so ein eigenes Netzwerk, welches sogar Verschlüsselung zwischen den einzelnen Knoten hat, damit sind (vorerst) die gröbsten Löcher gestopft.

Nun schnell MySQL umkonfigurieren, damit der DB-Dienst nicht an localhost sondern an meinem neuen virtuellen VPN-Interface lauscht. Dazu passt man einfach den Eintrag ‘bind-address’ in der Datei /etc/mysql/my.cnf an. Beispiel (unsichere Methode, lauscht überall):

bind-address = *

Außerdem muss man noch (per phpMyAdmin o. ä.) die Datenbank+Tabellen erstellen und, wenn man das System auch benutzen möchte, Daten einpflegen. Hier poste ich nun einfach mal meine Struktur der Tabellen

CREATE TABLE IF NOT EXISTS `sys_groupmembers` (
`uid` int(11) NOT NULL default ’0′,
`gid` int(11) NOT NULL default ’0′
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE IF NOT EXISTS `sys_groups` (
`gid` int(11) NOT NULL auto_increment,
`groupname` varchar(30) character set latin1 NOT NULL,
`group_password` varchar(64) character set latin1 NOT NULL default ‘x’,
PRIMARY KEY (`gid`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1000;

CREATE TABLE IF NOT EXISTS `sys_users` (
`uid` int(11) NOT NULL auto_increment,
`username` varchar(50) character set latin1 NOT NULL,
`realname` varchar(32) character set latin1 NOT NULL default ”,
`shell` varchar(20) character set latin1 NOT NULL default ‘/bin/sh’,
`password` varchar(40) character set latin1 NOT NULL default ”,
`gid` int(11) NOT NULL default ’65534′,
`homedir` varchar(32) character set latin1 NOT NULL default ‘/bin/sh’,
`lastchange` varchar(50) character set latin1 NOT NULL default ”,
`min` int(11) NOT NULL default ’0′,
`max` int(11) NOT NULL default ’0′,
`warn` int(11) NOT NULL default ’7′,
`inact` int(11) NOT NULL default ‘-1′,
`expire` int(11) NOT NULL default ‘-1′,
PRIMARY KEY (`uid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1000 ;

Auf dem Client installiert man nun die Pakete nscd und libnss-mysql (ich benutze eigentlich immer Debian/Ubuntu, da heißen die Pakete direkt so und die Installation ist mit apt-get install schnell erledigt. Bei anderen Distributionen bitte entsprechende Befehle verwenden oder die Pakete einfach von Hand installieren). Dann werden die entsprechenden Konfigurations-Dateien angepasst:

nsswitch.conf ist für das Betriebssystem ein Hinweis wo/wie überall nach Benutzern gesucht werden kann. nss-mysql.conf gibt an, wie man alle interessanten User-Details mit Ausnahme des Passworts bekommen kann. nss-mysql-root.conf füllt eben genau diese Lücke. Daher sollten für beide Configs verschiedene Benutzer verwendet werden, der Datenbankbenutzer der nss-mysql.conf – Config (also der, der nicht nach dem PW gefragt wird) sollte auch keine Rechte haben, auf die Passwort-Spalte in MySQL zuzugreifen. Außerdem verlangt libnss, dass die nss-mysql-root.conf nur von Benutzer root gelesen werden kann (also chmod 600), denn niemand außer root sollte generell an die System-Passwörter kommen, was man allerdings mit Hilfe des in dieser Datei notierten MySQL-Passworts doch erreichen könnte.

/etc/nsswitch.conf:
An das Ende der Zeilen, die mit “passwd”, “group” bzw. “shadow” anfangen, hängt man (mit einem Leerezeichen Abstand zum bisherigen letzten Wort) das Wörtchen “mysql” hintendran. So siehts dann aus:

passwd: compat mysql
group: compat mysql
shadow: compat mysql

/etc/nss-mysql.conf:
Ich gebe hier nur die Zeilen wieder, die kein Kommentar sind. Hostname, Datenbankname, Benutzername und Passwort sind erfunden und sollten den jeweiligen Bedingungen angepasst werden:

conf.version = 2;
users.host = inet:mein.server.tld:3306;
users.database = userdata;
users.db_user = nss-auth-normal;
users.db_password = 123geheim;
users.table = sys_users;
users.where_clause =;
users.user_column = sys_users.username;
users.password_column = sys_users.password;
users.userid_column = sys_users.uid;
users.uid_column = sys_users.uid;
users.gid_column = sys_users.gid;
users.realname_column = sys_users.realname;
users.homedir_column = sys_users.homedir;
users.shell_column = sys_users.shell;
groups.group_info_table = sys_groups;
groups.where_clause =;
groups.group_name_column = sys_groups.groupname;
groups.groupid_column = sys_groups.gid;
groups.gid_column = sys_groups.gid;
groups.password_column = sys_groups.group_password;
groups.members_table = sys_groupmembers;
groups.member_userid_column = sys_groupmembers.uid;
groups.member_groupid_column = sys_groupmembers.gid;

/etc/nss-mysql-root.conf:
Diese Konfiguration wird für den Abgleich von Passwörtern verwendet:

conf.version = 2;
shadow.host = inet:mein.server.tld:3306;
shadow.database = userdata;
shadow.db_user = nss-auth-root;
shadow.db_password = 124geheim;
shadow.table = sys_users;
shadow.where_clause =;
shadow.userid_column = sys_users.uid;
shadow.user_column = sys_users.username;
shadow.password_column = sys_users.password;
shadow.lastchange_column = sys_users.lastchange;
shadow.min_column = sys_users.min;
shadow.max_column = sys_users.max;
shadow.warn_column = sys_users.warn;
shadow.inact_column = sys_users.inact;
shadow.expire_column = sys_users.expire;

Das wars eigentlich. Nun noch alle betroffenen Dienste (nscd, mysql,openvpn) neustarten und der Spaß sollte funktionieren.

Was ich leider noch nicht geschafft habe, ist die Administration der in der Datenbank gespeicherten Benutzer und Gruppen per Kommandozeilen-Tools, ein erster Ansatz wäre z. B. schonmal passwd, aber selbst das klappt (noch) nicht… Sollte jemand wissen, wie das funktioniert: Da unten ist ein Kommentarfeld ;) Ansonsten: Viel Erfolg bei euren Installationen, bei Fragen und Problemen einfach melden.