Samba

Aus Mediawiki Ferdinand Gruber
Zur Navigation springen Zur Suche springen

LOG global

  • Fehlermeldungen in /var/log/messages - 27.03.2010
smb ports = 139

Damit sollen Fehlermeldungen der Art "Socket ist nicht verbunden ..." verschwinden.

  • Gruppenspezifisches Loginscript - 13.09.2009
logon script = login.%g.bat

Es gibt jetzt mehrere Loginscripte: login.users.bat, login.hslehrer.bat, ...

Die Windows Netzlaufwerke werden gruppenspezifisch gemappt.

Jedes Loginscript ruft dann die Datei printers.bat auf.

Nicht für jede Gruppe gibt es ein eigenes Loginscript. Für manche Gruppen muss daher ein Link zu einem existierenden Loginscript angelegt werden:

# Beispiel
cd /samba/netlogon/
ln -s login.users.bat login.h_schueler.bat 
  • Socket Options zur Performance Steigerung

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 SO_KEEPALIVE

  • Preexec Script - 10.10.2008

[netlogon]

  comment = Network Logon Service
  path = /samba/netlogon
  write list = root, grfe, hs
  browseable = No
  root preexec = /usr/local/bin/samba_login.sh %u %m

Das Script wird mit root-Rechten bei der Verbindung des Users mit der Freigabe Netlogon ausgeführt. Es schreibt in eine Logdatei, wer sich bei diesem PC angemeldet hat. Die Logadateien sind in /samba/netlogon/log.

# /usr/local/bin/samba_login.sh
# ------------------------------------------
#!/bin/bash
# Eingabeparameter: $1: Benutzername
#                   $2: NetbiosName des PC
# ------------------------------------------
datum="`date +%A'  '%d.%m.%Y`"
zeit=`date +%T | cut -c1-5`
log=$datum'   '$zeit' ---  '$1
echo $log >> /samba/netlogon/log/$2.log

Besondere Shares

share

08.01.2008

create mask = 775 

geändert auf

create mask = 755

Grund: Konfigurationsdateien von Schülern, z.B. im Oriolus sollen nur für den Benutzer änderbar sein.

Projekte Verzeichnis

  • Gruppen S-Bit setzen
cd /daten
chgrp hs_lehrer projekte
chmod g+s projekte -R

Damit ist sichergestellt, dass (unabhängig von Samba) jede neue Datei der Gruppe hs_lehrer gehört. Mitglieder der Gruppe hs_lehrer können die Dateien bearbeiten.

  • Share Projekte definieren
[projekte]
   comment = Projektverzeichnis
   path = /local/daten/projekte
   read only = No
   create mask = 0665
      # Die Gruppe bekommt Schreibrecht
      # Das Projektverzeichnis gehoert der Gruppe hs_lehrer
      # Fuer das Projektverzeichnis ist das Gruppen S-Bit gesetzt
   directory mask = 0777
   force directory mode = 1770
      # Sticky Bit auf neues Verzeichnis setzen
      # Trotz Schreibrecht im Verzeichnis wird damit Loeschen und Umbenennen verhindert.

Das Sticky Bit verhindert das Löschen und Umbenennen von Dateien in diesem Verzeichnis, obwohl Schreibrechte für alle gesetzt sind. Dieses Feature wird automatisch auf neu angelegte Verzeichnisse vererbt.

  • Sticky Bit

Das ist ein Verzeichniseintrag mit gesetztem Sticky Bit:

drwxrwxr-t 2 root hs_schueler  4096 19. Okt 15:21 Englisch Ritz

Manuelles Setzen des Sticky Bit bei Verzeichnissen

find . -type d -exec chmod +t {} \;

SAMBA Server übersiedeln

net getlocalsid 

liefert die SID der Domäne.

net setlocalsid 

Damit kann man die SID der Domäne neu setzen.

Dokumentation

  • Installation

Paket samba-doc muss extra installiert werden, am besten mit YAST.

  • Workaround

Wenn trotz installiertem samba-doc keine Hilfedateien gefunden werden, hilft folgender Link:

ln -s /usr/share/doc/packages/samba/htmldocs/manpages /usr/share/samba/swat/help/manpages
  • Zeichenketten Substitutionen

Zeichenkettensubstitutionen von Samba Samba kennt eine Menge von Zeichenkettensubstitutionen, die jeweils mit einem Prozentzeichen beginnen und vom Server durch eine bestimmte Zeichenfolge ausgetauscht (substituiert) werden. So ist es z.B. möglich, userbezogene Pfade zu setzen, wie in

Samba 2.0 unterstützt die folgenden Substitutionen:

  • %S
Der Name des aktuellen shares - sofern es einen gibt.
  • %P
Das Wurzelverzeichnis des aktuellen shares - sofern es einen gibt.
  • %u
Der Name des Users, der die Anfrage macht.
  • %g
Name der primären Gruppe des Users %u.
  • %U
Session User Name - Der Name, den der Client angab, nicht notwendigerweise der, den er dann bekommen hat.
  • %G
Name der primären Gruppe von %U
  • %H
