systemd mount-unit für cifs

Probleme mit Samba, NFS, FTP und Co.
Antworten
michaa7
Beiträge: 4611
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

systemd mount-unit für cifs

Beitrag von michaa7 » 04.11.2019 22:27:13

Ich bin dabei mir systemd units zum einbinden für ein fritzbox netzlaufwerk zusammen zu basteln, nach dieser anleitung.

In der automount-unit ist dort network manager als voraussetzung eingetragen, den ich jedoch nicht nutze. Dennoch will ich das laufwerk in abhängigkeit eines vorhandenen netzwerks einbinden. Entsprechende services oder targets sind bei mir folgende:
# systemctl | grep network
networking.service loaded active exited Raise network interfaces
network-online.target loaded active active Network is Online
network.target loaded active active Network
Was trage ich nun statt "Requires=NetworkManager.service" ein? Das naheliegende wäre networking.service, aber der ist "exited".

???

Ja, ich habe systemd und units, und was weiß ich nicht durchblickt, ich mache jetzt ewigkeiten mit diese verbindung von smartfon auf rechner herum und brauche jetzt mal ein ergebnis., Also bitte, was muß da hin? Danke.
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

TomL

Re: systemd mount-unit für cifs

Beitrag von TomL » 04.11.2019 22:58:06

Lösch einfach die folgenden Zeilen komplett raus aus der Unit:

Code: Alles auswählen

Requires=NetworkManager.service
After=network-online.target
Wants=network-online.target
Solange Du dieses Remote-Laufwerk nur unklickst, wenn Dein Rechner mit dem passenden Server verbunden ist, funktionierts einfach... ist ja automount. Wenn Du es ohne diese Netzwerk-Verbindung anklickst, wird die Unit in einen Timeout und dann auf Fehler laufen. Wenn Du vor dem Mount eine sichere Prüfung auf Verfügbarkeit des Servers durchführen willst, kannst Du ein eigenes Script als Requires-Statement einfügen, was den Server anpingt und bei Erfolg oder Misserfolg einen entsprechenden Return-Code zurückgibt.

michaa7
Beiträge: 4611
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: systemd mount-unit für cifs

Beitrag von michaa7 » 04.11.2019 23:41:12

TomL hat geschrieben: ↑ zum Beitrag ↑
04.11.2019 22:58:06
Lösch einfach die folgenden Zeilen komplett raus aus der Unit:

Code: Alles auswählen

Requires=NetworkManager.service
After=network-online.target
Wants=network-online.target
Solange Du dieses Remote-Laufwerk nur unklickst, wenn Dein Rechner mit dem passenden Server verbunden ist, funktionierts einfach... ist ja automount. Wenn Du es ohne diese Netzwerk-Verbindung anklickst, wird die Unit in einen Timeout und dann auf Fehler laufen. Wenn Du vor dem Mount eine sichere Prüfung auf Verfügbarkeit des Servers durchführen willst, kannst Du ein eigenes Script als Requires-Statement einfügen, was den Server anpingt und bei Erfolg oder Misserfolg einen entsprechenden Return-Code zurückgibt.
Ok, das kann ich gedanklich nachvollziehen. Da der "server" einfach meine fritzbox ist, ist die eh' immer online. Die vorgeschlagene vorgehensweise erscheint mir daher geeignet. Allerdings funktioniert es nicht.

Manuell klappt dieses komando im VT:
mount -t cifs -o vers=1.0,user=<user>,domain=<arbeitsgruppe> //fritz.box/fritz.nas /dtn/fb
Password for <user>@//fritz.box/fritz.nas: ********
Daraus habe ich folgende units gebastelt:
dtn-fb.mount
[Unit]
Description=CIFS-Freigabe //fritz.box/fritz.nas einbinden

[Mount]
What=//fritz.box/fritz.nas
Where=/dtn/fb
Options=ver=1.0,username=<user>,password=<PW>,workgroup=<arbeitsgruppe>,rw
Type=cifs

[Install]
WantedBy=multi-user.target

dtn-fb.automount
[Unit]
Description=Automount /dtn/fb

[Automount]
Where=/dtn
TimeoutIdleSec=10min

