Radu-Cristian FOTESCU a écrit : > > http://rofi.roger-ferrer.org/eiciel/?s=2 First of all, thanks for the instant replies. I took a peek at ACLs and how they work. But then, being a fervent adept of the KISS (Keep It Simple Stupid) principle (I started out with Slackware some eight years ago), I decided to shunt the KICK (Keep It Complicated Kiki) principle :o) More often than not, we do things in a quite complicated manner... before ending up finding a simple solution to the problem. Anyway, here's the solution to my problem, without ACLs, just good old plain chown and chgrp. I took some notes, they're in french, but the Linux bits are universal :o) Here goes, for the curious. --8<------------------------- La médiathèque de Montpezat compte cinq agents de prêt : * Jean-Claude Pascot (jcpascot) * Nicolas Kovacs (nkovacs) * Chantal Geins (cgeins) * Maryse Pascot (mpascot) * Renée Marseille (rmarseille) Les visiteurs de la médiathèque peuvent utiliser l'ordinateur avec un compte spécifique : * Utilisateur invité (invite) Jean-Claude Pascot et Nicolas Kovacs doivent pouvoir créer des documents et les mettre à disposition dans un répertoire partagé en lecture seule. (Remarque: peut-être que chacun aura 'son' répertoire...) Tous les agents doivent pouvoir échanger des documents dans un répertoire partagé accessible en lecture et en écriture. Les visiteurs ne doivent pas avoir accès aux documents des bibliothécaires, même pas en lecture. Chacun des utilisateurs sera membre du groupe de connexion initial 'agents', qu'il va donc falloir créer au préalable. # groupadd agents Pour voir les caractéristiques de ce nouveau groupe : # grep agents /etc/group agents:x:503: Éventuellement, c'est une bonne idée d'assigner un GID spécifique à ce groupe : # groupmod -g 1000 agents Pour effacer un groupe, utiliser 'groupdel' : # groupdel agents Ensuite on crée les utilisateurs : # useradd -c "Nicolas Kovacs" -g agents -u 500 -m nkovacs # useradd -c "Jean-Claude Pascot" -g agents -u 510 -m jcpascot # useradd -c "Chantal Geins" -g agents -u 520 -m cgeins # useradd -c "Maryse Pascot" -g agents -u 530 -m mpascot # useradd -c "Renée Marseille" -g agents -u 540 -m rmarseille # useradd -c "Utilisateur invité" -u 1000 -m invite On active les comptes : # passwd nkovacs # passwd jcpascot # passwd cgeins # passwd mpascot # passwd rmarseille # passwd invite Nicolas Kovacs et Jean-Claude Pascot veulent pouvoir mettre à disposition des documents à tous les agents, en lecture seule. # mkdir -pv /home/pub/{jcpascot,nkovacs} mkdir: création du répertoire `/home/pub' mkdir: création du répertoire `/home/pub/jcpascot' mkdir: création du répertoire `/home/pub/nkovacs' # chgrp agents /home/pub # chmod 0750 /home/pub/ # ls -ld /home/pub/ drwxr-x--- 4 root agents 4096 jui 7 16:10 /home/pub/ # chown jcpascot:agents /home/pub/jcpascot/ # chown nkovacs:agents /home/pub/nkovacs # chmod 0750 /home/pub/* # ls -l /home/pub/ total 8 drwxr-x--- 2 jcpascot agents 4096 jui 7 16:10 jcpascot drwxr-x--- 2 nkovacs agents 4096 jui 7 16:10 nkovacs Maintenant, Jean-Claude Pascot peut créer des documents dans son répertoire public /home/pub/jcpascot : # su - jcpascot $ cd /home/pub/jcpascot/ $ echo "Info importante" > info.txt $ exit Nicolas Kovacs peut faire de même dans /home/pub/nkovacs : # su - nkovacs $ cd /home/pub/nkovacs/ $ echo "Autre info importante" > infobis.txt $ exit Un agent peut maintenant accéder aux infos en lecture seule : # su - cgeins $ cat /home/pub/jcpascot/info.txt Info importante $ cat /home/pub/nkovacs/infobis.txt Autre info importante En revanche, il ou elle ne pourra pas modifier le contenu de ces deux répertoires. Ce droit est réservé aux seuls propriétaires respectifs. Il ne reste plus qu'à créer un répertoire d'échange où tous les agents disposent d'un droit de lecture et d'écriture indiscriminé. # mkdir -v /home/echange mkdir: création du répertoire `/home/echange' # chgrp agents /home/echange/ # chmod 3770 /home/echange/ # ls -ld /home/echange/ drwxrws--T 2 root agents 4096 jui 7 16:56 /home/echange/ Explication : Ici, on a défini en même temps le droit SGID pour le répertoire, ainsi que le 'sticky bit'. Si l'on crée un fichier dans un répertoire qui possède le droit SGID, son groupe sera identique à celui du répertoire. La conséquence, c'est que l'ensemble des fichiers du répertoire appartiendra au même groupe, ce qui est intéressant pour un répertoire accessible à plusieurs personnes. # su - jcpascot $ cd /home/echange/ $ echo "Info importante" > info.txt $ ls -l total 4 -rw-r--r-- 1 jcpascot agents 16 jui 7 17:01 info.txt $ exit Si c'est Nicolas Kovacs qui crée un fichier dans ce même répertoire : # su - nkovacs $ cd /home/echange/ $ echo "Autre info importante" > infobis.txt $ ls -l total 8 -rw-r--r-- 1 nkovacs agents 22 jui 7 17:04 infobis.txt -rw-r--r-- 1 jcpascot agents 16 jui 7 17:01 info.txt Quant au 'sticky bit', il s'applique à un répertoire et corrige une bizarrerie du système. Par défaut, un répertoire accessible en écriture à un ensemble d'utilisateurs permet à l'un d'entre eux de détruire les fichiers d'un autre utilisateur. Avec le 'sticky bit', il faut être propriétaire d'un fichier pour avoir le droit de le détruire. Deux exemples : $ ls -l total 8 -rw-r--r-- 1 nkovacs agents 22 jui 7 17:04 infobis.txt -rw-r--r-- 1 jcpascot agents 16 jui 7 17:01 info.txt $ whoami nkovacs $ rm -f info.txt rm: ne peut enlever `info.txt': Opération non permise Inversement : $ ls -l total 8 -rw-r--r-- 1 nkovacs agents 22 jui 7 17:04 infobis.txt -rw-r--r-- 1 jcpascot agents 16 jui 7 17:01 info.txt $ whoami jcpascot $ rm -f infobis.txt rm: ne peut enlever `infobis.txt': Opération non permise Enfin, l'utilisateur 'invite' ne pourra pas accéder aux infos des agents, même pas en lecture seule : # su - invite $ cd /home/pub/ -bash: cd: /home/pub/: Permission non accordée $ cd /home/echange/ -bash: cd: /home/echange/: Permission non accordée Et voilà.