Question Comment utiliser "chmod" sur une partition NTFS (ou FAT32)?


J'ai un script que je dois exécuter sur une partition NTFS. L'autorisation du script est définie sur 600.

J'ai tenté de modifier les autorisations en exécutant chmod 755 script.sh, qui ne signale pas d’échec ou autre, mais ne modifie pas non plus les autorisations sur le fichier:

$ stat script.sh

  File: `script.sh'
  Size: 297070      Blocks: 584        IO Block: 4096   regular file
Device: 811h/2065d  Inode: 35515       Links: 1
Access: (0600/-rw-------)  Uid: ( 1000/  xxxxxx)   Gid: ( 1000/  xxxxxx)
Access: 2010-09-30 14:05:16.041621000 -0700
Modify: 2010-09-30 14:05:05.070157000 -0700
Change: 2010-09-30 14:05:05.070475000 -0700

$ chmod 755 script.sh
$ stat script.sh

  File: `script.sh'
  Size: 297070      Blocks: 584        IO Block: 4096   regular file
Device: 811h/2065d  Inode: 35515       Links: 1
Access: (0600/-rw-------)  Uid: ( 1000/  xxxxxx)   Gid: ( 1000/  xxxxxx)
Access: 2010-09-30 14:05:16.041621000 -0700
Modify: 2010-09-30 14:05:05.070157000 -0700
Change: 2010-09-30 14:05:05.070475000 -0700

Comme vous pouvez le voir, il reste inchangé.


119
2017-11-06 23:12


origine


Une meilleure solution peut être trouvée ici Ces deux questions doivent être liées!


Réponses:


Le mode est déterminé par les options de montage de la partition (vous ne pouvez pas le modifier via chmod).

Pour '755' sur les fichiers et '777' sur les répertoires, vous utiliseriez quelque chose comme

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000 /dev/whatever /mnt/whatever

75
2017-11-06 23:35



Ok, ça expliquerait aussi quelques autres choses. - Nathan Osman
Que dois-je mettre à la place de /dev/whatever et /mnt/whatever si je dois changer l'autorisation de ma partition HDD nommée /media/Prtn - Prakash Gautam
Le montage de cette manière préserve-t-il les paramètres d'origine du disque? C'est à dire. il est sécuritaire de monter un lecteur Windows? - Jonathan
Je mets l'utilisateur à 'andrew' qui est mon utilisateur principal. Par ls pour ntfs, la partition montre que tous les fichiers / répertoires sont propres à la racine. - deathangel908
La vraie solution est ntfs-3g.usermap. Voir ci-dessous... - Eduardo Cuomo


Contrairement à ce que la plupart des gens croient, NTFS est un système de fichiers¹ compatible avec POSIX, et il est possible d'utiliser des autorisations sur NTFS.

Pour ce faire, vous avez besoin d'un "fichier de mappage utilisateur" ou permissions option lors du montage (lorsqu'aucune compatibilité avec Windows n'est requise). Ce mappage des utilisateurs Linux sur votre système avec les ID utilisateur comme NTFS / Windows les utilisent en interne.

Voir le page de manuel ntfs-3g pour quelques infos et quelques exemples. Si vous avez besoin de plus d'informations, consultez le ntfs-3g documentation avancée sur la propriété et les autorisations.

(Notez que cela ne fonctionne pas sur les systèmes de fichiers FAT.)

¹ Oui, il peut également stocker des noms de fichiers valides sous linux / unix mais pas sous Windows, prenant en charge les liens symboliques et les liens durs, etc.


78
2017-11-02 16:57



ici est une bonne documentation. en bref: sudo ntfs-3g.usermap /dev/disk/by-label/MY-NTFS et alors sudo mv UserMapping /media/MY-NTFS/.NTFS-3G/ - flying sheep
Donc, cela vous permettra de définir arbitrairement des autorisations comme chmod 655 /some/file sur la partition NTFS montée sous Linux? J'essaie de comprendre comment fusionner ma partition maison de linux dans c: \ Users. L'utilisation de usermap me permettra-t-elle de conserver toutes les autorisations? Je prévoyais de monter le répertoire c: \ Users dans / home sous linux. - trusktr
cela devrait être la réponse acceptée. - petermolnar
Permettez-moi de souligner à nouveau votre remarque: "lorsqu'aucune compatibilité avec Windows n'est nécessaire". ref: askubuntu.com/questions/92863/… - Eliptical view
ntfs-3g manpage lien brisé - ctrl-alt-delor


Pour les partitions NTFS, utilisez le permissions option dans fstab.

Démontez d'abord la partition ntfs.

Identifiez votre partition UUID avec blkid

sudo blkid

Puis éditez /etc/fstab

# Graphical 
gksu gedit /etc/fstab

# Command line
sudo -e /etc/fstab

Et ajouter ou modifier une ligne pour la partition ntfs

# change the "UUID" to your partition UUID
UUID=12102C02102CEB83 /media/windows ntfs-3g auto,users,permissions 0 0

Faire un point de montage (si nécessaire)

sudo mkdir /media/windows

Maintenant, montez la partition

