Chaque fois que je veux être en mesure d'exécuter quelque chose qui m'oblige à être sudoer
trop de fois, j'ai besoin de google pour le formatage de /etc/sudoers
me rappeler à nouveau quelle est exactement la bonne façon de l'écrire.
Maintenant, je vois différents styles d'écriture dans mon sudoers
fichier, ce qui est la conséquence de différents résultats de Google au fil des mois. J'ai également remarqué que le deuxième exemple (ci-dessous) semble fonctionner dans XFCE, mais pas dans Cinnamon (Gnome 3). Cela pourrait être totalement indépendant, mais néanmoins j'aimerais savoir une fois pour toutes, quelle est la grammaire correcte de la ligne sudoer, et quelle est la différence entre les exemples donnés?
redsandro ALL=NOPASSWD:/path/to/command
redsandro ALL=(ALL) NOPASSWD:/path/to/command
redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command
De plus, à quoi servent-ils ALL
? Un utilisateur, une commande, mais dois-je utiliser le ALL
mot - clé jusqu'à trois fois? Suis-je en train de faire ça mal?
Bien sûr, en omettant NOPASSWD:
fait de vous entrez votre mot de passe avant que vous êtes autorisé à exécuter la commande, mais un point de confusion est l'utilisation =
et :
, pour la dernière commande qui fait l'objet de la ligne peut être préfixé soit =
, :
, ou
)
, grammaire confuse pour une sémantique similaire.
sudoers
syntaxe. La lecture de la page de manuel était encore plus frustrante: elle décrit le soi-disant langage EBNF concis et exact, les exemples sont exhaustivement longs. Par conséquent, je ne suis pas surpris de trouver autant de fils ici concernant ce fichier.Réponses:
C'est plus qu'un simple utilisateur et une commande:
host
spécifie les noms d'hôte pour lesquels cette ligne est valide. Sauf si vous partagez un fichier asudoers entre différents hôtes qui ont besoin de règles différentes, la valeur spécialeALL
signifiant «tous les hôtes» est un bon choix.user
spécifie les utilisateurs que vous pouvez utiliser avec les-u
options pour exécuter la commande. Si vous omettez cela, vous ne pouvez pas utiliser l'-u
option.group
spécifie les groupes que vous pouvez utiliser avec les-g
options. Si vous l'omettez, vous ne pouvez pas utiliser l'-g
option.Les deux
user
etgroup
comprenez la valeur spéciale enALL
tant que «tous les utilisateurs / groupes»Si vous omettez tout
(user:group)
cela, vous ne pouvez pas l'utiliser-u
et-g
exécutez uniquement la commande en tant que root.tag
vous permet de spécifier certaines options, commeNOPASSWD
Ainsi, avec votre premier exemple, vous pouvez exécuter la commande en tant que root mais ne pouvez pas l'utiliser
-u
et l'-g
exécuter en tant que tout autre utilisateur ou groupe.Avec l'exemple 2. vous pouvez exécuter la commande en tant que root ou utiliser
-u
pour l'exécuter comme n'importe quel autre utilisateur.Avec 3. vous pouvez exécuter la commande en tant que root ou utiliser
-u
ou-g
pour exécuter la commande en tant que tout autre utilisateur ou groupe.la source
127.0.0.1
oulocalhost
commehost
pour la sécurité triviale ajoutée?ALL
c'est.Prenons celui-ci à part:
redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command
redsandro est le nom d'utilisateur auquel nous accordons la permission. Mettez un% à l'avant pour l'appliquer à un groupe.
ALL est un nom pour cette règle. Les Sudoers peuvent faire bien plus que simplement accorder des autorisations globales. C'est là que ça se complique.
= n'a pas besoin d'explication
ALL: ALL se lit comme (who_to_run_it_as: what_group_to_run_it_as). De cette façon, vous pouvez autoriser l'exécution d'une commande, mais uniquement dans le contexte d'un utilisateur ou d'un groupe spécifique.
NOPASSWD: lui dit de désactiver l'invite de mot de passe.
/ path / to / command vous permet de spécifier des commandes spécifiques path_to_commmand, another_command
La chose à retenir est que si sudo est principalement utilisé par les utilisateurs à domicile pour augmenter les privilèges root, il peut être et est utilisé pour contrôler l'accès à des commandes spécifiques d'une manière beaucoup plus granulaire.
la source
%
et les, another_command
notes. Maintenant, je comprends la%wheel
ligne dans la distribution basée sur Fedora.