Bien que le stockage en nuage offre de nombreux avantages, rien de tel que d'avoir vos données sur un disque dur physique. Lorsque vous enregistrez des données sur un disque, vous savez exactement où se trouvent vos données et elles sont toujours disponibles lorsque vous en avez besoin. Lorsque vous enregistrez des données sur un lecteur portable externe comme une clé USB, c'est encore mieux :non seulement vous savez où se trouvent vos données, mais vous pouvez également les emporter partout où vous allez. Si vous débutez avec Linux ou si vous essayez d'utiliser un système de fichiers Linux sur un lecteur externe, vous pourriez trouver les lecteurs externes déroutants, sujets à des erreurs d'autorisation ou à des conflits, voire à la perte de métadonnées.
Il y a deux "bonnes" réponses à cela :
ExFAT
Auparavant, ExFAT était un système de fichiers semé d'embûches de la part de Microsoft, car il possédait le code. Ils ont déjà poursuivi des entreprises et des organisations pour défendre leur propriété de FAT, on craignait donc généralement qu'ils ne puissent faire de même avec ExFAT. Cependant, récemment. Microsoft a fait les spécifications pour ExFAT open source. Ils n'ont malheureusement pas fourni de pilote, mais il existe un lecteur pour le faire fonctionner sous Linux, et, maintenant que les développeurs ont accès aux spécifications complètes, des améliorations sont inévitables.
L'avantage d'ExFAT est qu'il est multiplateforme (Windows, Mac et de nombreux appareils portables l'utilisent) et qu'il est conçu sans la surcharge des autorisations de fichiers. Vous pouvez connecter un lecteur formaté en ExFAT à n'importe quel ordinateur, et tous les fichiers sont accessibles à tous. Que ce soit bon ou mauvais dépend de votre cas d'utilisation, mais pour les supports portables, c'est souvent exactement l'intention.
Listes de contrôle d'accès (ACL)
Si vous préférez utiliser un système de fichiers Linux sur votre lecteur portable, vous pouvez le faire, mais pour rendre le partage de fichiers transparent, vous devez utiliser des listes de contrôle d'accès (ACL).
Lorsque vous créez un fichier ou un répertoire sur un lecteur, il existe des paramètres par défaut sur votre système qui déterminent les autorisations de fichier qu'il obtient. Dans la plupart des cas, ces valeurs par défaut ont un sens :lorsque vous créez un fichier dans votre répertoire personnel, vous ne souhaitez probablement pas que d'autres utilisateurs aient accès à ce fichier. Cependant, lorsque vous créez un fichier sur un disque externe, il y a de fortes chances que ce soit parce que vous avez besoin de partager ce fichier avec quelqu'un d'autre (même si cette personne est vous sur un autre ordinateur).
Plus de ressources Linux
- Aide-mémoire des commandes Linux
- Aide-mémoire des commandes Linux avancées
- Cours en ligne gratuit :Présentation technique de RHEL
- Aide-mémoire sur le réseau Linux
- Aide-mémoire SELinux
- Aide-mémoire sur les commandes courantes de Linux
- Que sont les conteneurs Linux ?
- Nos derniers articles Linux
Vous pouvez remplacer les autorisations par défaut pour l'affichage des fichiers avec une ACL, et vous pouvez contrôler le mode de création de fichiers par défaut en définissant un sticky bit. Une ACL est une couche de politiques de sécurité dans les attributs étendus des répertoires et des fichiers. Il vous permet de spécifier des exceptions à ce que les autorisations du système de fichiers indiquent. Plus particulièrement, cela vous permet de transcender le modèle de propriétaire unique et de groupe unique des autorisations UNIX traditionnelles.
Par exemple, alors que le seth (ID 1000) peut posséder un répertoire créé sur mon bureau, seth (ID 500) sur mon ordinateur portable ne fonctionne pas, car les ID utilisateur sont différents.
Il peut en être de même pour un groupe. Si un répertoire avec l'ID de groupe 1000 est affecté à un répertoire sur un ordinateur, un groupe avec un ID 500 ou 10922 n'y a pas accès sur un autre ordinateur. Mais une ACL peut ajouter des propriétaires et des groupes secondaires aux répertoires et aux fichiers.
Afficher l'ACL actuelle
Tout répertoire et fichier sur n'importe quel système de fichiers Linux commun a des règles ACL par défaut. Ils sont stockés dans des attributs étendus, une sorte de métadonnées que vous ne voyez pas normalement.
Vous pouvez les voir dans le terminal :
$ getfacl ./example
# file: /run/media/drive/example
# owner: seth
# group: users
user::rwx
group::rwx
other::r--
Les lignes commentées sont juste pour votre référence; ils vous indiquent le chemin, le propriétaire et le groupe du fichier ou du répertoire dont vous consultez les informations. Les lignes suivantes affichent les règles appliquées au fichier ou au répertoire. Dans cet exemple, les autorisations utilisateur sont définies sur rwx , le groupe à r-x , et autre à r-x . Ces autorisations sont reflétées par une liste normale de systèmes de fichiers :
$ ls -lA /run/media/drive
drwxrwxr-- 26 seth users 4096 Jan 16 21:04 example
$ id
uid=1000(seth) gid=100(users) groups=100(users)...
Tant que l'utilisateur seth (UID 1000) ou un membre du groupe (GID 100) interagit avec l'exemple répertoire, l'accès complet est accordé. Cependant, tout autre compte n'a lu que (r ) autorisation.
Définir une ACL
Pour modifier une ACL, vous utilisez le setfacl commande ou utilisez un gestionnaire de fichiers avec prise en charge ACL. Vous pouvez être très spécifique ou très générique lors de la définition de votre ACL.
Pour modifier simplement les paramètres d'autorisation du système de fichiers, vous pouvez utiliser soit chmod ou setfacl . Il s'agit d'un paramètre ACL très générique car vous n'ajoutez rien aux autorisations déjà disponibles pour UNIX à partir de la spécification du système de fichiers.
$ setfacl --modify g::r example
$ getfacl ./example | grep "group::"
group::r--
$ ls -l . | grep example
drwxr--r-- 26 seth users 4096 Jan 16 21:04 example
Le même effet est disponible via chmod :
$ chmod g+x example
$ getfacl ./example | grep "group::"
group::r-x
$ ls -l . | grep example
drwxr-xr-- 26 seth users 4096 Jan 16 21:04 example
Ajout d'utilisateurs et de groupes
Pour vraiment bénéficier d'une ACL, il faut l'utiliser pour des autorisations en dehors de la portée des autorisations UNIX natives. Si je suis connecté à mon bureau en tant que seth avec l'ID utilisateur 1000, et je sais qu'un répertoire sur mon lecteur portable doit être utilisable par seth avec ID 500 sur mon ordinateur portable, puis en déclarant simplement seth en tant que propriétaire ne suffit pas car les identifiants d'utilisateur ne sont pas les mêmes.
Vous pouvez ajouter un utilisateur ou un ID utilisateur à une liste de contrôle d'accès :
$ setfacl --modify u:500:rwx example
$ getfacl example
# file: /run/media/drive/example
# owner: seth
# group: users
user::rwx
user:500:rwx
[...]
Une nouvelle entrée, spécifique à l'ID utilisateur 500, a été ajoutée à la liste. La connexion du lecteur à un autre ordinateur Linux ou UNIX permet désormais à l'utilisateur avec l'ID 500 d'accéder à l'exemple dossier.
Vous pouvez également ajouter des utilisateurs par nom de compte ou des groupes par nom de groupe ou ID de groupe. Les identifiants sont ce qui compte vraiment avec les autorisations, donc si vous êtes dans un environnement mixte (serveurs RHEL et clients élémentaires, par exemple), vous devez vérifier les identifiants d'utilisateur et les identifiants de groupe qui se cachent derrière des comptes qui semblent, à première vue, identiques.
Définition des règles ACL par défaut
Si vous traitez le contrôle d'accès comme un paramètre unique, vous rencontrerez rapidement des problèmes une fois que vos différents comptes d'utilisateurs commenceront à créer des fichiers et des répertoires. Tout nouveau fichier ou répertoire créé par chaque utilisateur hérite des autorisations par défaut du système (et ACL). Cela signifie qu'une fois que l'utilisateur de l'ordinateur portable seth avec l'ID 500 crée un fichier dans un répertoire, il peut être interdit à l'utilisateur de bureau seth avec l'ID 1000 car le propriétaire du fichier est défini sur l'UID 500.
Une ACL par défaut peut être appliquée aux répertoires afin que les fichiers et les sous-répertoires créés dans ceux-ci héritent de l'ACL parent. Vous pouvez définir l'ACL par défaut d'un répertoire avec le –default choix :
$ setfacl --default --modify u:500:rwx example
$ setfacl --default --modify u:1000:rwx example
$ getfacl --omit-header example
user::rwx
user:500:rwx
group::rw-
mask::rwx
other::r-x
default:user::rwx
default:group::rw-
default:group:500:rwx
default:group:1000:rwx
default:mask::rwx
default:other::r-x
Lorsqu'un utilisateur crée un nouveau répertoire dans l'exemple répertoire, l'ACL héritée est la même que son parent :
$ cd example
$ mkdir penguins
$ getfacl --omit-header penguins
user::rwx
group::rw-
group:500:rwx
group:1000:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::rw-
default:group:500:rwx
default:group:1000:rwx
default:mask::rwx
default:other::r-x
Cela signifie que tout répertoire ou fichier créé hérite de la même ACL, donc ni l'utilisateur 500 ni l'utilisateur 1000 ne sont jamais exclus de l'accès.
ACL pragmatique pour les disques externes
Lors de l'utilisation d'un système de fichiers Linux pour des disques externes, la méthode la plus simple pour s'assurer qu'il fonctionne avec tous les utilisateurs qui prévoient d'utiliser le disque portable consiste à définir une ACL sur un seul répertoire de niveau supérieur.
Par exemple, supposons que vous ayez formaté une clé USB appelée mydrive en tant que système de fichiers ext4. Vous voulez que votre compte sur votre ordinateur portable et votre ordinateur de bureau, ainsi que votre collègue Alice, puissent accéder aux fichiers.
Commencez par créer un répertoire au niveau supérieur du lecteur :
$ mkdir /mnt/mydrive/umbrella
Appliquez ensuite une ACL au répertoire de niveau supérieur pour accorder l'accès à tous les utilisateurs importants :
$ setfacl --modify \
u:500:rwx,u:1000:rwx,u:alice:rwx \
/mnt/mydrive/umbrella
Enfin, appliquez une ACL par défaut afin que tous les répertoires et fichiers créés dans le répertoire de niveau supérieur parapluie hériter de la même ACL par défaut (notez que cette commande utilise la version courte de –modify ):
$ setfacl --default -m u:500:rwx,u:1000:rwx,u:alice:rwx \
/mnt/mydrive/umbrella
Appliquer les paramètres par défaut à un système existant
Si vous avez besoin d'appliquer des paramètres ACL à de nombreux fichiers qui existent déjà, vous pouvez le faire avec la recherche commande.
Tout d'abord, recherchez tous les répertoires et appliquez les règles ACL :
$ find /mnt/mydrive/umbrella -type d | \
parallel --max-args=6 setfacl \
--default -m u:500:rwx,u:1000:rwx,u:alice:rwx
Il n'est pas sage de définir sans discernement toutes les autorisations de fichiers sur exécutables, alors ensuite, recherchez tous les fichiers et définissez les autorisations sur re . Les fichiers nécessitant un bit exécutable peuvent être définis manuellement ou par extension de fichier :
$ find /mnt/mydrive/umbrella -type f | \
parallel --max-args=6 setfacl \
--default -m u:500:rw,u:1000:rw,u:alice:rw
Ajustez la logique de ces commandes en fonction de vos besoins individuels (n'exécutez pas une commande qui supprime le bit exécutable sur /usr , par exemple, ou sur un répertoire ne contenant que des programmes exécutables).
Disques externes
Ne laissez pas la confusion autour des lecteurs externes sous Linux prendre le dessus et ne vous limitez pas aux autorisations UNIX traditionnelles. Mettez les listes de contrôle d'accès à votre service et n'hésitez pas à utiliser des systèmes de fichiers Linux journalisés natifs sur vos lecteurs portables.