Moyen le plus rapide pour déterminer les autorisations des utilisateurs dans / etc / sudoer

StackOverflow https://stackoverflow.com/questions/1133364

Question

Les utilisateurs accéderont à distance *** machines à base nix via SSH et je dois déterminer les les plus rapides moyen de vérifier si le nom d'utilisateur qu'ils utilisent actuellement un accès NOPASSWD dans / etc / sudoers fichier.

Options possibles:

  • grep pour le nom d'utilisateur dans / etc / sudoers, analyser la sortie d'invite de commande pour déterminer si elle a NOPASSWD, sinon, supprimez la ligne, puis ajouter les nouvelles autorisations
  • Juste ajouter une chaîne d'autorisation au fichier quel que soit (mauvaise idée).
  • Tentative de sudo dans un fichier protégé et voir si elle me demande un mot de passe.

J'espère que quelque chose de plus facile, mais mon google-fu est pas venu avec aucune réponse.

Était-ce utile?

La solution

Si sudo -v réussit, l'utilisateur a été autorisé à utiliser sudo; si elle échoue, l'utilisateur n'a pas été autorisé à utiliser sudo.

# su user -c 'setsid sudo -v </dev/null'; echo $?
[sudo] password for user:
1
# su root -c 'setsid sudo -v </dev/null'; echo $?
0

Sans setsid , sudo va essayer de demander le mot de passe de manière interactive, même si stdin / stdout / stderr ont tous été redirigés. Si vous ne disposez pas d'un terminal de contrôle, ce n'est pas nécessaire, mais vous aurez probablement besoin d'autre chose que su pour modifier les droits d'utilisateur, comme fourche + setreuid .

Autres conseils

Si vous avez besoin en effet « le plus rapide chemin », je suppose que vous construisez un serveur web qui traiterait de nombreuses requêtes simultanées.

Cela soulève un autre problème - la question de la concurrence. En règle générale, beaucoup de lecture des processus et de l'écriture au même fichier important est une recette pour une catastrophe.

Construire un petit processus indépendant pour gérer la tâche. Il doit avoir une interface minimale qui recevra les demandes des clients et des mises à jour pour le fichier /etc/sudoer. Quelque chose comme has_NOPASSWD_access() et set_NOPASSWD_access(). Il faut lire le fichier que quand il a besoin d'être écrit, de sorte que vous allez réduire considérablement le temps d'E / S nécessaire pour servir une demande.

Plus -

  • Fast: Non E / S nécessaire à la simple lecture du fichier, car il est stocké dans la mémoire tampon depuis la lecture initiale
  • sécurité du fil: Un seul serveur écrit et lit le fichier sudoer
  • Choix unique principe - que ce processus gère le fichier sudoer
  • élégante (je l'espère): -)

Moins -  -. Inscrivez-les dans les commentaires, et je vais ajouter

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top