Les comptes et les permissions

Les compte utilisateur c’est quoi ?

Il faut prendre en compte 2 commandes : Les informations concernant chaque utilisateur se trouvent dans le fichier /etc/passwd . Nous savons que pour créer un compte on utilise la commande adduser ou useradd .

adduser

Usage : adduser [-u uid [-o]] [-g groupe] [-G groupe,…] [-d home] [-s shell] [-c commentaire] [-m [-k template]] [-f inactif] [-e expire ] [-p passwd] [-n] [-r] name

adduser -D [-g groupe] [-b base] [-s shell] [-f inactif] [-e expire ]

passwd

passwd [-k] [-l] [-u [-f]] [-d] [-S] [nom d’utilisateur]

Il y a aussi les commandes :

# w = pour avoir les informations des utilisateurs connecter :

8:57pm up 41 days, 3:33, 1 user, load average: 0.00, 0.00, 0.00

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

toto pts/0 ANice-101-1-4-32 5:21pm 0.00s 0.51s 0.07s w

# who = idem :

toto pts/0 Nov 26 17:21

Comment les utiliser ?

Pour supprimer un compte on utilisera userdel (peut-etre?) , pour avoir l’info : man users (may be ?): il est possible que vous n’ayez pas cette commande ! Il vous faudra supprimer manuellement les comptes .

Pour empêcher l’accès à un utilisateur sans détruire son compte ,il est possible de :

Editer le ficher /etc/passwd et simplement ajouter l’astérisque * devant son mot de passe .

Cela donne pour l’utilisateur toto :

login ¦ password ¦UID ¦GID ¦ Full name ¦ home ¦ shell

toto: *EiJdjgW9kZ1h: 102: 100: toto TATA: /home/toto: /bin/bash

J’ai mis des espaces pour la lisibilité (Il n’y en a pas).

login = nom de l’utilisateur

password = mot de passe (codé) de l’utilisateur

UID = identificateur de l’utilisateur

GID = identificateur du groupe auquel appartient l’utilisateur

Full name = nom complet (réel) de l’utilisateur

home = répertoire personnel de l’utilisateur

shell = shell utilisé par l’utilisateur

Les permissions c’est quois ?

Nous avons vu que la commande ls -l nous affiche le détail des informations sur les fichiers :

-rw-r–r— 1root root 200 jan 5 21:37 test

C’est la première partie de ses informations que nous allons considérer.

ce placer dans essai (votre répertoire d’essais) .

# cd /essai
# touch test
# ls -l test

Dans la première partie nous avons –rw-r–r– .

Décomposons cela en 4 parties distinctes : 1=(-) 2=(rw-) 3=(r–) 4=(r–)

1 = le premier signe :

– indique un fichier ordinaire

d indique un répertoire

b indique un pilote de périphérique

l indique un lien symbolique

2 = Les droits du propriétaire “owner”(utilisateur du compte)

3 = Les droits du groupe “group”auquel appartient l’utilisateur.

4 = Les droits accordés aux autres groupes “other”.(utilisateurs ne faisant pas partie du même groupe).

Les partie 23 et 4 représentent les permissions :

r de lecture

w d’écriture

x d’exécution

– aucune permission

Dans le cas ou l’on voudrait que tous les utilisateurs puissent accéder à ce fichier les permissions rwxrwxrwx ne serait pas suffisant.

Il faut également que le répertoire qui contient ce fichier est les mêmes permissions,et ce jusqu’au niveau de la racine : Par exemple (mauvais) si ce fichier est dans /usr/local/production/vente/fichier ,il faudra que tous les répertoires menant à ../vente/fichier aient les mêmes droits que ce fichier .

Donc par sécurité et pour une question de facilité ,l’administrateur doit placer les fichiers(rwxrwxr–) accessibles aux autres utilisateurs , en dehors d’ un chemin contenant les fichiers système : il est plus facile de changer les permissions d’un répertoire que les permissions de tous les fichiers qu’il contient .

Seul l’administrateur ,utilisateur compte root, peut en modifier les permissions ,car il est par définition le propriétaire du compte root.

Changer les permissions

La commande chmod permet d’effectuer la modification des droits d’accès aux fichiers.

Seul le propriétaire peut changer les permissions.

La syntaxe de chmod est :

chmod [ a , u , g ,o ] [ + , – ] [ r , w , x ] [ non.de.fichier ]

argument valeur permissions

l’argument donne les droits : a = à tous les utilisateurs “all”

u au propriétaire “owner”

g aux utilisateurs du groupe “group”

o aux autres groupes “other”

la valeur + ajoute et la valeur – enlève

les permissions autorisent

r la lecture

w l’écriture

x l’exécution

Par exemple, pour modifier le fichier essai/test il faudra utiliser la commande :

# chmod u+rx test = Exécutable et lisible par le propriétaire.

# chmod og+x test = Exécutable par le groupe et « autre »

# chmod og+x essai = Exécutable par le groupe et autre pour le dossier essai

Maintenant si je veux enlever le droit d’exécution aux autres groupes :

# chmod o-x test

Il est possible,et plus pratique ,d’utiliser ‘=’ à la place de ‘ + , – ‘ :

# chmod u=rwx,g=rx,o=r /essai/test

Vérifiez avec

# ls -l /essai

Un autre mode plus rapide permet de chiffrer la commande chmod :

#chmod 755 /essai/test

Ce qui correspond à rw-r-xr-x , 7 donnant tous les droits et 5 les droits de lectureet d’execution .

Voici un tableau pour son utilisation :

Option

Droits

7

rwx

6

rw-

5

r-x

4

r–

3

-wx

2

-w-

1

–x

0

Par example:

#chmod owner group other

777 rwx rwx rwx

755 rwx r-x r-x

644 rw- r– r–

640 rw- r– —

700 rwx — —

C’est à vous de donner les droits d’accès à vos fichiers, mais regardez le chapitre suivant qui offre une possibilité supplémentaire, en créant un lien sur un fichier pointant dans un répertoire n’ayant pas les mêmes droits …? Si malgré les permissions que vous avez accordé à un utilisateur, celui-ci n’a d’autre droit que la lecture :

Vérifiez que :

  • Cet utilisateur fait bien partie du groupe.

  • Les fichiers sont placés dans un répertoire ayant les mêmes droits.

les utilisateurs du groupe ont les droits d’accès :

Dans notre exemple nous avons :

-rwxrwxr– 1 root root ….etc…

Cela signifie qu’il s’agit d’un fichier ordinaire,que le propriétaire et les utilisateurs du groupe peuvent lire écrire et exécuter ce fichier , je passe le chiffre 1 (voir plus bas) et que l’utilisateur (propriétaire) et le groupe (Utilisateurs) sont root . La commande chown va permettre de modifier cela en faisant par exemple :

# chown root.users /essai/test

0.00 avg. rating (0% score) - 0 votes