Outils pour utilisateurs

Outils du site


commun_utilisateur

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

commun_utilisateur [2007/12/15 09:28] (Version actuelle)
tyrtamos créée
Ligne 1: Ligne 1:
 +====== Créer un répertoire commun pour les utilisateurs ======
 +
 +[testé sur l'​opensuse 10.2 et la debian etch]
 +
 +===== 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,​ il n'est pas facile de répondre.
 +
 +Vous vous dites: "​facile,​ il suffit de créer un répertoire /​home/​partage avec des droits rwxrwxrwx (ou 777), et c'est fait!" ​
 +
 +Et bien non: dans ce cas, chaque utilisateur ne pourrait pas modifier les documents créés par les autres utilisateurs,​ parce qu'ils seraient créés avec eux comme propriétaire,​ et des droits "​rw-r--r--"​ (=droits correspondant au "​umask"​ par défaut)!
 +
 +===== 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://​www.lea-linux.org/​cached/​index/​Gestion_des_ACL.html]]
 +
 +==== 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):
 +
 +  # cat /​boot/​config-`uname -r` | grep _ACL
 +
 +La réponse sera du genre (exemple de l'​opensuse 10.2):
 +
 +<​code>​
 +CONFIG_EXT2_FS_POSIX_ACL=y
 +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
 +</​code>​
 +
 +Si vous avez, comme ici, "​CONFIG_FS_POSIX_ACL=y",​ c'est OK pour vous.
 +
 +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,​ par exemple, /​home/​partage. Ce répertoire "​partage"​ peut être n'​importe où ailleurs que dans /home. L'​avantage de ce choix, c'est que si votre /home est dans une partition séparée, le sous-répertoire "​partage"​ s'y trouvera aussi (ce sont tout de même des données d'​utilisateurs!). Bien sûr, le choix de /​home/​partage vous interdit d'​avoir un utilisateur appelé "​partage"​...:​-D
 +
 +  # mkdir /​home/​partage
 +
 +On le fait appartenir à root:users avec un droit "​rwxrwxr-x"​.
 +
 +  # chown root:users /​home/​partage
 +  # chmod 775 /​home/​partage
 +
 +On pourrait d'​ailleurs interdire l'​accès aux non-users par un chmod 770 au lieu de 775.
 +
 +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 /​etc/​adduser.conf.
 +
 +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 /​home/​partage fait partie d'une partition séparée /home (vous ajustez en fonction de votre config!):
 +
 +  /dev/hda6 /home  ext3   ​options1,​option2,​option3,​acl ​ 0  0
 +
 +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:​g:​users:​rwX ​ /​home/​partage
 +
 +Commentaires sur cette commande:
 +
 +  * -m => modifier les acl. Si le répertoire /​home/​partage a déjà des données, on remplace "​-m"​ par "​-Rm"​ qui va appliquer ces règles ACL à tous les fichiers et sous-répertoires de façon récursive.
 +
 +  * 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 /​etc/​profile),​ ce qui permettra à chaque utilisateur de pouvoir modifier les fichiers créés par les autres utilisateurs.
 +
 +  * 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'​auront que "​rw-"​).
 +
 +Après cette commande, on peut vérifier la configuration par:
 +
 +  # getfacl /​home/​partage
 +
 +Ce qui donnera comme sortie:
 +
 +<​code>​
 +# file: home/​partage
 +# owner: root
 +# group: users
 +user::rwx
 +group::rwx
 +group:​users:​rwx
 +mask::rwx
 +other::r-x
 +default:​user::​rwx
 +default:​group::​rwx
 +default:​group:​users:​rwx
 +default:​mask::​rwx
 +default:​other::​r-x
 +</​code>​
 +
 +A partir de là:
 +
 +  * a)- tout fichier créé par un utilisateur dans /​home/​partage aura comme droit: rw-rw-r--. Ce fichier sera donc modifiable par tous les utilisateurs (groupe "​users"​) et seulement par eux.
 +
 +  * b)- tout répertoire créé par un utilisateur dans /​home/​partage aura comme droit: rwxrwxr-x. Ce répertoire sera donc modifiable par tous les utilisateurs (groupe users) et seulement par eux.
 +
 +  * c)- à l'​intérieur de ce sous-répertoire ainsi créé, l'​effet décrit en "​a)-"​ sera vrai aussi! ​
 +
 +  * d)- à l'​extérieur de /​home/​partage,​ **rien n'a changé**: tout fichier créé le sera donc avec le umask prévu dans /​etc/​profile (en général "​rw-r--r--"​ pour les fichiers et "​rwxr-xr-x"​ pour les répertoires).
 +
 +\\
 +Et voilà : dans /​home/​partage (et seulement là), tous les utilisateurs (et seulement eux), peuvent non seulement créer et modifier leurs fichiers, mais aussi modifier les fichiers créés par les autres utilisateurs.
 +
 +===== Autre solution sans les ACL =====
 +
 +Voilà une autre solution (moins bonne) sans les ACL:
 +
 +1- création d'un répertoire "/​home/​partage"​ (root:​users-775) destiné aux fichiers que les utilisateurs mettront en commun.
 +
 +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'​opensuse,​ mais pas pour la debian etch. Pour celle-ci, on pourrait d'​ailleurs vouloir qu'à la création de nouveaux utilisateurs,​ le groupe principal soit par défaut "​users"​ (mettre "​USERGROUPS=no"​ dans le fichier /​etc/​adduser.conf).
 +
 +3- faire en sorte que le umask par défaut soit "​002"​ et non "​022"​. Cela se modifie dans le fichier /​etc/​profile. Cela donnera les droits par défaut à la création des fichiers: on donne donc ici le droit d'​écriture au groupe et pas seulement au propriétaire.
 +
 +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 /​home/​partage (et ailleurs!) va le créer avec un propriétaire "​user1:​users"​ et un droit "​rw-rw-r--"​ ou 664 (et 775 pour un répertoire). Tout utilisateur pourra donc modifier les fichiers créés par les autres utilisateurs.
 +
 +Pour assurer tout de même la sécurité et l'​intimité de chacun, il faut ajouter une protection dans la debian (elle est déjà placée dans l'​opensuse):​ qu'il y ait pour chaque utilisateur un répertoire comme /​home/​user1/​documents dans lequel se trouvent tous les docs perso, répertoire qui appartiendra à user1:users avec un droit "​rwx------"​ (700), c'est à dire qui empêchera les autres utilisateurs d'​accéder au contenu.
 +
 +\\
 +Voilà, c'est fait: amusez-vous bien!
  
commun_utilisateur.txt · Dernière modification: 2007/12/15 09:28 par tyrtamos