Introduction
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
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
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
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
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
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.
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 !
Excellent article