.. toctree:: Samba: Kleine Firma mit Standalone-Server ============================================== Ziel: Implementieren einer beispielhaften 'smb.conf', die eine kleine Firma ohne Domänenkontroller abbildet. Im Detail: Die Firma möchte drei Freigaben mit abgestufter Sicherheit nutzen: a) Austausch: Für Jedermann schreibfähig b) Dokumente: Nur für authentifizierte Benutzer bei Verwendung einer Schreibliste (otto, kaspar) c) Verwaltung: Nur für die vertrauenswürdigen Benutzer der Verwaltung otto und kaspar) Dabei sollen möglichst robuste Einstellungen für den Zugriff auf das Dateisystem getroffen werden. Vorbereitungen -------------- 1. Software installieren: ``apt-get install samba smbclient`` 2. Eine Gruppe und entsprechende Benutzer anlegen: :: groupadd verwaltung useradd -m -s /bin/bash -g verwaltung otto useradd -m -s /bin/bash -g verwaltung hans useradd -m -s /bin/bash -G verwaltung kaspar smbpasswd -a otto smbpasswd -a hans smbpasswd -a kaspar 3. Dateirechte anpassen: :: mkdir -p -m 777 /srv/samba/free mkdir -m 775 /srv/samba/doc mkdir -m 770 /srv/samba/verwaltung chgrp verwaltung /srv/samba/doc /srv/samba/verwaltung Erstellung der Konfigurationsdatei ---------------------------------- Die Hauptkonfigurationsdatei für Samba ist neu anzulegen, deshalb die alte erst einmal sichern: :: mv /etc/samba/smb.conf /etc/samba/smb.conf.old Danach einfach eine neue Datei erzeugen: :: vi /etc/samba/smb.conf Nun werden die folgenden Zeilen eingefügt: .. highlight:: ini :: [global] workgroup = firma1 security = user map to guest = bad user [Austausch] path = /srv/samba/free guest ok = yes read only = no create mask = 666 directory mask = 777 ; Alternativ zu den beiden mask-Zeilen: ;force user = nobody [Dokumente] path = /srv/samba/doc read only = yes write list = otto,kaspar create mask = 775 directory mask = 775 force group = verwaltung [Verwaltung] path = /srv/samba/verwaltung read only = no create mask = 770 valid users = otto,kaspar force group = verwaltung Das Dokument bitte speichern und den Editor beenden. Neustarten des Daemons und Testings ----------------------------------- Nun muss die Konfiguration z.B. mit ``service smbd restart`` neu eingelesen werden, dasselbe sollte mit dem 'nmbd' geschehen. Dann kann es ans Testen gehen. SMB-Clients: a) Linux-Kommandozeile: smbclient, smbfs: ``mount -t cifs //host/Austausch /mnt -o guest`` (Voraussetzung: Installiertes Paket "cifs-utils") b) Linux-GUI: nautilus, konqueror c) Windows-Workstation Testen der neuen Config im Einzelnen ------------------------------------ Hier folgt nun ein kommentierter Auszug aus der Shell-Sitzung... Zuerst einmal nur die Browseliste abrufen: .. highlight:: shell-session :: my@bash $ smbclient -NL localhost Sharename Type Comment --------- ---- ------- Austausch Disk Vorsicht, jeder darf alles! Dokumente Disk Verwaltung Disk IPC$ IPC IPC Service (Samba 4.9.5-Debian) Reconnecting with SMB1 for workgroup listing. Server Comment --------- ------- Workgroup Master --------- ------- HAUS1 DEB2 WORKGROUP ARTIX-WKS my@bash $ my@bash $ ## >> Das versteckte Share 'IPC$' ist elementar; nicht versuchen, es zu löschen! **Das 1. Share**, was wir testen, ist als allgemeines Austauschverzeichnis für jeden gedacht: :: my@bash $ smbclient //localhost/Austausch -U% Try "help" to get a list of possible commands. smb: \> smb: \> mkdir ABC smb: \> smb: \> exit my@bash $ my@bash $ ls -ltrc /srv/samba/free/ total 0 drwxrwxrwx 1 nobody nogroup 0 Nov 30 12:27 ABC my@bash $ my@bash $ **Das 2. Share**, was nun dran ist, können nur authentifizierte User benutzen: :: my@bash $ smbclient //localhost/Dokumente -Ukaspar Enter HAUS1\kaspar's password: Try "help" to get a list of possible commands. smb: \> smb: \> mkdir VonKaspar smb: \> smb: \> exit my@bash $ my@bash $ smbclient //localhost/Dokumente -U% tree connect failed: NT_STATUS_ACCESS_DENIED my@bash $ my@bash $ ## >> Hier gibt es ja kein "guest ok = yes"! my@bash $ my@bash $ my@bash $ smbclient //localhost/Dokumente -Uhans Enter HAUS1\hans's password: Try "help" to get a list of possible commands. smb: \> smb: \> ls . D 0 Mon Nov 30 12:29:15 2020 .. D 0 Mon Nov 30 12:11:11 2020 VonKaspar D 0 Mon Nov 30 12:29:15 2020 50321408 blocks of size 1024. 40677936 blocks available smb: \> smb: \> mkdir VonHans NT_STATUS_ACCESS_DENIED making remote directory \VonHans smb: \> smb: \> exit my@bash $ my@bash $ ## >> Richtig: Es dürfen nur vorhandene, mit SambaSamAccount ausgestattete User hier herein, my@bash $ ## gemäß 'write list = otto,kaspar' hat "hans" kein Schreibrecht! **Das 3. Share**, was wir schließlich testen, ist noch restriktiver eingestellt: :: my@bash $ smbclient //localhost/Verwaltung -Uhans Enter HAUS1\hans's password: tree connect failed: NT_STATUS_ACCESS_DENIED my@bash $ my@bash $ ## >> Richtig: Trotz korrekter Passworteingabe! my@bash $ my@bash $ smbclient //localhost/Verwaltung -Uotto Enter HAUS1\otto's password: Try "help" to get a list of possible commands. smb: \> smb: \> mkdir VonOtto smb: \> smb: \> exit my@bash $ my@bash $ smbclient //localhost/Verwaltung -U% tree connect failed: NT_STATUS_ACCESS_DENIED my@bash $ my@bash $ ## >> Richtig: Dies darf schon gar nicht gehen!! my@bash $ my@bash $ ls -ltrc /srv/samba/doc/ total 0 drwxrwxr-x 1 kaspar verwaltung 0 Nov 30 12:29 VonKaspar my@bash $ my@bash $ ls -ltrc /srv/samba/verwaltung/ total 0 drwxr-xr-x 1 otto verwaltung 0 Nov 30 12:34 VonOtto my@bash $ Aus der entsprechendem Kommandozeilensitzung unter Windows: :: C:\> C:\>net use v: \\192.168.2.232\Verwaltung /user:kaspar k@SSpErS-Pw Der Befehl wurde erfolgreich ausgeführt. C:\> C:\>v: V:\> V:\>dir Datenträger in Laufwerk V: ist Verwaltung Volumeseriennummer: 57E8-17C0 Verzeichnis von V:\ 30.11.2020 12:34