J'ai accordé une autorisation de groupe pour exécuter certaines commandes sans mot de passe via sudo. Lorsqu'un des utilisateurs fait une faute de frappe ou exécute une commande incorrecte, le système lui demande son mot de passe, puis il obtient une erreur. C'est déroutant pour l'utilisateur, donc je voudrais simplement afficher une erreur au lieu de lui demander un mot de passe. Est-ce possible?
Voici un exemple de mon fichier sudoers:
%mygroup ALL=(ALL) NOPASSWD:/usr/local/bin/myscript.sh *
Exemple quand ils exécutent le mauvais script:
# sudo /usr/local/bin/otherscript.sh
[sudo] password for user:
Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>.
Sortie désirée:
Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>. Please check the command and try again.
Notez l'absence d'invite de mot de passe.
Mon google-fu m'a échoué et ne renvoie des résultats que si je ne demande pas de mot de passe lorsque l'utilisateur est autorisé à exécuter la commande.
sudo
vous permettront d'exécuter sans entrer votre mot de passe. Avec la fonctionnalité que vous souhaitez, je pourrais obtenir ces informations pour des commandes spécifiques.sudo
est tout aussi important si les utilisateurs ont un accès en écriture à ces fichiers.Réponses:
D'une lecture rapide de
sudo(8)
Et pour les sceptiques:
Testé ainsi:
Donc, un
alias
forsudo
pour ces gens ferait probablement l'affaire, pour empêcher l'invite de mot de passe. Maintenant, pourquoi cela nécessite une compilation personnaliséesudo
, je ne sais pas, je viens de lire le manuel.la source
alias sudo="$(which sudo) -n"
mettrais quelque chose comme dans / etc / bashrc, puis j'utiliseraissudo
(comportement ajusté) oucommand sudo
(comportement par défaut) comme souhaité.Une chose qui a fonctionné pour moi, (version Sudo 1.8.17p1), mais qui ne satisfait qu'une partie de votre problème, est de définir le nombre de tentatives de mot de passe à 0.
Cela fait que sudo quitte avec le code 1 lorsqu'une commande nécessitant un mot de passe est essayée. Cependant, il ne produit aucune sorte de message d'erreur.
la source
Vous ne pouvez pas.
Il n'y a aucun moyen de savoir qui vous êtes tant que vous ne vous êtes pas authentifié et, par défaut, vous ne pouvez pas vous authentifier sans mot de passe.
Vous pouvez modifier l'authentification pour utiliser des clés USB, des scanners d'empreintes digitales, l'authentification vocale, la reconnaissance faciale ou un tas d'autres choses, mais le point est le même.
Vous ne pouvez pas vous authentifier, sans authentification ET avant de vous authentifier, sudo n'a rien à vous dire ce que vous pouvez ou ne pouvez pas exécuter.
la source
@StrongBad a fait un commentaire qui mérite d'être une réponse:
Je pense que la meilleure solution serait d'écrire un script wrapper qui appelle toujours
sudo
avec les bons paramètres. (Comprenant-n
)Le script wrapper peut effectuer une analyse d'arguments, etc. afin que le script sudo appelé soit aussi petit que possible et donc moins susceptible d'avoir des bogues.
la source
Ce n'est pas possible. La seule façon est de changer le code source et de compiler votre propre fork de
sudo
la source