Aktionen

Linux - Ubuntu 14.04. Windows Freigabe mounten - beim Booten automatisch mounten

Aus znilwiki

  • 08.12.2014: Erste Version
  • 03.11.2017: Ergänzt um SMB Version

1 Problem

Für Backup-Zwecke musste ich auf einem LINUX-Server automatisch beim hochfahren eine Windows Freigabe mounten.
In der Bash kann ich eine Freigabe wie folgt mounten:

mkdir /mnt/Backup
mount -t cifs //192.168.10.111/Backup /mnt/Backup -o user=administrator,domain=znil,pass=passw0rd

In diesem Beispiel wird sich mit der Windows-Freigabe Backup auf dem Server 192.168.10.111 verbunden.
Als Benutzer dient der Domänenbenutzer ZNIL\Administrator mit dem Passwort passw0rd.

Hinweis: gf. müsst Ihr vorher noch

sudo apt-get install cifs-utils

ausführen damit er das kann!

Falls er Probleme beim Mounten hat kann das an der Cifs-Version liegen - Inzwischen ist auf vielen Windows Servern die Version 1 abgeschaltet und es geht nur noch mit Version 2 oder 3.
Windows verwendet die folgenden Versionen:

SMB 1 - Windows 2000
SMB 2 - Windows Server 2008 and Windows Vista SP1
SMB 2.1 - Windows Server 2008 R2 and Windows 7
SMB 3.0 - Windows Server 2012 and Windows 8

Der obige Befehl mit SMB Version 2.1 (für eine Freigabe auf einem Windows Server 2008 R2):

mount -t cifs //192.168.10.111/Backup /mnt/Backup -o user=administrator,domain=znil,pass=passw0rd,vers=2.1


So, nun das ganze automatisch beim Start des Servers:


2 Variante 1: per Script

2.1 Script erstellen

unter

/etc/init.d

habe ich ein neues Script mit dem Namen

mountbackup

erstellt:

nano /etc/init.d/mountbackup

Inhalt:

#! /bin/sh
### BEGIN INIT INFO
# Required-Start: $network
# Provides:       mountbackup
# Required-Stop:
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Description:    Mountet / unmountet den Backup-Ordner
### END INIT INFO
#
# Author:       Bernhard Linz <Bernhard.Linz@datagroup.de>
#


case "$1" in
  start)
        echo "Mounte Backup Ordner"
        mkdir /mnt/Backup 2> /dev/null
        # mount -t cifs //SERVER/FREIGABE/ORDNER /mnt/Backup/ -o user=BENUTZERNAME,domain=DOMAIN,pass=PASSWORD
        # mit SMB Version:
        mount -t cifs //SERVER/FREIGABE/ORDNER /mnt/Backup/ -o user=BENUTZERNAME,domain=DOMAIN,pass=PASSWORD,vers=2.1
    ;;
  stop)
        echo "Unmounte Backup Ordner"
        umount /mnt/Backup
    ;;
  force-reload|restart)
    $0 stop
    $0 start
    ;;
  *)
    echo "Usage: /etc/init.d/mountbackup {start|stop|restart}"
    exit 1
    ;;
esac

exit 0

Für SERVER, FREIGABE, ORDNER, BENUTZERNAME, PASSWORT und DOMAIN müsst ihr natürlich eure Werte angeben.
Falls das Ziel nicht in eienr Domäne ist, entfernt domain= ganz oder gebt den NetBIOS-Namen des Ziels an. Wie man sehen kann erstelle ich zuvor einen Ordner "Backup" unterhalb von /mnt und nutze diesen als Ziel.
Im Kopf ist angegeben das er auf das Netzwerk warten soll bevor er startet.
Das Passwort für die Freigabe sollte sollte keine Sonderzeichen nutzen die man auch in der Bash nutzt.

Mit

chmod +x /etc/init.d/mountbackup

machen wir die noch Ausführbar.


2.2 Automatischen Start einrichten

Das Script heist ja (inklusive Pfad)

/etc/init.d/mountbackup

mit

update-rc.d mountbackup defaults 10

wird es in den Bootvorgang mit aufgenommen.



3 Variante 2: per Eintrag in die /etc/fstab

Wir bearbeiten die /etc/fstab

