Secondo la patch del kernel http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=0499680a42141d86417a8fbaa8c8db806bea1201, puoi usare l'opzione hidepid per il filesystem proc:
hidepid=0 (predefinito) indica il vecchio comportamento:chiunque può leggere tutti i file /proc/PID/* leggibili da tutti.
hidepid=1 significa che gli utenti non possono accedere ad alcuna directory /proc//, ma alla propria. File sensibili come cmdline, sched*, status sono ora protetti da altri utenti. Poiché il controllo dei permessi eseguito in proc_pid_permission() e i permessi dei file non vengono toccati, i programmi che si aspettano modalità di file specifici non vengono confusi.
hidepid=2 significa hidepid=1 più tutti i /proc/PID/ saranno invisibili agli altri utenti. Non significa che nasconde l'esistenza di un processo (può essere appreso con altri mezzi, ad esempio con kill -0 $PID), ma nasconde l'euid e l'egid del processo. Compita il compito dell'intruso di raccogliere informazioni sui processi in esecuzione, se qualche demone viene eseguito con privilegi elevati, se un altro utente esegue un programma sensibile, se altri utenti eseguono un programma, ecc.
gid=XXX definisce un gruppo che sarà in grado di raccogliere tutte le informazioni sui processi (come in modalità hidepid=0). Questo gruppo dovrebbe essere usato invece di mettere l'utente non root nel file sudoers o qualcosa del genere. Tuttavia, gli utenti non fidati (come demoni, ecc.) che non dovrebbero monitorare le attività nell'intero sistema non dovrebbero essere aggiunti al gruppo.
Non sei in grado di controllare la visibilità a livello di processo, tuttavia puoi assicurarti che i tuoi utenti possano vedere solo i propri processi.
Nel caso tu abbia una versione del kernel maggiore di 3.3 puoi fare una prova con il seguente comando:
mount /proc -o remount,hidepid=2
Bene, hai un paio di opzioni qui. Prendere la via più facile sarebbe scambiare i programmi ps e top con versioni modificate che nascondono ciò che vuoi nascondere.
L'alternativa sarebbe eseguire il tuo codice incorporato in un processo esistente o scrivere uno script wrapper attorno al tuo codice con un nome innocuo.
In alcune versioni di PS, puoi modificarlo cambiando argv[], ma non sono sicuro che funzioni per top, e non sono sicuro che funzioni in Linux (è principalmente una convenzione BSD).
Tutto dipende, esattamente da cosa stai cercando di ottenere facendo questo?