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

118

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 aucun incident ou autre, mais cela ne change 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é.

    
posée Nathan Osman 07.11.2010 - 00:12
la source

10 réponses

75

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
    
réponse donnée htorque 07.11.2010 - 00:35
la source
78

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

Pour activer cela, vous avez besoin d'un "fichier de mappage d'utilisateur" ou donnez simplement l'option permissions lors du montage (lorsqu'aucune compatibilité avec Windows n'est requise). Cette application de cartographie des utilisateurs Linux sur votre système avec les ID utilisateur comme NTFS / Windows les utilise en interne.

Consultez la page de manuel ntfs-3g pour obtenir des informations et des informations. exemples. Si vous avez besoin de plus d'informations, consultez la documentation avancée ntfs-3g 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, supportant les liens symboliques & amp; liens durs, etc.

    
réponse donnée JanC 02.11.2011 - 17:57
la source
34

Pour les partitions NTFS, utilisez l’option permissions dans fstab.

Démontez d'abord la partition ntfs.

Identifiez votre UUID de partition avec blkid

sudo blkid

Puis éditez /etc/fstab

# Graphical 
gksu gedit /etc/fstab

# Command line
sudo -e /etc/fstab

Et ajoutez ou modifiez une ligne pour la partition ntfs

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

Créez 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 , monteront automatiquement la partition au démarrage et users autorisera les utilisateurs à monter et démonter.

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

    
réponse donnée Panther 28.12.2011 - 17:31
la source
20

En plus de définir fmask et / ou dmask 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".

L’exemple serait donc:

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000,exec /dev/whatever /mnt/whatever
    
réponse donnée dbrews 14.12.2010 - 09:26
la source
13

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 bash , comme cela peut être vérifié 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.

    
réponse donnée loevborg 14.12.2010 - 11:00
la source
8

Selon la section Propriété et autorisations du NTFS-3G documentation, nous pouvons utiliser les options de montage pour contrôler les fichiers 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 connaisse est d'utiliser un fichier User Mapping combiné à un fichier de montage. options permettant d'approcher un mappage plausible de la propriété des fichiers et des autorisations entre Windows et Linux.

Avertissement : il s’agit uniquement de ce qui fonctionne le mieux pour partager une partition de données NTFS (lecteur D: sous Windows) entre Windows 8 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

La section Mappage utilisateur de la documentation NTFS-3G spécifie deux versions 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 miss . Le compte Linux était non mappé sur mon compte Windows, mais certains comptes unknown sont apparus 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 vous gérez, c'est toujours 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 suivent:

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

  2. Ouvrez la ligne de commande Windows. Passez au répertoire extrait tools (par défaut) de l'outil usermap . 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, par exemple 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 d'utilisateur tandis que le second est votre SID de groupe. Vous pouvez les vérifier respectivement par les 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 que user dans la ligne user::SID correspond à votre nom d'utilisateur et group dans la ligne :group:SID à votre nom de groupe principal sous Linux. Sur Ubuntu, ils sont identiques. De plus, ajoutez votre nom de groupe Linux également après le premier deux-points de la ligne user::SID . La ligne devrait donc ressembler à user:group:SID . Il semble que si vous ne le faites pas, les fichiers créés sous Windows seront affectés à user:root sous 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

Démarrez maintenant Linux. sudo édite 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 umask ( dmask et fmask peuvent également fonctionner mais pas testés). Choisissez une valeur pour umask que vous aimez, bien que j'ai choisi 077 . Il semble que sans ce paramètre, des autorisations complètes seront données à o pour les fichiers nouvellement créés.