[Install]
WantedBy=multi-user.target
Etwas unsicher bin ich mir über das "Where", dass das unterschiedlich ist. Ich habe die Beispiel datei so interpretiert, dass eben die automount datei das übergeordnete verzeichnis überwachen muß? Falls das nicht der Fall ist, dann wäre das ein fehler in der Beispieldatei.
Die automount datei ist enabled, aber das ist das ergebnis:
# systemctl list-units --all | grep dtn-fb
● dtn-fb.automount bad-setting inactive dead Automount /dtn/fb
dtn-fb.mount loaded inactive dead CIFS-Freigabe //fritz.box/fritz.nas einbinden
EDIT:
Das "Where" muß offenbar identisch sein, dann klappt es zwar immer noch nicht, aber das "bad setting" geht weg. In soweit ist das in der Anleitung irreführend - oder ich habe was flasch verstanden. Der fehler ist dann folgender:
# systemctl list-units --all | grep dtn-fb
● dtn-fb.automount loaded failed failed Automount /dtn/fb
● dtn-fb.mount loaded failed failed CIFS-Freigabe //fritz.box/fritz.nas einbinden
:cry:

???

EDIT://
Zuletzt geändert von michaa7 am 04.11.2019 23:55:14, insgesamt 3-mal geändert.
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

TomL

Re: systemd mount-unit für cifs

Beitrag von TomL » 04.11.2019 23:43:41

Das Statement ist fehlerhaft: Where=/dtn
Das muss in beiden Units gleich sein. Die Namen der Units und where kann immer voneinander abgeleitet werden. /dtn/fb ist korrekt, wie dtn-fb für die Units korrekt ist.

michaa7
Beiträge: 4611
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: systemd mount-unit für cifs

Beitrag von michaa7 » 05.11.2019 00:13:03

Ja, das war falsch, und das habe ich korrigiert. Wie gesagt, ist in der anleitung etwas verwirrend und wohl auch falsch. Aber das war noch nicht die lösung. Der weitere fehler war "ver=1.0" statt ""vers=1.0".

Ich kann's nicht glauben, es läuft 8O

Danke.
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

willy4711

Re: systemd mount-unit für cifs

Beitrag von willy4711 » 05.11.2019 12:04:21

Nachdem ich mein fritzs.nas bisher problemlos via FTP / Lesezeichen in Thunar eingebunden hatte, hab ich mich jetzt auch mal an die fstab gemacht, aber das da gleich über den systemd-fstab-generator erledigen lassen.
Das mache ich schon lange mit andern Platten, allerdings musste ich hier etwas "basteln"
Lösung (muss wohl noch ergänzt werden, funktioniert aber) Quelle

Eintrag in der fstab:

Code: Alles auswählen

//192.168.0.1/fritz.nas/ /media/fritzbox/ cifs credentials=/home/willy/.auth,vers=1.0,defaults,noauto,x-systemd.automount,x-systemd.requires=network-online.target  0 0
Unit /run/systemd/generator/media-fritzbox.mount:

Code: Alles auswählen

# Automatically generated by systemd-fstab-generator

[Unit]
SourcePath=/etc/fstab
Documentation=man:fstab(5) man:systemd-fstab-generator(8)

[Mount]
Where=/media/fritzbox
What=//192.168.0.1/fritz.nas/
Type=cifs
Options=credentials=/home/willy/.auth,vers=1.0,defaults,noauto,x-systemd.automount,x-systemd.requires=network-online.target
Unit /run/systemd/generator/media-fritzbox.automount

Code: Alles auswählen

# Automatically generated by systemd-fstab-generator

[Unit]
SourcePath=/etc/fstab
Documentation=man:fstab(5) man:systemd-fstab-generator(8)
Before=remote-fs.target
After=network-online.target
Requires=network-online.target

[Automount]
Where=/media/fritzbox
Status Mount:

Code: Alles auswählen

~$ systemctl status media-fritzbox.mount
● media-fritzbox.mount - /media/fritzbox
   Loaded: loaded (/etc/fstab; generated)
   Active: active (mounted) since Tue 2019-11-05 11:12:39 CET; 1min 59s ago
    Where: /media/fritzbox
     What: //192.168.0.1/fritz.nas/
     Docs: man:fstab(5)
           man:systemd-fstab-generator(8)
    Tasks: 0 (limit: 4915)
   Memory: 616.0K
   CGroup: /system.slice/media-fritzbox.mount

Nov 05 11:12:37 debianxfce systemd[1]: Mounting /media/fritzbox...
Nov 05 11:12:39 debianxfce systemd[1]: Mounted /media/fritzbox.
Status Automount

Code: Alles auswählen

 ~$ systemctl status media-fritzbox.automount
