Quitter le forum et retourner au site

Créer un dossier COMMUN pour tous les usagers

Vous avez un didactiel ou une astuce particulière concernant un logiciel, partagez votre expérience dans cette partie.
Avatar de l’utilisateur
le Manchot Masqué
Administrateur du site
Messages : 719
Inscription : lun. 26 mai 2008, 21:05
Distribution : Debian, Ubuntu
Niveau : Moitié plein !
Localisation : Guebwiller

Créer un dossier COMMUN pour tous les usagers

Message par le Manchot Masqué »

Beaucoup de gens, et même des administrateurs chevronnés, ignorent que GNU/Linux sait parfaitement gérer plusieurs usagers et groupes pour un même fichier/dossier, via les listes de contrôle d'accès (ACL), présentes aujourd'hui sous toutes les distributions.

Nous prendrons ici le cas simple d'un dossier COMMUN que l'on veut partager entre tous les membres d'une même famille.

Nous rappelons que la commande "ls -l" en console permet d'afficher les informations du dossier courant, que la commande "cd .." permet de remonter au dossier parent de l'arborescence, et que la commande "cd enfant1" permet d'aller dans un dossier enfant nommé ici "enfant1". Ce sont des manipulations de base à connaître, et honnêtement : trois commandes, ce n'est pas la mer à boire...

Pour des questions de sécurité, j'ai pour habitude de fixer manuellement les droits sur les dossiers /home/$user en 700 (rwx------) avec un "chmod 700 /home/*", ce qui assure qu'un utilisateur ne peut accéder aux données d'un autre, et évite les effacements "accidentels" entre utilisateurs. Bien entendu, vous êtes libres de faire comme vous l'entendez chez vous...

Pour commencer, on créé simplement un dossier à part, que nous nommerons ici /COMMUN dans la suite, sous nobody:users en 770 (rwxrwx---) par exemple.
Notez ici que le fait de créer un dossier partagé permettra à n'importe quel usager d'effacer les données d'autrui dans ce dossier.
Pour une famille, on considérera ici que ce n'est pas un problème fondamental.
Et puis c'est tellement amusant de ne jamais faire ses sauvegardes pour venir ensuite pleurer qu'on a tout perdu - on ne va pas s'en priver, quand même ! ;)

L'astuce consistera ici à rajouter tous les usagers au groupe users (groupe présent par défaut sous GNU/Linux), puis d'utiliser les listes de contrôle d'accès (ACL) pour que GNU/Linux rajoute automatiquement le groupe users avec les bons droits de lecture/écriture/accès, et ce dès qu'un usager créé un nouveau fichier/dossier dans le /COMMUN.

La commande suivante ne se fait évidemment qu'une seule fois, sous administrateur root.

Code : Tout sélectionner

setfacl -m d:g:users:rwX -R /COMMUN/
Ce qui est surtout important ici est l'option "d", qui ajoute, aux droits UNIX par défaut, des droits supplémentaires propres au groupe users : r pour read (lecture), w pour write (écriture) et X pour ne mettre le droit x (accès) que sur les répertoires/dossiers, ce qui évite donc de transformer les fichiers simples en scripts/fichiers exécutables...

Pour lire les ACL d'un dossier, c'est la commande "getfacl nom_dossier" qui fait le travail inverse :

Code : Tout sélectionner

# getfacl /COMMUN
# file: COMMUN/
# owner: nobody
# group: users
user::rwx
group::rwx
other::---
default:user::rwx
default:group::rwx
default:group:users:rwx
default:mask::rwx
default:other::---
A noter enfin que Caja, le navigateur de fichiers de l'environnement MATE, n'affiche pas ces ACL étendues, et c'est clairement une amélioration qu'il serait peut-être temps d'ajouter...

Si pour un particulier, l'usage des ACL étendues est inutile, pour une famille, l'exemple ici du dossier COMMUN démontre qu'on peut en avoir besoin.
Pour une entreprise, la question ne se pose pas : connaître les ACL étendues est une obligation aujourd'hui.

Il faut donc espérer que les navigateurs de fichiers de GNU/Linux évolueront rapidement pour prendre graphiquement en charge les ACL étendues.
En attendant, passer par la console n'est jamais une mauvaise chose pour apprendre les commandes de base, avant de se jeter sur des outils graphiques certes plus ergonomiques, mais souvent incomplets en terme de fonctionnalités...
Avatar de l’utilisateur
juice
Messages : 247
Inscription : dim. 29 juin 2008, 10:06
Distribution : Archlinux
Niveau : Confirmé
Localisation : Oberentzen

Re: Créer un dossier COMMUN pour tous les usagers

Message par juice »

Bonjour Manchot Masqué.

Je dépoussière un peu ton post. Je suis en train de me tâter pour mettre en place des acl sur mon partage nfs.

Quelles sont les possibilités en terme d’héritage ? Un fichier créé dans un répertoire donné peut-il hériter du propriétaire / groupe de celui-ci, les permissions peuvent-elle être aussi hériter de celles du répertoire parent ou bien être spécifiées sous forme d’un « umask » ?

Par ailleurs :
le Manchot Masqué a écrit : ven. 16 juin 2017, 13:20 Pour des questions de sécurité, j'ai pour habitude de fixer manuellement les droits sur les dossiers /home/$user en 700 (rwx------) avec un "chmod 700 /home/*", ce qui assure qu'un utilisateur ne peut accéder aux données d'un autre, et évite les effacements "accidentels" entre utilisateurs. Bien entendu, vous êtes libres de faire comme vous l'entendez chez vous...
Il me semble que les distributions principales (comme Debian, Ubuntu…) mettent les permissions du /home/$user à 755 (rwx r-x r-x) ce que je trouve un peu excessif. Personnellement je fait un peu moins parano que toi avec un 750 (rwx r-x ---), quitte à être un peu plus permissif sur certains sous dossiers et moins sur d’autres. Je trouve cela un peu plus souple pour l’instant. Et puis en cas de pépin, y’a toujours la sauvegarde…

Ces mêmes distributions créent un groupe principal un groupe identique au nom d’utilisateur. J’ai un peu de mal à voir l’intérêt de cette pratique par rapport au groupe user (gid 100). Quel est ton avis sur cette question ?
Répondre