GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ist es möglich, einen Prozess aus der Auflistung von `ps` oder `top` unter Linux zu 'verstecken'?

Laut Kernel-Patch http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=0499680a42141d86417a8fbaa8c8db806bea1201 können Sie die Option hidepid für das proc-Dateisystem verwenden:

hidepid=0 (Standard) bedeutet das alte Verhalten - jeder kann allworld-lesbare /proc/PID/*-Dateien lesen.

hidepid=1 bedeutet, dass Benutzer auf keine /proc//-Verzeichnisse zugreifen dürfen, außer auf ihre eigenen. Sensible Dateien wie cmdline, sched*, Status sind jetzt vor anderen Benutzern geschützt. Da die Berechtigungsprüfung in proc_pid_permission() durchgeführt wird und die Dateiberechtigungen unverändert bleiben, werden Programme, die die Modi bestimmter Dateien erwarten, nicht verwirrt.

hidepid=2 bedeutet hidepid=1 plus alle /proc/PID/ werden für andere Benutzer unsichtbar sein. Es bedeutet nicht, dass es verbirgt, ob ein Prozess existiert (es kann auf andere Weise gelernt werden, z. B. durch kill -0 $PID), aber es verbirgt die euid und egid des Prozesses. Es erschwert dem Eindringling die Aufgabe, Informationen über laufende Prozesse zu sammeln, ob ein Daemon mit erhöhten Rechten läuft, ob ein anderer Benutzer ein sensibles Programm ausführt, ob andere Benutzer überhaupt irgendein Programm ausführen usw.

gid=XXX definiert eine Gruppe, die alle Prozessinformationen sammeln kann (wie im Modus hidepid=0). Diese Gruppe sollte verwendet werden, anstatt den Nicht-Root-Benutzer in die sudoers-Datei oder so etwas einzufügen. Nicht vertrauenswürdige Benutzer (wie Daemons usw.), die nicht die Tasks im gesamten System überwachen sollen, sollten jedoch nicht zur Gruppe hinzugefügt werden.

Sie können die Sichtbarkeit auf Prozessebene nicht steuern, aber Sie können sicherstellen, dass Ihre Benutzer nur ihre eigenen Prozesse sehen können.

Falls Sie eine Kernel-Version größer als 3.3 haben, können Sie es mit dem folgenden Befehl versuchen:

 
mount /proc -o remount,hidepid=2


Nun, Sie haben hier ein paar Möglichkeiten. Der einfache Ausweg wäre, die ps- und top-Programme durch modifizierte Versionen auszutauschen, die verbergen, was Sie verbergen möchten.

Die Alternative wäre, Ihren Code eingebettet in einen bestehenden Prozess auszuführen oder ein Wrapper-Skript mit einem harmlosen Namen um Ihren Code zu schreiben.

In einigen Versionen von PS können Sie es ändern, indem Sie argv[] ändern, aber nicht sicher, ob das für top funktioniert, und nicht sicher, ob es unter Linux funktioniert (es ist hauptsächlich eine BSD-Konvention).

Es hängt alles davon ab, was genau Sie damit erreichen wollen?


Linux
  1. Linux – Die Buffers-Spalte in der Ausgabe von Free?

  2. Wie berechnet man die CPU-Auslastung eines Prozesses durch PID in Linux von C?

  3. Verstecken Sie die versteckten Linux-Dateien in Windows

  4. Wie funktioniert copy_from_user aus dem Linux-Kernel intern?

  5. Was ist die aktuelle Linux-Kernelquelle?

Ändern Sie die Größe eines Bildes über das Linux-Terminal

Programmieren Sie Hardware über die Linux-Befehlszeile

So ändern Sie die Priorität eines Prozesses in Linux

Die Auswirkungen des Hinzufügens von Benutzern zu einem Linux-System

So senden Sie Prozesse unter Linux an den Hintergrund

Was ist die Definition einer Sitzung unter Linux?