● media-fritzbox.automount
   Loaded: loaded (/etc/fstab; generated)
   Active: active (running) since Tue 2019-11-05 11:12:34 CET; 45min ago
    Where: /media/fritzbox
     Docs: man:fstab(5)
           man:systemd-fstab-generator(8)

Nov 05 11:12:34 debianxfce systemd[1]: Set up automount media-fritzbox.automount.
Nov 05 11:12:37 debianxfce systemd[1]: media-fritzbox.automount: Got automount request for /media/fritzbox, triggered by 1660 (panel-27-xfce4-)
Journal, wo noch ein paar Fehler gemeldet werden.

Code: Alles auswählen

journalctl -b |grep CIFS
Nov 05 11:12:37 debianxfce kernel: CIFS: Attempting to mount //192.168.0.1/fritz.nas/
Nov 05 11:12:40 debianxfce kernel: CIFS VFS: Autodisabling the use of server inode numbers on \\192.168.0.1\fritz.nas.
Nov 05 11:12:40 debianxfce kernel: CIFS VFS: The server doesn't seem to support them properly or the files might be on different servers (DFS).
Nov 05 11:12:40 debianxfce kernel: CIFS VFS: Hardlinks will not be recognized on this mount. Consider mounting with the "noserverino" option to silence this message.
Kann vielleicht jemand die Meldungen aus dem Journal übersetzten? :hail:
Kann zwar, wie vorgeschlagen, "noserverino" in der fastab ergänzen, verstanden habe ich die Meldung dann aber trotzdem nicht.

michaa7
Beiträge: 4611
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: systemd mount-unit für cifs

Beitrag von michaa7 » 05.11.2019 13:23:39

Nein, kann ich nicht. Auffällig sind aber die backslashes, die wirklich etwas komisch aussehen ... unter Linux. Aber vielleicht ist das bei einer smb-fehlermeldungwg wg. windows verwandtschaft ja ok.

Interessant, wie viele mögliche wege es gibt. aber ist das nicht unnötig aufwendig? meine Lösung erscheint mir kompakter ...

Wo kann man was über diese "Credential" option lesen? Ich habe bei mir des notwendige Passwort im klartext in der Unit stehe, zwar kein großes problem, ist ja ein root file. Aber wenn ich stattdess irgendwie sagen könnte "Nimm einfach das PW des Users XY" fände ich das irgendwie schicker.
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

TomL

Re: systemd mount-unit für cifs

Beitrag von TomL » 05.11.2019 14:14:33

michaa7 hat geschrieben: ↑ zum Beitrag ↑
05.11.2019 13:23:39
Wo kann man was über diese "Credential" option lesen? Ich habe bei mir des notwendige Passwort im klartext in der Unit stehe, zwar kein großes problem, ist ja ein root file. Aber wenn ich stattdess irgendwie sagen könnte "Nimm einfach das PW des Users XY" fände ich das irgendwie schicker.
Das ist nix kompliziertes, Du kannst einfach dem parameter "credentials" einen vollständigen Dateienamen (mit Pfad) übergeben, so wie Willy das in seinem Beispiel getan hat:

Code: Alles auswählen

credentials=/home/willy/.auth
Die Datei .auth enthält dann die beiden Parameter, die Du direkt in die Unit eingetragen hast:

Code: Alles auswählen

username=willy
password=istgeheim
Wenn man userbezogenene Credentials verwenden möchte, kann man darüber hinaus auch noch eine Service-Unit instantiieren, das heisst, man kann der Service-Unit z.B. einen Usernamen mitgeben, in dessen Homedir dann die Credentials-Datei gesucht und verwendet wird. Das geht imho zwar nicht mit Mount-Units, aber man kann ja mit Service-Units genauso gut mounten. Der Vorteil ist, beim Mounten werden auf dem Sambaserver explizit die persönlichen Rechte des mountenden Users angewandt.

willy4711

Re: systemd mount-unit für cifs

Beitrag von willy4711 » 05.11.2019 15:13:37

michaa7 hat geschrieben: ↑ zum Beitrag ↑
05.11.2019 13:23:39
Wo kann man was über diese "Credential" option lesen?
In Ergänzung zu TomL: man mount.cifs
michaa7 hat geschrieben: ↑ zum Beitrag ↑
05.11.2019 13:23:39
Interessant, wie viele mögliche wege es gibt. aber ist das nicht unnötig aufwendig? meine Lösung erscheint mir kompakter ...
An sich nicht. Du brauchst bloß einen funktionierenden Eintrag in der fstab.
den Rest macht systemd-fstab-generator ja eh selber. Geschrieben hab ich da nichts.

