
Installer et utiliser sudo sur Debian

sudo est un programme permettant de déléguer temporairement des droits administrateurs (root) à un utilisateur standard. S’il est installé par défaut sur Ubuntu et Manjaro, il faut l’installer et configurer manuellement sur Debian. Et c’est facile en fait.
Il y a deux méthodes à envisager pour augmenter les privilèges d’un utilisateur : soit lui donner carrément une élévation complète (ce que fait Ubuntu et Manjaro), soit donner des droits restreints, typiquement sur une ou plusieurs commandes.
Note : ce billet est dérivé de l’article que j’ai publié sur le wiki de homeserver-diy.net, que je vous conseille d’ailleurs de fouiller pour trouver plusieurs autres articles (dont certains de mon cru). Pas besoin de vous rappeler pourquoi je le réécris ici je pense…
Avant de commencer : l’installation
C’est assez simple, ça se fait ‘en root’, et ça tient à une seule commande :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
root@heberg:/root# apt-get install sudo Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Les NOUVEAUX paquets suivants seront installés : sudo 0 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour. Il est nécessaire de prendre 842 ko dans les archives. Après cette opération, 1 882 ko d'espace disque supplémentaires seront utilisés. Réception de : 1 http://ftp.fr.debian.org/debian/ wheezy/main sudo amd64 1.8.5p2-1+nmu1 [842 kB] 842 ko réceptionnés en 5s (164 ko/s) Sélection du paquet sudo précédemment désélectionné. (Lecture de la base de données... 36661 fichiers et répertoires déjà installés.) Dépaquetage de sudo (à partir de .../sudo_1.8.5p2-1+nmu1_amd64.deb) ... Traitement des actions différées (« triggers ») pour « man-db »... Paramétrage de sudo (1.8.5p2-1+nmu1) ... root@heberg:/root# |
Maintenant, on va voir successivement les différentes façons de faire.
Bruce-tout-puissant
C’est la méthode la plus simple. Il suffit en fait d’ajouter un utilisateur au groupe sudo créé pendant l’installation du programme. Là encore c’est d’une simplicité désarmante :
1 2 3 4 5 |
root@heberg:/root# adduser seboss666 sudo Ajout de l'utilisateur « seboss666 » au groupe « sudo »... Ajout de l'utilisateur seboss666 au groupe sudo Fait. root@heberg:/root# |
Pour savoir si ça a marché, il faut déconnecter et reconnecter le compte ajouté. Pour le tester, j’essaie de faire une mise à jour du système. La commande maj n’est qu’un script qui fait un apt-get update && apt-get upgrade, script placé dans /sbin/maj :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
seboss666@heberg:~$ sudo maj We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for seboss666: Atteint http://packages.dotdeb.org wheezy Release.gpg Atteint http://ftp.fr.debian.org wheezy Release.gpg Réception de : 1 http://mirrors.linsrv.net wheezy Release.gpg [198 B] Atteint http://packages.dotdeb.org wheezy Release Réception de : 2 http://mirrors.linsrv.net wheezy Release [2 260 B] (...) |
Avoir les pleins pouvoirs c’est bien, mais ça n’a d’intérêt que si la machine est la votre. Si vous devez déléguer un droit pour pouvoir par exemple installer une mise à jour critique quand vous n’êtes pas là, il est préférable de procéder autrement.
L’élévation sélective, une autre voie plus personnalisable
C’est un peu plus compliqué à mettre en place, mais potentiellement beaucoup plus puissant. Dans ce cas, pas besoin d’ajouter l’utilisateur au groupe sudo, mais un fichier dans le dossier /etc/sudoers.d/. Prenons l’exemple de l’utilisateur toto (oui je suis très original), le fichier sera /etc/sudoers.d/toto, et il devra contenir à peu de chose près ceci :
1 |
toto ALL=(ALL:ALL) /sbin/maj |
Par contre, pour être pris en compte il faudra changer les droits dessus. une simple commande là encore :
1 |
chmod 0660 /etc/sudoers.d/toto |
Bien entendu, la création du fichier et sa modification devront se faire avec root. A partir de là, vous pouvez tester avec l’utilisateur toto si ça a bien été pris en compte :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
toto@heberg:~$ sudo maj [sudo] password for toto: Atteint http://packages.dotdeb.org wheezy Release.gpg Atteint http://ftp.fr.debian.org wheezy Release.gpg Atteint http://packages.dotdeb.org wheezy Release Réception de : 1 http://ftp.fr.debian.org wheezy-updates Release.gpg [836 B] Atteint http://security.debian.org wheezy/updates Release.gpg Réception de : 2 http://mirrors.linsrv.net wheezy Release.gpg [198 B] (...) 129 ko réceptionnés en 2s (48,3 ko/s) Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait 0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour. toto@heberg:~$ l total 0 -rw-r--r-- 1 toto toto 24 avril 12 12:27 toto.txt toto@heberg:~$ sudo chown seboss666:users toto.txt [sudo] password for toto: Sorry, user toto is not allowed to execute '/bin/chown seb:seb toto.txt' as root on heberg.seboss666.info. toto@heberg:~$ |
Une presque gestion par ACL
Je vous laisse suivre les liens que j’ai proposé à la fin de l’article du wiki pour en savoir plus. Il est possible de créer des groupes de commandes, des groupes d’utilisateurs, des alias pour des commandes complexes, bref, ça permet plein de choses. À vous de vous faire plaisir.
Merci !
Y’a pas de quoi 🙂
[…] Installer Sudo sur Debian […]
Bonjour,
Je suis sur Debian 8 et j’ai un problème, assez dérangant. À l’étape 2,
Bruce-tout-puissant,
j’ai fait adduser seboss666 sudo mais il parrait que l’utilisateur n’existe pas? Que faire…
[…] aller un peu plus loin : Le blog de seboss666 pour l’installation et l’utilisation de la commande […]
Stp quel terminal utilise tu j’aime la coloration syntax
Je n’ai pas très bien compris la question. En terminal j’utilise Guake au quotidien, et Terminator quand j’ai du plus lourd à travailler.
La coloration syntaxique, sur le site, ne vient cependant pas du terminal, mais d’un plugin pour WordPress, le moteur du site, qui s’appelle Crayon Syntax Highlighter : https://wordpress.org/plugins/crayon-syntax-highlighter/
Pour la coloration dans le terminal, ça passe principalement par différents réglages au niveau de Bash et de ses différents utilitaires (ls, grep). Les possibilités sont assez nombreuses, j’aurai bien du mal à en faire une liste ici.