Vous êtes sur la page 1sur 7

Corrigé TD III: droits UNIX

Marouane Belaoucha
mbelaoucha@gmail.com

22/09/2010

1 Exercice 1: effet de la commande ’umask’


On commence par créer un répertoire à part pour mettre de l’ordre:
[bem@adaan ~]$ mkdir tp3
[bem@adaan ~]$ cd tp3/

1.1 Partie a
[bem@adaan tp3]$ umask 000
[bem@adaan tp3]$ touch fichier1
[bem@adaan tp3]$ mkdir rep1

On s’attend à ce que toutes les permissions soient accordées au fichier fichier1


et au répertoire rep1. Une confirmation grace à la commande ls

[bem@adaan tp3]$ ls -l
-rw-rw-rw-. 1 bem bem 0 2010-09-22 17:16 fichier1
drwxrwxrwx. 2 bem bem 4096 2010-09-22 17:16 rep1
Les permissions d’executions ne sont pas accordées aux fichiers pour des
raisons de sécurité. Celles du répertoire sont accordées pour qu’on puisse y
accéder. On réitère la même manipulation pour les autres umask.

[bem@adaan tp3]$ umask 770


[bem@adaan tp3]$ touch fichier2
[bem@adaan tp3]$ mkdir rep2
[bem@adaan tp3]$ umask 234
[bem@adaan tp3]$ touch fichier3
[bem@adaan tp3]$ mkdir rep3
[bem@adaan tp3]$ ls -l
total 12
-rw-rw-rw-. 1 bem bem 0 2010-09-22 17:16 fichier1
-------rw-. 1 bem bem 0 2010-09-22 17:23 fichier2
-r--r---w-. 1 bem bem 0 2010-09-22 17:24 fichier3
drwxrwxrwx. 2 bem bem 4096 2010-09-22 17:16 rep1
d------rwx. 2 bem bem 4096 2010-09-22 17:24 rep2
dr-xr---wx. 2 bem bem 4096 2010-09-22 17:24 rep3

1
1.2 Partie b
Pour qu’un répertoire ait les droits (automatiquement attribués lors de sa création)
suivants rwxr-x--- il faut utiliser le masque 027. Ce résultat est calculable en
remplaçant chaque lettre par 0 (pour dire: ne pas masquer) et tout trait par
1 (pour dire: masquer). La séquence des chiffres binaires est: 000 010 111
correspondant à 027 en octal.
Le même masque permet de donner les permissions rw-r----- aux fichiers
(étant la permission d’execution levée automatiquement).

1.3 Partie c
Si le umask permet de définir des permissions d’accès par défaut pour des
fichiers/répertoires qui seront crées à postiriori, la commande chmod permet de
redéfinir ces permissions pour des fichiers/répertoires existants. Étant proprétaire
d’un répertoire rep et désirant me restreindre (à moi seul) son accès, j’execute
la commande:

chmod 700 -R rep/

Ici, le -R (pour le mot anglais Recursive), applique les mêmes droits d’accès
aux fichiers et répertoires contenus dans le répertoire rep.

2 Exercice 2
Pour se mettre en route il faut lancer la commande
[bem@adaan tp3]$ su root
ou simplement
[bem@adaan tp3]$ su

vous serez invités à donner un mot de passe root, pas de panique si rien ne
s’affiche quand vous appuyez sur les boutons du clavier! Votre mot de passe est
bien lu, mais pas affiché (pour des raisons de sécurité!). Une fois connectés, vous
remarquez deux changements quant à l’affichage de l’invite de commandes. Le
premier, est que le $ est, désormais, remplacé par #. Le deuxième, votre login
d’origine (dans mon cas bem) est remplacé par root. À présent, votre invite de
commandes ressemble à:
[root@adaan tp3]#
mettons-nous, maintenant, à créer les comptes utilisateurs, les groupes, et
la mise en place du partage.

2.1 Étape 1 : Création des groupes chef, user


Il suffit de lancer la commande groupadd de la sorte:

[root@adaan tp3]# groupadd chef


[root@adaan tp3]# groupadd user

2
Deux entrées doivent être crées dans le fichier /etc/group, une par groupe.
Vous pouvez vérifier la création des deux groupes en visualisant le fichier /etc/group
(en utilisant un editeur de texte par exemple). Sinon, on peut se servir de la
commande tail pour afficher les deux dernières lignes du fichier en question.

[root@adaan tp3]# tail -2 /etc/group


chef:x:506:
user:x:505:

Les deux groupes ont été bien crées. Ils ont les identifiants 506 pour chef
et 505 pour user.
On peut entamer la création des utilisateurs qui vont appartenir aux groupes
qu’on vient de créer.

