Quelle est la syntaxe appropriée pour ajouter un utilisateur?

50

Selon les commentaires dans /etc/sudoers(Fedora 13):

## Syntax:
##
##    user  MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.

Mes deux questions liées:

  1. Qu'est-ce que cela ALL=(ALL) ALLsignifie dans la ligne suivante:

    root  ALL=(ALL)   ALL
    
  2. J'ai testé ces deux lignes mais je n'arrive pas à comprendre en quoi elles sont fonctionnelles:

    superadm    ALL=(ALL)    ALL
    superadm    ALL=ALL
    

J'ai lu le manuel, mais la syntaxe est difficile à suivre. J'ai déduit que la (ALL) ALLpartie correspond aux spécifications de commande et de balise, mais je n'arrive toujours pas à comprendre.

Belmin Fernandez
la source

Réponses:

91

Note: je réponds 1. , puisque Ignacio a déjà répondu 2 ..

Dans l' sudoentrée suivante :

superadm  ALL=(ALL)   ALL

il y a quatre champs:

  • Le premier spécifie un utilisateur qui se verra accorder des privilèges pour certaines commandes.
  • Le second est rarement utilisé. C'est une liste de noms d'hôte sur lesquels cette entrée sudo sera effective. Dans les configurations standard, seul un hôte est pertinent (localhost). Ce champ est donc généralement laissé tel quel ALL.
  • Le quatrième champ est la liste des commandes superadmpouvant être exécutées avec des privilèges élevés. ALLsignifie toutes les commandes. Sinon, utilisez une liste de commandes séparées par des virgules.
  • Le troisième champ (celui (…)qui est facultatif) spécifie les utilisateurs (et les groupes) sur lesquels l' superadmutilisateur pourra exécuter les commandes suivantes. ALLsignifie qu'ils peuvent choisir n'importe quoi (sans restriction). Si ce champ est omis, cela signifie la même chose que (root).

Exemple:

alan   ALL = (root, bin : operator, system) /bin/ls, /bin/kill

Ici, alanest autorisé à exécuter les deux commandes /bin/lset en /bin/killtant que root(ou bin), éventuellement avec des privilèges supplémentaires operatorou des systemgroupes.

Vous alanpouvez donc choisir de vous lancer en lstant binqu’utilisateur et avec operatorles privilèges de groupe suivants:

sudo -u bin -g operator /bin/ls /whatever/directory

Si -uest omis, c'est pareil que -u root. Si -gest omis, aucun privilège de groupe supplémentaire n'est accordé.

Stéphane Gimenez
la source
1
Eh bien, c'est probablement la meilleure réponse à ce jour ...
David Betz
1
J'ai remarqué qu'un \ncaractère de nouvelle ligne est obligatoire à la fin de l'entrée dans sudoers ou /etc/sudoers.d/votre_nom_fichier
ramonrails le
Vous pouvez également utiliser des caractères génériques dans les noms d'hôte, les noms de chemins et les arguments de ligne de commande. Comme /bin/cat /var/log/messages.?ou /bin/ls /var/log/*plus d'infos ici
Alex
9

Dans la sudoers(5)page de manuel, section DESCRIPTION , sous- section Runas_Spec :

La première liste Runas_List indique les utilisateurs pour lesquels la commande peut être exécutée avec sudol' -uoption de via .

...

Si aucune Runas_Spec n'est spécifiée, la commande peut être exécutée sous rootet aucun groupe ne peut être spécifié.

Donc, il n'y a pas de différence fonctionnelle lorsque vous essayez d'exécuter des commandes en tant que root, c'est-à-dire lorsque vous n'utilisez pas -uavec sudo. La différence est importante lorsque vous essayez d'exécuter des commandes en tant qu'autres utilisateurs. le dernier l'empêchera, mais le premier le permettra.

Ignacio Vazquez-Abrams
la source