Wenn jeder Sudo verwendet, könnten Sie in Betracht ziehen, etwas zu verwenden, um ps -ax | grep sudo
zu sehen, wer gerade verwendet, sudo
oder env1-controller
wenn who
Sie laufen, könnten Sie eine Vorstellung davon bekommen, wer das Programm tatsächlich ausführt.
Als Beispiel auf meiner Maschine von meiner Maschine ps -ax | grep sudo
möchte die Ausgabe von :
24324 pts/0 S 0:00 sudo su <user>
Der erste Eintrag ist die PID, der zweite der TTY, das dritte Mal und der letzte Befehl. Wenn Sie verwenden, erhalten who
Sie eine Liste der aktuell angemeldeten Benutzer und den verwendeten TTY. Es könnte so aussehen:
<user> pts/0 Nov 23 10:24 (<IP>) <user> pts/2 Nov 23 10:25 (<IP>)
Durch diese Kombination wissen Sie also, dass die sudo
Verbindung zu dem beliebigen Benutzer besteht pts/0
. Dies wäre die manuelle Überprüfung.
Meine Vermutung wäre, dass es möglich ist, diese Informationen zu kombinieren, aber meine bash-Fähigkeiten sind nicht gut genug, um nur die Antwort darauf zu posten.
Die endgültige Lösung des ursprünglichen Autors der Frage war / ist:
Am Ende habe ich mit grep die exakten TTY-Nummern extrahiert
ps -aux | grep -v grep | grep "sudo su - whoami" | grep -E -o 'pts/[0-9]+' | grep -E -o '[0-9]+'
und dann herausgefundenls -l /dev/pts/$
, wer den TTY besaß.
Was das macht, ist:
- Verwenden Sie
ps -aux
diese Option, um eine Liste aller laufenden Prozesse einschließlich einiger zusätzlicher Informationen abzurufen. grep
alle Zeilen, die nicht enthaltengrep
, um das grep von der Ausgabe auszuschließen.grep
die Zeile für alle Prozesse, die enthaltensudo
.grep
der Textpts/<number>
aus diesen Zeilen.grep
nur die Nummer- Verwenden Sie
ls
diese Option, um zu überprüfen, wer der Besitzer dieses TTY ist.
Mit diesen Informationen können Sie versuchen, dies zu tun (wenn Sie wen verwenden wollten):
who | grep $(ps -ax | grep -v grep | grep "sudo su - whoami" | grep -E -o 'pts/[0-9]+')
Es würde jedoch nur funktionieren, solange es ein einzelnes Ergebnis gibt, da die Ausgabe von mehrzeilig $()
wäre. Wie Sie sehen, überspringe ich das u
von, ps
da die hinzugefügten Informationen nicht benötigt werden, damit das grundlegende Skript funktioniert.