Transfer von Windows Benutzerkonten in Samba Benutzerdatenbank
Accounts aus Windows SAM-Datenbank extrahieren:
Um Benutzer- sowie Computerkonten im laufenden Betrieb aus der Windows SAM-Datenbank auszulesen kann beispielsweise das Programm fgdump verwendet werden. fgdump muss dabei mit Administrator-Privilegien gestartet werden um die Datenbank auslesen zu können. Das Programm erstellt dabei eine simple ASCII Textdatei die beliebig weiter verwendet werden kann.
fgdump lässt sich unter folgender Adresse herunterladen:
http://www.foofus.net/~fizzgig/fgdump/fgdump-usage.htm
Nach einem Doppelklick auf die ausführbare Datei wird im selben Verzeichnis eine einfache Textdatei mit den enthaltenen Kennwort-Hashes erstellt, z.B. 127.0.0.1-fgdump. Diese Datei müssen wir nun auf unseren Linux Server kopieren
Ergebnis in die Datei smbpasswd eintragen
Ein Zeilenumbruch in Microsoft Betriebssystemen wird mit Carriage Return/Linefeed dargestellt. Auf UNIX bzw. Linux Systemen wird dieser jedoch nur mit Linefeed dargestellt, daher entfernen wir nun das für uns unnötige Carriage Return aus unserer Textdatei und legen die nun konvertierte Datei in /var/lib/samba/private/smbpasswd ab. Dies ist der default-Speicherort für die Datei smbpasswd in CentOS 6.
tr -d "\r" < 127.0.0.1-pwdump > /var/lib/samba/private/smbpasswd
Benutzer lokal anlegen und Heimatverzeichnis erstellen
Da für einen Betrieb eines Samba Servers in den meisten Fällen Benutzerkonten auch lokal angelegt sein müssen legen wir für jeden angeführten Benutzer in der Datei smbpasswd ein Konto samt Heimatverzeichnis an. Dabei sollten vorher nicht benötigte Zeilen aus der Datei entfernt werden, z.B. Maschinenaccounts (enden mit „$), falls der Samba Server nicht als Domain Controller arbeiten soll.
for line in `cat smbpasswd`; do useradd -u `echo line | cut -d: -f 2` -m `echo line | cut -d: -f 1`; done
Dabei wird der im ersten Feld angeführte Benutzer erstellt und mit der im zweiten Feld angegebenen User-ID versehen. Da die User-IDs bei Microsoft Betriebssystemen recht hoch sind sollte es normalerweise zu keinen Konflikten beim Erstellen der Accounts kommen, falls jedoch eine User-ID im System bereits vergeben ist muss diese in smbpasswd von Hand geändert werden.
Benutzer aus smbpasswd in tdbsam übertragen:
Der Import der Benutzer aus der Datei smbpasswd in das Samba Backend ist sehr einfach:
pdbedit -i smbpasswd -e tdbsam
Vorraussetzung ist dabei natürlich dass in smb.conf tdbsam als Backend gewählt ist, was dem default Wert entspricht. Es ist also in den meisten Fällen keine Änderung dieses Parameters in smb.conf erforderlich. Natürlich kann auch ein Import in andere Backends, wie zum Beispiel ldap erfolgen. Die manpage zu pdbedit gibt hierzu weiterführende Informationen.
Account Control Block Flag X hinzufügen
Durch Hinzufügen des X-Control Block Flags wird ein Ablaufen des Kennwortes verhindert, das heißt dass das Kennwort für unbeschränkte Zeit gültig ist.
for i in `cut -d: -f 1 smbpasswd`; do pdbedit -c "[X]" -u $i; done
Weiter Informationen zu Control Block Flags sind auf der Website des Samba-Projekts zu finden:
http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/passdb.html
Nach einem Neustart des Samba-Servers sollten nun die importierten Benutzer- sowie Maschinenaccounts problemlos verwendbar sein.