Linux: So erkennen Sie, ob ein Computer über serielle Konsole gesteuert wird
Frage
Wie könnte ich programmgesteuert erkennen, ob eine Linux -Maschine von einem Benutzer gesteuert wird, der sich bei der Verwendung einer seriellen Konsole angemeldet hat? Ich würde die Überprüfung durch Bash machen.
Lösung
Das who
Der Befehl gibt Ihnen eine Liste von Benutzern, die angemeldet sind und wo sie angemeldet sind.
Zum Beispiel:
~$ who
john pts/1 2009-07-29 10:06 (ourcompanyvpnserver.org)
mary tty7 2009-07-29 10:11 (:0)
frank pts/2 2009-07-27 12:10 (att.net)
jim pts/4 2009-07-28 14:51 (comcast.net)
Die Ausgabe von Wer anzeigt "Wie" die Benutzer angemeldet sind. Benutzer Mary's Console ist in Kontakt tty7
Die TTY weist darauf hin, dass Mary physisch über eine Serienkonsole angemeldet ist. Mary hat also die Fähigkeit, den Computer über die serielle Konsole zu steuern.
Um festzustellen, was sie tut, müssten Sie sie ansehen. Normalerweise ist dies unter /home/mary/.bash_history.
Wenn Sie alle Befehle, die über eine serielle Konsole erhältlich sind, langfristig protokollieren möchten (auch bekannt als an dieser Maschine angehängte Tastatur), würde ich den linux -seriellen Treiber so ändern, dass sie alle Eingaben und Ausgaben protokollieren. Ich weiß nicht, wie schwer das wäre.
Andere Tipps
Versuchen Sie es zu analysieren Finger. Normalerweise können Sie IP/DNS -Adressen abholen. Ich habe nie eine serielle Verbindung gesehen, also konnte ich nicht sagen, ob sie eine serielle Verbindung anzeigt oder nicht.
Sie können verwenden wer Aus der Befehlszeile.
Wenn Sie es auf einem lokalen Computer überprüfen möchten ...
$ who >> log.txt
Und prüfen Sie, ob in dieser Datei eine zusätzliche Zeile oder was auch immer Sie wollen.
Wenn Sie möchten, ob Ihr Skript über eine serielle Schnittstelle auf einem Terminal ausgeführt wird, können Sie TTY einfach ausführen und den Gerätenamen überprüfen.