mount /media/windows

Les options que je vous ai données, auto, montera automatiquement la partition lorsque vous démarrez et users permet aux utilisateurs de monter et de démonter.

Vous pouvez ensuite utiliser chown et chmod sur la partition ntfs.


34
2017-12-28 16:31



Comment ces autorisations sont-elles stockées? Dans ADS? Autres métadonnées? - hexafraction
Qu'en est-il de fat32? J'ai une carte Micro SD qui est protégée en écriture et je ne peux pas y accéder, formatez-la. - Waqas
@RanaMuhammadWaqas - c'est une vieille question, mais vous pouvez aussi la monter avec différentes options. Difficile de savoir quel est votre problème, peut-être identifier votre matériel et poser une question distincte. - Panther
@ Bodhi.zazen users implique noexec, nosuid, et nodev. n'est-ce pas? Comment les utilisateurs peuvent monter / umount avec noexec être mis? - Khurshid Alam
@EduardoCuomo - Publier un commentaire dans une réponse indiquant qu’il ne fonctionne pas est peu susceptible de vous aider. Quel système de fichiers? Je vous propose d'ouvrir une question. Vous devez identifier le système de fichiers et publier votre entrée fstab - Panther


En plus de définir le masque et / ou le masque dans la réponse de htorque ci-dessus, si vous voulez exécuter des scripts sur le lecteur, je devais également définir l'option de montage "exec".

Donc, l'exemple serait:

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000,exec /dev/whatever /mnt/whatever

20
2017-12-14 08:26





Vous pouvez toujours appeler explicitement l'interpréteur de script, auquel cas les autorisations d'exécution ne sont pas requises. Si le script utilise frapper, comme on peut le vérifier en regardant la première ligne du script, exécutez simplement

bash script.sh

Notez que le script appelle d'autres scripts ou des binaires sur la même partition, cela ne fonctionnera pas. Notez également que la stratégie ne fonctionne pas avec les fichiers binaires, contrairement aux fichiers de script textuels écrits en Bash Script, Perl, Python ou similaires.


13
2017-12-14 10:00



+1 - Je n'ai jamais pensé à l'invoquer de cette façon. - Nathan Osman
Pour exécuter des binaires, utilisez /lib64/ld-linux-x86-64.so.2 ./program.bin pour les programmes 64 bits et /lib/ld-linux.so.2 ./program.bin pour les 32 bits. - Lekensteyn


Selon le Propriété et autorisations section de la documentation NTFS-3G, nous pouvons utiliser les options de montage pour contrôler le fichier accès et création. Les combinaisons sont très compliquées (voir les deux tableaux). Aussi je ne lis pas et ne les reçois pas tous. Par exemple, je ne sais pas si les ACL POSIX sont sélectionnées à la compilation ou non du package binaire NTFS-3G. Mais le meilleur que je sors est d'utiliser un Cartographie utilisateurfichier combiné avec certaines options de montage pour approcher un mappage plausible de la propriété du fichier et des autorisations entre Windows et Linux.


Attention: Ce n'est que ce qui fonctionne le mieux pour partager un NTFS partition de données (conduire D: sous Windows) entre Windows 8 à double démarrage et Kubuntu 14.04. Les instructions sont enregistrées dans une rétrospection attentive, mais elles n'ont pas été testées de manière approfondie. Il est trop fatigant et fastidieux de répéter toute la procédure. Alors suivez-le à vos risques et périls. Mais si vous le faites, partagez votre expérience. Si vous décidez de suivre les instructions, veuillez le lire entièrement pour avoir une image complète avant d'agir. Bonne chance!


D'accord, c'est parti! Les instructions détaillées se composent de trois parties. La partie 1 doit être exécutée sous Windows alors que la partie 2 est sous Linux. La partie 3 est à tester.

Partie 1

