sudo: accordez des droits à certains utilisateurs

Written by Sebastien Lambot on . Posted in Articles techniques, Unix / Linux

Sudo est un programme Unix qui permet d’accorder à certains utilisateurs (ou groupes d’utilisateurs) la possibilité de lancer une commande en tant que root, ou comme autre utilisateur et garde une trace des commandes saisies.

Sudo est installé sur la plupart des machines Linux mais sur FreeBSD nous devrons l’installer nous-même grâce aux commandes suivantes (n’oubliez pas d’updater le catalogue des logiciels portés et de localiser sudo avec whereis):

cd /usr/ports/security/sudo
make install clean

Pour utiliser sudo, rien de plus simple, placez « sudo » avant votre commande:

$ sudo macommande

Votre mot de passe sera demandé pour vérifier votre identité et si votre fichier sudoers est bien configuré, la commande sera exécutée avec les droits de l’utilisateur que vous aurez spécifié.

Comment éditer le fichier sudoers ?

En tant que root, vous pouvez lancer visudo (un logoff/logon peut être nécessaire) pour modifier le fichier sudoers contenant les restrictions. Il est recommandé d’utiliser visudo plutôt que d’éditer directement le fichier car il permet de contrôler la syntaxe et les permissions du fichier. Le fichier sudoers se trouve en principe dans /usr/local/etc/ (ou /etc/ sous Linux).

Le fichier sudoers contient des entrées qui doivent respecter la syntaxe suivante:

username hostname= /usr/sbin/command

Le username est le user que nous autorisons à lancer la commande, le hostname spécifie sur quelle machine est-ce qu’il est autorisé à le faire. Vient ensuite le chemin complet de la commande, les alias ne sont pas supportés.

Lorsque sudo lit le fichier sudoers, il le parcourt entièrement et applique les règles dans l’ordre.

Plusieurs variations sont possibles

  • autoriser sur plusieurs hôtes (séparés par des virgules) ou sur tous les hôtes (ALL)
  • autoriser plusieurs users (séparés par des virgules) ou tous les users (ALL)
  • autoriser plusieurs commandes (séparées par des virgules) ou toutes les commandes (ALL)
  • autoriser un groupe de users: %group
  • utiliser le backslash «  » pour mettre une entrée sur plusieurs lignes
    #comment
    user1,%mygroup ALL= /usr/command1,
    /usr/command2
    
  • spécifier le(s) user(s) utilisé(s) pour lancer la commande (par défaut root) avec les parenthèses:
    user1 ALL=(operator,user2) /usr/sbin/mycommand

    Si plusieurs users sont définis, il faut sélectionner le bon lors de l’exécution de la commande sudo:

    $ sudo -u user2 mycommand
  • limiter l’usage des flags en les spécifiant dans l’entrée du sudoers:
    user1 ALL=/usr/command -i
  • utilisation de patterns dans le sudoers:
    • wildcard *: tous les fichiers exécutables du directory et ceux contenus dans ses subdirectories ( /tmp/* )
    • slash /: uniquement les fichiers exécutables du directory ( /tmp/ )
    • exclamation mark !: ne pas exécuter ce fichier ou groupe de fichiers ou ce fichier avec un paramètre spécifique ( /usr/command, !/usr/command -i )
    • regular expression []: pour limiter aux machines host1, host2, host3, et host4, utilisez host[1-4]
    • une combinaison de ceux-ci
  • utilisation d’aliases (composés uniquement de [A-Z],[0-9],_)
    • User_Alias MYALIAS = user1, user2
    • Runas_Alias MYALIAS = user1, user2
    • Host_Alias MYALIAS = host[1-4]
    • Cmnd_Alias MYALIAS = /usr/command1, !/usr/command1 -i, !/usr/sbin/forbidden/*
  • enlever la vérification par mot de passe en utilisant le tag NOPASSWD: (par défaut: PASSWD: )
    user1 ALL= NOPASSWD:/usr/sbin/command
  • empêcher le programme d’utiliser des sous-commandes avec le tag NOEXEC: (par défaut EXEC: ). Il est par exemple possible de lancer une commande au sein de l’éditeur vi avec la commande :!mycommand ou l’option -exec.
    enlever la vérification par mot de passe en utilisant le tag NOPASSWD: :

    user1 ALL= NOEXEC:/usr/sbin/vi

Les options de sudo les plus utilisées

  • -u : spécifier l’utilisateur qui exécutera la commande
  • -l : permet de lister les commandes autorisées (combiné avec -U pour afficher les autorisatiosn d’un autre user)
  • -b : lancer en background
  • -g : spécifier le groupe à utiliser
  • -h : help
  • -V : version

Tags:

Trackback from your site.

Leave a comment

You must be logged in to post a comment.