Der Generator erzeugt eh bei jedem Systemstart diese Units aus der fstab.
http://manpages.ubuntu.com/manpages/bio ... tor.8.html
http://manpages.ubuntu.com/manpages/eoa ... unt.5.html

Deshalb sehe ich keinen Vorteil darin, eine Mount-Unit selbst zu kreieren, außer zu Übungszwecken.
Das Umschreiben einer Unit dürfte darüber hinaus bei Änderungen im Dateisystem aufwendiger sein, als mal kurz
die fstab zu editieren.

michaa7
Beiträge: 4611
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: systemd mount-unit für cifs

Beitrag von michaa7 » 05.11.2019 15:22:07

willy4711 hat geschrieben: ↑ zum Beitrag ↑
05.11.2019 15:13:37
...Du brauchst bloß einen funktionierenden Eintrag in der fstab.
den Rest macht systemd-fstab-generator ...
ahhhhh, ok, danke.
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

willy4711

Re: systemd mount-unit für cifs

Beitrag von willy4711 » 05.11.2019 15:25:02

Kannst ja mal bei dir in /run/systemd/generator/ nachsehen.
Da sollten alle Mount-Units versammelt sein.

Benutzeravatar
jph
Beiträge: 1049
Registriert: 06.12.2015 15:06:07
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Greven/Westf.

Re: systemd mount-unit für cifs

Beitrag von jph » 05.11.2019 18:24:03

michaa7 hat geschrieben: ↑ zum Beitrag ↑
04.11.2019 23:41:12
Etwas unsicher bin ich mir über das "Where", dass das unterschiedlich ist. Ich habe die Beispiel datei so interpretiert, dass eben die automount datei das übergeordnete verzeichnis überwachen muß? Falls das nicht der Fall ist, dann wäre das ein fehler in der Beispieldatei.
Die Anleitung ist richtig, denn die Automount-Unit ist für die NFSv4-Mount-Unit gedacht und nicht für die CIFS-Unit. Bei NFSv4 mountet man das Verzeichnis, in dem die Exports bereitgestellt werden. Bei CIFS muss man jede Freigabe einzeln mounten. Ich werde einen Satz ergänzen, der darauf hinweist.

michaa7 hat geschrieben: ↑ zum Beitrag ↑
05.11.2019 00:13:03
Der weitere fehler war "ver=1.0" statt ""vers=1.0".
Den Fehler hast du selbst reingebaut, davon steht nichts im Wiki-Artikel :P

Full Disclosure: ich habe den Wiki-Artikel geschrieben ;-)

michaa7
Beiträge: 4611
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: systemd mount-unit für cifs

Beitrag von michaa7 » 05.11.2019 21:56:59

Vorab erstmal danke für deinen wiki artikel. Im grunde ist das ja gut und nachvollziehbar beschrieben.
jph hat geschrieben: ↑ zum Beitrag ↑
05.11.2019 18:24:03
...
Die Anleitung ist richtig, denn die Automount-Unit ist für die NFSv4-Mount-Unit gedacht und nicht für die CIFS-Unit. Bei NFSv4 mountet man das Verzeichnis, in dem die Exports bereitgestellt werden. Bei CIFS muss man jede Freigabe einzeln mounten. Ich werde einen Satz ergänzen, der darauf hinweist.
Das halte ich für eine gute idee, weil hier eben zumindest für mich die beabsichtigte Intension nicht offensichtlich war. Den unterschied klar zu machen wie du es hier tust wird dieses Missverständnis vermeiden.
jph hat geschrieben: ↑ zum Beitrag ↑
05.11.2019 18:24:03
michaa7 hat geschrieben: ↑ zum Beitrag ↑
05.11.2019 00:13:03
Der weitere fehler war "ver=1.0" statt ""vers=1.0".
Den Fehler hast du selbst reingebaut, davon steht nichts im Wiki-Artikel :P

...
Das wollte ich auch nicht behaupten und (ohne jetzt nach zu forschen) ich hoffe ich habe mich da nirgends missverständlich ausgedrückt. Das war natürlich mein eigener fehler.
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

michaa7
Beiträge: 4611
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

(erledigt) Re: systemd mount-unit für cifs

Beitrag von michaa7 » 02.12.2020 23:04:14

Das ist nun eine Fortsetzung!!!


Auf dem Rechner mit dem ich dies FB- Freigabe mounte funktioniert nach wie vor alles.

