Option "Benutzer" funktioniert für Mount, nicht für Umount

9

Ich experimentiere mit Montageoptionen für ein Programm, das ich schreibe. Ich verwende Linux Mageia 2.

Ich habe die folgende Zeile hinzugefügt /etc/fstab

/dev/sr0 /mem  auto user,noauto, 0 0

und ich habe alle anderen Einträge entfernt, bei /dev/sr0denen es sich um das Gerät für mein DVD-Laufwerk handelt.

Dann kann ich als normaler Benutzer erfolgreich handeln

$ mount /dev/sr0

aber ich bekomme dann eine fehlermeldung ("nur root kann ...") für

$ umount /dev/sr0

Natürlich ist das Gerät nicht beschäftigt: Ich mache nichts zwischen mount und umount.

Nach dem Lösen hinzugefügt : Wenn Sie nur an der Lösung dieses Problems interessiert sind, können Sie den Rest der Frage überspringen und direkt zur akzeptierten Antwort wechseln. Der Rest der Frage bezieht sich auf meine Arbeit, um eine Lösung zu finden oder das Problem besser zu dokumentieren. Ganz am Ende der Frage befindet sich jedoch ein Post-Mortem- Abschnitt, der die Antwort durch meine eigenen Bemerkungen ergänzt.

Eigentum an Dateien:

$ ls -ld /mem /dev/sr0
brw-rw----+  1 root cdrom 11, 0 mai   14 01:01 /dev/sr0
drwxr-xr-x  12 root root   4096 janv. 21 22:34 /mem/

Und ich bin Mitglied der Gruppe "cdrom"

Ich habe das gleiche Problem beim Mounten eines Dateisystem-Images mit einem Loop-Gerät.

Alles funktioniert jedoch einwandfrei, wenn ich "Benutzer" durch die Option "Benutzer" ersetze, was darauf hinweist, dass das System verwirrt ist, wenn ich mich daran erinnere, wer das Dateisystem gemountet hat.

Die erste Antwort von Rahul Patil bringt keine weiteren Erkenntnisse, da sie im Wesentlichen dem entspricht, was ich verwendet habe, wenn mein Verständnis des Umounting-Verfahrens korrekt ist. Es hat mich jedoch dazu gebracht, weiter über diesen Prozess nachzudenken (daher eine Gegenstimme) und mehr Details zu erfahren. Dies wurde durch den Kommentar von Hauke ​​Laging noch mehr unterstützt. Kurz gesagt, der Befehl umount nimmt zusammenfassend sein Argument (ein Gerät oder einen Einhängepunkt) und versucht, zutreffende Einträge in zu identifizieren /etc/mtabund prüft dann, /etc/fstabob er die Anforderung ausführen kann.

Gemäß dem Manpage mount (8) , der Name des Montag Benutzers [sollte] geschrieben , so mtab , dass er wieder das Dateisystem aushängen kann. Wenn ich /etc/mtabnach der Montage überprüfe , werden keine solchen Informationen geschrieben, die ich finden kann. Ich weiß nicht, wie es gespeichert werden soll und wie es aussehen soll.

Daher ist das Problem mounteher mit als mit umount.

Um absolut sicher zu sein, dass das Problem nicht darin besteht, dass ein anderer /etc/fstabEintrag zum Mounten verwendet wird (was die Unkenntnis der Option "Benutzer" erklären würde), habe ich alle anderen Einträge in gelöscht /etc/fstabund nur die einzelne Zeile am Anfang meiner Frage beibehalten. Dann wiederholte ich die Mount-Umount-Sequenz, leider mit dem gleichen Ergebnis.

$ grep sr0 /etc/mtab
/dev/sr0 /mem udf ro,nosuid,nodev,noexec,relatime,utf8 0 0

$ mount | grep sr0
/dev/sr0 on /mem type udf (ro,nosuid,nodev,noexec,relatime,utf8)

Hauke ​​Laging fragte nach ls -l /etc/mtab, was ich für einen Fehler hielt und nach dem er wirklich fragte cat /etc/mtab. Aber ich habe es trotzdem getan ...

$ ls -l /etc/mtab
lrwxrwxrwx 1 root root 12 juin  25  2012 /etc/mtab -> /proc/mounts
$ ls -l /proc/mounts
lrwxrwxrwx 1 root root 11 mai   19 13:21 /proc/mounts -> self/mounts
$ ls -l /proc/self/mounts
-r--r--r-- 1 myself mygroup 0 mai   19 13:22 /proc/self/mounts

Diese letzte Information hat mich überrascht. Obwohl ich im Wesentlichen der einzige Benutzer auf diesem Computer bin, sehe ich keinen Grund, warum diese Datei mir oder einem anderen Benutzer als root selbst gehören sollte. Vielen Dank Hauke, aber warum hast du diese Frage gestellt?

