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?