Linux : Maîtriser la gestion des utilisateurs et les permissions

Partager cet article

Temps estimé pour la lecture de cet article : 41 min

Introduction

linux-permissions-example

Vous venez de télécharger un script sur un forum mais vous n’arrivez pas à le lancer ? Et oui c’est tout simplement à cause des systèmes de droits sous linux ! Mais alors comment faire ? Nous allons voir ça en détail dans l’article, bonne lecture !

L’utilitaire sudo

linux-sudo-sandwich

La commande sudo permet à un utilisateur d’acquérir les droits root de manière ponctuelle. C’est-à-dire d’avoir tous les droits, par exemple pour effectuer des tâches d’administration (installation de logiciels, mise à jour…). C’est pour cela que l’utilisateur doit rentrer cette commande avant de faire une mise à jour dans un terminal par exemple, c’est pour lui demander d’être sûr de ce qu’il fait.

Pour utiliser la commande, c’est plutôt simple, il suffit de rajouter sudo devant la commande que vous voulez effectuer, par exemple :

sudo apt-get install chromium-browser

L’invite de commande vous demande alors de saisir votre mot de passe afin de pouvoir exécuter la commande. Ne vous inquiétez pas outre mesure, vous ne voyez pas la saisie que vous effectuez, c’est tout simplement un principe de sécurité !

Remarque : l’avantage d’utiliser la commande sudo c’est qu’elle permet la traçabilité, en effet les messages de sudo sont transmis à syslog qui pourra enregistrer des logs dans un répertoire par défaut sous debian /var/log/auth.log.

La gestion des utilisateurs

Lors de l’installation de votre système vous avez dû créer un utilisateur par défaut mais il est bien sûr possible d’en ajouter d’autres. Regardons ça.

Ajouter un utilisateur

linux-permissions-adduser

L’outil pour ajouter un utilisateur sous un système debian s’appelle adduser, une fois la commande entrée, il vous faut rentrer quelques informations, la première information c’est le mot de passe qu’il vous faut répéter, ensuite les informations sur l’utilisateur que vous n’êtes pas obligé de remplir, il vous suffit de laisser vides.

Quelques informations utiles de connaitre :

  • Le répertoire par défaut d’un utilisateur se situe dans : /home/username
  • Le contenu du répertoire d’un nouvel utilisateur est basé sur le squelette du dossier /etc/skel/, tout ce qui y est présent sera recopié (comme le fichier .bashrc par exemple…)

Modifier le mot de passe d’un utilisateur

linux-permissions-passwd

Si un utilisateur veut modifier son mot de passe, il lui suffit d’utiliser l’utilitaire passwd, dans ce genre :

sudo passwd john

On doit bien sur utiliser la commande sudo pour ce faire, vous imaginez sinon tout le monde pourrait changer le mot de passe de tout le monde, ça serait le bordel :3.

Supprimer un utilisateur

linux-permissions-deluser

Pour supprimer un utilisateur sous un système debian, il suffit d’utiliser le package deluser :

sudo deluser john

Gérer les droits des utilisateurs

Avoir plusieurs utilisateurs c’est bien, mais savoir à qui appartient tel fichier, c’est mieux !

Afficher les droits d’un fichier

La commande ls permet d’afficher les fichiers présents dans un dossier. L’option -l permet également d’afficher les droits des utilisateurs (qu’on détaillera par la suite :p) sur les fichiers.

Lud00:~/Desktop > ls -l
total 4
-rw-r--r-- 1 Lud00 Lud00 2 Jul 20 10:24 files.txt

Regardons dans le détail ce qu’on a d’affiché :

  • La première colonne représente les droits du fichiers par utilisateur, en sachant que le premier caractère peut-être :
    • : fichier classique
    • d : un dossier
    • s : un fichier socket
    • l : un lien vers un fichier (ln)
  • On a également le nombre de liens du fichier, pour ceux que ça intéresse je vous laisse regarder le détail
  • Le propriétaire du fichier
  • Le groupe possédant le fichier
  • La taille du fichier en octet
  • La date de dernière modification du fichier
  • Le nom du fichier

Modifier le propriétaire d’un fichier

Comme on l’a vu, un fichier est associé à un utilisateur, mais que faire si on veut changer le propriétaire de ce dernier, la commande chown est là pour nous aider !

chown john file.txt

On précise d’abord l’utilisateur qui va devenir propriétaire et le fichier à modifier. Si on refait un ls -l, voilà ce qu’on obtient :

Lud00:~/Desktop > ls -l
total 4
-rw-r--r-- 1 john Lud00 2 Jul 20 10:24 files.txt

Les permissions des fichiers

Les permissions, quesaco ? je suis propriétaire, je fais ce que je veux ! Et bien non, pour plus de sécurité, les systèmes Linux permettent notamment de bloquer l’exécution des fichiers par défaut.