2.2 Étape 2 : Création des comptes utilisateurs


En consultant le manuel de la commande useradd, On repère deux options qui
nous seront très utiles.

• -g ou --gid: permettant d’affecter le compte utilisateur qui sera crée à


un groupe existant.
• -b ou --base: permettant de spécifier une base pour tous les répertoires
de l’utilisateur (son home entre autre).

Ainsi, la commande sera utilisée de la manière suivante:

useradd -g <nom d’un groupe> -b <chemin de la base> <login nouveau compte>

Où les éléments entourés de < et > sont à remplacer par des valeurs adéquates.
Etant donné que tous les homes des utilisateurs normaux user* se trouvent
dans le répertoire /home/users/, et étant donné que dernier n’existe pas, il va
falloir le créer.

[root@adaan tp3]# mkdir /home/users/


Tout est prêt, on se met à créer les compte utilisateurs!

2.2.1 Création des comptes


Le compte chef Le chef aura le privilège:

[root@adaan tp3]# useradd -g chef -b /home/ chef


Je viens de créer un compte utilisateur avec le login chef, qui appartiendra
au groupe chef (option -g chef), et qui aura un home dans /home/chef/
(option -b /home/). Nous pouvons vérifier la création du compte en consultant
le fichier /etc/passwd.

[root@adaan tp3]# tail -1 /etc/passwd


chef:x:501:506::/home//chef:/bin/bash

3
PS: nous avons déjà vu la commande tail un peu plus haut.
Ce n’est pas encore fini! chef doit appartenir également au groupe user.
Pour rectifier cela, on se servir de la commande usermod qui permet la modifi-
cation d’un profile d’un compte utilisateur.

[root@adaan tp3]# usermod -G user,chef chef


[root@adaan tp3]# tail -2 /etc/group
user:x:505:chef
chef:x:506:chef

La première commande permet de rajouter chef à nos deux groupes (option:


-G user,chef). La deuxième permet de vérifier si les choses sont bien faites.
En consultant les deux dernères entrées du fichier1 /etc/group, on voit que les
deux groupes chef et user, contiennent un seul utilisateur (chef).

Les utilisateurs normaux Le même principe, seuls les paramètres changent:

[root@adaan tp3]# useradd -g user -G user -b /home/users/ user1


[root@adaan tp3]# useradd -g user -G user -b /home/users/ user2
..
..
[root@adaan tp3]# useradd -g user -G user -b /home/users/ user9

Ces commandes permettent de créer 9 comptes (user1, ..., user9) dont


les homes se trouveront dans des sous répertoires de la base /home/users/ et
qui seront ajoutés automatiquement dans le groupe user.
Les comptes ont été bien crées?!
[root@adaan tp3]# tail -9 /etc/passwd
user1:x:502:505::/home/users//user1:/bin/bash
user2:x:503:505::/home/users//user2:/bin/bash
user3:x:504:505::/home/users//user3:/bin/bash
user4:x:505:505::/home/users//user4:/bin/bash
user5:x:506:505::/home/users//user5:/bin/bash
user6:x:507:505::/home/users//user6:/bin/bash
user7:x:508:505::/home/users//user7:/bin/bash
user8:x:509:505::/home/users//user8:/bin/bash
user9:x:510:505::/home/users//user9:/bin/bash
Les comptes appartiennent-ils au groupe user?!
[root@adaan tp3]# tail -2 /etc/group
user:x:505:chef,user1,user2,user3,user4,user5,user6,user7,user8,user9
chef:x:506:chef

2.2.2 Important: mots de passes pour les comptes crées


Des mots de passes doivent êtres accordés à tous les comptes crées. Cela est
possible grace à la commande passwd (lancée en root).

4
[root@adaan tp3]# passwd chef
[root@adaan tp3]# passwd user1
...
...
[root@adaan tp2]# passwd user9
Pour chaque commande, vous serez invités à donner un mot de passe et à
le confirmer. Ne paniquez pas si rien ne s’affiche quand vous saisissez vos mots
de passes, c’est fait comme cela pour des raisons de sécurités (Si, si ... ils sont
maniaques).
Si vous voulez vous connecter sur l’un des comptes, vous pouvez utiliser la
commande su (switch user).

[bem@adaan tp3]$ su chef


Password:
[chef@adaan tp3]$ su user1
Password:
[user1@adaan tp3]$

Etant connecté en tant que bem, je veux ouvrir une session en tant que chef,
le mot de passe m’est demandé. Puis je veux ouvrir une session user1.

2.2.3 Modification des droits par défaut ’umask’


Si l’on veut que les fichiers crées par nos utilisateurs soient modifiables par les
tous les autres utilisateurs du groupe user il faudrait définir les droits d’accès
par défaut. Chaque utilisateur doit executer la commande umask avec le masque
007 (je ne masque rien pour moi et pour les membres du groupe. Je masque
tout pour les autres).

[chef@adaan tp3]$ umask 007


[user1@adaan tp3]$ umask 007
...
...
[user9@adaan tp3]$ umask 007

Note: la valeur du masque pourrait être précisé lors de la création du compte.


Regardez l’option -K de useradd et usermod.

2.3 Étape 3: mise en place du partage


2.3.1 Création du répertoire partagé et droits d’accès
Il faut créer (en tant que root) le répertoire /home/users/public, le répertoire
dont le contenu sera partagé par tous les membres du groupe user.

[root@adaan tp3]# mkdir /home/users/public


[root@adaan tp3]# ls -l /home/users/
total 40
drwxr-xr-x. 2 root root 4096 2010-09-27 19:32 public
...

5
La deuxième commande permet de vérifier la création du répertoire. On
remarque, by the way, que le propriétaire du répertoire est root (premier root)
du groupe root(deuxième root). On va changer le propriétaire qui est sensé
être chef du groupe user. Pour cela, on va utiliser la commande chown (change
owner).

[root@adaan tp3]# chown chef:user /home/users/public/

Le répertoire doit être accessible en lecture/écriture/éxecution pour tous


les membres du groupe user. Aucun accès ne sera accordé aux autres. Cela
correspond au mode d’accès octal 770.

[root@adaan tp3]# chmod 770 /home/users/public/

Cela a fonctionné?
[root@adaan tp3]# ll /home/users/
total 40
drwxrwx---. 2 chef user 4096 2010-09-27 19:32 public
...

À priori, OUI!

2.3.2 Faire un test (scénario du TP)


Le répertoire ’public’ est il accessible pour ’chef ’ ?
[root@adaan tp3]# su chef
[chef@adaan tp3]$ cd /home/users/public/
[chef@adaan public]$

OUI!

Le répertoire ’public’ est il accessible pour ’user1’ ?


[root@adaan tp3]# su user1
[user1@adaan tp3]$ cd /home/users/public/
[user1@adaan public]$

OUI!

Le répertoire ’public’ est il accessible pour ’invite’ ? On commence par


créer, rapidement, un utilisateur invite
[root@adaan tp3]# useradd invite
[root@adaan tp3]# passwd invite
Puis on teste l’accès au répertoire pour invite.

[root@adaan tp3]# su invite


[invite@adaan tp3]$ cd /home/users/public/
bash: cd: /home/users/public/: Permission denied

6
L’accès n’est pas accordé!
On fait le ménage derrière!

[invite@adaan tp3]$ exit


exit
[root@adaan tp3]# userdel invite

chef, user1 créent des fichiers! ’user2’ peut il les supprimer?

Création de fichiers
[root@adaan tp3]# su chef

[chef@adaan tp3]$ touch /home/users/public/fichier_chef


[chef@adaan tp3]$ ls -l /home/users/public/fichier_chef
-rw-rw----. 1 chef chef 0 2010-09-27 20:38 /home/users/public/fichier_chef

[chef@adaan tp3]$ chown chef:user /home/users/public/fichier_chef


[chef@adaan tp3]$ ls -l /home/users/public/fichier_chef
-rw-rw----. 1 chef user 0 2010-09-27 20:38 /home/users/public/fichier_chef

Vue que le groupe principal de l’utilisateur chef est le groupe chef. Tous
les fichiers crées par l’utilisateur chef, vont appartenir (par défaut) au groupe
chef. Un chown est obligatoire dans notre cas.
Sinon, pour un fichier crée par user1:

[user1@adaan tp3]$ touch /home/users/public/fichier_user1


[user1@adaan tp3]$ ls -l /home/users/public/fichier_user1
-rw-rw----. 1 user1 user 0 2010-09-27 20:40 /home/users/public/fichier_user1

’user2’ pourra-t-il supprimer les deux fichiers?


[user1@adaan tp3]$ su user2
Password:
[user2@adaan tp3]$ rm -v /home/users/public/fichier_*
removed ‘/home/users/public/fichier_chef’
removed ‘/home/users/public/fichier_user1’
[user2@adaan tp3]$
OUI!

3 Vous avez des questions/suggestions?


mbelaoucha@gmail.com
n’hesiter pas à se servir du forum pour s’entre-aider