Enregistrez le fichier.Maintenant, sudo mount ou remount ( sudo umount puis 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 présents. Vérifiez si leurs droits de propriété et leurs autorisations correspondent respectivement à ceux spécifiés dans le fichier UserMapping et à umask défini dans /etc/fstab (la correspondance entre les autorisations et umask nécessite un calcul de complément, voir man (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 à 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

    
réponse donnée reflectionalist 23.08.2014 - 00:35
la source
5

Vieux thread, je sais, mais toujours pertinent et manquant 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 des partitions ntfs avec des droits d’exécution. p>

Ouvrez une fenêtre de terminal et faites:

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

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

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

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

$ sudo service udev restart

Ensuite, rebranchez le lecteur et profitez de:)

    
réponse donnée user17254 15.09.2013 - 01:51
la source
2

Toutes les étapes:

  1. Installer ntfs-3g :

    sudo apt-get install -y ntfs-3g
    
  2. Démonter la partition NTFS :

    sudo umount /mnt/windows
    
  3. Utilisez ntfs-3g.usermap pour générer votre fichier UserMapping :

    sudo ntfs-3g.usermap /dev/disk/by-label/MY-NTFS
    

    ou

    sudo ntfs-3g.usermap /dev/sdb1
    
  4. Remonter la partition NTFS pour ajouter le fichier UserMapping :

    mount -a
    sudo mkdir /mnt/windows/.NTFS-3G
    sudo mv UserMapping /mnt/windows/.NTFS-3G/
    
  5. Mettez à jour votre fichier fstab :

    sudo vim /etc/fstab
    

    Mise à jour de la ligne mount :

    1. Sauvegardez votre ligne de montage actuelle! Dupliquer la ligne et la commenter en ajoutant # au début.
    2. Changement suivant: UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0
    3. Par la suite: UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0 (Utilisez l'option ntfs-3g et uniquement default )

    Cela devrait ressembler à ceci:

    #UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0 UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0

  6. Enfin, remonte en utilisant votre fstab :

    sudo umount /mnt/windows
    sudo mount -a
    

Faites-le une fois pour chaque partition NTFS dont vous disposez!

AVERTISSEMENT AVEC WINDOWS OS!

Je le vérifie avec Windows 7 + et les autorisations affectent le système d’exploitation Windows! Je modifie les permissions de mon répertoire personnel sur la partition Windows, et lorsque j'ai de nouveau utilisé Windows, j'ai pu constater que l'utilisateur était cassé!

    
réponse donnée Eduardo Cuomo 26.02.2017 - 15:49
la source
1

Il existe une question relative aux périphériques USB. Cette réponse fournit un hack laid si vous voulez monter chaque périphérique USB automatiquement avec des autorisations d'exécution.

    
réponse donnée lumbric 28.12.2011 - 16:06
la source
1

Monter une partition NTFS sur une clé USB avec des autorisations et un propriétaire personnalisés

Sous Linux, le mode NTFS (et FAT32) est déterminé par les options de montage de la partition . Vous ne pouvez pas le changer via chmod.

Hypothèse: le lecteur USB est vu comme sdb1 , modifier pour correspondre à la lettre de lecteur et au numéro de partition dans votre cas . La syntaxe générale est sdxn , où x correspond à la lettre du lecteur et n correspond au numéro de la partition, par exemple. sudo lsblk -f

Préparation

  • Démontez la partition NTFS.

    sudo umount /dev/sdxn   # general syntax
    sudo umount /dev/sdb1   # modify to match your case
    
  • Créez un point de montage personnalisé (uniquement si vous voulez un nouveau point de montage), par exemple avec

    sudo mkdir -p /mnt/sd1
    
  • Vérifiez le numéro uid de votre userID (il s’agit généralement de 1000, parfois 1001 ou 1002 ...)

    grep ^"$USER" /etc/group
    

    et utilisez ce numéro si vous souhaitez récupérer la propriété (par défaut root ).

Monter la partition NTFS

Exemple 1 (sans autorisations d’exécution pour les fichiers, pas d’accès pour «les autres»),

sudo mount -o rw,user,uid=1000,dmask=007,fmask=117 /dev/sdxn /mnt/sd1  # general syntax
sudo mount -o rw,user,uid=1000,dmask=007,fmask=117 /dev/sdb1 /mnt/sd1  # modify to match your case
  • dans ce cas, vous pouvez exécuter le script this-script avec

    bash /mnt/sd1/this-script
    

Exemple 2 (avec des autorisations d’exécution pour les fichiers, pas d’accès pour «les autres»),

sudo mount -o rw,user,uid=1000,umask=007,exec /dev/sdxn /mnt/sd1  # general syntax
sudo mount -o rw,user,uid=1000,umask=007,exec /dev/sdb1 /mnt/sd1  # modify to match your case
  • Dans ce cas, vous pouvez exécuter le script this-script avec

    /mnt/sd1/this-script
    

    et vous pouvez également exécuter des programmes exécutables depuis cet emplacement (pas recommandé).

Exemple 3 (autorisations complètes pour tout le monde, ce qui est pratique mais pas sûr, lorsqu'il y a plusieurs utilisateurs),

sudo mount -o rw,users,umask=000,exec /dev/sdxn /mnt/sd1  # general
sudo mount -o rw,users,umask=000,exec /dev/sdb1 /mnt/sd1  # modify to match your case
    
réponse donnée sudodus 15.09.2017 - 13:02
la source

Lire d'autres questions sur les étiquettes