J'ai un script shell local qui effectue un certain nombre de tests sur un hôte distant, avant de livrer la charge utile; l'un de ces tests étant de savoir si l'utilisateur a des privilèges sudo, vérifié simplement avec sudo -v
cependant cela nécessite que l'utilisateur entre son mot de passe. De plus, l'hôte distant semble avoir un délai d'expiration sudo instantané, donc la saisie du mot de passe est requise à chaque nouvelle connexion, et c'est quelque chose que je n'ai pas l'autorisation de modifier (en tant que politique).
Je peux bien sûr tester si l'utilisateur fait partie de certains groupes, mais cela ne serait pas agnostique pour la configuration de l'hôte distant, alors j'espérais qu'il existe une méthode qui peut vérifier qui n'a pas besoin de supposer les groupes de l'utilisateur, ainsi comme ne nécessitant pas d'entrée utilisateur?
Merci!
MISE À JOUR: Pour faire écho à mes commentaires, je veux seulement tester si un utilisateur pourrait éventuellement sudo, sans nécessiter d'interaction de l'utilisateur pour ce test.
sudo -l
me demande mon mot de passe.sudo -k
abord d' exécuter .Réponses:
Je crains que la seule chose que vous puissiez tester est de savoir si l'utilisateur a les privilèges sudo sans mot de passe.
Exécuter
Si $? est 0, l'utilisateur a un accès sudo sans mot de passe, si $? est 1, l'utilisateur a besoin d'un mot de passe.
Si vous avez besoin d'une vérification pour un programme spécifique, changez
true
avec votre programme, d'une manière que le programme ne fait rien, commechmod --help
la source
X
estsudo
capable sans entrer de mot de passe et sans l'exécuter accidentellementSi vous avez un utilisateur avec accès sudo, comme "root", vous pouvez l'utiliser pour vérifier d'autres connexions. En tant qu'utilisateur avec accès, exécutez:
sudo -n -l -U foo 2> & 1 | egrep -c -i "non autorisé à exécuter sudo | utilisateur inconnu"
S'il retourne zéro, "foo" a accès. Sinon, il n'a pas accès à sudo.
la source
sudo -n -l cmd
et on vous dira si l'utilisateur actuel a accès sudo à cmd. Si vous voulez tester le résultat.Cela devrait vous donner suffisamment pour décider si vous avez les privilèges dont vous avez besoin / besoin.
la source
Je sais que c'est une super vieille question, mais j'ai trouvé la chance avec le
-n
drapeau (non interactif) et-v
/-l
. Mais, vous devez inspecter la sortie:Un peu de redirection de sortie et de grepping vous y amènera probablement:
la source