expert:creer_un_repertoire_commun_pour_les_utilisateurs
no way to compare when less than two revisions
Différences
Ci-dessous, les différences entre deux révisions de la page.
— | expert:creer_un_repertoire_commun_pour_les_utilisateurs [2018/11/17 12:53] (Version actuelle) – créée - modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | *Source : "Les recettes linux de Tyrtamos" | ||
+ | =====Créer un répertoire commun pour les utilisateurs===== | ||
+ | |||
+ | [testé sur l' | ||
+ | ====Objectif==== | ||
+ | |||
+ | Nous voulons créer un répertoire que tous les utilisateurs auront en commun, non seulement pour créer et modifier leurs propres fichiers, mais aussi pour modifier les fichiers des autres utilisateurs. | ||
+ | |||
+ | Pour ceux qui connaissent Windows, cela correspond à la configuration par défaut des **documents partagés** (**SharedDocs**). | ||
+ | ====Problème==== | ||
+ | |||
+ | C'est une préoccupation élémentaire à laquelle, curieusement, | ||
+ | |||
+ | Vous vous dites: **facile, il suffit de créer un répertoire / | ||
+ | |||
+ | Et bien non: dans ce cas, chaque utilisateur ne pourrait pas modifier les documents créés par les autres utilisateurs, | ||
+ | ====Solution avec les ACL==== | ||
+ | |||
+ | La solution la plus performante utilise les **ACL** (Access Control Lists), qui sont des droits étendus linux. | ||
+ | ===Références pour les ACL=== | ||
+ | |||
+ | * pages man de acl, setfacl, getfacl (si, bien sûr, le paquet acl est installé!) | ||
+ | |||
+ | * http:// | ||
+ | |||
+ | ===Disposez-vous des ACL ?=== | ||
+ | |||
+ | Même si le paquet **acl** n'est pas encore installé, votre noyau doit avoir les fonctions acl activées. | ||
+ | |||
+ | Pour savoir si vous disposez des fonctions ACL dans votre noyau, faites (en console sous root): | ||
+ | |||
+ | < | ||
+ | |||
+ | La réponse sera du genre (exemple de l' | ||
+ | |||
+ | < | ||
+ | CONFIG_EXT3_FS_POSIX_ACL=y | ||
+ | CONFIG_REISERFS_FS_POSIX_ACL=y | ||
+ | CONFIG_JFS_POSIX_ACL=y | ||
+ | CONFIG_FS_POSIX_ACL=y | ||
+ | CONFIG_XFS_POSIX_ACL=y | ||
+ | CONFIG_TMPFS_POSIX_ACL=y | ||
+ | CONFIG_JFFS2_FS_POSIX_ACL=y | ||
+ | CONFIG_NFS_V3_ACL=y | ||
+ | CONFIG_NFSD_V2_ACL=y | ||
+ | CONFIG_NFSD_V3_ACL=y | ||
+ | CONFIG_NFS_ACL_SUPPORT=m | ||
+ | CONFIG_GENERIC_ACL=y</ | ||
+ | |||
+ | Si vous avez, comme ici, **CONFIG_FS_POSIX_ACL=y**, | ||
+ | |||
+ | Ensuite, vous regardez si le formatage que vous avez est concerné. Par exemple pour ext3: **CONFIG_EXT3_FS_POSIX_ACL=y** | ||
+ | |||
+ | Si vous n'avez pas les fonctions ACL activées dans votre noyau (c'est dommage!), vous pouvez le recompiler pour les activer, ou utiliser la dernière solution de cette page (**sans ACL**). | ||
+ | ===Mode opératoire=== | ||
+ | |||
+ | On créé le répertoire à partager entre tous les utilisateurs, | ||
+ | |||
+ | < | ||
+ | |||
+ | On le fait appartenir à root:users avec un droit **rwxrwxr-x**. | ||
+ | |||
+ | < | ||
+ | # chmod 775 / | ||
+ | |||
+ | On pourrait d' | ||
+ | |||
+ | Il faut vérifier que tous les utilisateurs font partie du groupe **users**, et les y mettre s'ils n'y sont pas. Il n'est pas nécessaire que ce groupe soit le groupe principal. Mais si on veut que chaque nouvel utilisateur soit créé avec **users** comme groupe principal, il suffit de mettre **USERGROUPS=no** dans le fichier / | ||
+ | |||
+ | On installe ensuite le paquet **acl** (par synaptic, apt-get, …) | ||
+ | |||
+ | Dans le fichier fstab, on ajoute “acl” aux options de montage de la partition concernée (ou de toutes, si ça marche avec les formatages linux que vous avez). Par exemple, si / | ||
+ | |||
+ | < | ||
+ | |||
+ | Ensuite ⇒ prise en compte par reboot (ou remontage par **mount -o remount,acl /home**, mais je n'ai pas essayé). | ||
+ | |||
+ | Configuration des acl pour le répertoire partagé: | ||
+ | |||
+ | # setfacl -m d: | ||
+ | |||
+ | Commentaires sur cette commande: | ||
+ | |||
+ | * -m ⇒ modifier les acl. Si le répertoire / | ||
+ | |||
+ | * d: ⇒ **default** = c'est ce qui permettra aux membres du groupe users de créer des fichiers **rw-rw-r–** (et pas **rw-r–r–** comme le demanderait le umask de / | ||
+ | |||
+ | * g:users ⇒ groupe = **users** | ||
+ | |||
+ | * rwX ⇒ droits à mettre. le **X** majuscule veut dire que **x** ne sera mis que pour les répertoires (les simples fichiers n' | ||
+ | |||
+ | Après cette commande, on peut vérifier la configuration par: | ||
+ | |||
+ | < | ||
+ | |||
+ | Ce qui donnera comme sortie: | ||
+ | |||
+ | < | ||
+ | # owner: root | ||
+ | # group: users | ||
+ | user::rwx | ||
+ | group::rwx | ||
+ | group: | ||
+ | mask::rwx | ||
+ | other::r-x | ||
+ | default: | ||
+ | default: | ||
+ | default: | ||
+ | default: | ||
+ | default: | ||
+ | |||
+ | A partir de là: | ||
+ | |||
+ | * a)- tout fichier créé par un utilisateur dans / | ||
+ | |||
+ | * b)- tout répertoire créé par un utilisateur dans / | ||
+ | |||
+ | * c)- à l' | ||
+ | |||
+ | * d)- à l' | ||
+ | |||
+ | |||
+ | Et voilà : dans / | ||
+ | ===Autre solution sans les ACL=== | ||
+ | |||
+ | Voilà une autre solution (moins bonne) sans les ACL: | ||
+ | |||
+ | 1- création d'un répertoire **/ | ||
+ | |||
+ | 2- faire en sorte que tous les utilisateurs concernés aient comme groupe principal le même groupe: **users**. C'est le cas par defaut pour l' | ||
+ | |||
+ | 3- faire en sorte que le umask par défaut soit **002** et non **022**. Cela se modifie dans le fichier / | ||
+ | |||
+ | Pour la prise en compte des points 2 et 3, j'ai rebooté (il doit y avoir des méthodes plus subtiles). | ||
+ | |||
+ | A partir de ce moment, tout utilisateur **user1** qui créé un fichier dans / | ||
+ | |||
+ | Pour assurer tout de même la sécurité et l' | ||
+ | |||
+ | |||
+ | Voilà, c'est fait: amusez-vous bien! |
expert/creer_un_repertoire_commun_pour_les_utilisateurs.txt · Dernière modification : 2018/11/17 12:53 de 127.0.0.1