[CentOS] Permission problem
Niki Kovacs
contact at kikinovak.net
Tue Jul 7 15:23:41 UTC 2009
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à.
More information about the CentOS
mailing list