Linux Fileserver (alte Version)

[stextbox id=“warning“ caption=“Achtung“]Dies ist die alte Version meines tutorials, dass nur noch zu Dokumentationszwecken hier steht![/stextbox]

Die neue Version findet sich unter dem Kapitel: Linux Fileserver

Inhalt

Vorwort

Es ist wieder mal soweit; ich habe etwas freie Zeit und brauche wieder mal ein neues Spielzeug! 😉
Da ich schon länger geplant hatte zuhause einen Fileserver zu betreiben um meine Workstations etwas zu entlasten und die Daten der Familie zentral zu halten war ein Fileserver die richtige entscheidung. Daraus ergeben sich folgende Vorteile:

  • Zentrales Daten Backup- und Sicherheit
  • Flexible Anpassung de Speicherplatzes
  • Einfache Speichererweiterung
  • Kann für weitere Netzwerk-Dienste eingesetzt werden
    </UL>

Voraussetzungen

Folgende Voraussetzungen stellte ich an meinen Fileserver:

  • Preis unter 600 EUR
  • RAID-Level 1 Verbund von zwei 300GB Festplatten
  • Linux als Betriebssystem

Demzufolge gestaltete sich meine Einkaufsliste wie folgt:

  • 1 x AMD Sempron 2600+, BOX; CHF 86.00
  • 1 x MSI K8T NEO-FIS2R, VIA K8T8; CHF 120.00
  • 2 x Maxtor DiamondMax, 300 GB; CHF 189.00
  • 1 x MSI GeForce MX4000-T64, 64M; CHF 42.00
  • 1 x Kingston ValueRAM 512MB DDR; CHF 80.00
  • 1 x Antec SLK3000B, Hochflexibl; CHF 77.00

Total CHF: 783.00

Installation

Nachdem alles ins Gehäuse eingebaut und angeschlossen ist, wird das System zum ersten mal gestartet und auch sogleich im BIOS rumgewerkelt und munter deaktiviert, was man nicht braucht… g
Nach dem Starten der erste Schreck: Das angeschlossene CD-ROM Laufwerk wird nicht erkannt.

Nach einigen Versuchen wieder zurück ins BIOS gekehrt; AHA, da habe ich wohl etwas zu voreilig den EIDE Port deaktiviert… Nach dem reAktivieren wird das CD-ROM erkannt, doch dann schon der nächste „Stolperstein“: Der onBoard Promise RAID-Controller wird nicht erkannt. Dies bringt uns zu einem wichtigen Thema, nämlich:

Onboard RAID-Controller oder komplett Software RAID?
Hier muss ich, nach mehreren Negativen Erfahrungen mit den onboard RAID Controllern sagen: Macht es nicht! Die „Hardware“ RAID Controller auf dem Mainboard sind keine echten Hardware RAID Controller, sondern sog. „FakeRAID“ Controller; bei diesen Controllern im Niedrig preis Segment (dazu zählen sämtliche onboard RAID Controller, ebenso wie günstigere „RAID Karten“) liegt die RAID Logik nicht im BIOS sondern bei der CPU. Dies heisst, dass man einen Treiber installieren muss, das dise vom Betriebssystem überhaupt erkannt werden. Und diese Treiber sind bestenfalls noch für Windows brauchbar; falls man denn für seine Linux Distribution einen Treiber für den onboard RAID Controller findet ist dieser meist nicht nur mehr als mies programmiert, sondern es gibt auch kein überwachsungstool für den RAID Controller unter Linux, was das RAID grundsätzlich etwas sinnlos macht.

Wir werden nun also den onboard RAID Controller NICHT nutzen und stattdessen mit dem Linux mdm ein md-Soft-RAID erstellen.

Ich partitioniere dieses so:

 Filesystem Size Used Avail Use% Mounted on
 /dev/sda2 1012M 116M 845M 13% /
 /dev/sda1 76M 9.1M 64M 13% /boot
 /dev/sda3 178G 33M 169G 1% /files
 /dev/sda8 4.9G 34M 4.6G 1% /home
 /dev/sda5 49G 33M 46G 1% /install
 none 125M 0 125M 0% /dev/shm
 /dev/sda6 29G 33M 28G 1% /programs
 /dev/sda7 5.0G 33M 4.7G 1% /server
 /dev/sda11 289M 8.1M 266M 3% /share
 /dev/sda12 99M 4.1M 90M 5% /tmp
 /dev/sda9 1012M 458M 503M 48% /usr
 /dev/sda10 487M 42M 421M 9% /var

Bei den Packages wähle ich nur die folgenden aus (und deaktivere alle anderen): Samba, Bind, dhcpd, apache, php-mysql, gcc

Die Installation verkläuft dann auch Problemlos und nach einiger Zeit kann ich mich das erste mal am Fileserver anmelden.

Konfiguration

Nun sollte man als erstes ein oder zwei systeme im Internet und auch im Netzwerk anpingen:

# ping 10.0.0.10
# ping heise.de
# usw.

Klapp hier etwas nicht (insbesondere wenn auch die Rechner im internen Netzwerk nicht anpingbar sind, sollte man zuerst dieses Problem lösen. Es erspart einem ne menge ärger.
In diesem Falle sollte man mal ein

ifconfig

machen. Hier muss die Netzwerkkarte (eth0) erkannt sein und eine IP haben. Diese IP muss natürlich auch von den anderen systemen anpingbar sein.
Die Netzwerkkonfiguration sollte in den meisten Fällen aber schon während der Installation einwandfrei klappen, weshalb hier jetzt nicht näher darauf eingegangen wird.

SAMBA Einrichten

Angenommen, der Fileserver lässt sich von aussen anpingen und kann auch die anderen systeme im Netzwerk erreichen, machen wir uns an die SAMBA-Konfiguration. Hier gibt es zwei Möglichkeiten: Samba als reiner Fileserver in einer Arbeitsgruppe und SAMBA als Domain Controller. -Letzteres hat den Vorteil, dass man dann di eganze user/passwortverwaltung auf dem SAMBA Server hat, sich an einer „richtigen“ Domäne anmelden kann und dann auch sein Benutzerprofil an jedem PC an dem man arbeitet laden kann. Die zweite Lösung ist etwas komplizierter zu konfigigurieren, aber auch nicht sehr schwierig. Ich werde hier zuerst SAMBA als reinen Fileserver beschreiben und Optional die Änderungen, die man dazu machen muss um aus dem Fileserver einen NT Domaincontroller zu machen.

Den ersten schritt müssen jedoch alle ausführen:

SAMBA als Fileserver

Zuerst editieren wir die Datei ’smb.conf‘:

vi /etc/samba/smb.conf

Diese muss die folgenden Anweisungen enthalten; bei allen anderen genügt in den meisten Fällen der Standard:

#============================ Konfiguration ==============================
Hier wird der Server konfiguriert
[global]
workgroup = MEINE.DOMAIN.TLD
netbios name = fileserver
 
# server string ist das, was nacher im "Beschrebungs-Feld" des Ordners angezeigt wird.
server string = Samba Server %v running on %L
 
# Charset Options
unix charset = CP850
 
# Bei Samba als Domaincontroller macht diese Anweisung sinn
time server = Yes
 
# Falls du kein NT Domaincontroller im Netzwerk hast, der die Benutzer
# verwaltet ist security immer "user" (auch wenn samba ein Domain Controller wird!)
security = user
 
# Passwort Einstellungen
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
unix password sync = Yes
passwd program = /usr/bin/passwd %u
passwd chat = <em>New</em>password:<em> %nn </em>Retype<em>new</em>password:<em> %nn </em>passwd:<em>all</em>authentication<em>tokens</em>updated<em>successfully.</em>
 
 
# Dies ist der relevante Teil wenn SAMBA ein Domain Controller wird:
local master = no
os level = 33
domain master = no
preferred master = no
domain logons = no
enable privileges = yes
 
 
# %L steht für den netbios namen des Servers, %U ist der username
logon path = %Lprofiles%U 		# Profilverzeichniss
logon drive = H:			# Home-Netzlaufwerk des Users
logon home = %L%U			# Pfad des Home-Netzlaufwerkes
logon script = %U.bat			# Logon Script
 
dns proxy = no
 
# Linux typische Dateien vor Windows verstecken (sonst sieht man immer solche "lost+found" und
# .datei Dateien, mit denen Wndows sowiesp nix anfangen kann.
hide dot files = yes
veto files = /lost+found/
 
# Privilege aktivieren (damit man dem Benutzer erweiterte Domänenrechte zuweisen kann)
enable privileges = yes
 
#============================ Freigaben ==============================
Und hier die Netzlaufwerk Freigaben
 
Die ersten 3 Freigaben (HOMES, NETLOGON und PROFILES) sind zwingend nötig, wenn
SAMBA nacher Domain Controller wird, ansonsten Optional
 
# Heimverzeichnisse des Benutzers (z.B. /home/hmuster)
[homes]
   comment = Home Directories
   browseable = no
   writable = yes
   veto files = /.*/lost+found/
 
# Verzeichniss der NT Logon Scripts
[netlogon]
  comment = Network Logon Service
  path = /home/netlogon
  guest ok = yes
  writable = no
  share modes = no
  write list = svarco
 
# Hier kommen die benutzerprofile hin
[profiles]
   path = /home/profiles
   browseable = no
   guest ok = yes
   read only = no
 
 
# Hier können dann die Freigaben nach belieben hinzugefügt werden.
Unten ist das Beispiel auf die Partitionierung meines Servers zugeschnitten.
 
[share]
   comment = Share-laufwerk (hier haben alle user Vollzugriff)
   path = /share
   public = yes
   read only = no
   write list = @family
 
[files]
   path                 = /files
   comment              = Dataserver (ext3)
   guest ok             = no
   writeable            = yes
   browseable           = yes
   valid users          = user1, user2, user3
 
[install]
   path                 = /install
   comment              = Install Directory (Filesystem: ext2)
   read only            = no
   public               = yes
 
[server]
   path                 = /server
   comment              = Server-Daten (ext3)
   guest ok             = no
   writeable            = yes
   browseable           = yes
   valid users          = user1
 
[programme]
   path                 = /programs
   comment              = Programme (ext3)
   guest ok             = no
   writeable            = yes
   browseable           = yes
   valid users          = user1

Teste jetzt erstmal, ob du dich mit den netzlaufwerken verbinden kannst und Dateien schreiben/lesen. Wenn nicht, bring das zuerst in Ordung.

SAMBA als Domain Controller

Erst wenn alles klappt, solltest du samba als Domain Controller konfigurieren.

Dazu sind zwei zusätzliche Schritte Notwendig:

Editiere nochmals die Datei: ‚/etc/samba/smb.conf‘

vi /etc/samba/smb.conf

Dann ersetze die folgenden Anweisungen:

local master = no
os level = 33
domain master = no
preferred master = no
domain logons = no

durch:

local master = yes
os level = 33
domain master = yes
preferred master = yes
domain logons = yes

Als zweites musst du nun für jeden User, der sich am Server Anmelden will einen Linux user erstellen:

useradd user1
useradd user2
useradd user3

usw.
Nun muss man alle diese User noch Samba bekannt machen mittels:

smbpasswd -a USERNAME

Nachdem man die User erstellt hat, muss man noch ein sogenntes „Maschinen Vertrauenskonto“ erstellen.

Dafür musst du in Linux für jeden PC einen user machen, der genau gleich heisst wie der Netzwerknamen des PCs mit einem ‚$‘ dahinter.

Wenn also der PC im Wohnzimmer den netzwerknamen ‚WOHNZIMMER_PC‘ hat, so muss das „Vertrauens-User-Konto“: ‚WOHNZIMMER_PC$‘ heissen.

Am besten machst du für diese erstmal eine eigene usergruppe:

groupadd -g 101 rechner

(Die GID „101“ darf unter: /etc/group noch nicht existieren, sonst hier eine andere eintragen!)
Alternativ zu groupadd, kann man auch einfach die Zeile:

rechner:x:101:

in die Datei /etc/group hinzufügen.

Dann in Linux ein Maschinenkonto erstellen und zu Samba hinzufügen
adduser WOHNZIMMER_PC$ -g 101 -d /dev/null -s /bin/false
smbpasswd -a -m WOHNZIMMER_PC$

Hinweis: Bei einigen Linux-Distributionen wird man bei der Eingabe von adduser WOHNZIMMER_PC$ Probleme bekommen wegen des Dollarzeichens; es erscheint dann etwa die Meldung „Invalid Username“. Dieser fehler liegt nur am adduser-Script, Linux selbst kann sehr gut mit ‚$‘ im Namen umgehen.
In einem solchen fall muss man die Maschinenkonten manuell hinzufügen. Dazu trägt man einfach in der Datei: „/etc/passwd“ zuunterst sowas ein wie:

WOHNZIMMER_PC$:x:504:101:KOMMENTAR:/dev/null:/bin/false

Dabei steht die erste Zahl (hier: 504) für die User-ID; diese kann Grundsätzlich frei bestimmt werden, darf aber noch nicht existieren. Die Zweite Zahl (101) ist die Gruppe des Maschinenkontos. (Hier das Zuvor bestimmte Gruppenkonto „rechner“)

Zuletzt braucht man noch ein admin Konto zu Samba hinzufügen (z.B. ‚root‘)
smbpasswd -a root (oder ein anderer admin user)

Nun sollte man mit dem admin account der Domäne beitreten können.

Benutzer spezielle Domänen rechte zuweisen

Die Option „enable privileges = yes“, die wir weiter oben gesetzt haben bewirkt, dass man nun einzelne Benutzer mit besonderen Domain(-admin) Rechten ausstatten kann.
Dies geht über „net rpc“.

Will man z.B. einem Benutzeraccount „dadmin“ erlauben Maschinen zur Domäne hinzuzufügen genügt folgendes auf der Kommandozeile:

 net rpc rights grant 'MEINE.DOMAIN.TLDdadmin' SeMachineAccountPrivilege

Überprüfen kann man das übrigens mit:

net rpc rights list 'MEINE.DOMAIN.TLDdadmin'

und

net rpc rights list

gibt eine Übersicht über die Verfügbaren Rechte aus.

Wenn man ohne fehler bis hierher gekommen ist, hat man nun einen funktionierenden Linux Fileserver.

Weiter gehts mit dem Kapitel: Zusätzliche Services Installieren.

One thought on “Linux Fileserver (alte Version)”

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert