Gérer les droits sous Unix

Pour ceux qui utilisent régulièrement Linux ou tout système équivalent comme celui d’un NAS Synology, il peut être nécessaire de devoir gérer les droits et les utilisateurs en lien avec les fichiers et les répertoires présents sur votre machine. Voici un tour d’horizon du sujet…

Utilisation

On va retrouver 3 cas d’utilisation :

  • Pour gérer les types de droits liés à vos fichiers/répertoires
  • Pour gérer les utilisateurs et les groupes liés à vos fichiers/répertoires
  • Pour gérer le masque de création de fichiers

Et un cas particulier :

  • Le super-utilisateur qui pourra s’affranchir de toutes les règles précédentes

chmod : gestion des types de droits

chien&

chmod signifie « change mode » : il permet de changer les permissions d’un fichier ou d’un répertoire.

Si vous savez compter sur tous vos doigts de la main, cela devrait être jouable puisque 10 symboles sont à connaitre :

 d   rwx   r-x   r-x

(1) (234) (567) (8910)

Et voici ce que cela peut donner lorsqu’on liste le contenu d’un répertoire avec « ls -l » :

Capture d_écran 2017-06-30 à 21.18.22

(1) Le 1er symbole indique le type de fichier :

  • – : fichier
  • d : répertoire
  • l : lien

(234) Les symboles 2 à 4 indiquent les droits du propriétaire sur le fichier/répertoire (utilisateur « root » dans l’exemple) :

  • « user » (u) : propriétaire
    • « r » (4 / read) : droit de lecture pour le propriétaire (si « -«  alors aucun droit en lecture)
    • « w » (2 / write) : droit d’écriture pour le propriétaire (si « -«  alors aucun droit en écriture)
    • « x » (1 / execute) : droit d’exécution pour le propriétaire (si « -«  alors aucun droit d’exécution)

(567) Les symboles 5 à 7 indiquent les droits du groupe (groupe « root » dans l’exemple) :

  • « group » (g) : groupe
    • « r » (4 / read) : droit de lecture pour le groupe (si « -«  alors aucun droit en lecture)
    • « w » (2 / write) : droit d’écriture pour le groupe (si « -«  alors aucun droit en écriture)
    • « x » (1 / execute) : droit d’exécution pour le groupe (si « -«  alors aucun droit d’exécution)

(8910) Les symboles 8 à 10 indiquent les droits du reste du monde  :

  • « other » (o) : reste des utilisateurs
    • « r » (4 / read) : droit de lecture pour le reste des utilisateurs (si « -«  alors aucun droit en lecture)
    • « w » (2 / write) : droit d’écriture pour le reste des utilisateurs (si « -«  alors aucun droit en écriture)
    • « x » (1 / execute) : droit d’exécution pour le reste des utilisateurs  (si « -«  alors aucun droit d’exécution)

Et voici quelques exemples :

$ chmod u+r file.txt

Ajoute (+) les droits de lecture (r) au propriétaire (u) sur le fichier

$ chmod u-r file.txt

Enlève (-) les droits de lecture (r) au propriétaire (u) sur le fichier

$ chmod 700 file.txt

Donne tous les droits (7) à l’utilisateur et aucun droit au groupe (0) et au reste des utilisateurs (0). Ici le calcul se fait de cette manière : 7 correspond à 4(r)+2(w)+1(x) alors que 0 indique aucun droit.

$ chmod o-rwx file.txt

Enlève (-) les droits de lecture (r) d’écriture (w) et d’exécution (x) au reste des utilisateurs (o)

$ chmod a+r file.txt

Ajoute (+) le droit de lecture (r) à tout le monde (a). Tout le monde signifie : propriétaire (u) + groupe (g) + reste des utilisateurs (o).

$ chmod go+r file.txt

Ajoute (+) le droit de lecture (r) au groupe (g) et au reste des utilisateurs (o).

Vous maitrisez maintenant chmod, passons à la suite.

chown / chgrp : gestion des utilisateurs / groupes

chien2

chown signifie « change owner » : il permet de changer le propriétaire d’un fichier/d’un répertoire, voire le propriétaire ET le groupe d’un fichier/d’un répertoire.

Voici quelques exemples :

$ chown newuser file.txt

Change le propriétaire actuel du fichier « file.txt » par l’utilisateur « newuser »

$ chown -R newuser .