Les différents types de permissions

Nous allons voir les différents droits que l’on peut donner à un fichier :

  • Le droit de lecture (read : r), pour un fichier cela signifie qu’il est consultable (par une application…) et pour un dossier qu’on peut lister son contenu
  • Le droit d’écriture (write : w), on peut modifier le fichier et on peut créer un dossier ou un fichier dans le dossier cible
  • Le droit d’exécuter (execute : x), on autorise l’exécution d’un fichier et pour un répertoire on peut se déplacer dedans (par exemple en ligne de commande avec cd

Modification des permissions

Il existe bien sûr une commande afin de pouvoir changer les droits d’accès à un fichier, c’est la commande chmod. Afin d’utiliser la commande, il faut soit être propriétaire du fichier soit avoir les droits d’administration (être en sudo quoi :3). Il existe deux syntaxes différentes pour la commande chmod, on peut le faire alphabétiquement ou numériquement.

On va commencer par la plus simple je trouve, la manière alphabétique :

chmod qui+/-permission nomDuFichier

Qui représente l’un des 4 caractères suivants : u (user, le propriétaire du fichier), g (group, le groupe auquel est lié le fichier), o (other, le reste) et a (all, tout le monde), sachant que par défaut c’est l’option all qui est utilisée.

On utilise les signes + ou -, pour respectivement ajouter ou retirer un droit. Enfin, l’argument permission correspond à l’un des 3 droits de lectures vu au-dessus soient : r, w ou x.

Voyons maintenant, la manière numérique :

chmod 777 nomDuFichier

 

Le mode numérique s’exprime en base 8 ! On a un nombre composé de 3 chiffres, chaque chiffre exprime les droits des utilisateurs , le premier correspond au propriétaire (u), le second aux droits du groupe (g) et le dernier aux autres (o). Regardons maintenant comment cela fonctionne chaque droit à une valeur attribuée, voici ces différentes valeurs :

  • 1: droit de lecture
  • 2: droit d’écriture
  • 4: droit d’exécution
Les différentes permissions sous linux et leur valeur

Les différentes permissions sous linux et leur valeur

Ainsi, par exemple ici on donne le maximum de droits à chaque utilisateur à savoir 1+2+4 soit 7 (oui, je sais plutôt balèze en calcul mental :D).

Enfin si vous précisez l’option -R, les modifications seront affectés sur le dossier cible et les sous-dossiers, par exemple :

sudo chmod 777 -R folder/

Solution à notre problématique

Alors revenons à notre problème, on a téléchargé notre script et au moment de l’exécution kaboum :

bash: ./imgtopdf.sh: Permission denied

Alors, si vous avez bien suivi vous avez dû comprendre le souci ou en tout cas avoir une idée ! On fait un magnifique ls -l :

Lud00:~/Desktop > ls -l
total 4
-rw-r--r-- 1 lud00 lud00 2 Jul 20 10:24 imgtopdf.sh

Et oui, vous avez bien deviné, nous n’avons pas le droit d’exécuter notre script. Qu’a cela ne tienne, on sait maintenant comment corriger cela :

chmod u+x imgtopdf.sh

Ou encore en mode numérique :

chmod 744 imgtopdf.sh

On vérifie, le résultat de notre commande :

Lud00:~/Desktop > ls -l
total 4
-rwxr--r-- 1 lud00 lud00 2 Jul 20 10:26 imgtopdf.sh

On peut enfin lancer notre script.

Petit bonus

Généralement, si vous êtes intéressés par le monde de Linux, vous allez souvent chercher à tester des scripts, on peut donc se faciliter la vie en créant un petit alias à ajouter dans votre fichier .bashrc situé à la racine de votre dossier utilisateur (attention c’est un fichier caché : ctrl+h pour les afficher).

alias cx="chmod +x"

Ensuite pour l’utiliser rien de plus simple :

cx imgtopdf.sh

Pour ceux que ça intéresse, vous pouvez trouver un de mes articles sur comment personnaliser son bashrc pour gagner en efficacité.

Conclusion

Image trouvé sur le blog de coreight et provenant de Tristan Nitot.

Image trouvé sur le blog de coreight et provenant de Tristan Nitot.

Par défaut sous Gnu/Linux, un utilisateur a des privilèges inférieurs par rapport à un compte administrateur, cela permet ainsi d’éviter que votre petit-cousin puisse faire n’importe quoi sur votre système, vu que pour lancer une commande, il faut rentrer le mot de passe de l’administrateur. Sous Windows, comme le compte possède tous les droits d’administration, il lui suffit d’accepter que le logiciel se lance et surprise s’il a téléchargé un virus !

That’s it !

1 comment

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *