Les droits
par
popularité : 2%
V. Organisation des utilisateurs
A. Compte utilisateur
Pour travailler sur une machine Unix , un être humain doit se connecter sur
un compte utilisateur, avec un nom d’utilisateur et un mot de passe.
Un compte utilisateur est une entrée (ligne) dans le fichier /etc/passwd.
Chaque ligne du fichier /etc/passwd est structurée de la façon
suivante :
UserName:CryptedPasswd:UID:GID:Comment:HomeDirectory:Shell
nom du champ |
signification |
|
UserName |
nom de login. |
|
CryptedPasswd |
mot de passe (aucun si vide). S’il est égal au |
|
UID |
numéro d’utilisateur (doit-être unique). |
|
GID |
numéro du groupe primaire. |
|
Comment |
champ libre (commentaires). |
|
HomeDirectory |
répertoire de connexion. |
|
Shell |
commande lancée à la connexion. S’il est vide, un |
B. Les groupes
Les groupes d’utilisateurs permettent au système Unix de gérer les droits
d’accès à des ressources qui devront êtres partagées entre plusieurs
personnes, mais interdites à d’autres.
Un groupe est identifié par un numéro unique sur le système : son GID.
Il peut y avoir des intersections entre les groupes : une même personne
appartient à plusieurs groupes.
Chaque ligne du fichier /etc/group est structurée de la façon
suivante :
GroupName::GID:UserName1,UserName2, ..... ,UserNameN
nom du champ |
signification |
|
GroupName |
nom du groupe. |
|
CryptedPasswd |
inutilisé. |
|
GID |
numéro de groupe(doit être unique). | |
User, … |
liste des utilisateurs autorisés à devenir membre de |
C. Attributs et droits d’accès sur les fichiers
Unix gère les droits d’accès aux fichiers en attachant simplement des
attributs à ceux-ci. Il n’existe pas de base de données pour les droits
d’accès tel que sous Novell.
1. Attributs d’un fichier
Un fichier distingue trois catégories d’utilisateurs potentiels : son
propriétaire (user), les membres du groupe propriétaire (group), et tous les
autres utilisateurs (other).
A chacune de ces catégories sont rattachés trois types de droits : en
lecture, en écriture, en exécution. Il s’agit de droits "binaires" :
ils sont ou non accordés.
Il est donc possible de spécifier l’ensemble des droits des trois
catégories sur 9 bits :
>
2. Signification de rwx
r (read) |
w (write) |
x (execute) (explore) |
|
fichier |
contenu lisible
cat more |
contenu modifiable
vi |
exécutable |
répertoire |
contenu lisible
ls |
contenu modifiable
rm cp mv ... |
exploration
cd |
3. Modification des droits d’accès : la commande chmod
chmod change les droits d’accès d’un fichier ou répertoire
chmod [ -R ] mode fichiers
-R Traitement récursif
mode Nouveau masque de permissions exprimé en octal ou en notation
symbolique
Syntaxe en notation symbolique (Posix) :
u = r
chmod g + w
o - x
avec u = user g = group o = other
Exemples :
$ chmod ug+x progExecutable
$ chmod g-w fichierAprotéger
$ chmod o=r,u+w fic
Syntaxe en notation octale :
Un poids est associé à chacun des droits :
4 pour les droits en lecture (r),
2 pour les droits en écriture (w),
1 pour les droits en exécution (x).
On effectue la somme pour les droits positionnés, pour chaque catégorie
d’utilisateur : on obtient 3 chiffres compris entre 0 et 7, que l’on donne en
premier paramètre à la commande chmod.
Exemple : on souhaite imposer les droits : rwxr-x---
Le masque est 4+2+1 = 7
4+0+1 = 5
0+0+0 = 0
on tape : $ chmod 750 NomFic
4.Droits d’accés par défaut : la commande umask
umask affiche les permissions par défaut attribuées lors de la
création de nouveaux fichiers et répertoires.
Méthode Posix :
On récupére le masque courant au format Posix
La modification d’un bit de fait de la même manière
qu’avec la commande chmod :
Exemple :
$ umask -S # le "S" en
majuscule !
u=rwx,g=rwx,o=r
$umask g-w,u+x
$ umask -S
u=rwx,g=rx,o=rx
Méthode non-Posix :
Le positionnement du masque s’effectue en trois étapes :
Déterminer le masque octal en fonction des droits par
défaut souhaités
(par exemple 750 pour rwxr-x---),
Calculer le masque en soustrayant le masque souhaité
à 777
(ici, 777 - 750 = 027),
Enregistrer le masque ainsi obtenu (umask 027).
Exemple :
$umask
022
$mkdir sous_rep
$ll sous_rep
drwxr-xr-x 2 didier group 32 Mar 10 15:59 sous_rep
$rmdir sous_rep
$umask 002
$umask
02
$mkdir sous_rep
$ll sous_rep
drwxrwxr-x 2 didier group 32 Mar 10 16:01 sous_rep
5.Changement de propriétaires : les commandes chown et chgrp
chown & chgrp change le propriétaire / groupe attaché à un fichier
Exemple :
$ chown jean fichier1 fichier1 appartient maintenant
à jean
$ chgrp prod fichier2 fichier2 est du groupe prod
6. Commande id
id affiche l’ user-id et le group-id
Exemple : $ id
uid = 210(john), gid=20(users)
D. Changement d’identité
1. Commande su
Elle permet de créer un processus shell « fils » en changeant d’identité
( UID ).
$ id Shell initial
uid=1001(stage1) gid=1000(stage)
$ su stage2 Changement d’identité
Password :
$ id Shell fils
uid=1002(stage2) gid=1000(stage)
........
.......
$ exit
$ Retour au shell initial
Sans argument, elle permet de devenir « super-user » pour pratiquer une
opération privilégiée.
$ su
root’s password :
su : Sorry
$
L’option - ( signe moins seul ) entraîne l’exécution du fichier
.profile et provoque donc le positionnement d’un nouvel environnement shell.
$ su - stage2
Password :
Exécution du .profile de stage2
............
............
$ exit
$
Il est possible d’invoquer une seule commande.
su - autre_login -c "ligne_de_commande"
$ id Shell initial
uid=1001(stage1) gid=1000(stage)
$ su stage2 -c id
Password :
uid=1002(stage2) gid=1000(stage)
$ Retour au shell initial
< E. Permissions supplémentaires
1. Fichiers ordinaires exécutables
Permission SUID Le propriétaire du processus chargé d’exécuter la
commande
est changé en propriétaire du programme.
Cela permet de concevoir un programme « public » capable de
modifier des fichiers administratifs protégés en écriture.
( voir la notion de processus au chapitre 4 )
Permission SGID Idem au niveau du groupe.
La présence de la permission SUID est visualisée par la lettre s Ã
la place du x dans la partie propriétaire. La permission SGID suit la même
convention dans la partie groupe.
ls -l /usr/bin/passwd
-r-sr-sr-x 1 root sys 30620 Nov 22 2001 /usr/bin/passwd
2. Répertoires<
Permission SGID ou « Inheritance flag »
Tous les fichiers créés dans le répertoire prennent comme groupe
propriétaire celui du répertoire. Cette permission est héritée par les
sous-répertoires. Cela permet d’obtenir une arborescence où tous les
fichiers sont placés dans le même groupe ( schéma de permission intéressant
surtout dans les aspects « partage de fichiers » sur un réseau via des services
comme NFS ).
La présence de cette permission est visualisée par la lettre s à la
place du x dans la partie groupe.
ls -l
drwxr-sr-x 2 stage1 sys 96 Dec 13 15:40 rep
cd rep
id
uid=1001(stage1) gid=1000(stage)
cp /etc/profile toto
ls -al
total 4
drwxr-sr-x 2 stage1 sys 96 Dec 13 15:41 .
drwxr-xr-x 3 stage1 stage 1024 Dec 13 15:41 ..
-rw-r—r— 1 stage1 sys 1395 Dec 13 15:41 toto
mkdir repbis
ls -al
total 4
drwxr-sr-x 3 stage1 sys 96 Dec 13 15:41 .
drwxr-xr-x 3 stage1 stage 1024 Dec 13 15:41 ..
drwxr-sr-x 2 stage1 sys 96 Dec 13 15:41 repbis
-rw-r—r— 1 stage1 sys 1395 Dec 13 15:41 toto
Permission « Sticky Bit »
Cette permission complète le droit d’écriture en indiquant qu’il faut
être propriétaire d’un fichier pour pouvoir le supprimer.
La présence de cette permission est visualisée par la lettre t à la
place du x dans la partie « others ».
ls -ld /tmp
drwxrwxrwt 3 root system 1024 Dec 13 15:58 /tmp
cd /tmp
id
uid=1001(stage1) gid=1000(stage)
ls -l
-rw-rw-r— 1 stage1 stage 29 Dec 13 15:57 toto
-rw-rw-r— 1 stage2 stage 29 Dec 13 15:57 tutu
rm toto
rm tutu
rm : tutu not removed.
Not owner
>
3. ACLs ( Access Control List )
Certaines versions Unix ( HP/UX, AIX, Solaris, ... )
implémentent un principe de permissions étendues où il est possible d’associer
des droits particuliers à un utilisateur ou groupe donné vis à vis d’un
fichier, en complément ou remplacement des permissions de base.
L’implémentation de ces ACLs n’est pas normalisée pour
l’instant.
Le jeu de commandes proposé varie selon les versions.
Exemple sur Solaris :
ls -l toto
-rw-rw-rw-+ 1 root system 29 Dec 13 16:12 toto
getflacl toto
attributes : base permissions owner(root) : rw- group(system) : rw- others : rw- extended permissions enabled specify r— u:stage1
|
id
uid=1001(stage1) gid=1000(stage)
cp /etc/profile toto
cp : toto : Permission denied