Les droits

mardi 16 septembre 2008
par  Jerome ROBERT
popularité : 5%

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
caractère "*", la ligne entière est considérée comme
invalide.

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
shell par défaut (/bin/sh) est lancé.

 

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
ce groupe.

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


Statistiques

Dernière mise à jour

mercredi 5 juillet 2017

Publication

264 Articles
Aucun album photo
Aucune brève
6 Sites Web
2 Auteurs

Visites

43 aujourd’hui
246 hier
531287 depuis le début
8 visiteurs actuellement connectés