Une première approche de l'utilitaire sudo

L'outil sudo (Substitute User DO) permet à un utilisateur d'exécuter une commande avec les droits d'un autre utilisateur. Il est généralement employé pour exécuter des commandes nécessitant des droits administrateur (root).

Installation

yum install sudo

Utilisation - sudo

Les exemples étant plus parlant que de longues explications :

# redemarrer Apache avec les droits 'root'
sudo systemctl restart apache2
# creer un fichier en tant qu'utilisateur 'pierre'
sudo -u pierre touch /home/pierre/test.txt
# lire les logs en tant que groupe 'admin'
sudo -g admin more /var/log/syslog

Configuration - visudo

Pour éditer la configuration de l'utilitaire sudo il est préférable d'utiliser la commande visudo. Elle permet de modifier le fichier de configuration /etc/sudoers avec l'éditeur par défaut tout en s'assurant de la bonne syntaxe au moment de la sauvegarde (si il y a une erreur de syntaxe, les modifications ne seront pas prises en compte) :

visudo

Voici la syntaxe de configuration :

<users> <hosts> = (<users>) [options:]<comands>
<%groups> <hosts> = (<users>) [options:]<comands>
  • users : utilisateurs auquels le droit sudo s'appliquera (ex : mikael)
  • %groups : groupes d'utilisateurs auquels le droit sudo s'appliquera (ex : %wheel)
  • hosts : liste des hôtes sur lesquels peuvent être exécutés les commandes (ex : localhost, 192.168.20.3,192.168.20.5, ALL)
  • (users) : utilisateurs dont on prend les droits (si non renseigné, c'est l'utilisateur root)
  • comands : liste des commandes pouvant être exécutés (ex : /usr/bin/systemctl restart, /usr/bin/systemctl status). Il est aussi possible d'interdire l'utilisation en préfixant la commande par un point d'exclamation ! (ex : !/sbin/mount)
  • options: : liste des options pouvant être appliqués à la commande qui suit (ex : NOPASSWD:)

Exemples de configuration et d'utilisation

  • L'utilisateur pierre peut exécuter la commande systemctl depuis l'hôte local avec les privilèges root :
# configuration  - visudo
pierre  localhost=/usr/bin/systemctl
# utilisation    - sudo
# OK :
sudo systemctl stop nginx.service
[sudo] Mot de passe de pierre :
# NOK : 
sudo reboot
Désolé, l'utilisateur pierre n'est pas autorisé à exécuter « /sbin/reboot » en tant que root sur localhost.
  • l'utilisateur pierre peut exécuter n'importe quel commande depuis l'hôte local, en tant qu'utilisateur paul :
# configuration  - visudo
pierre  localhost=(paul)    ALL
# utilisation    - sudo
sudo -u paul touch /home/paul/test.txt
[sudo] Mot de passe de pierre :
  • l'utilisateur jacques peut exécuter n'importe quel commande depuis l'hôte local, en tant qu'utilisateur paul sans saisir son mot de passe :
# configuration  - visudo
jacques localhost=(paul)    NOPASSWD:ALL
# utilisation    - sudo
sudo -u paul mkdir /home/paul/test
  • l'utilisatrice julie peut exécuter n'importe quel commande sauf mkdir, depuis l'hôte local, en tant qu'utilisateur paul :
# configuration  - visudo
julie   localhost=(paul)    ALL,!/usr/bin/mkdir
# utilisation    - sudo
# OK :
sudo -u paul touch /home/paul/test.txt
[sudo] Mot de passe de julie :
# NOK : 
sudo -u paul mkdir /home/paul/test
Désolé, l'utilisateur julie n'est pas autorisé à exécuter « /usr/bin/mkdir » en tant que paul sur localhost.
  • les membres du groupe users peuvent monter et démonter le CDROM (/mnt/cdrom) en tant qu'utilisateur root depuis n'importe quelle machine :
# configuration  - visudo
%users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
  • les membres du groupe wheel peuvent exécuter n'importe quelle commande depuis n'importe quel hôte, en tant que n'importe quel utilisateur et celà sans saisir de mot de passe :
# configuration  - visudo
%wheel  ALL=(ALL)   NOPASSWD:ALL
By @Mikael FLORA in
Tags : #système, #sécurité,