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
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:
Variante 1: per Script
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.
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.
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
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.