Mounten eines Windows-Ordners mit Schreibrechten in Ubuntu


17

Anscheinend ist die Antwort hier: /superuser/251537/mount-specific-ntfs-directory-on-linux, aber es funktioniert nicht wie erwartet.

Ich habe ein Dual-Boot-System mit Windows 7 und Ubuntu 13.04 (von 12.10 aktualisiert) und möchte auf meine persönlichen Windows 7-Ordner zum Lesen und Schreiben zugreifen. Ich habe die Anweisungen gemäß dem angegebenen Link befolgt und meine /etc/fstabDatei sieht folgendermaßen aus:

/dev/sda1 /media/windows ntfs ro,umask=0222,defaults 0 0
/media/windows/Users/MyUser/    /home/myuser/Windows    ntfs-3g rbind,user,umask=0222,defaults 0 0
/media/windows/Users/OtherUser/ /home/otheruser/Windows ntfs-3g rbind,user,umask=0222,defaults 0 0

Es funktioniert fast wie erwartet. Meine Windows-Partition ist /media/windows/schreibgeschützt und mein persönlicher Windows-Ordner befindet sich in ~/Windows. Dieser persönliche Ordner ist jedoch auch schreibgeschützt.

Hinweis: Ich konfiguriere dies in einer Multisession-Umgebung. Daher muss dies für meine Sitzung und für die Sitzungen anderer Benutzer funktionieren. Ich brauche, dass jeder Benutzer von Linux aus auf seine Windows-Ordner zugreifen und diese schreiben und lesen kann.


Kann ich Konfigurationen ändern und testen, ohne das gesamte System neu starten zu müssen? Bisher habe ich versucht, umask (auf 0002) zu ändern, uid- und gid-Parameter usw. hinzuzufügen, ohne dass dies zu positiven Ergebnissen geführt hätte. Jede Änderung erfordert jedoch ein Herunterfahren des Systems.
Carlos Eugenio Thompson Pinzón

Ich hatte die 100 Bounty an Totti für die Idee oder die Montage der Partition unter /root/(was funktioniert) vergeben. Meine derzeitige Lösung verwendet die Hinweise von Falkner, AjThapa, Totti und Yilmi. Keiner von ihnen funktioniert wie in der ursprünglichen Frage erwartet (Schutz ist nicht ausreichend), aber er funktioniert (Benutzer haben rw-Zugriff auf ihre Daten). Alle diese Antworten wurden positiv bewertet.
Carlos Eugenio Thompson Pinzón

Antworten:


6

Die oben verlinkte Superuser-Frage bezieht sich auf das Mounten von Partition und Unterverzeichnis im Nur-Lese- Modus. Sie benötigen nur das Unterverzeichnis (persönlicher Ordner) zum Lesen und Schreiben.

Überprüfen Sie zunächst, ob Ihr System die ntfs- Partition im Lese- / Schreibmodus bereitstellen kann

mount -t ntfs-3g  -o rw /dev/sda1 /media/windows

Testen Sie nun, ob die gemountete fs beschreibbar ist. Wenn nicht, hören Sie hier auf und stellen Sie eine andere Frage auf dieser Seite.

Das Problem ist, dass das Unterverzeichnis einer RO-Partition nicht in RW sein kann. Die Lösung besteht also darin, die Windows-Partition in RW an einem verborgenen und unzugänglichen Ort anzubringen. Also mounten wir es auf / root / win, auf das nicht-root-Benutzer keinen Zugriff haben (ohne sudo).

Führen Sie als Root- Benutzer die folgenden
Schritte aus:
1. Hängen Sie die Windows-Partition in RW ein

mount -t ntfs-3g -o rw /dev/sda1 /root/win  

2. Binde es

mount --bind /root/win/Users/MyUser/  /home/myuser/Windows  

3. Binden Sie eine schreibgeschützte Instanz der Windows-Partition

mount --bind /root/win /media/windows  
mount -o remount,ro /media/windows