Nun möchte ich auf meinen Schlepptop das ebenso einrichten ... und habe keine Ahnung mehr was ich tun muß. Die beiden Dateiein (mount units)

/etc/systemd/system/dtn-fb.mount
/etc/systemd/system/dtn-fb.automount

habe ich einfach auf den Schlepptop kopiert und den entsprechendn Mountpunkt eingerichtet. Aber das scheint irgendwie nicht zu reichen, auch nach einem reboot wird die Freigabe nicht eingehängt. Wenn allerdinbgBis auf diesen thread hier finde ich nichts was ich noch gemacht hätte. Ich weiß aber auch nciht wie ich genau herausbekommen wie es hier auf meinem Hauptrechner funktioniert (nicht über eine fstab eintrag).

Auf dem Schlepptop kann ich in dmesg nichts zu CIFS finden. Irgendwas fehlt also noch (wobei ich mich wundere das systemd nicht meckert wenn es zu einen *.mount nichts findet. Fehlt mir noch irgend ein samba/CIFS paket?

EDIT: cifs-utils ist installiert

Edit2: benötige smb4k und/oder smbclient?

Irgendwie möchte wohl systemd wohl noch angestupst werden um beim systemstart die units zu berücksichtigen ... Wie?

Wie verdammt nochmal wird dieser SCHeiss automount service "enabled"

JA, ICH WEISS DAS NICHT, WEIL ICH NICHT BESSERES ABER ANDERES ZU TUN HABE ALS MIR systemctl start mnt-datengrab.automountJEDES SCHEISS COMMAND ZU MERKEN. DANN SCHREIBT DAS HALT INS WIKI ****FALLLS*** IHR WIRKLICH WOLLT DASS LINUX JEMALS MEHR ALS 5 USER HAT.

Jetzt funktioniert es. Es fehlte:

Code: Alles auswählen

# systemctl enable <unitname>.automount 
Vielleicht schreibt's ja jemand ins wiki statt sich über meinen Ausbruch zu äussern. Letzteres interessiert nämlich niemanden.

n8
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Benutzeravatar
jph
Beiträge: 1049
Registriert: 06.12.2015 15:06:07
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Greven/Westf.

Re: systemd mount-unit für cifs

Beitrag von jph » 03.12.2020 20:02:51

Ich danke dir für deine wertschätzende und qualifizierte Rückmeldung zu meinem Artikel. Ich sehe, die Mühe hat sich gelohnt.

JTH
Moderator
Beiträge: 3014
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: (erledigt) Re: systemd mount-unit für cifs

Beitrag von JTH » 03.12.2020 20:18:11

michaa7 hat geschrieben: ↑ zum Beitrag ↑
02.12.2020 23:04:14
Vielleicht schreibt's ja jemand ins wiki statt sich über meinen Ausbruch zu äussern.
https://wiki.debianforum.de/Netzlaufwerke_einbinden#Automount-Unit hat geschrieben: Automount-Unit

[…] Die Automount-Unit muss enabled und gestartet werden.

Nicht an dich persönlich gerichtet, aber es ist schade, dass alles, was keine exakte Schritt-für-Schritt-Anleitung ist, anscheinend immer weniger beachtet wird. Merke ich an mir selbst durchaus auch gelegentlich.
Manchmal bekannt als Just (another) Terminal Hacker.

michaa7
Beiträge: 4611
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: (erledigt) Re: systemd mount-unit für cifs

Beitrag von michaa7 » 31.12.2020 16:56:15

JTH hat geschrieben: ↑ zum Beitrag ↑
03.12.2020 20:18:11
michaa7 hat geschrieben: ↑ zum Beitrag ↑
02.12.2020 23:04:14
Vielleicht schreibt's ja jemand ins wiki statt sich über meinen Ausbruch zu äussern.
https://wiki.debianforum.de/Netzlaufwerke_einbinden#Automount-Unit hat geschrieben: Automount-Unit

[…] Die Automount-Unit muss enabled und gestartet werden.

Nicht an dich persönlich gerichtet, aber es ist schade, dass alles, was keine exakte Schritt-für-Schritt-Anleitung ist, anscheinend immer weniger beachtet wird. Merke ich an mir selbst durchaus auch gelegentlich.
Offensichtlich ist es nicht offensichtlich, sonst stünde es nicht da. Und weil es wichtig, aber eben nicht offensichtlich ist sollte es im wiki fett gedruckt sein, weil's sonst untergeht. Das ist ja wohl offensichtlich.
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Antworten