Wiki/File-Share/Samba.md
2023-12-20 16:30:40 +01:00

12 KiB

Samba cheat sheet (EN)

Install dependencies for samba:

sudo apt install samba

Config samba server

Edit /etc/samba/smb.conf. There are a lot of options here. Here is a basic share configuration. Add it to the end of the file.

[myshare]
comment = This is my share
path = /path/to/share/directory
browseable = yes
read only = no
guest ok = no
writable = yes

Restart samba service

systemctl restart smbd

To connect to your share, unless you are just using guest access, you need to set up Samba user accounts

smbpasswd -a {username [root, user]}

home directories

If home directories for individual users are set up on the server in the system folder /home/, all of them can be shared by a single entry in the [homes] section. The necessary settings for this are already prepared. To enable this collective sharing of all home directories, you just have to remove all semicolons ";" in front of the entries.

[homes]
comment = home directories
browseable = no
valid users = %S
writeable = yes
create mode = 0600
directory mode = 0700

The home directories are shared under the name of the respective user, but not displayed on the network because of browseable = no. Because of valid users = %S only the user with the matching name has access; other users cannot see, read, or write to the share. Because of create mode = 0600 and directory mode = 0700, only the corresponding user has access rights to newly created files and folders, even on the server itself.

The [homes] section is a considerable simplification compared to single shares, especially for systems with many users.

Individual shares

Then the individual shares are entered. A share consists of the share name in square brackets - i.e. [example share] - and the options following it. The graphical interfaces to Samba also enter the shares here.

Note: Often people forget that the access rights in the share and in the local file system must be correct. For example, if you allow guests to access a directory, the user nobody or the group nogroup must also have the corresponding local read/write permissions in the directory.

Example 1

Example of a share that can only be accessed by logged-in users, who can only read but not write. The entries marked with (Default) correspond to the default settings. They are for explanation only and may be omitted:

[example1]
# path to directory
path = /path/to/data1
# comment to share
comment = test share 1
# share is active (default)
available = yes
# share is directly visible (default)
browseable = yes
# guests are not allowed to access the share (default)
guest ok = no
# Logged in users may read but not write (default).
writeable = no

Example 2

Example of a share that everyone - including guests - can access both read and write. Furthermore, the data is accessed locally with the user rights otto and the group rights users:

[example2]
# path to directory
path = /path/to/data2
# Guests are also allowed to access the share
guest ok = yes
# Logged in users are also allowed to write.
writeable = yes
# share is directly visible (default)
browseable = yes
# restrict rights for new files/directories ("mask")
create mask = 0664
directory mask = 0775
# user and group membership (only effective with "unix extensions = no")
# No matter with which data a user logs on to the server,
# the data will be stored locally with these file affiliations.
force user = otto
force group = users

Example 3

Example of a share whose values are copied from share example2, overwriting all other data from the following options. In principle, no one is allowed to write except for the user paul and the members of the group example:

[example3]
# The settings of this share will be copied
copy = example2
path = /path/to/data3
# No write permissions for all (default)
writeable = no
# users, groups that are allowed to write anyway
write list = paul,@example

More about "Access controls for share definitions" can be found in the documentation German Translation of Samba3 Files.

Network Recycle Bin

Simply moving files to the recycle bin of the respective desktop is not possible via Samba. However, the network recycle bin included in Samba (from version 3) can provide a remedy. If this is set up, then when files or folders are deleted, they are not immediately deleted permanently, but moved to a (possibly hidden) folder, from which they can then be permanently deleted in a second operation. This little-known option requires additional storage space on the server, but increases data security not inconsiderably.

The network recycle bin can be set up either in the [global] section generally for all shares, or for each share individually. To do this, simply add the line

vfs object = recycle

line. Further options allow you to specify the path to the recycle bin folder and its properties: enlarge