le Cartographie utilisateur La section de la documentation NTFS-3G spécifie deux versions pour configurer le mappage utilisateur entre Windows et Linux, une version Windows et une version Linux. Mon expérience était que la version Linux a fini avec un manquer. Le compte Linux était ne pas mappé sur mon compte Windows, mais certains inconnu compte apparu sous un SID. Le résultat était un gâchis puisque ce compte inconnu prend possession de tous les fichiers de mon compte Windows. Dans ce cas, à moins que vous n'ayez un privilège administratif pour récupérer votre propriété, les fichiers de votre compte Windows deviennent inaccessibles. Mais même si tu gères, c'est encore une mauvaise cartographie. Cela signifie que, plus tard, les fichiers que vous créez sur Linux sont assignés à ce compte inconnu sous Windows et que ceux sous Windows sont assignés à root sous Linux (si je me souviens bien). Donc, sous Windows, vous devez vous réapproprier et sous Linux changer de propriétaire. Ce n'est pas ce à quoi nous nous attendons. Après plusieurs tentatives désespérées pour résoudre le problème, j'ai abandonné et j'ai opté pour la version Windows. Celui-là a fonctionné. Les instructions détaillées extraites de la section pertinente de la documentation NTFS-3G sont les suivantes:

  1. Téléchargez le usermap outil, extrayez-le quelque part (dans mon cas, conduire C:), mieux en dehors de la partition NTFS (dans mon cas, lecteur D:) à partager.

  2. Ouvrez la ligne de commande Windows. Passer au répertoire extrait tools (par défaut) du usermap outil. Ensuite, exécutez la commande suivante:

    C:\tools> mapuser > UserMapping
    

    Cela génère un modèle et le redirige vers un fichier nommé UserMapping. Ouvrez le fichier avec un éditeur de texte, dites Notepad, vous devriez voir les lignes suivantes:

    # Generated by usermap for Windows, v 1.1.5
    # For Windows account "Account" in domain "Domain"
    # Replace "user" and "group" hereafter by matching Linux login
    user::SID
    :group:SID
    

    Vraisemblablement, le premier SID devrait être votre SID utilisateur tandis que le second votre groupe SID. Vous pouvez les vérifier respectivement par des commandes whoami /user et whoami /groups.

  3. Après vous être assuré que les SID sont corrects, suivez les instructions du commentaire, c'est-à-dire, changez user dans le user::SID ligne à votre nom d'utilisateur et group dans le :group:SID ligne à votre nom de groupe principal sous Linux. Sur Ubuntu, ils sont identiques. En outre, ajoutez votre nom de groupe Linux également après le premier deux-points du user::SIDligne. Donc, la ligne devrait ressembler à quelque chose comme user:group:SID. Il semble que si vous ne le faites pas, les fichiers créés sous Windows seront affectés à user:root sur Linux.

  4. Enregistrez le fichier. Déplacez-le dans un répertoire nommé .NTFS-3G (créez-le s'il n'existe pas encore) sur la partition NTFS à partager (dans mon cas, lecteur D:).

  5. Cette étape est à tester dans la partie 3. Sur la partition NTFS partagée, créez un nouveau répertoire et un nouveau fichier.

Partie 2

Maintenant, démarrez sous Linux. sudo éditer le fichier /etc/fstab. Ajoutez ou modifiez la ligne de la partition NTFS partagée comme suit:

UUID=...    /data    ntfs    defaults,umask=077,utf8    0    0

L'essentiel est de définir le umask (dmask et fmask peut aussi fonctionner mais pas testé). Choisissez une valeur pour umask vous aimez, bien que j'ai choisi 077. Il semble sans ce paramètre, des autorisations complètes seront accordées à opour les fichiers nouvellement créés.

Enregistrez le fichier. À présent sudo mount ou remonter (sudo umount et alors sudo mount) la partition NTFS partagée (dans mon cas /data):

$ sudo mount /data

Partie 3

Maintenant (toujours sous Linux) cd au point de montage (dans mon cas, /data), ls -l les fichiers là. Vérifiez si leurs droits de propriété et leurs autorisations correspondent respectivement à ceux que vous avez spécifiés dans le UserMapping fichier et le umask tu t'installe /etc/fstab (la correspondance entre les permissions et umask nécessite un calcul de complément, voir homme (1) umask pour plus d'informations). S'ils le font, félicitations, demi-objectif est atteint. Sinon, pauvre toi. Demandez Ubuntu ou Windows.

Créez ensuite un nouveau répertoire et un nouveau fichier. ls -l pour vérifier leur propriété et leurs autorisations. La propriété doit être votre nom d'utilisateur et votre groupe principal, comme d'habitude. Les autorisations doivent correspondre à la umask. Maintenant, redémarrez votre ordinateur et démarrez Windows. Localisez sur la partition NTFS partagée le répertoire et le fichier que vous venez de créer sous Linux. Vérifiez leurs propriétés pour voir si elles sont affectées à votre compte Windows. Si c'est le cas, félicitations, vous avez tous terminé. Sinon, malchance. Demandez à Windows ou à Ubuntu.

EOF


8
2017-08-22 22:35





Vieux thread, je sais, mais toujours pertinent et manquant d'un conseil d'utilisation particulier, composé de différentes suggestions sur divers autres forums / threads et testé sur Ubuntu GNOME 13.04 où je voulais un lecteur externe pour contenir une bibliothèque Steam ...

Lorsque la partition NTFS se trouve sur un lecteur USB, par exemple - ce qui signifie que la partition est montée à la volée lors de la connexion - vous pouvez utiliser la méthode suivante pour que udev monte les partitions ntfs avec des droits d'exécution.

Ouvrez une fenêtre de terminal et faites:

$ sudo nano /etc/udev/rules.d/90-usb-disks.rules

Ensuite, collez cette ligne dans ce qui devrait être un fichier vide / nouveau (sinon, quittez nano et relancez la commande mais en commençant par le nom du fichier avec un nombre plus élevé comme 91 -...):

ENV{ID_FS_TYPE}=="ntfs", ENV{ID_FS_TYPE}="ntfs-3g"

Ensuite, sauvegardez et fermez. Débranchez le lecteur puis faites dans le terminal:

$ sudo service udev restart

Ensuite, rebranchez le lecteur et profitez de :)


5
2017-09-14 23:51



Excellent, cela devrait être la réponse acceptée. - leftaroundabout