Samba
In der Regel werden die meisten Benutzer eine Windowsbetriebssystem verwenden. Wir wollen nun einige Verzeichnisse von krypton den anderen Rechnern zugänglich machen. Weiterhin soll der gemeinsame Drucker benutzt werden können. Wir verwenden die aktuelle Samba-Version 2.2.8a.
tar xfj samba-2.2.8a.tar.bz2 cd samba-2.2.8a/source/ ./configure --sysconfdir=/etc/samba --with-configdir=/etc/samba \\ --with-logfilebase=/var/log/samba --with-privatedir=/etc/samba \\ --with-lockdir=/var/lock --with-piddir=/var/run --with-smbmount make make install
Die gesamte Konfiguration findet in der Datei /etc/samba/smb.conf statt. Gehen wir diese Datei Schritt für Schritt durch.
# Date: 2000/09/30 13:16:16 # Global parameters [global] security = user #Server Name netbios name = KRYPTON workgroup = WORKGROUP server string = krypton #Security interfaces = eth1 bind interfaces only = yes encrypt passwords = yes null passwords = yes passwd program = /usr/bin/passwd password level = 3 username map = /etc/samba/user.map #Log files debug level = 0 log file = /var/log/samba.log #Funktionsauswahl os level = 64 preferred master = yes local master = yes wins proxy = no wins support = yes local master = yes time server = yes #Domaenenserver domain master = yes domain logons = yes logon script = logon.bat logon path = \\%N\profiles\%U logon home = \\%N\profiles\%U logon drive = Y: add user script = /usr/sbin/useradd -d /dev/null -g 100 -s /bin/false -M %u #Laendereinstellungen character set = ISO8859-1 valid chars = ä:Ä ö:Ö ü:Ü ß #Drucksystem printing = lprng load printers = yes printcap name = /etc/LPRng/printcap #Passwoerter remote aendern unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *password* %n\n *password* %n\n *successful* #Tuning time offset = 0 deadtime = 15 #read prediction = yes read size = 64 level2 oplocks = yes socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192 #SSL #ssl server cert = /etc/samba/ssl.crt/server.crt #ssl server key = /etc/samba/ssl.key/server.key #ssl version = tls1 #ssl require clientcert = no #ssl require servercert = yes #ssl CA certDir = /etc/samba/certs #Sonstiges mangled names = no guest account = guest #force create mode = 0755 #force directory mode = 0755 #Wichtig, wenn samba als PDC (Primary Domain Controller) arbeiten soll [netlogon] comment = Domaenenanmeldedienst path = /etc/samba/netlogon public = no locking = no writeable = yes browseable = no [profiles] Comment = Serverprofile path = /etc/samba/profiles browseable = no writeable = yes valid users = @users create mask = 0700 directory mask = 0700 [homes] comment = Heimat Verzeichnis valid users = %S writeable = yes create mask = 0644 directory mask = 0755 browseable = no veto files = /.*/ [temp] comment = Temporarily file space (max. 95 GByte) path = /temp writeable = yes create mask = 0644 force create mode = 0644 directory mask = 0755 force directory mode = 0755 veto files = /.*/ /lost+found/ level2 oplocks = no valid users = @users [Faxeingang] comment = Faxeingang path = /var/spool/fax/recvq veto files = /seqf/ writeable = no valid users = @users level2 oplocks = no #readonly share [mp3] comment = mp3 path = /mp3 valid users = @users writeable = no veto files = /lost+found/ level2 oplocks = no [Drucker] comment = HP LaserJet IIP path = /var/spool/printers printer name = lp printable = yes public = yes valid users = @users administrator print command = /usr/local/bin/lpr -Z a4 -P%p -r %s lpq command = /usr/local/bin/lpq -P%p lprm command = /usr/local/bin/lprm -P%p %j lppause command = /usr/local/sbin/lpc hold %p %j lpresume command = /usr/local/sbin/lpc release %p %j queuepause command = /usr/local/sbin/lpc -P%p stop queueresume command = /usr/local/sbin/lpc -P%p start printer driver location = \\krypton\printer_driver$ printer driver = HP LaserJet IIP [printer_driver$] path = /etc/samba/printer_driver public = yes writeable = no browseable = no
Die ersten Zeilen definieren, unter welchem Namen dieser Rechner erscheint. Wird keine Arbeitsgruppe angegeben, so verwender Samba WORKGROUP als Voreinstellung. Weiterhin wird Samba mitgeteilt, dass es die Datenpakete nur über das eth1-Dervice senden soll. Damit ist sichergestellt, dass keine ISDN-Verbindung aufgebaut wird, da die Windowsrechner alle 2 Minuten Broadcast-Nachrichten versenden. Außdem wird verhindert, dass bei einer fehlerhaften Firewall von außen auf freigegebene Ressourcen zugegriffen werden kann. Die Datei /etc/samba/user.map gibt die Zuordnung von Windows- zu Linux-Nutzer an. Der folgende Eintrag
laas=Administrator
bewirkt, dass der am Windowsrechner angemeldete Administrator als Linux-Nutzer laas behandelt wird. Samba soll außerdem als domain-master auftreten und wins support anbieten. Die weiteren Optionen sind sehr gut in der Manpage zu smb.conf(5) erläutert.
Wir lassen Samba als PDC (Primary Domain Controller) arbeiten, d.h. wir wollen Nutzerprofile direkt auf dem Server ablegen und die Rechner in die Domäne integrieren. Für den Domänennamen wird der Wert der Variable workgroup verwendet. Weiterhin legen wir das Verzeichnis /etc/samba/netlogon an und erstellen das Anmeldeskript /etc/samba/netlogon/logon.bat.
mkdir /etc/samba/netlogon cat > /etc/samba/netlogon/logon.bat << "EOF" rem Default logon script, create links to this file. net time \\krypton /set /yes @echo off if %OS%.==Windows_NT. goto WinNT :Win9x net use m: \\krypton\mp3 net use t: \\krypton\temp goto end :WinNT net use m: \\krypton\mp3 /persistent:no net use t: \\krypton\temp /persistent:no :end EOF
Diese Datei wird bei der Anmeldung des Windowsrechners an der Domäne ausgeführt. Man beachte, dass diese Dateien im MS-DOS-Textformat gespeichert werden müssen. Am besten verwendet man zur Erstellung ein Windows-Editor und kopiert die Datei anschließend auf den Linuxrechner.
Da wir die Benutzerprofile zentral auf dem Server verwalten wollen, benötigen wir die Sektion [profile].
Die unterschiedlichen Versionen des Redmonder Betriebssystem erfordern leider unterschiedliche Vorgehensweisen, um die oben genannten Ziele zu erreichen.
Windows 98/Windows 98 Second Edition
Für Windows 98/Windows 98 Second Edition Rechner muß der "Client für Microsoft Netzwerke" installiert und die Option "An Windows NT-Domäne anmelden" aktiviert werden. Der Computer muß noch per Hand in die Domäne integriert werden. Dazu wird ein Maschinenaccount (hier für den Rechner xenon mit
mkdir /etc/samba/netlogon catgroupadd -g 50000 WinComps useradd -u 50000 -G WinComps -d /dev/null -s /bin/false -c xenon xenon$ smbpasswd -m xenon
eingerichtet, was nur dem Superuser gestattet ist. Es ist zu empfehlen, die Windowsrechner in eigene Gruppe zu stecken. Es ist auch darauf zu achten, dass der Rechnername mit einem Dollarzeichen am Ende versehen wird, da Windows daran die Maschinenaccounts erkennt.
Windows 2000 vereinfacht die Integration in eine Domäne erheblich. Unter Eigenschaften des Arbeitsplatzes, Netzwerkkennung kann man zwischen einem Assistenten und der direkten Integration gewählt werden. Windows 2000 benötigt allerdings den root-Account als Administrator für die Windowsrechner. Dieser wird mit
Windows 2000
Windows 2000 vereinfacht die Integration in eine Domäne erheblich. Unter Eigenschaften des Arbeitsplatzes, Netzwerkkennung kann man zwischen einem Assistenten und der direkten Integration gewählt werden. Windows 2000 benötigt allerdings den root-Account als Administrator für die Windowsrechner. Dieser wird mit
smbpasswd -a root smbpasswd -e root
eingerichtet und aktiviert. Hier sollte sich das Paswort von dem wirklichen root-Passwort unterscheiden. Bei der Frage nach einem Account, der Administratorrechte für die gewünschte Domäne besitzt, wird der eben eingerichtete root-Account verwendet. Windows 2000 legt die Maschinenaccounts automatisch an, was ziemlich praktisch ist.
Windows XP
Windows XP verhät sich ähnlich wie Windows 2000. Zu allererst müssen aber die lokalen Sicherheitsrichtlinien angepasst werden, da Samba signierte und verschlüsselte Verbindungen noch nicht beherrscht. Man meldet sich als der lokale Administrator an, und findet unter Systemsteuerung, Verwaltung, lokale Richtlinien, Sicherheitsoptionen die Sicherheitsrichtlinien. Dort werden die folgenden Optionen wie folgt abgeändert.
| Schlüssel | Eigenschaft |
|---|---|
| Clientkommunkation immer signieren | Deaktiviert |
| Serverkommunikation immer signieren | Deaktiviert |
| Sicherer Kanal: Daten des sicheren Kanals digital verschlüsseln oder signieren (immer) | Deaktiviert |
| Domänenmitglied: Kommunikation digital verschlüsseln oder signieren (immer) | Deaktiviert |
Danach verhält sich Windows XP wie Windows 2000 und kann wie oben beschrieben in die Domäne integriert werden. Windows XP und 2000 lassen sich erst ab Samba-Version 2.2.0 verwenden.
Home
Die letzte Sektion in der Konfigurationsdatei gibt das jeweilige Home-Verzeichnis auf dem Linuxrechner frei. Nur der Besitzer sieht das Verzeichnis und kann dort auch schreiben. Die letzte Zeile unterdrückt die Anzeige von Dateien, die mit einem Punkt beginnen. Normalerweise enthalten solche Dateien Konfigurationseinstellungen.
Ferner bieten wir auch einen temporären Platz an, auf dem die ganze Gruppe lesend und schreibend zugreifen darf. Mit "@%G" wird die Gruppe des Nutzers des Linuxrechners, und mit "%S" der Nutzer bezeichnet. Durch die Vorgabe der Rechte ist sichergestellt, dass alle Nutzer die erstellten Dateien anderer Nutzer lesen, aber nicht löschen können.
Nach obigem Schema können auch andere Verzeichnisse freigegeben werden.
Druckerfreigabe
Zum Schluß wird noch der Drucker freigegeben. Der Drucker muß natürlich in der /etc/printcap eingerichtet sein.
Im Verzeichnis /etc/samba/printer_driver werden wir die Treiber für diesen Drucker ablegen. Zuerst installiert man den Drucker auf einem Windowsrechner, kopiert von von diesem die Dateien MSPRINT*.INF im Verzeichnis %WINBOOTDIR%\INF auf den Linuxrechner und führt
make_printerdef MSPRINT3.INF "HP Laserjet IIP"
aus. Die Wahl der *.INF Datei hängt vom jeweiligen Drucker ab. Der letzte Befehl gibt aus, welche Treiberdateien benötigt werden. Diese kopiert man vom Windowsrechner (liegen meistens alle in %WINBOOTDIR%\System) nach /etc/samba/printer_driver. Damit ermöglichen wir, dass bei Bedarf die zur Installation des Druckers benötigten Treiber direkt vom Server installiert werden. Allerdings verwendet Windows2000 bzw WindowsXP ein anderes Drucksystem, so dass sich diese Sachen nicht ganz so leicht übertragen lassen.
Nutzerkonten
Nun müssen noch die Benutzer eingerichtet werden, die Samba benutzen dürfen.
smbpasswd -a <user> smbpasswd -e <user>
Nach einem ersten, hoffentlich erfolgreichen Start, kann man den Samba-Server testen.
krypton:~ # smbclient -N -L krypton
added interface ip=192.168.0.1 bcast=192.168.0.255 nmask=255.255.255.0
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 2.2.8a]
Sharename Type Comment
--------- ---- -------
Faxeingang Disk Faxeingang
temp Disk Temporarily file space (max. 3 GByte)
mp3 Disk mp3
Drucker Printer HP LaserJet IIP
IPC$ IPC IPC Service (krypton)
ADMIN$ Disk IPC Service (krypton)
Server Comment
--------- -------
KRYPTON krypton
Workgroup Master
--------- -------
WORKGROUP KRYPTON
Wenn diese Ausgabe erscheint, sieht es schon ganz gut aus. Der nächste Schritt ist es, sich in der Netzwerkumgebung zu finden. Win9x Klienten haben in der Regel damit keine Probleme. Es kann aber bis zu 15 Minuten dauern, bis sich alle Rechner gefunden haben. Mit Computer suchen sollte der Samba-Server aber relativ schnell gefunden werden. Wenn weiterhin Probleme auftreten, liegt es höchstwahrscheinlich an falschen Zugriffsrechten oder Passwörtern.
Windowsfreigaben nutzen
Der Sambaserver kann nun auch die freigegebenen Ressourcen der Windowsrechner benutzen. Sei z.B. auf dem Rechner al das Laufwerk LAPTOP C freigegeben. Der Rechnername ist hier nicht der Name, unter den Linux ihn kennt, sondern sein NetBIOS-Name. Dafür muß der Kernel auch das SMB-Dateisystem unterstützen.
krypton:~ # smbclient -L al -N Sharename Type Comment -------------------- LAPTOP_C Disk IPC$ IPC Remote-IPC Server Comment ---------------- Workgroup Master ---------------- krypton:~ # smbclient \\\\al\\LAPTOP\ C -N smb: \> cd tmp smb: \tmp\> ls . D0 Mon Oct 4 15:58:30 1999 .. D0 Mon Oct 4 15:58:30 1999 wintalk D0 Wed Feb 9 22:38:28 2000 t D0 Fri Feb 11 12:02:52 2000 Moppe D0 Sun Feb 13 11:08:18 2000 Seminar.zip A 187353 Sun Feb 20 13:30:48 2000 BZIMAGE.OLD R 428257 Sun Dec 13 13:37:46 1998 33009 blocks of size 65536. 4363 blocks available smb: \tmp\> exit
Root kann das Laufwerk aber auch fest einbinden.
krypton:/ # smbmount \\\\al\\laptop\ c /a -o guest krypton:/ # cd a/tmp krypton:/a/tmp # ls .. . BZIMAGE.OLD MoppeSeminar.zip t wintalk krypton:/a/tmp # ls -l total 604 drwxr-xr-x 1 root root 512 Oct 4 16:58 ./ drwxr-xr-x 1 root root 512 Jan 1 1970 ../ -r-xr-xr-x 1 root root 428257 Dec 13 1998 BZIMAGE.OLD* drwxr-xr-x 1 root root 512 Feb 13 11:08 Moppe/ -rwxr-xr-x 1 root root 187353 Feb 20 13:30 Seminar.zip* drwxr-xr-x 1 root root 512 Feb 11 12:02 t/ drwxr-xr-x 1 root root 512 Feb 9 22:38 wintalk/
swat - Samba Konfigurator
Samba enthälht ein grafisches Konfigurationstool. Um es zu benutzen, muß in der Datei /etc/inetd.conf die folgende Zeile eingefügt werden. Dabei ist darauf zu achten, dass die swat-Datei sich auch an der angegebenen Position befindet.
swat stream tcp nowait.400 root /usr/bin/swat swat
Nach einem Neustart des inetd kann man samba bequem über einen Browser konfigurieren. Swat ist dann unter der URL http://localhost:901 zu finden.