web-dev-qa-db-fra.com

Comment créer un lecteur USB au format ext4 avec des autorisations RW complètes pour n'importe quelle machine Linux?

Je souhaite formater ma clé USB en ext4 et utilisez-le comme je le ferais pour tout autre lecteur au format non linux (FAT32, exFAT, NTFS).

C'est-à-dire que je veux pouvoir brancher la clé USB sur n'importe laquelle de mes machines Linux, et y lire/écrire sans avoir besoin d'ajuster les autorisations, comme faire chmod ou chown des trucs.

Je préférerais utiliser un logiciel de partition GUI comme GParted, plutôt que des commandes en ligne de commande, bien que je salue toute solution!

Je suis sûr qu'un message comme celui-ci est un paradis pour certains, mais après avoir parcouru 6 ~ 10 SO et les messages du forum de Google, je n'ai pas trouvé de solution simple à ma question. comme si tout consistait à ajuster les autorisations par utilisateur. Peut-être que vous ne pouvez pas utiliser ext4 conduit avec la même commodité sans cervelle que NTFS.

14
Alnitak

Comme tout système de fichiers de style Unix, ext4 inclut la propriété standard des fichiers Unix et les conventions d'autorisation. Autrement dit, l'utilisateur est identifié par un numéro UID, et chaque utilisateur appartiendra à un ou plusieurs groupes, chaque groupe identifié par son numéro GID. Chaque fichier a un UID de propriétaire et un GID de propriétaire de groupe. Les trois jeux d'autorisations de fichiers Unix classiques sont:

  • un ensemble d'autorisations pour le propriétaire, identifié par le numéro UID du propriétaire
  • un ensemble d'autorisations pour le propriétaire du groupe, identifié par le numéro GID du groupe
  • un ensemble d'autorisations pour tout le monde

Afin de pouvoir accéder à la clé sans avoir à ajuster les autorisations, vous devez vous assurer que tous les fichiers et répertoires créés sur la clé auront automatiquement des autorisations non restrictives. Le problème est que les autorisations sur tous les nouveaux fichiers créés sont contrôlées par la valeur umask ... et vous ne voulez pas vraiment continuer à le changer en 000 pour créer des fichiers sur la clé USB et revenir à la valeur par défaut (généralement 002 ou 022) pour une utilisation normale. Une seule erreur pourrait vous conduire à créer un fichier de configuration important avec des autorisations largement ouvertes, ce qui pourrait compromettre la sécurité de votre compte d'utilisateur ou causer d'autres problèmes plus mineurs.

Si vous pouvez vous assurer que le numéro UID de votre utilisateur normal est le même sur tous vos systèmes Linux et que vous ne vous souciez que de l'accès pour cet utilisateur (plus root bien sûr), vous pouvez vous en sortir en formatant simplement la clé USB en ext4, le monter pour la première fois et attribuer la propriété de son répertoire racine à votre compte d'utilisateur normal avant de commencer à utiliser le système de fichiers.

En admettant que /dev/sdX1 est la partition de la clé USB dans laquelle vous souhaitez créer le système de fichiers, et <username> est votre nom d'utilisateur, vous pouvez le faire lors de la configuration de la clé USB à utiliser:

Sudo mkfs.ext4 /dev/sdX1
Sudo mount /dev/sdX1 /mnt
Sudo chown <username>: /mnt
Sudo umount /mnt

Mais si vous ne pouvez pas garantir la correspondance des numéros UID/GID, et/ou si plusieurs utilisateurs peuvent vouloir utiliser la clé USB, vous devrez faire quelque chose d'un peu plus compliqué, mais toujours une opération unique après la création de l'ext4 système de fichiers sur la clé.

Nous devons définir un ACL par défaut sur le répertoire racine du système de fichiers de la clé USB qui attribue un accès complet à tout le monde sur tout nouveau fichier ou répertoire. Et pour garantir que la clé sera montée avec le support ACL activé, nous devons utiliser tune2fs pour ajuster les options de montage par défaut stockées dans les métadonnées du système de fichiers.

Sudo mkfs.ext4 /dev/sdX1
Sudo tune2fs -o acl /dev/sdX1
Sudo mount /dev/sdX1 /mnt
Sudo chown <username>: /mnt
chmod 777 /mnt
setfacl -m d:u::rwx,d:g::rwx,d:o::rwx /mnt
Sudo umount /mnt

En supposant que tous vos systèmes prennent en charge les listes de contrôle d'accès sur les systèmes de fichiers ext4 et que tout outil de montage de supports amovibles que vous pourriez utiliser ne choisira pas d'ignorer l'option de montage acl, vous devriez maintenant avoir une clé USB sur laquelle tous les fichiers créés sur il aura des autorisations -rw-rw-rw- et tous les sous-répertoires créés seront drwxrwxrwx+. Le signe plus indique que le sous-répertoire aura une ACL: le jeu d'autorisations par défaut personnalisé configuré pour le répertoire racine du stick sera également hérité par les sous-répertoires, et ils se comporteront de la même manière.

L'UID/GID du propriétaire correspondra toujours à l'UID et au GID principal de l'utilisateur qui a créé le fichier sur le système de fichiers, mais en raison des autorisations de fichier et de répertoire assouplies, cela ne devrait pas poser beaucoup de problème.

Le seul problème auquel je pourrais m'attendre est que copie les fichiers sur la clé USB tenteront par défaut de dupliquer les autorisations de fichier de l'original, ce que vous ne voulez pas dans ce cas.

Par exemple, si vous créez un fichier sur le système A avec les autorisations -rw-r - r-- et le copiez sur la clé, puis déplacez la clé vers le système B avec des numéros UID non correspondants. Vous pouvez toujours lire le fichier sur le système B, mais vous ne pouvez pas l'écraser sur la clé sans d'abord supprimer ou renommer explicitement le fichier d'origine. Mais vous pouvez le faire, tant que vous avez un accès en écriture au répertoire dans lequel se trouve le fichier.

Cela peut en fait être une fonctionnalité utile: si vous modifiez le même fichier sur plusieurs systèmes, cela vous poussera à enregistrer une nouvelle version du fichier à chaque fois au lieu d'écraser le One True File ... et si le fichier est important, cela pourrait en fait être une bonne chose.

19
telcoM