Jetzt sollte alles in Ordnung sein. Zusätzlich können Sie die Windows-Partition aushängen, aber ich warne Sie in einigen Systemen, dass dies den Zugriff auf die gebundene Partition (@home) unmöglich machen wird. Der Code istumount /root/win

Alternativ können Sie die Windows-Partition in RW unter / media / windows (anstelle von / root / win) einhängen und sie sofort am gleichen Einhängepunkt (/ media / windows) binden, sodass niemand (auch kein Root) auf die Windows-Partition schreiben kann Partition (aber im Benutzerordner).


Funktioniert es ? Was ist das Problem?
Totti

Der erste Teil, das Mounten von rw in / media / windows, scheint zu funktionieren, obwohl er keine Berechtigungen meldet, die ich tatsächlich berühren und bearbeiten kann.
Carlos Eugenio Thompson Pinzón

Beim erneuten Montieren erhalte ich den folgenden Fehler:Remounting is not supported at present. You have to umount volume and then mount it once again.
Carlos Eugenio Thompson Pinzón

Ich denke, es ist das Problem Ihres Systems. Ich habe dies erfolgreich in Ubuntu 12.10 getestet. Ich sehe solche Fehler auch in Ubuntu 10.04 nie. Sie können es in einem Live-System versuchen (da Sie das Betriebssystem aktualisiert zu haben schienen).
Totti

Danke auch von mir für eine elegante Lösung und eine sehr klare Erklärung. Mir gefällt vor allem der Trick, den Benutzerordner so zu mounten, dass ein Benutzer (sogar root) auf einen anderen als den Benutzerordner schreiben kann. Dies ist in der Tat die beste Lösung, da keine andere Betriebssysteminstanz als die Windows 8.1-Instanz, zu der Systemdateien gehören, ein Unternehmen hat, das auf diese Systemdateien zugreift. Geteilte Daten sind jedoch eine andere Geschichte.
Bill The Ape

5

Ich bezweifle, dass die verknüpfte Superuser-Antwort funktioniert. (Obwohl ich es nicht probieren kann.) Von man mount:

Beachten Sie, dass die Einhängeoptionen für das Dateisystem dieselben bleiben wie die am ursprünglichen Einhängepunkt und nicht geändert werden können, indem Sie die Option -o zusammen mit --bind / - rbind übergeben. Die Mount-Optionen können durch einen separaten Remount-Befehl geändert werden. Beispiel:

mount --bind olddir newdir
mount -o remount,ro newdir

Ich bezweifle auch, dass es möglich ist, --rbindeinen Teil eines Dateisystems mit einem anderen Dateisystemtreiber (ntfs vs ntfs-3g) zu betreiben.

Wenn Sie rbindden Befehl mount ignorieren, wird nichts schreibgeschützt. Und da der Kernel-NTFS-Treiber keine Schreibvorgänge unterstützt, rwhilft die Option natürlich auch nicht. Verwenden Sie den Treiber ntfs-3g.

Grundsätzlich sollten Sie Folgendes tun (in einem Terminal):

mount -t ntfs-3g -o ro /dev/sda1 /media/windows
mount --bind /media/windows/Users/MyUser/    /home/myuser/Windows
mount -o remount,rw /home/myuser/Windows

(Ich denke das --rbindist auch unnötig, --bindsollte reichen.)

Und zu dem Kommentar unter der Frage: Natürlich müssen Sie das System zum Testen nicht neu starten, verwenden Sie einfach den mountBefehl wie oben. (Und mit dem umountBefehl aushängen .)

Nachdem Sie bestätigt haben, dass dies wie beabsichtigt funktioniert, ändern Sie einfach den Mount und fügen die gewünschten Optionen hinzu: uid, gid, umask usw.


Nun, ich kann die Verwendung testen. mountWenn ich jedoch die funktionierende Konfiguration gefunden habe, möchte ich dies automatisch tun, entweder mit /etc/fstaboder auf andere Weise. (Mit der Frage Ob: Wie übersetze ich mountBefehle in fstabParameter?)
Carlos Eugenio Thompson Pinzón

