smb0a0.png

Edit v4.001 from 2007-06-11 to 2019-10-15 by SBa+FSc+TSc

Samba-Server

Dieser Artikel beschreibt die Konfiguration, Rechtestruktur und Rechteverwaltung eines Samba-Servers.

Einleitung

Ein Samba-Server wird verwendet, um Ordner- und Drucker Freigaben von einem Linux-System für ein Windows-System bereitzustellen. Diese Freigaben werden im Windows-System als Netzlaufwerke eingebunden. Die Freigaben werden über die Konfigurationsdatei smb.conf erstellt.

Eine Samba-Freigabe bildet die Linux Rechte einer Ordnerstruktur auf Windows ab. Dabei ist man im klassischen Fall auf die Standard Linux Dateirechte beschränkt.

Samba besteht aus zwei Systemdiensten, die smbd und nmbd heißen.

Rechteverwaltung

Bei einer Datei oder Ordnerzugriff schaut Samba in seiner Konfigurationsdatei, ob der Benutzer die Aktion ausführen darf. Danach schaut Samba im Linux Dateisystem, ob es die Aktion ausführen kann und wenn beide Konditionen positiv ausfallen, wird die Aktion ausgeführt.

Komplexere Rechtestrukturen, wie mehrere Gruppen mit unterschiedlichen Rechten, können im Linux Dateisystem nicht ohne ACLs (Access Control Lists) verwirklicht werden. Daher müssen bei Bedarf für solche Ordner separate Samba-Freigaben eingerichtet werden, da man mit Samba solche Rechtestrukturen für eine Freigabe erstellen kann. Hinweis: Solche Freigaben können nicht geschachtelt werden.

Konfiguration

Der direkte Weg, einen Samba Server zu konfigurieren, ist die Konfigurationsdatei smb.conf mit einem Editor zu bearbeiten. Alternativ ist es auch möglich die Serverkonfiguration über das Internet mit webmin oder swat vorzunehmen.

Nachfolgend kommt ein Beispiel mit einer Freigabe:

  # /etc/samba/smb.conf Konfigurationsdatei

# Globale Parameter
[global]

  # Arbeitsgruppe festlegen
  workgroup = ARBEITSGRUPPE

  # Netzwerknamen festlegen
  netbios name = SAMBA_SERVER

  # Passwort Verschlüsselung aktivieren
  encrypt passwords = Yes

  # Priorität im Windows Netzwerk
  os level = 2

# Projekt Verzeichnis Freigabe Parameter
[projekt]

  # Kommentar
  comment = Projekt Verzeichnis

  # Pfad der Freigabe
  path = /export/projekt

  # Das sind die Benutzer und Gruppen, die überhaupt auf eine
  # Freigabe zugreifen könne.
  valid users = @lg_team

  # In write list stehen die Benutzer und Gruppen, die auf die Freigabe
  # und deren Unterordner von der Samba Seite schreiben können.
  write list = @lg_team

  # Benutzer mit Administratorrechten für die Freigabe.
  admin users = zeus

  # Rechte, mit denen Dateien und Verzeichnisse erstellt werden
  force create mode = 775

  force directory mode = 775
     

Gruppeneinteilungen:

  • lg_team: uTeam1, uTeam2, uTeam3, uTeam4, uTeam5, uTeam6
  • lg_proj: uTeam1, uTeam2, uSonst1
  • lg_edv: uTeam1, uTeam3
  • lg_kfm: uTeam5, uTeam6, uSonst2
  • lg_sonst: uSonst1, uSonst2

Die Verzeichnisse in dem Projektverzeichnis sind mit folgenden Berechtigungen versehen:

