Le 14.04 ici. Je suis entré dans ma machine en ajoutant la ligne suivante à /etc/sudoers
:
myuser ALL=NOPASSWD: ALL
Et puis essayé de courir:
Sudo mkdir /etc/blah
...et on me demande mon mot de passe. Pourquoi?!?
Je ne veux pas demander mon mot de passe lors de cette opération. Veuillez noter que lorsque je lance ls -ltr /
, je reçois:
drwxr-xr-x 94 root root 4096 Jul 30 13:28 etc
Mais je ne pense pas que cela compte parce que je me suis érigé en "sudoer", non?
Plus important encore, que dois-je faire pour pouvoir exécuter Sudo mkdir /etc/blah
en tant qu'utilisateur actuel (myuser
) sans que le mot de passe ne soit demandé?
Voici tout mon fichier /etc/sudoers
:
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
fizzbuzz ALL=NOPASSWD: ALL
chadmin ALL=NOPASSWD: ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group Sudo to execute any command
%Sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
C'est la séquence/l'ordre des règles qui a provoqué cela. La dernière règle a la préférence.
Pour résoudre votre problème, déplacez simplement vos lignes,
fizzbuzz ALL=NOPASSWD: ALL
chadmin ALL=NOPASSWD: ALL
du fichier sudoers
à
Sudo visudo -f /etc/sudoers.d/myOverrides
Cette approche est préférable à la modification du fichier sudoers
avec un éditeur de texte brut. Si vous insérez accidentellement des erreurs dans le fichier, vous ne pourrez peut-être plus exécuter Sudo
. Utilisez toujours visudo
pour vérifier la syntaxe et recevoir des avertissements concernant les erreurs!
Votre directive ne fonctionne pas car elle est remplacée par:
%admin ALL=(ALL) ALL
%Sudo ALL=(ALL:ALL) ALL
Si vous exécutez la commande groups
, vous devriez voir que votre utilisateur appartient à ces groupes.
Si myuser est dans le groupe Sudo, alors cet ordre de lignes ne fournira pas d'accès sans mot de passe (comme l'a noté Florian Diesch), car la troisième ligne remplace la première. .
myuser ALL=(www-data:www-data) NOPASSWD: ALL
# Allow members of group Sudo to execute any command
%Sudo ALL=(ALL:ALL) ALL
Il suffit donc de mettre les lignes dans cet ordre:
# Allow members of group Sudo to execute any command
%Sudo ALL=(ALL:ALL) ALL
myuser ALL=(www-data:www-data) NOPASSWD: ALL
Sous compte myuser, utilisez Sudo -l
pour vérifier les autorisations dont dispose myuser.
Si plusieurs entrées correspondent pour un utilisateur, last one est utilisé. Ainsi, si fizzbuzz
et chadmin
sont membres des groupes admin
ou Sudo
name__, il leur sera toujours demandé un mot de passe.
Placez les deux lignes à la fin du fichier sudoers
après la ligne #includedir
.
Idéalement, si vous personnalisez les commandes pouvant être exécutées via Sudo
name__, vous devez apporter ces modifications dans un fichier séparé sous /etc/sudoers.d/
au lieu de modifier directement le fichier sudoers
name__. Vous devez également toujours utiliser visudo
pour éditer le (s) fichier (s). Vous ne devez JAMAIS accorder NOPASSWD
sur les commandes ALL
name__.
Exemple: Sudo visudo -f /etc/sudoers.d/mynotriskycommand
Insérez votre ligne accordant la permission: myuser ALL= NOPASSWD: /bin/mkdir
Ensuite, enregistrez et quittez et visudo
vous avertira en cas d'erreur de syntaxe.
Vous pouvez exécuter Sudo -l
pour voir les autorisations accordées à votre utilisateur. Si l'une des commandes NOPASSWD
spécifiques à l'utilisateur apparaît AVANT toute commande %groupyouarein ALL=(ALL) ALL
dans la sortie, vous serez invité à entrer votre mot de passe.
Si vous créez beaucoup de ces fichiers sudoers.d, vous voudrez peut-être les créer, nommés par utilisateur, pour faciliter leur visualisation. Gardez à l'esprit que l'ordre des NOMS DE FICHIERS et des règles dans le fichier est très important, le DERNIER chargé gagne gagne, qu'il soit PLUS ou MOINS permissif que les entrées précédentes.
Vous pouvez contrôler l'ordre des noms de fichiers en utilisant un préfixe 00-99 ou aa/bb/cc, mais n'oubliez pas que si vous avez des fichiers sans préfixe numérique, ils se chargeront après les fichiers numérotés. les paramètres. Cela s'explique par le fait que, selon vos paramètres de langue, le "tri lexical" utilisé par le shell trie les nombres en premier, puis peut entrelacer les majuscules et les minuscules lors d'un tri "croissant".
Essayez d'exécuter printf '%s\n' {{0..99},{A-Z},{a-z}} | sort
et printf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sort
pour voir si votre langue actuelle imprime AaBbCc
etc ou ABC
puis abc
pour déterminer quel serait le meilleur préfixe de lettre "dernier" à utiliser.