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.