Im Geschäft hatten wir eine USB-Festplatte, auf welcher wir sehr viele Bilder für die Katalogproduktion hatten. Das funktionierte recht gut, nur war es recht umständlich, da man die Festplatte immer wieder von einem Computer an den anderen anschliessen mussten. Die ideale Lösung ist also, wenn man die Bilder auf einem Server platziert, damit alle Leute darauf zugriff haben. Eine Bedingung ist, dass alle Leute die Bilder ansehen, aber nur bestimmte Mitarbeiter darauf zugreifen können.
Ich habe das ganze mit einem Linux-Server mit Samba gelöst, welcher an die Windows-Domain angeschlossen wurde. Hier nun eine kleine Anleitung, wie das bei mit funktioniert hat.
Ausgangslage
Domain: MUSTER.LOCAL
DNS-Server: 192.168.1.10
Domaincontroller
OS: Windows 2003 SP 2
Hostname: SERV01
IP: 192.168.1.10
Linux Server
OS: Ubuntu Linux 8.04 Server (2.6.24-16-server)
Hostname: SERV02
IP: 192.168.1.11
Software
Installiert werden muss Samba, Winbind und Heimdal. Bei mir in den folgenden Version (direkt über apt)
- Samba 3.0.28a
- Winbind 3.0.28a-1ubuntu4
- heimdal-clients 0.7.1-1ubuntu3
Installation
Kerberos
Kerberos wird zur Authentifizierung am Windows-Server verwendet. Will sich also ein Benutzer am SERV02 anmelden, so sendet dieser die Anfrage an den SERV01 (PDC) weiter und erhält von dem die Nachricht, ob Benutzername und Passwort korrekt sind. So kann man direkt die Benutzer und Gruppen aus der Active-Directory verwenden, was die Benutzerverwaltung sehr vereinfacht. Kerberos ist im Packet Heimdal enthalten.
Konfigurieren muss man die Datei
/etc/krb5.conf. Dazu muss man zuerst eine Realm (einen Bereich) konfigurieren und dort ein KDC (Kerberos Distribution Center) angeben und dann der Domain den Berich zuweisen. Wichtig ist hier, dass auf die Gross- und Kleinschreibung geachtet wird. Meine Konfigurationsdatei sieht so aus:
[libdefaults]
default_realm = MUSTER.LOCAL
clockskew = 300
[realms]
MUSTER.LOCAL = {
kdc = SERV01.MUSTER.LOCAL
}
[domain_realm]
.muster.local = MUSTER.LOCAL
[logging]
# default = SYSLOG:NOTICE:DAEMON
default = FILE:/var/log/krb/krb5libs.log
kdc = FILE:/var/log/krb/kdc.log
kadmind = FILE:/var/log/krb/kadmind.log
[appdefaults]
pam = {
ticket_lifetime = 1d
renew_lifetime = 1d
forwardable = true
proxiable = false
retain_after_close = false
minimum_uid = 0
debug = false
}
Nun kann man mit dem Befehl
kinit den Kerberos Client (Linux) am Server (Windows) authenifizieren. Dies funktioniert mit dem folgenden Befehl:
kinit Administrator@MUSTER.LOCAL
Wichtig ist wieder, dass auf die Gross- und Kleinschreibung geachtet wird und dass die Namensauflösung funktioniert. Ein
ping auf
serv01 sollte hier im Beispiel
192.168.1.10 zurückgeben.
Samba
Jetzt kann Samba über die Datei
/etc/samba/smb.conf konfiguriert werden. Wichtig sind die Rot markierten Zeilen.
[global]
workgroup = MUSTER
server string =
netbios name = serv02
realm = MUSTER.LOCAL
idmap uid = 10000 - 15000
idmap gid = 10000 - 15000
winbind separator = /
winbind use default domain = yes
password server = serv01.muster.local
security = ADS
client use spnego = yes
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
encrypt passwords = yes
passdb backend = tdbsam
obey pam restrictions = yes
invalid users = root
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n *password\supdated\ssuccessfully* .
socket options = TCP_NODELAY
- workgroup: Die Arbeitsgruppe. Sollte gleich dem Domänennamen sein
- netbios name: Der Netbios Hostname des Servers
- realm: Der Bereich. Gleich dem Bereich in der Kerberos Konfiguration
- idmap uid: Bereich der genutzt wird um die Domänenbenutzer auf die Linux Benutzer zu mappen
- idmap gid: Bereich der genutzt wird um die Domänengruppen auf die Linux Gruppen zu mappen
- winbind seperator: Das Trennzeichen zwischen der Domäne und dem Benutzer
- winbind use default domain: Definiert, ob Winbind auch mit dem Benutzernamen arbeitet, wenn keine Domäne angegeben wurde.
- password server: Der Server, welcher die Passwörter validiert.
- security: Definiert, dass Samba als ADS Mitglied arbeiten soll
- client use spnego: Aktiviert SMB Singing
Nun muss man den Samba Server noch in die Domäne aufnehmen. Das macht man seit Samba 3.* nicht mehr mit
smbpasswd sondern mit dem
net Befehl:
net join -S serv01 -UAdministrator%password
Wenn alles geklappt hat muss man Linux noch mitteilen, dass Benutzeranfragen an
winbind weitergeleitet werden sollen. Dies macht man in der Datei
/etc/nsswitch.conf. Dort muss man die Zeilen
passwd und
group anpassen. Sie sollten schlussendlich so aussehen:
passwd: files winbind
group: files winbind
Nach einem Neustart von Samba und Winbind kann man prüfen, ob die Konfigurationsarbeit erfolgreich war. Die folgenden Befehle sollten alle Benutzer, bzw Gruppen der Windows Domäne anzeigen.
wbinfo -u
wbinfo -g
Shares einrichten
Sollte bisher alles funktioniert haben, kann man jetzt die Shares im Samba einrichten. Ich habe einen Share names Bilder gemacht, auf welchen alle Zugriff haben, aber nur eine bestimmte Gruppe schreiben kann.
[bilder]
comment = Bilder
path = /home/bilder
public = yes
read only = no
guest ok = no
browseable = yes
valid users = @muster/alle
admin users = @muster/abteilung, muster/user
Hier noch die Unterschiede zwischen Lokalen-/Domänenbenutzen-/Gruppen.
# lokaler user
valid users = user
# domain user
valid users = muster/user
# lokale gruppe
valid users = @group
# domain gruppe
valid users = @muster/group
Quellen
Im Internet gibt es schon einige Anleitungen dazu. Hier möchte ich diejenigen Auflisten, die mich am meisten weitergebracht haben:
- http://www.pro-linux.de/work/server/samba3-domaene.html
- http://www.administrator.de/Samba_in_Windows_Dom%C3%A4ne.html