Das Homeverzeichnis des Users %u
  • %v
Die Versionsnummer von Samba
  • %h
Der Internet Hostname des Rechners, auf dem Samba läuft.
  • %m
Der NetBIOS Name des Windows-Clients - Sehr nützlich
  • %L
Der NetBIOS Name des Servers. Das erlaubt es, unterschiedliche Konfigurationen anzubieten, je nachdem, wie der Server vom Client angesprochen wurde.
  • %M
Der Internet Name der Client-Maschine
  • %N
Der Name des NIS Home Directory Servers.
  • %p
Der NIS Pfad des Homedirectories des aktuellen shares.
  • %R
Der SMB-Protokoll-Level nach dem Handshake. Eins von CORE, COREPLUS, LANMAN1, LANMAN2 oder NT1.
  • %d
Die Prozess ID des aktuellen Server-Prozesses.
  • %a
Die Architektur der Client-Maschine. Nicht hundertprozent verlässlich. Eins von Samba, WfWg, WinNT, Win95 und UNKNOWN.
  • %I
Die IP-Adresse der Client-Maschine.
  • %T
Aktuelles Datum und Uhrzeit

SWAT

  • SWAT aktivieren

SWAT ist eine Abkürzung für Samba Web Administration Tool. Voraussetzung ist ein installierter Webserver (Apache2). SWAT wird über die Internetdienste Xinetd aktiviert. Dies führt man am einfachsten mit YAST / Netzwerkdienste durch. In der angezeigten Liste die SWAT Zeile aktivieren.

  • Änderungen an der Datei /etc/xinetd.d/swat
# only_from = 127.0.0.1
  • Firewall konfigurieren
Port 901 freischalten
  • Hilfedateien

Falls die Hilfedateien nicht geladen werden können, folgenden Link anlegen:

cd /usr/share/samba/swat/help
ln -s /usr/share/doc/packages/samba/htmldocs/manpages-3 manpages

SAMBA Kommandozeilen Tools

smbmount

  • Samba Share mounten
smbmount //server/share /mnt -o username=domain\username
  • Linux als Samba Client konfigurieren

Damit von einem Linuxrechner Zugriff auf Freigaben eines SAMBA Servers möglich ist, muss die Firewall angepasst werden. Zusätzlich im Modul Firewall / Broadcast die Broadcast-Antwort für Samba Browsing akzeptieren, sonst wird die Windows-Arbeitsgruppe bzw. Domäne unter Linux nicht automatisch gefunden.

smbclient

  • Shares auflisten, die auf einem Server angeboten werden:
smbclient -L server
  • Anmeldung als user an einem Samba Server

Folgendes Beispiel testet die Anmeldung des Users "chri" auf dem Server "localhost"

smbclient -L localhost -U chri
  • Anmeldung an einer Freigabe
smbclient -U hs_user //server/projekte

Jetzt kann man Befehle vergleichbar mit FTP eingeben

smbstatus

  • Angemeldete Benutzer ausgeben:
smbstatus -b

rpcclient

Programm zur Verwaltung des Samba Servers. Das Programm hat eine eigene Shell. Man kann aber auch Kommandos mit der Option -c als Parameter mitgeben.

# Beispiele
rpcclient localhost -U root%passwort -c enumprinters
rpcclient localhost -U root%passwort -c enumdrivers
rpcclient localhost -U root%passwort -c "deldriver \"Brother HL-1450 series\""

Troubleshooting

  • Ändern der Schnittstelle (Netzwerkkarte) am Server

Wenn man eine andere Netzwerkkarte verwendet, muss man anscheinend mit YAST "Samba Server" den Firewall Port öffnen. Warum, weiß ich nicht, aber es funktioniert.

  • Fehlermeldung wegen rlimit_max

Der Befehl testparm meldet folgenden Fehler

rlimit_max (1024) below minimum Windows limit (16384)

Lösung: Es muss in die Datei /etc/security/limits.conf folgende Zeile hinzugefügt werden:

*  -  nofile  16384
  • Firewall am Samba Server

Konfiguration mit YAST Modul Firewall:

Folgende Dienste müssen am Server erlaubt werden: Samba Server, Samba Client, Netbios Server

  • Account Datenbank

Anscheinend ist es bei neueren Samba Versionen notwendig, die Account Datenbank zu definieren, wenn man smbpasswd verwenden will. Die Verwendung von smbpasswd zur Authentifizierung ist offensichtlich veraltet und muss daher in der Datei /etc/samba/smb.conf explizit angegeben werden.

[globals]
passdb backend = smbpasswd
  • Anzeige der Drucker in der Windows Netzwerkumgebung "Drucker und Faxgeräte" stimmt nicht.

Normalerweise sollte die Liste der installierten CUPS Drucker mit der von Windows angezeigten Liste übereinstimmen. Sollte dies nicht der Fall sein, denn folgende Datei löschen:

/var/lib(samba/ntprinters.tdb

Nach Neustart von SAMBA wird die Datei wieder erstellt mit den richtigen Informationen aus CUPS