SAMBA (Domaincontroller) Server für kleine Arbeitsgruppen mit Ubuntu 7.10

Version 1.0
Author: Till Brehm <t.brehm [at] projektfarm [dot] com>


Dies ist eine detaillierte Beschreibung darüber, was für Schritte unternommen werden müssen um einen Ubuntu basierten Server (Ubuntu 7.10) einzurichten um ihn als ein Datei- und Druckserver für Windows (tm) Arbeitsstationen in kleinen Arbeitsgruppen zu verwenden. Diese Anleitung verwendet das tdb backend für SAMBA um Passworte und Konto-Informationen zu speichern. Dies ist geeignet für Arbeitsgruppen bis zu 250 Benutzern und ist einfacher einzurichten als ein LDAP backend.

Installierte Software:
  • Samba as Domaincontroller
  • Cups
  • Foomatic printer drivers
Allerdings möchte ich an dieser Stelle darauf hinweisen, dass dies hier nicht der einzige Weg ist, ein solches System zu installieren. Es gibt viele Möglichkeiten - ich selbst habe mich für diese entschieden. Ich kann aber nicht garantieren, dass diese Lösung bei jedem funktioniert bzw. für jeden die richtige ist!

Voraussetzungen

Um ein solches System zu installieren, brauchst Du Folgendes:
  • Eine Ubuntu Server Installations-CD (hier erhältlich: http://www.ubuntu.com/download/)
  • Eine Internetverbindung, da ich in dieser Anleitung eine Netzwerkinstallation beschreibe.

Den Root Benutzer freischalten

Nun kann ich mich mit dem Benutzernamen "administrator" und dem Passwort anmelden, dass ich oben eingegeben habe. Ich werde zunächst den Root Benutzer freischalten zur einfacheren Installation. Du kannst es später deaktivieren wenn Du möchtest.

sudo passwd root
su

Nun sind wir als Root Benutzer angemeldet.

Hinweis: Dieser Schritt ist optional. Wenn Du den Root Benutzer aus Sicherheitsgründen nicht freischalten möchtest, lass bitte den Befehl "sudo su" laufen um zum Root zu wechseln ohne den Root Benutzer zu aktivieren um Dich direkt anzumelden.

Konfiguriere das Netzwerk

Der Ubuntu Installer hat unser System konfiguriert um seine Netzwerkeinstellungen via DHCP zu beziehen. Wir werden dies nun ändern, da ein Server eine statische IP Adresse haben sollte. Bearbeite /etc/network/interfaces und passe es Deinen Bedürfnissen an (in diesem Beispiel werde ich die IP Adresse 192.168.0.100 verwenden):

vi /etc/network/interfaces


# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # This is a list of hotpluggable network interfaces. # They will be activated automatically by the hotplug subsystem. mapping hotplug script grep map eth0 # The primary network interface auto eth0 iface eth0 inet static address 192.168.0.100 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.1
Starte Dein Netzwerk neu:

/etc/init.d/networking restart

Bearbeite /etc/hosts und füge Deine neuen IP Adressen bei:

vi /etc/hosts


127.0.0.1       localhost.localdomain   localhost       server1
192.168.0.100 server1.example.com server1 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts

Den Hostnamen einrichten

echo server1.example.com > /etc/hostname
/etc/init.d/hostname.sh
echo '192.168.0.100 server1.example.com' >> /etc/hosts

Installation des SSH Daemons
apt-get install ssh openssh-server

Die nächsten Schritte...

Nun kannst Du Dich auf Deinem Server mit einem SSH Klienten wie putty http://www.chiark.greenend.org.uk/~sgtatham/putty/ anmelden. Es ist einfacher dieser Anleitung zu folgen, wenn Du Dich mit Deinem Server via putty verbindest und die Befehle kopierst und einfügst. Wenn Du Config-Dateien auf Deinem Server bearbeiten möchtest, kannst Du Kommandozeilen-Editoren wie vi, pico oder joe oder ein Programm wie WinSCP http://winscp.net/eng/docs/lang:en verwenden um die Dateien über Deine SSH Verbindung in einem Windows Klienten zu bearbeiten.

Quota

apt-get install quota

Bearbeite /etc/fstab damit es so aussieht (Ich habe ,usrquota,grpquota zu den Partitionen mit dem Mount Point / hinzugefügt):

vi /etc/fstab


# /etc/fstab: static file system information.
# # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 # /dev/sda1 UUID=226d9304-88ca-44c0-a3e3-d1ad26cfc084 / ext3 defaults,errors=remount-ro,usrquota,grpquota 0 1 # /dev/sda5 UUID=d824ce36-04b8-4870-83f4-f1a5037c2de4 none swap sw 0 0 /dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/ /media/floppy0 auto rw,user,noauto 0 0
Führe dann Folgendes aus:

touch /quota.user /quota.group
chmod 600 /quota.*
mount -o remount /
quotacheck -avugm
quotaon -avug

Du bekommst eine Fehlermeldung wie diese, wenn Du den Befehl quotacheck -avugm zum ersten Mal laufen lässt.

quotacheck: WARNING - Quotafile //quota.user was probably truncated. Cannot save quota settings...
quotacheck: WARNING - Quotafile //quota.group was probably truncated. Cannot save quota settings...

Das ist ganz normal und nichts, worüber man sich sorgen müsste!

SAMBA-Server

apt-get install libcupsys2 samba samba-common samba-doc smbclient winbind cupsys-common

Bearbeite /etc/samba/smb.conf sodass es so aussieht

vi /etc/samba/smb.conf


[global]
workgroup = MYWORKGROUP
netbios name = SERVER1
server string = %h server (Samba, Ubuntu)

passdb backend = tdbsam
security = user
username map = /etc/samba/smbusers
name resolve order = wins bcast hosts
domain logons = yes
preferred master = yes
wins support = yes

# Set CUPS for printing
load printers = yes
printcap name = CUPS
printing = CUPS

# Default logon
logon drive = H:
logon script = scripts/logon.bat
logon path = server1profile%U

# Useradd scripts
# add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u
add user script = /usr/sbin/useradd -m '%u' -g users -G users
delete user script = /usr/sbin/userdel -r %u
add group script = /usr/sbin/groupadd %g
delete group script = /usr/sbin/groupdel %g
add user to group script = /usr/sbin/usernod -G %g %u
add machine script = /usr/sbin/useradd -s /bin/false/ -d /var/lib/nobody %u
idmap uid = 15000-20000
idmap gid = 15000-20000
template shell = /bin/bash

# sync smb passwords woth linux passwords
passwd program = /usr/bin/passwd %u
passwd chat = *EntersnewsUNIXspassword:* %nn *RetypesnewsUNIXspassword:* %nn *passwordsupdatedssuccessfully* .
passwd chat debug = yes
unix password sync = yes

# set the loglevel
log level = 3

[public]
browseable = yes
public = yes

[homes]
comment = Home
valid users = %S
read only = no
browsable = no

[printers]
comment = All Printers
path = /var/spool/samba
printable = yes
public = no
writable = no
create mode = 0700

[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
write list = root, @smbadmin

[netlogon]
comment = Network Logon Service
path = /home/samba/netlogon
admin users = Administrator
valid users = %U
read only = no
guest ok = yes
writable = no
share modes = no

[profile]
comment = User profiles
path = /home/samba/profiles
valid users = %U
create mode = 0600
directory mode = 0700
writable = yes
browsable = no
guest ok = no
Erstelle die Verzeichnisse für Domain Logons und Porfile

mkdir /home/samba
mkdir /home/samba/netlogon
mkdir /home/samba/profiles
chmod 777 /var/spool/samba/
chown -R root:users /home/samba/
chmod -R 771 /home/samba/

Nun starten wir Samba neu:

/etc/init.d/samba restart

Bearbeite /etc/nsswitch.conf. Ändere die Zeile:

vi /etc/nsswitch.conf

hosts: files dns
zu:

hosts: files wins dns
Füge alle Computer Deiner Arbeitsgruppe in der Datei /etc/hosts auf dem Server hinz.

vi /etc/hosts


192.168.0.100 server1 server1.example.com
192.168.0.110 workstation1
192.168.0.111 workstation2
192.168.0.112 workstation3
192.168.0.113 workstation4
Füge den Root Benutzer der SAMBA Passwort Datenbank hinzu. Der Root Benutzer (alias: Administrator) wird unser Domain Administrator sein. Dieses Konto brauchen wir um neue Computer der SAMBA Domain hinzuzufügen.

smbpasswd -a root

Erstelle die Datei /etc/samba/smbusers und füge die Zeile hinzu indem Du Folgendes ausführst:

echo "root = Administrator" > /etc/samba/smbusers

Dies erlaubt es uns, den gewöhnlichen Windows Benutzernamen "Administrator" als Parallelbezeichnung für den Linux Root Benutzer zu verwenden.

Nun werde ich testen, ob das Setup richtig ist:

smbclient -L localhost -U%

Die Ausgabe sollte so ähnlich wie diese aussehen:
Domain=[MYWORKGROUP] OS=[Unix] Server=[Samba 3.0.26a]
Sharename Type Comment --------- ---- ------- IPC$ IPC IPC Service (samba server (Samba, Ubuntu)) netlogon Disk Network Logon Service print$ Disk Printer Drivers Domain=[MYWORKGROUP] OS=[Unix] Server=[Samba 3.0.26a] Server Comment --------- ------- SERVER1 samba server (Samba, Ubuntu) Workgroup Master --------- ------- MYWORKGROUP SERVER1 WORKGROUP FILESERVER
Richte die Standard-Domaingruppen für Windows ein:

net groupmap add ntgroup="Domain Admins" unixgroup="root" type=domain -U root
net groupmap add ntgroup="Domain Users" unixgroup="users" type=domain -U root
net groupmap add ntgroup="Domain Guests" unixgroup="nogroup" type=domain -U root

Benutzer zu unserer SAMBA Domain hinzufügen

Jetzt werden wir einen Benutzer, z.B. "tom" unserer Samba Domain hinzufügen. Du musst einen solchen Benutzer für jedes Benutzerkonto hinzufügen, das Du mit dem SAMBA Domain Server verbinden möchtest.

Füge den Benutzer "tom" mit dem Passwort "secret" der Samba und Linux Benutzerdatenbank hinzu.

net rpc user add tom -U root
net rpc user password tom "secret" -U root
smbpasswd -e tom

Laufwerke freigeben

Nun werde ich ein Laufwerk hinzufügen, auf das von allen Benutzern zugegriffen werden kann.

mkdir -p /home/shares/allusers
chown -R root:users /home/shares/allusers/
chmod -R ug+rwx,o+rx-w /home/shares/allusers/

Füge am Ende der Datei /etc/samba/smb.conf folgende Zeilen an:

[allusers]
comment = All Users
path = /home/shares/allusers
valid users = @users
force group = users
create mask = 0660
directory mask = 0771
writable = yes
Nun starten wir Samba neu:

/etc/init.d/samba restart


Installation von CUPS

apt-get install cupsys cupsys-client cupsys-driver-gimpprint defoma fontconfig foomatic-db foomatic-filters libcupsimage2 libexpat1 libfontconfig1 libfreetype6 libjpeg62 libpaper1 libpng12-0 libslp1 libtiff4 patch perl perl-modules ttf-bitstream-vera ucf

Um von meiner Arbeitsstation (IP 192.168.70) Zugriff auf mein Webinterface zu haben, werde ich Cups ändern, die auf die Server IP hören und Zugriff auf die IP 192.168.0.70 erlauben. Du wirst diese IP ändern müssen damit sie in Deine Netzwerkkonfiguration passt.

vi /etc/cups/cupsd.conf

Ändere die Zeile:

Listen localhost:631

zu:

Listen 192.168.0.70:631

und:

# Restrict access to the admin pages...
<Location /admin>
Order allow,deny
Allow localhost
</Location>

zu:

# Restrict access to the admin pages...
<Location /admin>
Order allow,deny
Allow 192.168.0.70
</Location>

und starte den Cups Daemon neu:

/etc/init.d/cupsys restart

Auf das Cups Webinterface ist nun von jedem Webbrowser meiner Arbeitsstation Zugriff gewährt:

http://192.168.0.100:631/

Nun kann ich mich auf dem Cups Interface mit dem Root Benutzernamen und Root Passwort anmelden.

Hinweis: Falls kein Linux Treiber für Deinen Drucker verfügbar sein sollte und Du diesen Drucker nur von Deiner Windows Arbeitsstation über SAMBA verwenden möchtest, kannst Du den Drucker-Hersteller "RAW" verwenden und den richtigen Treiber auf Deiner Windows Arbeitsstation installieren.

Wenn Du in Cups einen neuen Drucker erstellt hast, wirst Du ihn mit folgendem Befehl Samba hinzfügen müssen:

cupsaddsmb -a

Diese Anleitung ist für alle Howtoforge Mitglieder auch als vmware virtelle Maschine verfügbar.

Links

All trademarks belong to their respective owner.