sudo: accordez des droits à certains utilisateurs
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.
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: Unix
Trackback from your site.