Kann ich vi-Aktivitäten protokollieren?

10

Gibt es eine Methode zum Protokollieren von vi-Aktivitäten? Ich vermute, dass ein anderer Benutzer Befehle ausgibt, indem er in die Shell im vi-Editor geht. Anscheinend werden diese Befehle nicht in den Verlauf aufgenommen.

vnix27
quelle

Antworten:

6

Sie können auch die Prozessabrechnung aktivieren (s / can / should /!)

Sie können dann verwenden:

lastcomm(1)

um zu sehen, wie der Befehl ausgeführt wird und ob sie nach einer Abzweigung ausgeführt wurden, mit oder ohne Exec.

In Kombination mit einem Host-basierten IDS sollte dies Ihnen das geben, was Sie brauchen, "damit die Gerechtigkeit des Königs auf ihn angewendet werden kann".

kichernd
quelle
+1 für einen guten Punkt zur Buchhaltung.
Phil Hollenback
7

Wie protokollieren Sie gerade ihre Aktivitäten? Am einfachsten ist es, sie daran zu hindern, Granaten von vi aus zu starten.

# vi /home/user/.exrc
set exrc
set shell=/bin/false
# chown root:root /home/user/.exrc
# chmod 644 /home/user/.exrc
# chattr +i /home/user/.exrc

Wenn Sie eine spezielle Shell zum Protokollieren ihrer Befehle verwenden, können Sie vi so ändern, dass nur diese Shell verwendet wird.

Steven
quelle
+1 für eine gute einfache Möglichkeit, den vi-Zugriff einzuschränken.
Phil Hollenback
2
aber es sieht einfach aus, es zu umgehen: "vim -u / dev / null".
Jlliagre
Ja, dies ist im Wesentlichen ein unlösbares Problem. Sobald jemand über ein Login Zugriff auf Ihr System erhält, kann er den Computer untergraben. Das Beste, was Sie tun können, ist, es wirklich schwierig zu machen.
Phil Hollenback
4

Sprechen Sie über die Shell-Geschichte? vi shell mode ( :sh) startet die Standard-Shell des Benutzers Wenn dies bash ist, können Sie sicherstellen, dass die Verlaufsprotokollierung immer aktiviert ist, indem Sie das globale / etc / bashrc bearbeiten und Folgendes hinzufügen:

set HISTFILE=~/.bash_history
shopt -s histappend
PROMPT_COMMAND='history -a'

Dadurch wird sichergestellt, dass jeder Benutzerbefehl in einer Datei protokolliert wird, nicht überschrieben wird und jedes Mal aktualisiert wird, wenn die Shell-Eingabeaufforderung angezeigt wird.

Beachten Sie, dass Benutzer dies in ihrem persönlichen Bereich überschreiben können, ~/.bashrcsodass dies keine absolute Garantie dafür ist, dass die Protokollierung erfolgt.

Einige Versionen von vi (wie nvi) unterstützen einen abgesicherten Modus, der den Shell-Zugriff über das Starten von vi as deaktiviert nvi -S. Sie können einen globalen Alias ​​festlegen /etc/bashrc, um diesen Modus ebenfalls standardmäßig zu erzwingen.

Beachten Sie, dass das Problem, dass Benutzer auf unerwartete Weise zur Shell gelangen, im Allgemeinen ein klassisches Unix-Problem ist. Es gibt keine Möglichkeit, dies vollständig zu deaktivieren. Das Beste, was Sie tun können, ist zu versuchen, den Zugriff standardmäßig einzuschränken. Ein erfahrener Benutzer (oder sogar ein Benutzer, der weiß, wie man Google verwendet) kann diese Einschränkungen immer umgehen. Wenn ein Benutzer beispielsweise nicht möchte, dass sein Shell-Verlauf protokolliert wird, kann er jederzeit eine neue Kopie der Shell mit den von ihm gewünschten Optionen ausführen.

Hier finden Sie eine ausführliche Beschreibung, wie Sie die Protokollierung in Bash erzwingen und wie die Protokollierung umgangen werden kann.

Haben Sie zum Schluss darüber nachgedacht, nur mit dem Benutzer zu sprechen, um festzustellen, was er tut? In 99% der Fälle kann eine einfache verbale Kommunikation Verwirrung beseitigen. Wenn Sie die Aktivität dieses Benutzers protokollieren, weil Sie ihm nicht vertrauen, können Sie möglicherweise mit ihm über Ihre Bedenken sprechen.

Phil Hollenback
quelle