/export/projekt
drwxrwxr-x u:root g:lg_proj .
  Das ist das Samba-Freigabeverzeichnis.
  Die Gruppe lg_proj hat Linux Lese- und Schreibrechte.
  So können alle aus dieser Gruppe
  (die AUCH in lg_team Mitglied sind)
  Lesen und Schreiben: [uTeam1, uTeam2].
  Alle anderen, die auf die Samba-Freigabe Zugriffsrechte
  haben (lg_team) besitzen nur Leserechte:
  [uTeam3, uTeam4, uTeam5, uTeam6].
  Die Benutzer [uSonst1] und [uSonst2] können auf das Verzeichnis und
  die Unterverzeichnisse gar nicht zugreifen,
  da sie NICHT in der Samba Konfiguration eingetragen sind (valid users).

/export/projekt/bibo
drwxrwxr-x u:root g:lg_edv bibo
  Mitglieder der Gruppe lg_edv haben in diesem Verzeichnis Schreibrechte
  [uTeam1, uTeam3].
  Alle anderen in der Gruppe lg_team können NUR lesend auf
  "Bibo" zugreifen [uTeam2, uTeam4, uTeam5, uTeam6].

/export/projekt/kfm
drwxrwxr-x u:root g:lg_kfm kfm
  Auf diesen Ordner haben alle Benutzer der Gruppe lg_team
  Leserechte [uTeam1, uTeam2, uTeam3, uTeam4].
  Die Benutzer, die in lg_team UND lg_kfm sind,
  haben hier Schreibrechte [uTeam5, uTeam6].

/export/projekt/linux
drwxrwx--- u:root g:lg_proj linux
  In diesem Ordner haben nur die Benutzer Lese- und Schreibrechte,
  die Mitglieder der Gruppe lg_team UND Mitglieder der Gruppe lg_proj sind
  [uTeam1, uTeam2].

/export/projekt/temp
drwxrwxrwx u:root g:lg_team temp
  In diesem Ordner können alle Benutzer,
  die auf die Samba-Freigabe Schreibrechte haben,
  schreiben [uTeam1, uTeam2, uTeam3, uTeam4, uTeam5, uTeam6].
    

Um Änderungen an den Konfigurationsdaten zu übernehmen, ohne den Server neu zu starten, muss das Kommando killall -HUP smbd nmbd ausgeführt werden. Die Änderungen auf den Windows-Clients werden erst nach Neueinbindung der Freigabe oder Neuanmeldung wirksam.

Bemerkungen:

Die Konfiguration kann mit dem Befehl testparm auf Syntaxfehler untersucht werden.

Die TCP-Ports 135 und 427, wie die UDP-Ports 138 und 500 sollten in der Firewall entsperrt sein.

Benutzerverwaltung

Um einen Nutzer in Linux anzulegen, verwendet man den folgenden Befehl:

useradd -c "Neuer MA" -d /home/schmidt -m -g lg_team -G lg_edv,lg_kfm schmidt

Dieser Befehl legt einen Linux-Benutzer mit dem Namen schmidt an. Dieser hat das Heimverzeichnis /home/schmidt, die Hauptgruppe lg_team und Gruppenmitgliedschaften bei lg_kfm und lg_edv.

Um einen Nutzer in Samba anzulegen, verwendet man den folgenden Befehl:

smbadduser schmidt

Dieser Befehl legt einen Samba-Benutzer mit dem Namen schmidt an. Will man einen Namen wieder entfernen, was bei Primären Domain Controller öfter vorkommt, da sich hier die Arbeitsstation selbständig bei Samba mit ihrem Namen$ eintragen, ist wie folgt vorzugehen. Die Station, z.B. IBM049 soll wieder aus der Domain entnommen werden:

smbpasswd -x IBM049$

Das Entfernen des Passwortes von der Station entfernt diese selbst auch!

Um ein Passwort im System zu ändern, muss der Befehl

passwd schmidt

aufgerufen werden.

Um ein Passwort in Samba zu ändern, muss der Befehl

smbpasswd schmidt

aufgerufen werden.

Die Benutzer und Gruppen des Systems können auch direkt bearbeitet werden. Dazu ruft man die Dateien /etc/passwd und /etc/groups auf. Vorsicht, diese Dateien enthalten alle Systembenutzer und Gruppen, also vorher eine Sicherheitskopie anlegen!