# A recycle bin is created:
vfs object = recycle
# The path to the recycle bin relative to the share (".recyclebin" is default).
recycle:repository = .recyclebin
# The recycle bin will keep path information.
recycle:keeptree = Yes
# When moving, the timestamp is adjusted.
recycle:touch = Yes
# Files with the same name are not overwritten.
recycle:versions = Yes
# No limitation of the file size.
recycle:maxsize = 0

The .recyclebin folder or the recycle bin folder specified by recycle:repository is then automatically created during the first delete operation. For more details, see here samba.org.

Sources




Samba cheat sheet (DE)

Install dependencies for samba:

sudo apt install samba

Config samba server

Bearbeiten Sie /etc/samba/smb.conf. Hier gibt es eine Menge von Optionen. Hier ist eine grundlegende Freigabekonfiguration. Fügen Sie diese am Ende der Datei ein.

    [myshare]
    comment = This is my share
    path = /path/to/share/directory
    browseable = yes
    read only = no
    guest ok = no
    writable = yes

Restart samba service

systemctl restart smbd

Um eine Verbindung zu Ihrer Freigabe herzustellen, sofern Sie nicht nur einen Gastzugang verwenden, müssen Sie Samba-Benutzerkonten einrichten

smbpasswd -a {username [root, user]}

Heimatverzeichnisse

Sind auf dem Server im Systemordner /home/ Heimatverzeichnisse für die einzelnen Benutzer eingerichtet, so können alle diese durch einen einzigen Eintrag in der Sektion [homes] freigegeben werden. Die dafür nötigen Einstellungen sind schon vorbereitet. Um diese kollektive Freigabe aller Heimatverzeichnisse zu aktivieren, muss man nur alle Semikolons ";" vor den Einträgen entfernen.

[homes]
comment = Home Directories
browseable = no
valid users = %S
writeable = yes
create mode = 0600
directory mode = 0700

Die Heimverzeichnisse werden unter dem Namen des jeweiligen Benutzers freigegeben, aber wegen browseable = no nicht im Netzwerk angezeigt. Wegen valid users = %S hat nur der Benutzer mit dem passenden Namen Zugriff; andere Benutzer können die Freigabe weder sehen, noch lesen, noch schreiben. Wegen create mode = 0600 und directory mode = 0700 hat bei neu angelegten Dateien und Ordnern auch auf dem Server selbst nur der betreffende Benutzer Zugriffsrechte.

Die Sektion [homes] stellt vor allem für Systeme mit vielen Benutzern gegenüber einzelnen Freigaben eine erhebliche Vereinfachung dar.

Einzelne Freigaben

Anschließend werden die einzelnen Freigaben eingetragen. Eine Freigabe setzt sich aus dem Freigabenamen in eckigen Klammern - also [Beispielfreigabe] - und den danach folgenden Optionen zusammen. Die graphischen Oberflächen zu Samba tragen hier ebenfalls die Freigaben ein.

Hinweis:

Oft wird vergessen, dass die Zugriffsrechte in der Freigabe und im lokalen Dateisystem stimmen müssen. Erlaubt man z.B. den Zugriff von Gästen auf ein Verzeichnis, so muss der Benutzer nobody bzw. die Gruppe nogroup auch die entsprechenden lokalen Lese-/Schreibrechte in dem Verzeichnis haben.

Beispiel 1

Beispiel für eine Freigabe, auf die nur angemeldete Benutzer zugreifen dürfen, wobei diese nur lesen aber nicht schreiben können. Die mit (Default) gekennzeichneten Einträge entsprechen den Standard-Einstellungen. Sie dienen nur zur Erläuterung und dürfen auch weggelassen werden:

[beispiel1]
# Pfad zu Verzeichnis
path = /pfad/zu/daten1
# Kommentar zur Freigabe
comment = Testfreigabe 1
# Freigabe ist aktiv (Default)
available = yes
# Freigabe ist direkt sichtbar (Default)
browseable = yes
# Gäste dürfen nicht auf die Freigabe zugreifen (Default)
guest ok = no
# Angemeldete Benutzer dürfen lesen aber nicht schreiben (Default).
writeable = no

