# Gestion des droits ## ll (alias de ls -alF) Cette commande permet d'obtenir la description complète d'un répertoire, y compris les fichiers et répertoires cachés (qui commencent par un point) : ```bash ll ``` L'affichage résultant se lit ligne par ligne, par exemple : ```bash drwxrwxr-x 3 houdry dps 1024 Apr 28 15:28 ./ drwxr-xr-x 16 houdry dps 512 Apr 18 16:19 ../ -rw-rw-r-- 1 parmentf dilib 2848 Apr 25 11:08 Make.gif -rw-rw-r-- 1 parmentf dilib 2631 Apr 25 11:08 Shell.gif -rw-rw-r-- 1 houdry dps 7817 Apr 25 11:44 redirPipes.html -rw-rw-r-- 1 parmentf dilib 2405 Apr 24 17:36 make.html -rwxrwxr-- 1 houdry dps 235 Apr 24 17:01 exotp.sh* ``` De nombreux éléments d'information sont visibles avec une commande de listing long. Ils sont au nombre de sept, avec dans l'ordre des colonnes : - la liste des droits sur 10 positions (ex.: drwxrwxrwx) - position 1 : le type d'entrée, fichier ou répertoire - positions 2-4 : les droits de l'utilisateur (user) - positions 5-7 : les droits du groupe de l'utilisateur - positions 8-10: les droits des autres groupes | | | | --- | :------------------------------------------- | | d | entrée répertoire | | - | entrée fichier | | r | lecture autorisée | | w | écriture autorisée (et écrasement) | | x | fichier exécutable ou répertoire parcourable | - la taille en blocs de l'entrée (peu utile pour nous) - le nom du propriétaire (user unix) - le groupe du propriétaire attaché à l'entrée - la taille de l'entrée en octets - les date et heure de la création ou de la dernière mise à jour - le nom du répertoire ou du fichier > 💡 l'option `-h` vous donnera la taille de l'entrée dans un format plus... > humain. ## who, whoami, id Un utilisateur unix est identifié par deux choses : 1. son code utilisateur (ex.: parmentf ou houdry) 2. son ou ses groupes (ex.: dps) Différentes commandes permettent de retrouver ces informations. Identification de l'utilisateur courant : ```bash whoami ``` Identification des utilisateurs du système : ```bash who ``` Affichage des code et groupe de l'utilisateur : ```bash id ``` ## chmod Cette commande permet de modifier les droits d'un fichier ou d'un répertoire. Pour pouvoir le faire, il faut en être propriétaire. Il y a deux façons d'utiliser cette commande : avec les groupes `ugoa` et les droits `rwx` ou bien avec un profil octal. Les droits des 3 entités propriétaire (`u`), groupe du propriétaire (`g`) et autres groupes (`o`) doivent être précisés : - `a=rx` pour mettre les droits `r` et `x` seulement, pour tous les groupes (`a`=`ugo`, all) - `ug+w` pour ajouter le droit `w` aux groupes `u` et `g` seulement - `775` est un masque en octal, équivalent de `a=rx,ug+w` - voir tableau qui suit Le tableau suivant résume les cas possibles : | lettres | binaire | octal | | :-----: | :-----: | :---: | | `---` | 000 | 0 | | `--x` | 001 | 1 | | `-w-` | 010 | 2 | | `-wx` | 011 | 3 | | `r--` | 100 | 4 | | `r-x` | 101 | 5 | | `rw-` | 110 | 6 | | `rwx` | 111 | 7 | Par exemple, pour positionner les droits d'un fichier `File` à `rwxr-xr--` : ```bash chmod 754 [File] chmod u=rwx,g=rx,o=r [File] ``` Pour modifier des droits positionnés à `r--r----x` en `rwxrw-r--`, on peut aussi écrire : ```bash chmod ug+w,u+x,a+r,o-x [File] ``` ## chgrp Cette commande permet de changer le groupe attaché à un fichier ou à un répertoire. Par exemple, un fichier `File` est lié au groupe `dps` et il faut le changer pour le lier au groupe `veille` (attention, il faut que le *user* appartienne aux deux groupes) : ```bash chgrp veille [File] ``` ## newgrp Cette commande permet de changer le groupe d'appartenance de l'utilisateur. Cela peut être nécessaire pour accéder à des fichiers dont l'emploi est limité à certains groupes (par ex., `veille` par rapport à `dps`). Pour changer de groupe, il faut appartenir aux deux (l'ancien et le nouveau). À partir du moment où cette commande est lancée, les fichiers et répertoires créés le seront sous ce nouveau groupe. ```bash newgrp veille ```