Skip to content

Samba Installation - Server & Client

Linux
  • Durch mein neues NAS, beschäftige ich mich die Tage wieder viel mit Dingen, die man selten anfasst. Dazu gehört auch Samba. Wenn man das mal installiert hat, packt man das ja meistens wieder einige Jahre, ok bei mir mehrere Monate 🙂 nicht mehr an.

    Früher habe ich ja immer NFS Freigaben genutzt, doch auf dem NanoPi R5S musste ich wegen der Performance zu Samba wechseln. Dabei konnte ich mir auch noch mal Gedanken darüber machen, ob es nicht sinnvoller ist, Samba anstelle von NFS zu benutzen. Thema Zugriffsrechte. Ich kam zu der Meinung, das Samba die bessere Wahl für mein Setup ist.

    Server

    Installation

    apt install samba
    systemctl status nmbd
    

    Das geteilte Verzeichnis einrichten

    mkdir /samba
    

    Samba Config sichern

     cp /etc/samba/smb.conf /root
    

    Die Config anpassen

    nano /etc/samba/smb.conf
    

    /etc/samba/smb.conf

    [samba-share]
       comment = NAS
       path = /samba
       read-only = no
       writable = yes
       browsable = yes
       guest ok = no
       create mask = 0775
       directory mask = 0775
    

    Ob die Settings hier das Allerbeste sind, weiß ich leider nicht zu 100%. Funktionieren aber 🙂 Wie immer, wer Verbesserungen kennt, bitte hier posten.

    Samba benutzt User zur Zugriffssteuerung. Diesen müssen auf dem Linuxsystem als User vorhanden sein!!

    smbpasswd -a frank
    smbpasswd -e frank
    systemctl restart smbd.service
    

    In einigen Tutorials im Netz, war

    smbpasswd -e frank
    

    nicht enthalten. Das enabled den User. Ich bin mir nicht sicher, ob man das unbedingt braucht, es kann aber sicherlich auch nicht schaden.

    Damit sollte Samba auf dem Server fertig eingerichtet sein und laufen.

    Client

    Für den Zugriff auf den Samba Server nutze ich systemd. Dazu brauchen wir folgendes Dateien.
    Und nicht vergessen den Mount Point anzulegen.

    mkdir /mnt/NAS
    

    mnt-NAS.mount

    [Unit]
    Description=Mount NAS SMB share
    After=network-online.target
    Wants=network-online.target
    
    [Mount]
    What=//192.168.3.12/samba-share
    Where=/mnt/NAS
    Type=cifs
    Options=compress,credentials=/root/.smbcredentials,uid=1000,gid=1000
    TimeoutSec=30
    
    [Install]
    WantedBy=multi-user.target
    

    mnt-NAS.automount

    [Unit]
    Description=Automount NAS SMB share
    
    [Automount]
    Where=/mnt/NAS
    
    [Install]
    WantedBy=multi-user.target
    

    /root/.smbcredentials

    username=frank
    password=<PASSWORD>
    

    Das Passwort ist das Passwort welches ihr bei Anlage des Samba Users eingegeben habt.

    Die systemd Dienste enablen und starten - fertig. Danach steht einem der Samba Share zur Verfügung.

  • Raspberry Pi5 - Netzteil

    RaspberryPi
    1
    0 Stimmen
    1 Beiträge
    146 Aufrufe
    Niemand hat geantwortet
  • Firefox - Dolphin Dateibrowser benutzen

    Linux
    1
    0 Stimmen
    1 Beiträge
    116 Aufrufe
    Niemand hat geantwortet
  • Debian 12 Bookworm - Release 12.1

    Linux
    1
    0 Stimmen
    1 Beiträge
    99 Aufrufe
    Niemand hat geantwortet
  • 0 Stimmen
    3 Beiträge
    2k Aufrufe
    FrankMF

    Das mit den Namen der btrfs Subvolumes ist bekannt bei Timeshift. Im Readme steht dazu folgendes.

    BTRFS volumes

    BTRFS volumes must have an Ubuntu-type layout with @ and @home subvolumes. Other layouts are not supported. Systems having the @ subvolume and having /home on a non-BTRFS partition are also supported.

    Text file busy / btrfs returned an error: 256 / Failed to create snapshot can occur if you have a Linux swapfile mounted within the @ or @home subvolumes which prevents snapshot from succeeding. Relocate the swapfile out of @ or *@home, for example into it's own subvolume like @swap.

  • Python & Redis-Datenbank

    Verschoben Linux
    3
    0 Stimmen
    3 Beiträge
    97 Aufrufe
    FrankMF

    Heute dann die nächste Herausforderung. Mein JSON soll so aussehen, damit ich das entsprechend erweitern kann.

    Stocks {0: {'stockname': 'Deutsche Telekom Aktie', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 100}, 1: {'stockname': 'Henkel', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 50}}

    Die Daten sollen wie oben schon ausprobiert, in einer Redis Datenbank liegen. So weit auch kein großes Problem. ABER, der Zugriff auf diese Daten war dann meine nächste Hürde 🙂

    Ok, ich habe also mehrere Einträge im JSON File bzw. in der Datenbank. Wie komme ich da nun wieder dran. Ein paar ☕ später dann die Lösung.

    Wie komme ich an den einzelnen Eintrag, also über den Index??

    r1.json().get('stocks', 1)

    Gibt als Ergebnis

    {'stockname': 'Henkel', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 50}

    Ok, das passt schon mal. Somit kann man dann gewohnt auf die einzelnen Elemente zugreifen.

    print("TESTING", testing['stockname'])

    Ausgabe

    TESTING Henkel

    Ok, Teil 1 erledigt. Jetzt habe ich ja irgendwann mehrere Elemente in der Liste und brauch dann den letzten Index , um damit was machen zu können. Also, z.B. durch die Daten zu loopen.

    objkeys = r1.json().objkeys('stocks') print("Objkeys", objkeys)

    Ausgabe

    Objkeys ['0', '1']

    Ok, kommt eine Liste des Index zurück. Damit kann man arbeiten 😉

    Ich hatte dann zum Testen mittels einer while Schleife die Daten geladen, aber jetzt beim Tippen klingelt es und wir machen das schön mit enumerate 😉

    @staticmethod def load(): data = {} for count, value in enumerate(objkeys): testing = r1.json().get('stocks', count) data[count] = { "stockname": testing['stockname'], "wkn1": testing['wkn1'], "wkn2": testing['wkn2'], "quantity": testing['quantity']} return data

    Somit habe ich die Daten aus der Redis Datenbank in einem Objekt und kann damit arbeiten.

  • 0 Stimmen
    3 Beiträge
    1k Aufrufe
    M

    @frankm

    Habe neulich auch einen meiner rockpro64 neu mit Debian 11 installiert, und dabei auch die festplatte (NVMe eigentlich) verschlüsselt.

    War mir erst unsicher das ich dann immer eine serielle Console brauch bei reboot. Man kann aber auch dropbear (SSH server) in die initram integrieren und dann während das booten den Server erreichen und die Passphrase für das Laufwerk eingeben.

    Diese 2 links waren hilfreich.

    https://salsa.debian.org/debian/dropbear/blob/debian/2018.76-5/debian/README.initramfs
    https://unix.stackexchange.com/questions/411945/luks-ssh-unlock-strange-behaviour-invalid-authorized-keys-file

    M

  • Nextcloud - Upgrade auf 19.0.1

    Nextcloud
    1
    0 Stimmen
    1 Beiträge
    213 Aufrufe
    Niemand hat geantwortet
  • Node.js installieren

    Linux
    1
    0 Stimmen
    1 Beiträge
    288 Aufrufe
    Niemand hat geantwortet