cifs mount mit networkmanager

Kurz zur Erklärung: Ich habe eine “Lacie CloudBox” (Netzwerkfestplatte mit kleinem Mehrwert) im Netzwerk. Diese sollte auf einem stationärem und einem mobilem Rechner gemountet werden, die beide per networkmanager geregelten Netzzugang haben. Anschließend möchte ich per FreeFileSync bzw. RealTimeSync eine automatische Synchronisation bestimmter Ordner haben, um bei beiden Rechnern identischen Inhalt zu haben. Nach etwas googlen und basteln, läuft die Sache auch fast wie gewünscht :wink:

  1. Eintrag in der fstab
//192.168.0.102/user/sync /home/user/sync cifs noauto,iocharset=utf8,uid=1000,credentials=/home/user/.smbcredentials 0 0

noauto - damit es nicht schon beim Start gemountet wird, dank networkmanager ist da ja noch keine Verbindung
iocharset=utf8 - damit sonderzeichen und umlaute keine probleme machen, ich bin mir nicht sicher, ob das überhaupt noch nötig wäre :wink:
uid=1000 - weil root mountet, denkt linux auch nur root darf drauf zugreifen, deshalb die user-id, gid=*** (group id) geht aber auch
credentials - damit keiner das passwort einsehen kann

  1. .smbcredentials erstellen und nur der benutzer darf sehen und bearbeiten (chmod 600) mit folgendem inhalt
username=user
password=****
  1. Ein ausführbares script in /etc/NetworkManager/dispatcher.d/ mit dem besitzer root erstellen. Die scripte dort werden alphabetisch abgearbeitet. Aber der Name ist für den Inhalt irrelevant. Bei mir heisst die datei mount-sync :wink:
#! /bin/sh
# auto mount/umount network shares

IF=$1
STATUS=$2

# set your desired network here
NETMASK="192.168.0.0/24"

mount_shares (){
    # commands to mount shares here
    mount /home/user/sync
    
}

umount_shares (){
    # commands to unmount shares here
    umount /home/user/sync
    
}

if  -n "`/sbin/ip addr show $IF to $NETMASK`" ]; then
case "$STATUS" in
    up)
    mount_shares
    ;;
    pre-down)
    umount_shares
    ;;
    *)
    ;;
esac
else
    umount_shares
fi


Wichtig ist natürlich, die Einträge sollten auch die mounts aus der fstab sein.

  1. Ich hoffe, es kann jemandem als Anleitung dienen, ich hätte es aber gern noch verfeinert. Da der Laptop gelegentlich auch in anderen Netzwerken ist, wäre mir ein Bezug auf die ESSID dort wichtig, damit er nicht sinnlose mountversuche macht.

Kann da jemand das “kleine Tutorial” erweitern?

Kleine Anregung:


ESSID=$(iwconfig "$IF" | grep ESSID | awk -F '"' '{print $2}')

Prüfung nach der richtigen ESSID mit einem “&&” in die entsprechende if-Abfrage verwursten und ab dafür.

Nachtrag:

Hab gerade ein Wechsel von Leap auf Tumbleweed vollzogen und offensichtlich gibt es nun einen Wechsel in Sachen SMB-Protokoll. Ich vermute 2.0 ist inzw. Standard, jedoch nicht auf der Netzwerkplatte. Fehlermeldungen bei Mountversuchen ala “host is down” oder “host error 112” gaben mir Rätsel auf :wink:

//192.168.0.102/user/sync /home/user/sync cifs noauto,iocharset=utf8,uid=1000,gid=100,vers=1.0,credentials=/home/user/.smbcredentials 0 0

Ein Einsetzen von vers=1.0 hat erstmal gereicht.

So, aber dann mal schauen, ob es nicht auch ein update für die Platte gibt.