Les systèmes de type Unix octroient à l'utilisateur root les pleins pouvoirs, tandis que les autres utilisateurs ont un droit d'accès minimal. [sudo](https://www.sudo.ws/) est un programme permettant d'accorder des droits à certains utilisateurs pour lancer des commandes en tant que _root_ ou un utilisateur différent.
Pour ajouter des autorisations spécifiques, on conseille d'utiliser la commande `visudo` qui édite `/etc/sudoers` et vérifie la syntaxe des autorisations afin d'éviter une erreur :
*`<user>` : utilisateur(s)/groupe(s) concernés par l'autorisation
*`<serveur>` : limite l'application de l'autorisation en fonction du hostname ou adresses IP locales (souvent ALL)
*`(<runuser>:<rungroup>)` : paramètre **facultatif** pour autoriser à une lancer une commande avec un utilisateur (`sudo -u`) et/ou un groupe (`sudo -g`)
*`<commande>` : commande(s) autorisée(s), éventuellement précédées par `NOPASSWD:` si l'on veut pas demander à l'utilisateur d'entrer son mot de passe
Il est important de noter que les autorisations sont lues du haut vers le bas et en cas de contradiction, c'est la dernière qui "a raison".
Dans l'exemple ci-dessous, la commande `evomaintenance.sh` ne demandera **pas de mot de passe** car elle vient **après** l'autorisation globale **avec mot de passe** :
Si l'on veut autoriser l'édition d'un fichier de manière sécurisée, il ne faut pas autoriser les éditeurs comme _vi_, _less_… car ils permettent l'exécution d'autres actions, ce qui peut revenir à donner une autorisation complète. Il faut plutôt utiliser la commande spéciale `sudoedit` (il ne faut pas spécifier son chemin) qui permet uniquement l'édition du fichier indiqué : toutes autres actions (exécution d'un shell, ouverture d'autres fichiers…) se feront avec les droits de l'utilisateur ayant exécuté sudo et non en tant que _root_.
Pour autoriser l'édition des fichiers d'un dossier (mais pas ses sous dossiers) sans se soucier des problèmes de chemins relatifs on peut spécifier cette autorisation comme ça : `sudoedit /etc/foo/*`
En cas d'erreur de syntaxe dans la configuration de Sudo, toutes les autorisations sont désactivées ! Cela peut donc être critique car vous pouvez par exemple perdre l'accès _root_. Afin d'éviter les erreurs de syntaxe, on conseille d'utiliser la commande `visudo` qui vérifie la syntaxe mais attention, cela vérifie uniquement la syntaxe du fichier invoqué : si l'on déporte une partie de la configuration dans un autre fichier `visudo -f /etc/sudoers.d/foo` ne vérifie que ce fichier... notamment si l'on introduit des alias en double (erreur `FOO already defined`), cela casse toute la configuration sans que l'on s'en aperçoive ! On conseille donc d'éviter d'éditer manuellement les fichiers dans `/etc/sudoers.d/` et de réserver ce répertoire uniquement aux configurations automatiques (de façon similaire à `/etc/cron.d/` pour _Cron_).