@ CarlosEugenioThompsonPinzón Dies fstabist nur eine Datei, die mountbeim Start nacheinander vom Befehl analysiert wird . Aber ich denke, Ubuntu verwendet es nicht, mountsondern mountallbeim Start, der die Befehle in fstab möglicherweise nicht sequentiell ausführt. Also fstabfunktioniert es möglicherweise nicht , diese Befehlsparameter einfach so zu setzen . Sie können jedoch jederzeit einfach die funktionierenden mount-Befehle in ein Startskript einfügen (z. B. /etc/rc.local) oder daraus einen Startjob ausführen . In Ihrem Fall ist es wichtiger, ein funktionierendes Bereitstellungsschema zu finden, damit das automatische Bereitstellen beim Start einfach ist.
Falkner

@ CarlosEugenioThompsonPinzón Hoppla, ich habe die letzte Frage von Ihrem Kommentar verpasst. Wie werden die mount-Befehle in fstab übersetzt? Sie können es in man mountoder hier nachschlagen . Kurzgeschichte: erstes Feld: Gerät zum Mounten, zweites Feld: Mount-Punkt, drittes Feld: fs-Typ (genauer fs-Treiber), viertes Feld: Mount-Optionen, das andere Feld ist jetzt weniger wichtig. Wenn Sie also den Befehl mount eingeben, wird die Zeichenfolge, hinter der wir geschrieben haben, -tin das dritte Feld eingefügt. Die Zeichenfolge, hinter der wir geschrieben haben, wird -oin das vierte Feld eingefügt.
Falkner

3

Mal sehen, ob das hilft ...

Wenn sda1bereits gemountet ist, /media/windowskönnen Sie das Mounten mit:

sudo umount /media/windows

Als nächstes erstellen Sie das Verzeichnis windowsin /media/:

sudo mkdir /media/windows

Bearbeiten Sie das /etc/fstabwie folgt:

/dev/sda1  /media/windows ntfs-3g  rw,nodev,noexec,auto,nouser,async,locale=en_US.utf8,uid=1000,gid=1000,umask=0002 0 0

/media/windows/Users/MyUser/  /home/myuser/Windows  ntfs-3g rbind,user,rw,nodev,noexec,auto,async,uid=1000,gid=1000,umask=0002 0 0

/media/windows/Users/OtherUser/  /home/otheruser/Windows  rbind,user,rw,nodev,noexec,auto,async,uid=1001,gid=1001,umask=0002 0 0

( Hinweis : Ändern Sie die Werte für UID und GID wie für den Benutzer. Um die UID und GID eines Benutzers abzurufen, können Sie den Befehl id -u usernameund die entsprechenden Befehle verwenden id -g username.)

Jetzt können Sie diese mit dem Befehl einhängen:

sudo mount -a

Wechseln Sie nun in die neu gebundenen Verzeichnisse und prüfen Sie, ob Sie die Datei bearbeiten können. Und du solltest fertig sein.


Okay, ich habe rw-Berechtigungen für /media/windows(nicht gemeldet in ls, aber ich kann Dateien bearbeiten) als root, jedoch in den lokalen Verzeichnissen, die ich sudozum Ändern der Dateien benötige .
Carlos Eugenio Thompson Pinzón

... und jetzt gehören mir alle gemounteten Verzeichnisse (Benutzer 1000) von /media/windowsbis /home/someotheruser/Windows.
Carlos Eugenio Thompson Pinzón

Ich vermute, jetzt können Sie und andere Benutzer Arbeiten in der jeweiligen erstellen und speichern. Einhängepunkte in $ HOME der Benutzer ... Wenn der Rest der Benutzer immer noch keinen RW-Zugriff hat, fügen Sie sie Ihrer Gruppe hinzu (wahrscheinlich mit der GID 1000)
genau

Derzeit habe ich eine Gruppe, der alle lokalen Benutzer zugeordnet sind, und ich erteile dieser Gruppe Schreibberechtigungen. Dies löst das Problem, dass "jeder Benutzer über direkten Zugriff auf seine eigenen Daten verfügt", die gesamte Partition und die Daten anderer Benutzer jedoch nicht geschützt sind.
Carlos Eugenio Thompson Pinzón