nano /etc/fstab

und füge an das Ende die folgende Zeile:

//192.168.10.111/Backup /mnt/Backup cifs username=administrator,domain=znil,password=passw0rd,vers=2.1,sec=ntlm  0  0

Nach einem Reboot sollte der Mount ebenfalls zur Verfügung stehen. Bitte beachtet die Ergänzung der SMB-Version Es geht auch sofort per

mount -a

Die /etc/fstab kann nun aber jeder Benutzer sehen - und damit den Benutzername und das Passwort.
Wer will kann die Anmeldedaten in eine eigene Datei auslagern die nur der root lesen kann:

touch /root/.smbcredentials
nano /root/.smbcredentials

mit folgenden Inhalt:

username=administrator
domain=znil
password=passw0rd

Danach ein

chmod 600 /root/.smbcredentials
chown root:root /root/.smbcredentials

Die Zeile in der /etc/fstab muss wie folgt aussehen:

//192.168.10.111/Backup /mnt/Backup cifs credentials=/root/.smbcredentials,sec=ntlm  0  0



Gefunden unter: https://wiki.ubuntu.com/MountWindowsSharesPermanently und um Domäne ergänzt



4 Netz und doppelter Boden

Es kann passieren das beim dem Booten das Mounten nicht klappt. In der Regel liegt es daran das er das Mounten schon versucht obwohl das Netzwerk noch nicht so weit war. Bei den neuen Stretch bsierten Image kam es mir gleich länger vor bis das System über das Netzwerk erreichbar war.
Die Lösung? Nehmt die /etc/fstab Lösung und erstellt den folgenden cronjob:

sudo crontab -e

und dann folgende Zeile anhängen:

@reboot sleep 120 && mount -a

Damit wartet er 120 Sekunden und führt dann noch einmal das mounten aus. Wenn schon alles da ist passiert auch nichts, wenn was fehlt versucht er es nachzuholen.
Die Zeit könnt Ihr natürlich anpassen.
Oder mehrere Einträge mit verschiedenen Zeiten machen.


5 Kommentare


Striezl-at-gmxpunktde

12 Monaten zuvor
Punktzahl 0++

Hallo Bernhard! Tolles ToDo! Gut beschrieben! Nur: Leider kriege ich es nicht zum laufen :-(

Ich habe einen Raspberry und will ihn im Kiosk-Mode eine html-Seite auf einem Windows-Server anzeigen lassen. Habe mich an die Anleitung mit der fstab gehalten, die Einträge sollten auch stimmen. Wenn ich Mount -a ausführe ist das Verzeichnis auch da, ich kann zugreifen. Mache ich einen Neustart, ist das Verzeichnis wieder leer. Habe auch in der verlinkten Seite geschaut und "Mount during login instead of boot" befolgt. Leider selbes Ergebnis. Gibt es einen kleinen Hinweis, nachdem man suchen könnte? Wäre super nett! Danke!

BLinz

12 Monaten zuvor
Punktzahl 0++

Mir ist aufgefallen der der Pi lange braucht bis er im Netzwerk verfügbar ist. Wahrscheinlich versucht er das Mounten obwohl das Netzwerk noch nicht da ist.

Also eventuell über Eintrag in der Crontab lösen:

@reboot sleep 120 && mount ....

Striezl-at-gmxpunktde

12 Monaten zuvor
Punktzahl 0++

Danke für die schnelle Antwort! Es war tatsächlich das Zeit-Problem. Gelöst habe ich es in der /etc/rc.local sleep 30 mount -a und schon war das Verzeichnis gefüllt!

Gruß Striezl

BLinz

12 Monaten zuvor
Punktzahl 0++

Das neue, Stretch basierte Image braucht scheinbar länger mit dem Netzwerk. Mein Raspi der per LAN angeschlossen ist schafft das Mounten aber trotzdem.

Ich habe deinen Vorschlag - ohne Sleep - bei mir auch in die /etc/rc.local eingebaut - sicherheitshalber.

Ganz sicher wäre es über einen Cronjob, den packe ich oben in den Artikel
Kommentar hinzufügen
znilwiki freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, trage deinen Namen oder deine Email-Adresse ein oder melde dich an. Du kannst das Feld auch einfach leer lassen.