SAMBA Installieren unter Linux
Mit die nachfolgende Anleitung beschreibt die Installation und Grundkonfiguration von SAMBA, einem SMB Server der unter Linux Betrieben werden kann.
Sicherheitshinweis: SMB ist ein Protokoll, dass es nun schon sehr lange gibt und in den letzten Jahren starke Veränderungen erfahren hat. Ab der SMB Version 3 wurde Verschlüsselung eingeführt. Zuvor war es nicht möglich, den SMB Datenverkehr ausreichend sicher zu verschlüsseln. Eine Nutzung im LAN ist hierbei noch zu vertreten, aber in diesem Setup richten Sie eine SMB-Verbindung über das Internet ein. Dieses Setup darf nicht mit einer SMB Version kleiner als SMBv3.1.1 vorgenommen werden. SMB1 und SMB2 sind nicht sicher und für den Betrieb über das Internet nicht ausgelegt.
Die Version SMB3 ist ausreichend sicher und wird auch von Microsoft in der Azure Cloud in dieser Form bereitgestellt. In diesem Setup wird daher die SMB1 und SMB2 Unterstützung des SAMBA Server deaktiviert. Wird dies vergessen, gehen Sie ein grosses Risiko ein, was entsprechend in der Bewertung der Arbeit sich niederschlagen wird!
Installation
- Erstellen Sie eine AWS-EC2 Instanz und verbinden Sie sich mit Ihrem SSH-Client (Alternativ können Sie auch den Webzugriff verwenden)
- Wechseln Sie mit dem Befehl sudo su in den Administrator-Modus.
- Installieren Sie samba mit folgendem Befehl:
yum install samba
Grundkonfiguration
Sie finden die Konfigurations-Datei unter folgendem Pfad: /etc/samba/smb.conf
Die Direktive der SAMBA-Konfiguration sind wie beim BIND Dienst in einzelne BlöckeSektionen unterteilt. JedochDiese sind diesejedoch nicht mit geschweiften Klammern umschlossen. EinStattdessen Blockbeginne beginntjede Sektion mit dereinem BeschreibungTitel in eckigen Klammern z. B. derdie global-Block:Sektion:
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
BlockSektion global[global]
DieserIn Blockder enthältglobalen Sektion werden die Konfiguration,allgemeinen welcheEinstellungen und Sicherheitsoptionen festgelegt. Sie beginnt, wie der Namen vermuten lässt, mit der Bezeichnung global. gültigDiese ist.Bezeichnung Erist umfasstreserviert daherund darf nur für die grundlegendengloable Konfiguration desverwendet Dienstes.werden. (Es kann keine Freigabe mit diesem Namen erstellt werden). Üblicherweise müssen nur wenige Werte in dieser Sektion angepasst werden.
In der Standard-Konfiguration imder global-BlockSektion fehlen ein paar wichtige Punkte, welche zwingend gesetzt werden sollten:
|
protocol = SMB3
|
Setzt die Protokoll-Version auf SMB Version 3. Damit können sich zwar ältere Clients nicht mehr verbinden, aber die Verbindung kann dafür sauber verschlüsselt werden. |
|
lanman auth = no
|
Deaktiviert eine unsichere Authentifizierungsmethode |
|
smb encrypt = required
|
Die Verschlüsselung des SMB Traffics wird erzwungen. |
|
encrypt passwords = yes
|
Stellt sicher, dass die Passwörter verschlüsselt übertragen werden. |
|
access based share enum = yes
|
Dadurch werden Freigaben ausgeblendet, wenn keine Berechtigung auf diesen Freigaben existieren. Diese Option ist standardmässig deaktiviert. Somit werden standardmässig dem Benutzer alle Freigaben auf dem SMB-Server angezeigt, auf wenn der Benutzer auf gewisse keinen Zugriff hat. Der Benutzer kann dann diese Freigaben öffnen, erhält aber einen "Zugriff verweigert" Fehler. |
Dann gibt es ein paar Punkte, welche wir in der global-Sektion existieren und nicht angepasst werden müssen. Es ist aber wertvoll die Bedeutung dieser Punkte zu verstehen.
| workgroup = SAMBA | Wenn der SMB-Server in einer Arbeitsgruppe verwendet wird, müsste hier die korrekte Arbeitsgruppe definiert werden. Dies ist in unserem Fall nicht nötig. |
|
security = user
|
Definiert, dass die Authentifizierung des SMB-Server gegenüber (vom Client) mittels Benutzername und Passwort erfolgt. Es gibt hier weitere mögliche Optionen:
|
|
passdb backend = tdbsam
|
Diese Direktive steuert wo Samba die Passwörter und Benutzerdaten speichert. Diese speucher Samba standardmässig in einer " TDB " (Trivial Database). Die Verwendung dieses Backends erfordert keine zusätzliche Konfiguration. Dieses Backend wird für neue Installationen empfohlen, die kein LDAP benötigen. Wird die Option ldapsam verwendet, dann werden die Benutzerdaten in einem ldap Verzeichnis gespeichert. |
BlockSektion homes[homes]
Über dendie homes-BlockSektion können die Heim-Verzeichnisse der Benutzer aktiviert werden. Jeder Benutzer erhält dadurch automatisch einZugriff auf das Verzeichnis mit seinem Namen.
Die Homes-Verzeichnisse liegen in Linux unter /home und werden automatisch angelegt, wenn ein neuer Benutzer mit adduser hinzugefügt wird. Diese Vorgang ist im Abschnitt "Benutzer hinzufügen" genauer beschrieben.
Standardmässig sieht diese Sektion wie folgt aus:
[homes]
comment = Home Directories
valid users = %S
browseable = No
read only = No
inherit acls = Yes
Nachfolgend die Erklärung zu den einzelnen Direktiven:
|
comment = Home Directories
|
Dies ist ein Kommentar der dieser Freigabe mitgegeben wird. |
|
valid users = %S
|
Definiert, welche Benutzer auf Ihre Heim-Verzeichnisse zugreifen können. |
Freigabe einrichten
Eine Freigabe wird eingerichtet, indem ein weitere Block der Konfiguration hinzugefügt wird:
[FREIGABE_NAME]
path= /var/shared/VERZEICHNIS_NAME
writeable = yes
guest ok = yes
Benutzer hinzufügen
Als erstes muss auf dem Betriebssystem ein Benutzer angelegt werden. Dies wird mit dem Befehl adduser erledigt:
adduser BENUTZERNAME
Nun muss dem neuen Benutzer noch ein Passwort zugewiesen werden
smbpasswd -a BENUTZERNAME
Gruppe hinzufügen
Als erstes muss auf dem Betriebssystem eine Gruppe angelegt werden. Dies wird mit dem Befehl groupadd erledigt:
groupadd BENUTZERNAME
Nun kann auf dem Betriebssystem ein Verzeichnis angelegt werden, in dem die Daten dieser Gruppe abgelegt werden:
mkdir -p /var/shares/GRUPPE_VERZEICHNIS
Anschliessend muss die Gruppe diesem Verzeichnis zugewiesen werden:
chgrp GRUPPE /var/shared/GRUPPE_VERZEICHNIS
Damit existiert auf dem Betriebssystem nun eine Gruppe mit einem eigenen Verzeichnis. Damit dieses Verzeichnis auch als Freigabe existiert, muss dieses nun noch als Freigabe eingerichtet werden. Dazu wird ein weitere Block eingefügt:
[GRUPPE]
path= /var/shared/GRUPPEN_VERZEICHNIS
writeable = yes
valid users @GRUPPE
Nun kann die Datei gespeichert und der Dienst neu gestartet werden.
Benutzer einer Gruppe hinzufügen:
Um einem Gruppe einen Benutzer hinzuzufügen, wird der Befehl usermod verwendet:
usermod -a -G gruppenname benutzername
Benutzer aus einer Gruppe löschen:
Um einen Benutzer aus einer Gruppe zu löschen, wird der Befehl gpasswd verwendet:
gpasswd --delete gruppenname benutzername
Gruppen eines Benutzers anzeigen:
Wenn Sie wissen möchten, in welchen Gruppen ein Benutzer ist, können Sie den Befehl groups verwenden:
groups benutzername