Comptes et permissions

Les comptes utilisateurs

Les comptes utilisateurs sont définis dans le fichier /etc/passwd :

/etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
adriano:x:1000:1000:Adriano:/home/adriano:/bin/bash

USERNAME:x:UID:GID:Nom complet:HOME:SHELL

Quant au mot de passe, il est enregistré sous forme de hash dans le fichier /etc/shadow.

Pour ajouter un utilisateur, il y a deux commandes disponibles :

  • adduser

  • useradd

adduser
$ sudo adduser tintin
useradd
$ sudo useradd -m -s /bin/bash -u 1100 tintin
$ echo "tintin:milouMILOU" | sudo chpasswd

Pour ajouter un utiliser à un groupe existant :

$ sudo usermod -a -G audio tintin  (1)
1 Ajoute l’utilisateur tintin au groupe audio

Les permissions

Tout fichier sur un système :POSIX: a un utilisateur propriétaire et un groupe :

$ ls -l | grep Images
drwxr-xr-x   22 adriano adriano 40960  4 sep 17:24

Les droits sur un fichier sont composés de 3 actions :

  • r : la lecture du fichier

  • w : l’écriture à l’intérieur du fichier ou sa suppression

  • x : l’exécution sur un fichier ou l’ouverture sur un dossier

Ces trois lettres sont aussi appelées "flags" (drapeaux).
Ces flags peuvent être définis pour le propriétaire, le groupe et les autres utilisateurs.

Voici un exemple, ces permissions sont appliquées sur un fichier

drwxr-xr-x   22 adriano adriano 40960  4 sep 17:24 Images       (1)
-rwxr-x---    1 adriano adriano   674  9 mai 16:37 wordlist.py  (2)
1 l’utilisateur adriano a tout les droits sur le dossier Images, les membres du groupe adriano ont le droit de lister le contenu et tout les autres utilisateurs du système ont les mêmes droits.
Cependant, s’il n’ont pas les droits sur le dossier parent, ils ne pourront pas voir le contenu du répertoire Images.
2 l’utilisateur adriano a tout les droits sur le fichier worldlist.py , le groupe n’a accès qu’en lecture et exécution et les autres n’ont aucun droits.

La commande chmod permet de modifier les permissions d’un fichier ou d’un répertoire.

$ mkdir textes

$ ls -l | grep textes
drwxr-xr-x   2 adriano adriano  4096 24 sep 18:03

$ chmod go-rx textes       (1)

$ ls -l | grep textes
drwx------   2 adriano adriano  4096 24 sep 18:03

$ echo "Hello World !" >> textes/hello.txt

$ ls -l textes/
total 4
-rw-r--r--. 1 guttadauriaa guttadauriaa 14 24 sep 19:19 hello.txt

$ chmod u+x textes/hello.txt  (2)

$ ls -l textes/
total 4
-rwxr--r--. 1 guttadauriaa guttadauriaa 14 24 sep 19:19 hello.txt
1 Suppression des droits rx pour le groupe et les autres utilisateurs
2 Ajout de l’exécution pour le propriétaire sur le fichier

On peut aussi attribuer toutes les permissions en une fois avec la forme octale :

$ chmod 640 textes/hello.txt
-rwxr-x---
$ chmod 755 scripts/hello.py
-rwxr-xr-x

Les ACLs

Les Access Control List sont une autre technique d’attribution de permissions qui permettent de s’affranchir des limitations du modèle UNIX.

Comme sur les partitions NTFS de Windows, on peut ajouter des listes de droits s’appliquant à différents utilisateurs et groupes.

getfacl

$ getfacl textes/hello.txt

# file: textes/hello.txt
# owner: adriano
# group: adriano
user::rw-
group::r--
other::---

setfacl

Ajouter des permissions

setfacl -m [type objet]:[nom objet]:[permissions] fichier
  • type d’objet: u (user), g (group), m (mask, pas de nom d’objet à fournir), o (other, comme pour mask)

  • nom d’objet: nom d’utilisateur ou UID, nom de groupe ou GID

  • permissions: r,w,x

  • fichier: le nom de la ressource

$ setfacl -m u:dummy:rw textes/hello.txt

$ getfacl textes/hello.txt
# file: textes/hello.txt
# owner: adriano
# group: adriano
user::rw-
user:tintin:rw-
group::r--
mask::rw-
other::---

Ajouter tintin comme propriétaire par défaut de tous les nouveaux fichiers créé dans le dossier $HOME/textes/ :

setfacl -m "d:u:tintin:rwx" /home/adriano/textes/

Suppression des permissions

setfacl -x u:tintin /home/adriano/textes/hello.txt