3

Führen Sie alle Tests durch, bevor Sie Ihre fstab-Konfigurationsdatei bearbeiten.

Nun, Sie wissen wahrscheinlich, dass das ntfs-Dateisystem automatisch schreibgeschützt gemountet wird, wenn das Dateisystem als fehlerhaft markiert ist. Bevor Sie eine der Antworten versuchen, müssen Sie zuerst die Festplatte in Windows mounten und chkdsk ausführen, bevor Sie versuchen, sie erneut zu mounten.

Wenn das Mounten in rw weiterhin fehlschlägt, sollten Sie versuchen, mit verschiedenen Optionen für den Mount-Typ wie sudo mount -t ntfsoder zu mountensudo mount -t ntfs-3g

Sobald fs in rw gemountet ist, können Sie Folgendes tun:

mount --bind /media/MOUNTPOINT/TARGETFOLDER /home/SHAREDDIRECTORY/ mount -o remount,ro /home/SHAREDDIRECTORY/

oder

sudo gksu nautilusoder sudo gksu dolphinum einen Explorer mit su-Rechten zu öffnen


Vielen Dank für die chkdsk. Es gab tatsächlich einige Fehler in der NTFS-Partition und jetzt kann ich mit auf das gemountete Laufwerk schreiben sudo.
Carlos Eugenio Thompson Pinzón

2

Warum nicht versuchen, es mit Lese- und Schreibattributen zu mounten rw :?

/ dev / sda1 / media / windows ntfs rw , umask = 0222, Standardeinstellung 0 0


Ich werde das überprüfen, aber ich hätte lieber die gesamte Partition schreibgeschützt und nur einige bestimmte Ordner als Schreib- / Lesezugriff.
Carlos Eugenio Thompson Pinzón

Hat nicht funktioniert Sowohl die Partition als auch die Ordner sind weiterhin schreibgeschützt. Der einzige Unterschied besteht darin, dass chmod und chown keinen Nur-Lese-Fehler melden: Sie funktionieren einfach nicht.
Carlos Eugenio Thompson Pinzón

2

Ich bin mir jedoch nicht ganz sicher, können Sie das bitte versuchen. Geben Sie nach dem Mounten des Laufwerks den folgenden Befehl am Terminal ein

sudo gksu nautilus

Geben Sie Ihr Administratorkennwort ein. In dem sich öffnenden Grafikfenster sollten Sie auf das Laufwerk klicken und die Lese- / Schreibberechtigungen ändern können.

Lassen Sie mich wissen, ob das funktioniert. Für die Verwendung von Nautilus mit grafischer Oberfläche mit Root-Rechten steht Hilfe zur Verfügung.


Dies würde den Zugriff auf die Dateien ermöglichen und sie könnten auch kopiert werden, aber die Nur-Lese-Berechtigungen könnten nicht geändert werden, da Nicht-Unix-Dateisysteme als Nur-Lese-Dateisysteme bereitgestellt werden ...
Wilf

1

Ich würde die Verwendung von sudo chmod.666 ~ / Windows empfehlen

https://help.ubuntu.com/community/FilePermissions


1
Ich kann weder die Erlaubnis noch den Besitzer ändern (auch nicht mit sudo). Es weist den Befehl zurück, der besagt, dass das System schreibgeschützt ist. Nicht einmal in /media/windows/welcher ist die ganze Partition (und das wäre nicht das erwartete Verhalten)
Carlos Eugenio Thompson Pinzón

Ich liege wahrscheinlich falsch, aber manchmal hat sudo keine Berechtigungen, die root hätte. Versuchen Sie, sudo su und dann chmod
virtualxtc

0

Der einfachste Weg, Windows als Lese- / Schreibzugriff zu aktivieren, besteht darin, es einfach neu zu starten oder es vollständig herunterzufahren. Die NTFS-Partition wird in den Ruhezustand versetzt, wenn "schnelles Herunterfahren" verwendet wird. Auf dieses Prinzip wird unter diesem Link näher eingegangen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.