Change récursivement le propriétaire actuel de tous les éléments du répertoire courant par l’utilisateur « newuser »

$ chown -R newuser:newgroup .

Change récursivement le propriétaire et le groupe actuels de tous les éléments du répertoire courant par l’utilisateur « newuser » appartenant au groupe « newgroup »

A noter : dans certains cas, il sera nécessaire de préfixer la commande chown par « sudo » si jamais l’utilisateur actuel n’a pas les droits suffisants pour effectuer cette opération. Nous allons voir cette commande par la suite.

 

chgrp signifie « change group » : il permet de changer le groupe d’un fichier ou d’un répertoire.

Voici des exemples

$ chgrp newgroup file.txt

Change le groupe actuel du fichier « file.txt » par le groupe « newgroup »

$ chgrp -R newgroup .

Change récursivement le groupe de tous les éléments contenu dans le répertoire courant par le groupe « newgroup »

 

umask : gestion du masque par défaut

Le masque de fichier définit les droits à appliquer par défaut lors de la création de nouveaux fichiers.

Le masque par défaut est le suivant :

$ umask 022

Il s’agit de la logique inverse de celle vu précédemment. C’est à dire que toute valeur va annuler le droit correspondant. Ainsi 0 indique tous les droits (aucun changement) alors que 2 signifie la suppression du droit correspondant (2=write), c’est à dire celui d’écriture.

Dans l’exemple précédent, tout fichier créé appartient complètement à son propriétaire (0 : read, write & execute) alors qu’il est seulement lisible et exécutable par la groupe (2 : pas de write) et aussi uniquement lisible et exécutable par le reste des utilisateurs (2: pas de write).

Voici toutes les correspondances suivant les valeurs :

  • « user » (u) : propriétaire
    • « r » (4) : enlève les droits de lecture
    • « w » (2) : enlève les droits d’écriture
    • « x » (1) : enlève les droits d’exécution
  • « group » (g) : groupe
    • « r » (4) : enlève les droits de lecture
    • « w » (2) : enlève les droits d’écriture
    • « x » (1) : enlève les droits d’exécution
  • « other » (o) : reste des utilisateurs
    • « r » (4) : enlève les droits de lecture
    • « w » (2) : enlève les droits d’écriture
    • « x » (1) : enlève les droits d’exécution

Comme dans la logique précédente les valeurs sont cumulatives. Ainsi la valeur 7  (4(r)+2(w)+1(x))  correspondra à enlever tous les droits (soit au propriétaire, soit au groupe, soit au reste des utilisateurs).

 

su : super utilisateur ?

manipulate

Dans certains cas, les règles précédentes ont besoin d’être ignorées et il vous faudra pour cela être en mode « super utilisateur ». Attention, le commande « su » ne correspond pas tout à fait au mode »super utilisateur » puisque la signification exacte est plutôt « substitute user ».

Ainsi la commande suivante :

$ su user

… permet de passer de utilisateur courant vers un nouvel utilisateur « user » connu du système. Le mot de passe correspondant sera bien sûr demandé.

La commande suivante :

$ su root

… ne permet pas de faire grand chose puisque le compte root (super utilisateur) est bloqué par défaut. Pour des raisons de sécurité la commande « sudo » est conseillé pour exécuter une commande en tant que super utilisateur.

Notez malgré tout que vous pouvez ouvrir un terminal en mode « root » via cette commande (non conseillé) :

$ sudo -i

Toutes les commandes entrées suite à cette commande seront alors lancées avec les droits du super utilisateur.

Passons maintenant à la commande « sudo », celle qui est conseillée !

 

sudo : la bonne pratique

sudo signifie « substitute user do » : cette commande permet de lancer n’importe quelle commande où des droits de super utilisateur sont nécessaires.

On peut citer notamment des changements d’utilisateurs ou de groupes sur les fichiers (comme vu avec chown/chgrp) ou alors l’installation de nouveaux paquets  sur votre systèmes.

Voici quelques exemples :

$ sudo apt-get install vim

Permet d’installer le paquet « vim » sur votre système Ubuntu.

$ sudo rm file.txt

Permet de supprimer un fichier pour lequel l’utilisateur courant n’a pas les droits d’écriture.

$ sudo make install

Permet l’installation d’un programme suite à sa compilation. En général cela nécessite les droits super utilisateur.

Beaucoup d’autres cas pratiques sont possibles avec sudo, à utiliser avec modération bien sûr 🙂

 

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s