Beispiel 2

Beispiel für eine Freigabe, auf die jeder - auch Gäste - sowohl lesend als auch schreibend zugreifen können. Des Weiteren wird auf die Daten lokal mit den Benutzerrechten otto und den Gruppenrechten users zugegriffen:

[beispiel2]
# Pfad zu Verzeichnis
path = /pfad/zu/daten2
# Auch Gäste dürfen auf die Freigabe zugreifen.
guest ok = yes
# Angemeldete Benutzer dürfen auch schreiben.
writeable = yes
# Freigabe ist direkt sichtbar (Default)
browseable = yes
# Rechte bei neuen Dateien/Verzeichnissen beschränken ("maskieren")
create mask = 0664
directory mask = 0775
# Benutzer und Gruppenzugehörigkeit (nur wirksam bei "unix extensions = no")
# Egal mit welchen Daten sich ein Benutzer am Server anmeldet,
# die Daten werden lokal mit diesen Dateizugehörigkeiten abgelegt.
force user = otto
force group = users

Beispiel 3

Beispiel für eine Freigabe, deren Werte von der Freigabe beispiel2 kopiert werden, wobei alle weiteren Angaben von den folgenden Optionen überschrieben werden. Prinzipiell darf niemand schreiben, bis auf den Benutzer paul und die Mitglieder der Gruppe beispiel:

[beispiel3]
# Die Einstellungen dieser Freigabe werden übernommen
copy = beispiel2
path = /pfad/zu/daten3
# Keine Schreibrechte für alle (Default)
writeable = no
# Benutzer, Gruppen die trotzdem schreiben dürfen
write list = paul,@beispiel

Mehr zu dem Thema "Zugriffskontrollen für Freigabedefinitionen" findet sich in der Dokumentation German Translation of Samba3 Files.

Netzwerk-Papierkorb

Das einfache Verschieben von Dateien in den Papierkorb des jeweiligen Desktop ist über Samba nicht möglich. Abhilfe kann jedoch der in Samba (ab Version 3) enthaltene Netzwerk-Papierkorb schaffen. Ist dieser eingerichtet, so werden beim Löschen von Dateien oder Ordnern diese nicht gleich endgültig gelöscht, sondern in einen (ggf. versteckten) Ordner verschoben, aus dem sie dann in einem zweiten Arbeitsgang endgültig gelöscht werden können. Diese wenig bekannte Möglichkeit benötigt zwar zusätzlichen Speicherplatz auf dem Server, erhöht aber die Datensicherheit nicht unerheblich.

Der Netzwerk-Papierkorb kann entweder im Abschnitt [global] generell für alle Freigaben, oder aber für jede Freigabe einzeln eingerichtet werden. Hierfür fügt man einfach die Zeile

vfs object = recycle

hinzu. Durch weitere Optionen kann man noch den Pfad zum Papierkorb-Ordner und dessen Eigenschaften festlegen: vergrößern

# Ein Papierkorb wird eingerichtet:
vfs object = recycle
# Der Pfad zum Papierkorb relativ zur Freigabe (".recyclebin" ist Default).
recycle:repository = .recyclebin
# Im Papierkorb bleiben Pfad-Angaben erhalten.
recycle:keeptree = Yes
# Beim Verschieben wird der Zeitstempel angepasst.
recycle:touch = Yes
# Gleichnamige Dateien werden nicht überschrieben.
recycle:versions = Yes
# Keine Begrenzung der Dateigröße.
recycle:maxsize = 0

Der Ordner .recyclebin bzw. der mittels recycle:repository festgelegte Papierkorb-Ordner wird dann beim ersten Löschvorgang automatisch angelegt. Weitere Einzelheiten siehe hier samba.org.

Quellen