Eigentlich gehört die Datei mir nicht. Ich denke, es muss eine virtuelle Datei sein. Ich wiederholte die Anfrage als Benutzer "Freund" und dann als "root":

$ ls -l /proc/self/mounts
-r--r--r-- 1 friend users 0 mai   19 14:10 /proc/self/mounts

# ls -l /proc/self/mounts
-r--r--r-- 1 root root 0 mai   19 14:10 /proc/self/mounts

Ich würde jeden Vorschlag begrüßen, was das Problem sein könnte, oder Experimente versuchen.

Vielen Dank

Post-mortem : Hier einige abschließende Bemerkungen, nachdem das Problem von Hauke ​​Laging gelöst wurde.

Ich folgte im Internet der Erklärung von Hauke.

Anscheinend ist dies ein altes Problem. Es wird in einem alten Dokument vom Oktober 2000 erklärt , in dem einige Probleme mit anderen Optionen erwähnt werden, jedoch nicht user. Hoffentlich sind einige der Probleme mit der Kernelzuverlässigkeit jetzt behoben.

Das Problem wird im Fehlerbereich der mountManpage kurz erwähnt, jedoch nicht detailliert genug, insbesondere in Bezug auf alternative Setups und Auswirkungen auf Optionen.

In dieser sehr langen Manpage gehen jedoch die folgenden Informationen verloren:

When the proc filesystem is mounted (say at /proc), the files
/etc/mtab and /proc/mounts have very similar contents. **The
former has somewhat more information, such as the mount options
used**, but is not necessarily up-to-date (cf. the -n option
below). It is possible to replace /etc/mtab by a symbolic link to
/proc/mounts, and especially when you have very large numbers of
mounts things will be much faster with that symlink, but **some
information is lost that way, and in particular using the "user"
option will fail**.

Es wäre sicherlich nützlich gewesen, einen Hinweis darauf zu haben, wo die Option userbeschrieben wird, was der erste Ort ist, an dem ich gesucht habe.

babou
quelle
Ist es derselbe Benutzer, der beide Operationen ausführt?
Hauke ​​Laging
Was ist die Ausgabe mountnach der Montage des Geräts? Und ls -l /etc/mtab?
Hauke ​​Laging
@Hauke ​​Laging - Warum hast du gefragt ls -l /etc/mtab?
Babou
Siehe meine Antwort unten.
Hauke ​​Laging
/proc/selfist nur ein Symlink zum /proc/$PIDaufrufenden Prozess. Über das Manpage-Problem: Sie können den Text jederzeit verbessern. Ich bin sicher, dass die Betreuer glücklich sein werden.
Hauke ​​Laging

Antworten:

4

Das Problem ist, dass Sie /etc/mtabkeine Datei, sondern ein Symlink zu sind /proc/mounts. Dies hat Vorteile, aber auch den Nachteil, userder nicht funktioniert. Sie haben den Grund dafür bereits richtig erraten: "Das System ist verwirrt, wenn Sie sich daran erinnern, wer das Dateisystem gemountet hat". Diese Informationen sind geschrieben mtab, können in Ihrem Fall jedoch nicht dort geschrieben werden. Der Kernel kümmert sich nicht um Benutzer-Mounts (dies ist nicht einmal bekannt) (dies ist eine Userspace-Funktion). Somit ist diese Information nicht in enthalten /proc/mounts.

Mach das:

cd /etc
cp mtab mtab.file
rm mtab
mv mtab.file mtab

umount als Benutzer sollte arbeiten, nachdem Sie das Volume erneut gemountet haben.

Hauke ​​Laging
quelle
1

/dev/sr0Verwenden Sie anstelle des Gerätenamens ( ) den Mount-Punkt (in Ihrem Fall ist der Mount-Punkt /mem).

Also einfach für Mount verwenden:

mount /mem

Zum Aufheben der Montage:

umount /mem

Ich habe getestet und arbeite auf meiner Seite, OS ist CentOS 5.8

Rahul Patil
quelle
Warum sollte / mnt nichts damit zu tun haben. Es ist nicht Teil meines Montage-Setups. Oder meintest du "umount / mem"? Auf jeden Fall funktioniert es nicht.
Babou
können Sie Komma nach Erlaubnis wie user,noauto, Änderung von user,noautovon Ihrem fstab entfernen
Rahul Patil
Vielen Dank für die Bemerkung. Das Komma ist das Ergebnis von Vereinfachungen des /etc/fstabEintrags, den ich vorgenommen habe, nachdem ich auf das Problem gestoßen bin ... das leider ohne Komma bestehen bleibt. Ihre Bemerkung erlaubte mir jedoch, auch einen anderen Eintrag in Stackexchange zu bereinigen, der meine Frage tatsächlich motivierte.
Babou