http://rofi.roger-ferrer.org/eiciel/?s=2
__________________________________________________________________ Looking for the perfect gift? Give the gift of Flickr!
Radu-Cristian FOTESCU a écrit :
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à.
Niki Kovacs a écrit :
# chown jcpascot:agents /home/pub/jcpascot/ # chown nkovacs:agents /home/pub/nkovacs # chmod 0750 /home/pub/*
Small mistake. This last line should go chmod 2750, so every file created in that directory will have the same group ('agents').
Niki
On Tue, 2009-07-07 at 17:23 +0200, Niki Kovacs wrote:
Where's the ENGLISH Version?
John
On Tue, Jul 7, 2009 at 13:03, JohnSjses27@gmail.com wrote:
Where's the ENGLISH Version?
I see you use GMail, so you can try "Message translation" in the "Labs" feature of Gmail. I tried it, glanced at the translation, and it is quite decent. I does screw up the command-line listings, though.
HTH, Filipe
On Tue, 2009-07-07 at 13:18 -0400, Filipe Brandenburger wrote:
On Tue, Jul 7, 2009 at 13:03, JohnSjses27@gmail.com wrote:
Where's the ENGLISH Version?
I see you use GMail, so you can try "Message translation" in the "Labs" feature of Gmail. I tried it, glanced at the translation, and it is quite decent. I does screw up the command-line listings, though.
HTH, Filipe
Ha Ha, LOL will try it out.. On an real note I did not know glabs had a translate add in. thanks :-)
John