Monter un dossier Windows avec des autorisations d'écriture dans Ubuntu


17

Apparemment, la réponse est ici: /superuser/251537/mount-specific-ntfs-directory-on-linux mais cela ne fonctionne pas comme prévu.

J'ai un système à double démarrage avec Windows 7 et Ubuntu 13.04 (mis à niveau à partir de 12.10), et je souhaite accéder à mes dossiers personnels Windows 7 pour la lecture et l'écriture. J'ai suivi les instructions en fonction du lien donné et mon /etc/fstabfichier ressemble à ceci:

/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

Cela fonctionne presque comme prévu. Ma partition Windows est activée /media/windows/avec des autorisations en lecture seule et mon dossier personnel Windows est dans ~/Windows. Cependant, ce dossier personnel est également en lecture seule.

Remarque Je configure ceci dans un environnement multisession, j'ai donc besoin de cela pour fonctionner pour ma session et pour les sessions d'autres utilisateurs. J'ai besoin que chaque utilisateur puisse accéder et pouvoir écrire et lire leurs dossiers Windows à partir de Linux.


Existe-t-il un moyen de modifier et de tester des configurations sans avoir à redémarrer l'ensemble du système? Jusqu'à présent, j'ai essayé de changer umask (en 0002), en ajoutant des paramètres uid et gid, etc. sans résultat positif, mais chaque changement nécessite un arrêt du système.
Carlos Eugenio Thompson Pinzón

J'avais attribué la prime de 100 à totti pour l'idée ou le montage de la partition sous /root/(qui fonctionne). Ma solution actuelle utilise les conseils fournis par falconer, ajThapa, totti et yilmi, aucun ne fonctionne comme prévu dans la question d'origine (les protections ne sont pas suffisantes), mais cela fonctionne (les utilisateurs ont un accès rw à leurs données). Toutes ces réponses mentionnées ont été votées positivement.
Carlos Eugenio Thompson Pinzón

Réponses:


6

La question du super utilisateur lié ci-dessus concerne le montage de la partition et du sous-répertoire en mode lecture seule . Vous avez seulement besoin du sous-répertoire (dossier personnel) pour être en lecture-écriture.

Vérifiez d'abord que votre système peut monter la partition ntfs en mode lecture-écriture

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

Testez maintenant si le fs monté est accessible en écriture. Sinon arrêtez-vous ici et posez une autre question sur ce site.

Le problème est que le sous-répertoire d'une partition montée RO ne peut pas être dans RW. La solution consiste donc à monter la partition Windows dans RW dans un endroit caché et inaccessible. Alors montons-le sur / root / win qui est inaccessible aux utilisateurs non root (sans sudo)

En tant qu'utilisateur root, suivez les
étapes
1. Montez la partition Windows dans RW

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

2. Liez-le

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

3. Liez une instance en lecture seule de la partition Windows

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

Maintenant, tout devrait être OK. De plus, vous pouvez démonter la partition Windows mais je vous préviens que dans certains systèmes, cela rendra celle liée (@home) inaccessible. Le code estumount /root/win

Alternativement, vous pouvez monter la partition Windows dans RW dans / media / windows (au lieu de / root / win) et lier immédiatement le monter au même point de montage (/ media / windows) afin que personne (même root) ne puisse écrire sur le partition (mais sur le dossier utilisateur).


Est-ce que ça marche ? Quel est le problème?
totti

La première partie, le montage de rw dans / media / windows semble fonctionner bien qu'il ne signale pas les autorisations avec lesquelles je peux réellement toucher et éditer les fichiers.
Carlos Eugenio Thompson Pinzón

Lors du remontage, j'obtiens l'erreur suivante:Remounting is not supported at present. You have to umount volume and then mount it once again.
Carlos Eugenio Thompson Pinzón

Je pense que c'est le problème de votre système. Je l'ai testé avec succès dans Ubuntu 12.10. Je ne vois jamais une telle erreur, même dans Ubuntu 10.04. Vous pouvez l'essayer dans un système en direct (car vous sembliez avoir mis à jour le système d'exploitation).
totti

