logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Ceci est une ancienne révision du document !


sudo

Important

ATTENTION !

Il est déconseillé d'utiliser sudo inconsidérément sans en remanier la configuration par défaut.

Exemple :

  • Si on fait un sudo dans un terminal et qu'on en ouvre un autre, le mot de passe est bien demandé.
  • Si on fait un sudo dans un terminal où on donne le mot de passe,
    1. qu'on le ferme
    2. qu'on en ouvre un de nouveau… le mot de passe n'est plus demandé !

Pour éviter cet inconvénient, porte ouverte à l'infection par des virus et des vers, veillez à configurer votre sudo selon le paragraphe : Configuration de sécurité élémentaire

De toute façon mieux vaut privilégier la commande su chaque fois que cela est possible !

Introduction

Voilà un logiciel permettant de lancer des commandes root en maintenant un terminal user ouvert.

Utilisation de sudo

Sudo lui-même prend comme argument une commande et ses paramètres, pas une expression du shell.

Quand on utilise sudo, il est important de bien comprendre comment fonctionnent le shell et ses opérateurs de redirection et de condition.
Pour le shell, la commande passée à sudo et elle seule, (pas les opérateurs donc) est vue comme un argument du programme sudo.

Pour exécuter une expression du shell avec sudo, il faut spécifier un shell comme commande et l'expression comme paramètre de celle-ci.

Exemples :

sudo commande > fichier

est interprété en distinguant les arguments (ici la commande de son application) comme :

[sudo lacommande] > [lefichier]

et NON comme deux ensembles composés de :

[sudo] [lacommande > lefichier]

c'est donc le shell de l'utilisateur courant qui écrit dans fichier, et non pas le shell de root.

Dans la même veine :

sudo commande1 && commande2

est interprété comme :

[sudo lacommande1] && [lacommande2]

sans appliquer le sudo sur lacommande2 donc.

Dans les exemples ci-dessus les crochets servent à visualiser la priorité d'exécution.
Les expressions résultantes appliquées en copie/colle ne seront donc pas valides. LOL

Remerciements et liens :

Merci à Walker29 et raleur pour avoir initié ces précisions sur le forum là :

Qu'une pluie de choco df leur soit à tous deux prescrit…
Quand ce sera possible bien sûr !
;-)

Installation

apt-get update && apt-get install sudo

Si vous avez plus simple, faite-le savoir ! ;-)

Configuration de sudo - visudo

Passer obligatoirement par la commande visudo pour configurer sudo. L'utilitaire visudo vérifie la syntaxe du fichier /etc/sudoers avant d'enregistrer celui-ci.

Taper :

visudo

Configuration de sécurité élémentaire

Droits d'exécution à une seule commande

Sous la ligne :

 Defaults env_reset

Ajoutez :

Defaults        timestamp_timeout=0

En mettant le timeout à 0, les droits root ne seront plus utilisables dès que vous aurez validé l'exécution de votre commande.

Droits d'exécution à un seul user

Pour réserver l'utilisation de sudo à mon_nom seulement, écrivez :

 Defaults:mon_nom tty_tickets

Où mon_nom est le nom que vous utilisez pour vous connecter à votre session.

Ainsi, pour un seul utilisateur, il n'est pas nécessaire d'intégrer ce dernier dans le groupe sudo

Merci à Asmodée pour cette indication précise ! :-D

DÉCONSEILLÉ :
Si vous voulez ouvrir les droits de sudo pour plusieurs utilisateurs sans les énumérer ici, écrivez :
Defaults:All tty_tickets

sudo UN SEUL utilisateur AVEC mot de passwd demandé

C'est la configuration préconisée pour tous les utilisateurs de sudo débutant.

Sous la ligne :

 root    ALL=(ALL:ALL) ALL

écrivez :

 badaboum ALL=(ALL:ALL) ALL

