
Vendredi, 01 décembre 2017
Les droits utilisateurs Unix
D’aucuns déplorent la simplicité des droits Unix comparés aux 11 (ou 17) ACLs de NTFS. Pourtant il y a déjà pas mal d’occasions de s’amuser… et de se tirer une balle dans le pied.
La base
Les droits Unix de base sont lecture, écriture, exécution. Ces droits peuvent s’appliquer à trois catégories d’utilisateurs: le propriétaire du fichier, le groupe, enfin tous les autres. Ces différents droits sont encodés sous la forme de 3 valeurs octales, une 4e valeur fournissant les “bits spéciaux”. Ainsi, l’ensemble des droits d’un fichier est commodément stocké dans 12 bits, chaque bit indiquant un des droits. On peut donc appliquer ou lire les droits soit en utilisant leurs noms (les lettres r,w,x,s et t):
$ chmod rwxrxrx fichier
Soit en utilisant directement les valeurs en octal correspondantes aux différentes positions des différents bits:
$ chmod 644 fichier
Exemples
Exécutons les commandes suivantes:
mkdir testdir ls -ld testdir
Nous obtenons ceci:
drwxr-xr-x 2 storiq users 4096 déc. 1 16:07 testdir/
Ajoutons une explication détaillée:
# droits nombre d'éléments propriétaire groupe taille date de modification nom drwxr-xr-x 2 storiq users 4096 déc. 1 16:07 testdir/
Aujourd’hui nous nous intéressons aux droits, à savoir la séquence “drwxr-xr-x” Le “d” au début indique qu’il s’agit d’un dossier (et non d’un fichier ordinaire). Les trois lettres suivantes rwx indiquent les droits du propriétaire, à savoir r pour lecture, w pour écriture, et x pour exécution. Les 3 signes suivants r-x indiquent que les membres du groupe users ont le droit de lecture et d’exécution, mais pas d’écriture. Les trois derniers r-x indiquent les droits pour le reste du monde (hors du propriétaire, des membres du groupe “users”, et bien sûr de l’administrateur “root” qui lui de toute façon fait ce qu’il veut).
Les dossiers sont un peu spéciaux, en ceci qu’ils doivent être porteurs de l’autorisation d’exécution pour pouvoir en lister le contenu. ce qui peut déjà donner de belles occasions de se tirer une balle dans le pied:
$ touch super hyper mega $ ls -l total 0 -rw-r--r-- 1 storiq users 0 déc. 1 16:20 hyper -rw-r--r-- 1 storiq users 0 déc. 1 16:20 mega -rw-r--r-- 1 storiq users 0 déc. 1 16:20 super $ chmod -x . $ ls -l /bin/ls: impossible d'ouvrir le répertoire '.': Permission non accordée
Ou encore:
$ mkdir testdir $ chmod 666 testdir # tout le monde peut donc lire et écrire $ cd testdir bash: cd: testdir: Permission non accordée
Donc prudence lorsqu’on fait des choses comme chmod -R 666 chemin/… Ce n’est probablement pas ce que vous vouliez faire.
Concernant les fichiers ordinaires (fichiers, programmes…) l’utilisation de chmod est un peu moins risquée, encore que…
# chmod -x /usr/bin/chmod # chmod bash: /usr/bin/chmod: Permission non accordée
Les bits setuid et setgid
‘setuid’ signifie “set user id”, et ‘setgid’ “set group id”.
Le “sticky bit”
Se sortir d’une situation difficile
Si par malheur vous avez rendu non exécutable un programme, par exemple…. ‘chmod’:
$ /lib64/ld-linux-x86-64.so. /usr/bin/chmod /usr/bin/chmod: missing operand
Si vous avez ajouté un utilisateur à un groupe mais que vous ne souhaitez pas relancer la session, utilisez ‘newgrp’ pour qu’il puisse accéder aux fichiers dont il a besoin.
posté à: 18:34 permalink