Merci également de ma part pour une solution élégante et une explication très claire. J'aime particulièrement l'astuce pour monter le dossier utilisateur afin qu'un seul (même root) puisse écrire sur un dossier autre que le dossier utilisateur. C'est en effet la meilleure solution car aucune instance de système d'exploitation autre que l'instance Windows 8.1 à laquelle appartiennent les fichiers système n'a d'entreprise qui accède à ces fichiers système. Les données partagées, cependant, sont une autre histoire.
Bill The Ape

5

Je doute que la réponse du superutilisateur lié soit fonctionnelle. (Bien que je ne puisse pas l'essayer.) De man mount:

Notez que les options de montage du système de fichiers resteront les mêmes que celles du point de montage d'origine et ne peuvent pas être modifiées en passant l'option -o avec --bind / - rbind. Les options de montage peuvent être modifiées par une commande de remontage distincte, par exemple:

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

Je doute également qu'il soit possible de faire --rbindpartie d'un système de fichiers avec un pilote de système de fichiers différent (ntfs vs ntfs-3g).

Lorsque vous rbindla commande mount ignore toutes les options, rien ne deviendra en lecture-écriture. Et comme le pilote du noyau ntfs ne prend pas en charge les écritures, il est évident que l' rwoption ne vous aidera pas non plus. Utilisez le pilote ntfs-3g.

Fondamentalement, ce que vous devez faire est le suivant (dans un 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

(Je pense que cela --rbindest également inutile, --binddevrait suffire.)

Et en ce qui concerne le commentaire sous la question: Bien sûr, vous n'avez pas à redémarrer le système pour les tests, utilisez simplement la mountcommande comme je l'ai fait ci-dessus. (Et démontez avec la umountcommande.)

Après avoir confirmé que cela fonctionne comme prévu, il vous suffit de modifier le montage et d'ajouter les options souhaitées: uid, gid, umask, etc.


Eh bien, je peux tester en utilisant mount, mais quand je trouverai la configuration de travail, je voudrai le faire automatiquement, soit par /etc/fstabou par tout autre moyen. (Avec la question Ob: comment traduire les mountcommandes en fstabparamètres?)
Carlos Eugenio Thompson Pinzón

@ CarlosEugenioThompsonPinzón Le fstabest juste un fichier qui est analysé séquentiellement par la mountcommande au démarrage. Mais je pense qu'Ubuntu n'utilise pas mountmais mountallau démarrage, qui peut ne pas exécuter les commandes dans fstab de manière séquentielle. Donc oui, mettre ces paramètres de commande simplement fstabpourrait ne pas fonctionner. Mais vous pouvez toujours mettre simplement les commandes de montage de travail dans un script de démarrage (par exemple /etc/rc.local) ou faire un travail de démarrage à partir de celles-ci. La chose la plus importante dans votre cas est de trouver un schéma de montage fonctionnel, ce qui en fait un montage automatique au démarrage est une tâche facile.
fauconnier

@ CarlosEugenioThompsonPinzón Oups, j'ai raté la dernière question de votre commentaire. Alors, comment les commandes de montage se traduisent-elles en fstab? Vous pouvez le rechercher dans man mountou ici . Petite histoire: premier champ: périphérique à monter, deuxième champ: point de montage, troisième champ: type fs (plus précisément pilote fs), quatrième champ: options de montage, les autres champs sont moins importés maintenant. Donc, formez la commande mount la chaîne que nous avons écrite derrière -tva dans le troisième champ, la chaîne que nous avons écrite derrière -ova dans le quatrième champ.
fauconnier

3

Voyez si cela aide ...

Si sda1est déjà monté sur /media/windows, vous pouvez le démonter avec:

sudo umount /media/windows

Créez ensuite le répertoire windowsdans /media/:

sudo mkdir /media/windows

Modifiez le /etc/fstabcomme ci-dessous:

/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

( Remarque : modifiez les valeurs uid et gid comme pour l'utilisateur. Pour obtenir l'uid et le gid d'un utilisateur, vous pouvez utiliser la commande id -u usernameet id -g usernameresp.)

Vous pouvez maintenant les monter avec la commande:

sudo mount -a

Allez maintenant dans les répertoires réassignés et voyez si vous pouvez modifier le fichier. Et vous devriez avoir terminé.


D'accord, j'ai des autorisations rw sur /media/windows(non signalées dans ls, mais je peux modifier des fichiers) en tant que root, mais dans les répertoires locaux dont j'ai besoin sudopour modifier les fichiers.
Carlos Eugenio Thompson Pinzón

... et maintenant tous les répertoires montés m'appartiennent (utilisateur 1000), de /media/windowsà /home/someotheruser/Windows.
Carlos Eugenio Thompson Pinzón

Je suppose que maintenant vous et d'autres utilisateurs pouvez créer et enregistrer des œuvres dans le resp. points de montage dans $ HOME des utilisateurs ... si le reste des utilisateurs ne peuvent toujours pas accéder à RW, ajoutez-les à votre groupe (probablement avec le gid 1000)
précis

Actuellement, j'ai un groupe auquel tous les utilisateurs locaux sont attachés et j'accorde des autorisations d'écriture à ce groupe. Cela résout «chaque utilisateur a un accès rw à ses propres données» mais la partition entière et les données des autres utilisateurs ne sont pas protégées.
Carlos Eugenio Thompson Pinzón

3

Faites tous vos tests avant de modifier votre fichier de configuration fstab.

Eh bien, vous savez probablement que le système de fichiers ntfs est automatiquement monté en lecture seule si le système de fichiers est marqué comme sale. Ce que vous devez faire avant d'essayer l'une des réponses est de monter le disque dans Windows et d'exécuter chkdsk avant de réessayer de le monter.

De plus, si le montage en rw échoue toujours, vous devriez essayer de le monter avec différentes options de type de montage telles que sudo mount -t ntfsousudo mount -t ntfs-3g

Une fois fs monté dans rw, vous pouvez effectuer les opérations suivantes:

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

ou

sudo gksu nautilusou sudo gksu dolphinpour ouvrir un explorateur avec des droits su


Merci pour le chkdsk. Il y avait en effet quelques corruptions dans la partition NTFS, et maintenant je peux écrire sur le lecteur monté avec sudo.
Carlos Eugenio Thompson Pinzón

2

Pourquoi ne pas essayer de le monter avec l' attribut de lecture et d' écriture: rw ?

/ dev / sda1 / media / windows ntfs rw , umask = 0222, par défaut 0 0


Je vais vérifier, cependant je préférerais avoir la partition entière en lecture seule et seulement certains dossiers spécifiques en lecture-écriture.
Carlos Eugenio Thompson Pinzón

Ça n'a pas marché. La partition et les dossiers sont toujours en lecture seule. La seule différence est que chmod et chown ne manquent pas de signaler une erreur en lecture seule: ils ne fonctionnent tout simplement pas.
Carlos Eugenio Thompson Pinzón

2

Je ne suis pas sûr cependant, pouvez-vous essayer ceci s'il vous plaît. Une fois le lecteur monté, exécutez la commande suivante sur le terminal

sudo gksu nautilus

entrez votre mot de passe administrateur et dans la fenêtre graphique qui s'ouvre, vous devriez pouvoir cliquer sur le lecteur et modifier les autorisations de lecture / écriture.

Laissez-moi savoir si cela fonctionne. Une aide est disponible pour l'utilisation de nautilus avec une interface graphique avec des privilèges root.


Cela permettrait d'accéder aux fichiers et ils pourraient également être copiés, mais les autorisations en lecture seule pourraient ne pas être modifiées, car les systèmes de fichiers non-Unix sont montés en lecture seule ...
Wilf

1

Je recommanderais d'utiliser sudo chmod.666 ~ / Windows

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


1
Je ne peux ni changer l'autorisation ni le propriétaire (même avec sudo). Il rejette la commande disant que le système est en lecture seule. Pas même dans /media/windows/laquelle se trouve toute la partition (et qui ne serait pas le comportement attendu)
Carlos Eugenio Thompson Pinzón

Je me trompe probablement, mais parfois sudo n'a pas les autorisations que root aurait. Essayez d'exécuter sudo su puis chmod
virtualxtc

0

Le moyen le plus simple de monter Windows en lecture-écriture est de simplement le redémarrer ou de l'arrêter complètement. La partition NTFS hiberne lorsque "l'arrêt rapide" est utilisé. Ce principe est traité plus en détail sur ce lien.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.