(badaboum illustrant ici votre nom d'utilisateur mon_nom, par exemple…)
Ainsi, badaboum sera le seul utilisateur autorisé à se servir de la commande sudo dans un terminal.

Test de la configuration modifiée

Tapez une commande root comme celle-ci par exemple :

sudo fdisk -l

Le mot de passe de l'user sera alors demandé et non plus celui de root :

 [sudo] password for badaboum: <//Taper ici le passwd de cet user//>

Et la commande s'exécute !

Reboot

Autoriser user à exécuter toutes les commandes via sudo mais que sudo reboot ne demande pas le mot de passe (faire 2 lignes) :

nom_user ALL=(ALL) ALL nom_user ALL=(ALL) NOPASSWD: /usr/sbin/reboot

UN SEUL utilisateur SANS mot de passwd demandé

Ceci est une utilisation réservée :
  • aux machines non connectées sur la toile ou dont le serveur proxy intermédiaire est configuré soigneusement par un EXPERT.
  • aux EXPERTS, sachant protéger leurs machines par des configurations personnelles en amont.
  • aux EXPERTS couvrant des tâches d'Administration exigeant l'usage du super-utilisateur et non de root. Un usage particulier de KVM - Fork de Qemu par exemple…

voir : iptable et autres sécurités évoluées.

Sous la ligne root ALL=(ALL) ALL, écrivez seulement :

 badaboum ALL=NOPASSWD: ALL

(badaboum étant votre nom d'utilisateur mon_nom, par exemple…)

Si vous utilisez la branche testing, soit Wheezy, ou bien Sid, veuillez tenir compte de la modification mentionné plus haut

À partir de maintenant, vous pouvez quitter le shell root et faire le reste sous votre nom avec sudo sans plus taper de mot de passe.

Exemple

Tapez une commande root mais sous votre user ainsi :

sudo fdisk -l
Et la commande s'exécute sans demande de passwd !

Configuration pour plusieurs utilisateurs

PLUSIEURS utilisateur AVEC mot de passwd demandé

Sous la ligne :

 Defaults env_reset

Décommentez (ou rédigez) cette commande :

%sudo	ALL=(ALL:ALL) ALL

Il vous sera alors possible d'ajouter chaque utilisateur que vous voulez au groupe sudo pour leur faire partager les droits sudo.

Mettons que vous ayez un pote… un vrai hein… nommé ploumploum par exemple. Pour l'ajouter à la commande sudo, il suffira de taper :

adduser ploumploum sudo

Et il y sera pareillement maintenant !

On met la petite soeurette tagada ?
Alors on le fait ainsi :

adduser tagada sudo

Je vous laisse ajouter l'user tsointsoin si vous le voulez bien… ;-)

Ce tuto est illustré sous la célèbre musique du captnfab :

 ploumploum badaboum tagada tsointsoin...

Tchibâââ ! :-D

sudo PLUSIEURS utilisateurs SANS mot de passwd demandé

Bien que possible, il n'est absolument pas recommandé d'offrir les droits root automatiquement et sans mot de passwd à tous les utilisateurs.

Utilisation de SUDO

Il est ainsi possible d'accomplir :

  • Moultes configurations de votre système sans maintenir un terminal root permanent.
  • De préserver ainsi une certaine sécurité en n'opérant pas de commande accidentelle sous root, la demande de mot de passe servant de rattrape-couillonnade…

Il est à noter que si toutes les opérations d'administrations peuvent se faire sous sudo, le passage par su option trait (-) est plus confortable pour des opérations multiples et longues à s'effectuer.

Merci à Y316 pour sa relecture des tutos et la pertinence de ses interrogations postés sur le forum concernant la terminologie de ceux-ci. ;-)

Exemple

On veut donner à deux utilisateurs le droit d'installer/enlever des paquets et de pouvoir éteindre/redémarrer le système.

Le fichier /etc/sudoers ci-dessous n'est pas complet. Seul les éléments illustrant cet exemple ont été mis en évidence.

Pour ce faire, on éditera le fichier /etc/sudoers ainsi :

visudo
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults        env_reset

# Définition d'un Alias pour deux utilisateurs
User_Alias      MESADMINS = jojo,zozo

# Définition de deux Alias de commandes
Cmnd_Alias      ETEINDRE = /sbin/shutdown, /sbin/reboot, /sbin/halt
Cmnd_Alias      PAQUETS = /usr/bin/dpkg, /usr/bin/apt-get, /usr/bin/aptitude

# Les utilisateurs faisant partie de l'Alias MESADMINS peuvent installer/enlever des paquets et
# redémarrer/éteindre le système.
MESADMINS ALL = ETEINDRE, PAQUETS

tâche cron et sudo

utiliser sudo dans une tâche cron, par nature non interactive, est une aberration. Si la tâche doit s'exécuter avec les privilèges root, il faut la créer avec root. Merci raleur :-)

Lien et remerciements

Depuis le tuto de captnfab, là:

http://wiki.chezlefab.net/tuto_nix/installation_squeeze#rompre_la_rootine

nôtre 'pitaine au long cours préféré sur DF !

Vous l'auriez trouvé vous : “Rompre la rootine” ?

- Tant de poësie émeut…

Référence

1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
doc/systeme/sudo.1563176818.txt.gz · Dernière modification: 15/07/2019 09:46 par smolski

Pied de page des forums

Propulsé par FluxBB