Formation PUB900 : Développer une application pour iPhone avec SwiftUI, H-2024 Gestion des droits pour usagers non administrateurs

79.1 Fichier sudoers


Le fichier /etc/sudoers permet de donner des privilèges précis à des utilisateurs donnés. De façon plus précise, il permet de déterminer quels usagers peuventt utiliser la commande sudo et qu'est-ce que que chacun peut faire avec cette commande.

Par exemple, un usager non administrateur pourrait se voir attribuer le privilège d'éditer le fichier /etc/hosts sans nécessiter de mot de passe, ce qui est normalement réservé à un administrateur.

Il est possible d'éditer directement le fichier /etc/sudoers pour y ajouter les configurations souhaitées mais on préférera utiliser la commande visudo puisqu'elle se charge d'effectuer certaines vérifications avant d'enregistrer les modifications.

Terminal

sudo visudo

Dans ce fichier, l'ajout d'un privilège est réalisé à l'aide d'une ligne au format :

Syntaxe Linux

usager ALL=(utilisateur-cible) OPTION: commande1, commande2

Voici les détails de cette commande :

  • On nomme d'abord l'usager pour qui le privilège est donné, par exemple toto. Il est possible de nommer un groupe en faisant précéder le nom du groupe par %.
  • Le mot ALL qui suit le nom de l'usager indique que les droits seront conférés sur tous les hôtes. Ceci est surtout utile dans un environnement centralisé.

    On aurait aussi pu indiquer le nom d'un seul hôte, par exemple MacBook-Pro-de-Toto.local.

    Puisque sur un MacBook, il n'y a généralement qu'un seul hôte, l'utilisation de ALL est correcte.

  • Entre parenthèses, on liste au nom de qui cet usager peut effectuer l'action. Si on précise ALL, l'usager pourra exécuter la commande au nom de n'importe quel autre usager, par exemple root, www-data, etc. Il pourra donc faire sudo -u root ..., sudo -u www-data ..., etc. 
  • Optionnellement, on précise ensuite l'option en lien avec le privilège, par exemple NOPASSWD. Les autres options possibles sont moins souvent utilisées : EXEC, NOEXEC, FOLLOW, NOFOLLOW, LOG_INPUT, NOLOG_INPUT, LOG_OUTPUT, NOLOG_OUTPUT, MAIL, NOMAIL, PASSWD, SETENV, NOSETENV.
  • Vient ensuite la commande affectée par cette configuration. Il est possible de spécifier plusieurs commandes, séparées par des virgules.

Par exemple, pour permettre à l'usager toto d'éditer le fichier hosts sans mot de passe (commande /usr/bin/nano /etc/hosts) :   

Fichier /etc/sudoers

toto ALL=(ALL) NOPASSWD: /usr/bin/nano /etc/hosts

Permettre à l'usager eleve de lancer sans mot de passe tous les exécutables situés dans son dossier ~/Applications :

Fichier /etc/sudoers

eleve ALL=(ALL) NOPASSWD: /Users/eleve/Applications/*/Contents/MacOS/*



▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre