Frage

Benutzer ferngesteuert werden Zugriff *** nichts-basierte Maschinen via SSH und ich brauche den schnellsten Art und Weise zu überprüfen, um festzustellen, ob der Benutzername, dass sie derzeit verwenden NOPASSWD Zugang in dem Verzeichnis / etc hat / sudoers Datei.

Mögliche Optionen:

  • grep für den Benutzernamen in / etc / sudoers, analysieren Eingabeaufforderung ausgegeben, um zu bestimmen, ob es NOPASSWD hat, wenn nicht, entfernen Sie die Zeile dann fügen Sie die neuen Berechtigungen
  • hängen Sie einfach eine Erlaubnis Zeichenfolge in die Datei unabhängig (schlechte Idee).
  • Versuchen Sie sudo in einer geschützten Datei und sehen, ob es fordert mich nach einem Passwort.

Ich hoffe auf etwas einfacher, aber mein Google-Fu mit allen möglichen Antworten nicht gekommen ist.

War es hilfreich?

Lösung

Wenn sudo -v erfolgreich ist, hat der Benutzer autorisiert worden sudo zu verwenden; wenn es fehlschlägt, dann hat der Benutzer nicht autorisiert worden sudo zu verwenden.

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

Ohne setsid , sudo werden versuchen, das Passwort zu fragen, interaktiv selbst wenn stdin / stdout / stderr haben alle umgeleitet worden. Wenn Sie nicht über einen Steueranschluss haben, ist dies nicht erforderlich, aber Sie werden wahrscheinlich brauchen etwas anderes als su Benutzerberechtigungen zu ändern, wie Gabel + setreuid .

Andere Tipps

Wenn Sie tatsächlich benötigen „die schnellste Art und Weise“, ich denke, Sie bauen einen Webserver, die viele gleichzeitige Anfragen umgehen würde.

Dies wirft ein weiteres Problem - die Gleichzeitigkeit Problem. Im Allgemeinen viele Verfahren das Lesen und Schreiben auf die gleiche wichtige Datei ist ein Rezept für eine Katastrophe.

Erstellen Sie einen kleinen unabhängigen Prozess um die Aufgabe zu bewältigen. Es sollte eine minimale Schnittstelle hat, die Anforderungen von den Clients und Updates für die die /etc/sudoer Datei erhalten. So etwas wie has_NOPASSWD_access() und set_NOPASSWD_access(). Es sollte die Datei nur lesen, wenn sie geschrieben werden muss, so dass Sie die I / O-Zeit erheblich reduzieren erforderlich, um eine Anfrage zu dienen.

Pros -

  • Schnell: Keine I / O benötigt für nur die Datei zu lesen, weil es in dem Puffer, da die anfänglichen Lese gespeichert
  • Thread sicher: Nur ein Server schreibt und liest die sudoer Datei
  • Einzel Wahl Prinzip - nur dieser Prozess übernimmt die sudoer Datei
  • Elegant (hoffe ich): -)

Cons -  -. Sie in der Kommentarliste und ich will hinzufügen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top