Samba 4 Tipps

Mit Samba Windows Shares mounten
Windows Shares per Samba in die /etc/fstab einhängen
Samba Benutzerverwaltung
Samba Grundkonfiguration
Samba Freigaben Konfiguration
Samba Administrative Tools
Samba Gast Zugang



Mit Samba Windows Shares mounten

Temporäres einbinden :

smbclient -L //192.168.0.2

Zeigt mir die Shares der jeweiligen IP an.

und so mounte ich diese :
mount -t cifs -o username=Paul //192.168.0.2/D /home/platte2
mount -t cifs -o username=Paul,domain=domain.intra,rw,auto,nounix,dir_mode=0700,file_mode=0700,uid=paul,gid=paul //192.168.0.2/Paul$ /home/paul/mountpoint && echo "Laufwerk erfolgreich gemounted !" || echo "Fehler !"
nun wurde die Freigabe in /home/platte2 eingehangen.




Windows Shares per Samba in die /etc/fstab einhängen

typisches fstab Schema : "PARTITION" "MOUNTPOINT" "DATEISYSTEM" "MOUNT-OPTION" "DUMP / FSCK"

cat /etc/fstab

# Allgemein:
# //Server/Freigabe	Mountpunkt 	cifs 	Liste_der_Optionen				0 0
/dev/hda1		 /		ext3	defaults					1 1
/dev/hda2		 swap		swap	pri=42						0 0

//192.168.0.1/Logs /mnt/Logs cifs auto,dir_mode=0700,file_mode=0700,uid=paul,gid=paul,credentials=/home/paul/.smbcredentials 0 0

Eine .smbcredentials im eigenen Homeverzeichnis anlegen und folgenden Inhalt einfügen :

vi /home/paul/.smbcredentials

username=paul
password=meinpasswort
domain=DOMÄNENNAME

Damit die Datei nur vom Besitzer eingesehen werden kann, setzt man die Rechte entsprechend

chmod 600 /home/paul/.smbcredentials



Samba Benutzerverwaltung

Benutzerverwaltung : Wenn Sie einen Samba-Server konfiguriert haben, müssen Sie für jeden Benutzer der auf die Freigaben zugreifen darf einen lokalen Benutzer und einen Account in der Benutzerdatenbank von Samba einrichten. Samba hat in der Standardinstallation eine vom System getrennte Benutzerverwaltung, welche mit dem Befehl smbpasswd administriert wird:

smbpasswd -a username # Fügt den Benutzer username der Samba Datenbank hinzu und aktiviert diesen
smbpasswd username # Wird smbpasswd ohne Parameter aufgerufen, kann man das Passwort des angegebenen Benutzers ändern.
smbpasswd -x username # Entfernt den Benutzer username aus der Samba Datenbank
smbpasswd -d username # Deaktiviert den Benutzer username in der Datenbank
smbpasswd -e username # Aktiviert den vorher deaktivierten Benutzer username in der Datenbank wieder 

Bei der Installation von Samba wird leicht vergessen, dass weder die im System eingetragenen Benutzer noch deren Passwörter automatisch in die Benutzer-Datenbank von Samba übernommen werden.
Benutzer, die zur Datenbank von Samba hinzugefügt werden, müssen schon auf dem System als "normale" Benutzer vorhanden sein. Es ist ratsam, aber nicht erforderlich, für Samba
das gleiche Passwort wie das Systempasswort des Benutzers zu nehmen.

Falls man das Passwort der Samba-Freigabe an eine größere Gruppe verteilen will, so ist es sinnvoll dafür einen speziellen Account auf dem eigenen System anzulegen, der sich
weder einloggen kann, noch ein Homeverzeichnis hat, oder sonst etwas darf. Dies geschieht mit folgendem Befehl:

Durch das Deaktivieren eines Benutzers kann man für diesen den Zugriff auf Samba vorübergehend sperren, ohne dafür sein Passwort zu verändern oder seinen Eintrag zu löschen.



Samba Grundkonfiguration

Wichtige Optionen in der [global] Sektion :

security - Dieser Parameter bestimmt das Sicherheitslevel, mit dem Bereiche auf dem Server freigegeben werden und kann folgende Werte annehmen :

"user" - Ab Samba 2.0 ist der voreingestellte Defaultwert "user", was bedeutet, dass der Client einen gültigen Benutzernamen und ein Passwort übermitteln muss.
In der Praxis sieht das so aus, dass ein kleines Fenster aufpoppt und man aufgefordert wird, eben jene Daten einzugeben.

"share" - Dies ist die niedrigste Sicherheitsstufe, die man einstellen kann. Ein Client braucht hier nicht mal einen Benutzernamen übermitteln. Windows tut das trotzdem und übersendet den Benutzernamen des angemeldeten Benutzers in Windows.

"server" - Bei dieser Option werden Nutzerdaten mit den Daten auf einem weiteren Samba-Server
abgeglichen, schlägt dies fehl, wird auf den Modus "user" ausgewichen.

"domain" - Diese Option funktioniert nur unter einer Windows NT Umgebung und soll an dieser Stelle nicht weiter besprochen werden.
"ADS" - Diese Option brauchen wir wenn wir den Samba Server zum Domaincontroller machen wollen und soll an dieser Stelle nicht weiter besprochen werden.



Samba Freigaben Konfiguration

Allgemeine Freigaben werden direkt in die Datei /etc/samba/smb.conf an deren Ende eingetragen. Dazu wird zuerst in eckigen Klammern der Name
angegeben, unter dem die Freigabe im Netz verfügbar ist. In der nächsten Zeile folgt der Pfad zur freigegebenen Datei oder Ordner auf dem Server.

Parameter :

Parameter brauchen grundsätzlich nur dann angegeben zu werden, wenn ihr Wert vom Standardwert (Default) abweicht.

browseable = yes|no = Wenn die Option browseable = No gesetzt wurde, dann erscheint der share nicht in der Liste der freigegebenen Verzeichnisse in der Windows Netzwerkumgebung, steht
aber trotzdem zur Verfügung, wenn man den entsprechenden Pfad (\\Rechnername\Freigabename) angibt. Sobald "browseable = yes" gesetzt wird, ist die Netzwerkfreigabe für jederman sichtbar.
Standardmäßig steht browseable auf yes.

Speziell ist die Netzwerkfreigabe [homes]. Bei der Netzwerkfreigabe [homes] wird mit einem Benutzer-Platzhalter ("%U" und "%S") gearbeitet.
Es wird nur das Verzeichnis mit dem aktuellen Benutzer angezeigt. Alle anderen Netzwerkfreigaben sind zwar vorhanden, werden aber vom Samba nicht geliefert.

Die Angabe "guest ok = yes|no" bedeutet, dass dieses share ohne Passwort erreichbar ist. Stattdessen hätten wir auch schreiben können "public = yes".

available = yes|no = Mit dieser Option kann - wenn sie auf No gesetzt ist, ein share für den Augenblick abgeschaltet werden, ohne ihn aus der Datei /etc/smb.conf zu streichen oder
langwierig auszukommentieren. Standardmäßig ist available auf yes gestellt.

read only, writeable = yes|no = Die Optionen read only (auch als write ok bezeichnet) und writable (auch als writable bezeichnet) stellen in der Tat zwei Möglichkeiten dar, das Gleiche auszudrücken, allerdings von entgegengesetzten Ausgangspunkten aus. Standardmäßig steht read only auf yes und writeable auf no.

Sie können zum Beispiel eine der folgenden Optionen im Abschnitt [global] oder in einer speziellen Freigabe setzen :

read only = yes
writeable = no

Wenn beide Optionen entsprechend gesetzt sind, können Daten von der Freigabe gelesen, aber nicht auf sie geschrieben werden. Dies wäre dieselbe Einstellung wie die Default Werte !

Falls Sie Daten auf eine Freigabe schreiben wollen, müssen Sie in der Konfigurationsdatei für jede Freigabe ausdrücklich EINE der folgenden Optionen festlegen :

read only = no oder writeable = yes

Treten die beiden Optionen jeweils mehr als einmal auf, beachtet Samba für die Freigabe den letzten Wert, den es erkennt.

---

Vor jeder Veränderung der Datei /etc/samba/smb.conf sollte unbedingt eine Kopie der ursprünglichen Fassung angelegt werden. Vor dem Aktivieren überprüft man die Datei mit "testparm".

---

die smb.conf kann z.B. so aussehen :

[global]
	workgroup = WORKGROUP
	server string = Samba Server Version %v
	log file = /var/log/samba/log.%m
	max log size = 50
	security = user
	cups options = raw

[homes]
        comment = Home Directories
        browseable = no
        writable = yes
;       valid users = %S
;       valid users = MYDOMAIN\%S

[printers]
        comment = All Printers
        path = /var/spool/samba
        browseable = no
;       guest ok = no
;       writable = no
        printable = yes
        
[karl]
        path = /home/karl
        read only = no
;       browseable = yes
        valid users = karl



Samba Administrative Tools

Um die Konfigurationsdatei /etc/samba/smb.conf auf eine gültige Syntax überprüfen zu lassen, wird testparm verwendet:

testparm

Läuft die Ausgabe korrekt durch, sind zumindest keine Syntaxfehler enthalten.

---

Sambauser anzeigen :

pdbedit -L # Alle Sambauser anzeigen
pdbedit -L -v | grep karl # Sambauser karl ausführlich anzeigen

---

Ob ein Samba-Benutzer deaktiviert ist können Sie mit dem folgenden Befehl feststellen. Wird hier ein D angezeigt ist der Benutzer in der Samba-Benutzerdatenbank deaktiviert.

[root@centos5 ~]# pdbedit -L -v -u karl | grep Flags
Account Flags:        [DU        ]



Samba Gast Zugang

Samba kann auch "Gästen", die nicht in der Benutzer-Datenbank eingetragen sind, den Zugang zu einzelnen Freigaben ohne Passwort gestatten. Hierzu muss bei diesen Freigaben
jeweils die Zeile:

guest ok = yes

oder gleichbedeutend

public = yes

eingetragen sein (Standardwert ist no). Bei allgemeinen Freigaben (s.u.) ist dieser Eintrag grundsätzlich möglich; ob auch einzelne Benutzer bei ihren persönlichen Freigaben (s.u.) den
Gast-Zugang gestatten dürfen, legt der Parameter usershare allow guests im Bereich [public] von smb.conf fest. Standardwert ist hier:

usershare allow guests = yes

Doch nicht jeder kann sich automatisch bei Samba als "Gast" anmelden. Wer als "Gast" gilt, legt der Parameter map to guest im Abschnitt [global] von smb.conf fest. Üblich ist

map to guest = bad user

Als bad user gilt jeder Benutzer, der nicht in der Samba-Datenbank des Servers eingetragen ist. Wem dann die Ordner und Dateien gehören, die ggf. von Gästen angelegt werden, legt der
Parameter "guest account" fest. Üblich ist:

guest account = nobody

Unter diesem Namen melden sich auch Windows sowie GNOME und KDE beim Zugriff auf Freigaben mit erlaubtem Gast-Zugang an.

Gäste haben beim Zugriff auf Freigaben höchstens die Rechte, die ihnen auch auf dem Server selbst zustehen würden. Es ist deshalb durchaus möglich, dass Gäste keine
Schreibrechte haben, obwohl bei der Freigabe:

writeable = yes

eingetragen ist.

---

Besondere Beachtung bei der Integration von Windows- und Linux-Clients ist die Behandlung von Dateirechten. Die unter Windows erstellten Dateien müssen entsprechend den Linux-Benutzern und den zugehörigen Rechten zugeordnet werden. Für diese Zwecke gibt es in der smb.conf einige Parameter für die Konfiguration der Rechte bei der Erstellung von Dateien :

create mask = 0644
directory mask = 0755

Diese beiden Zeilen legen jene Rechte fest, die Dateien und Ordner erhalten, wenn sie am Share angelegt werden. Die Zahlenwerte gleichen dabei jenen oktalen Werten, die auch beim Befehl "chmod" zum Einsatz kommen. Mit diesen standard-vergebenen Rechten kann sichergestellt werden, dass die Dateien und Ordner beim Erstellen die gewünschten Rechte erhalten.

Für die Beschränkung eines Shares auf einzelne Gruppen kann

valid users = @smbusers

eingesetzt werden. Nun können nur mehr Mitglieder der Gruppe "smbusers" auf das Share zugreifen.

Wichtig ist, dass letztendlich immer die entsprechenden Linux-Dateirechte am Server zum Zuge kommen. Das heißt, eine entsprechende Konfiguration der User-Rechte direkt am Server ist sicher die beste Sicherheitsmaßnahme, da die Dateirechte nicht von einer Samba-Konfiguration umgangen werden können.