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.

lokale Sicherheitsrichtlinien für Windows XP
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.