È possibile 'nascondere' un processo dall'elenco di `ps` o` top` su Linux


10

In primo luogo, presumo che, se possibile, dovrebbe essere fatto come root (o come utente che condivide l'UID di root pari a 0).

Come può un processo di essere lanciato in modo che non si presenta in una ps auxo ps efo topmessa in vendita se il comando è gestito da non root?

È possibile?

Le distribuzioni che eseguo in genere sono RHEL / CentOS e Ubuntu - quindi se esiste una risposta specifica per la distribuzione, va bene lo stesso.


warren: hai mai trovato una soluzione a questo?
Chris,

@Chris - no ... La risposta di @ fianchetto sembra essere l'unica strada, e questo è molto più lavoro di quello che mi sento a mio agio: - |
Warren,

Intendo intraprendere questo progetto e riferirò con tutto ciò che deciderò.
Chris,

Risposte:


5

Bene, hai un paio di opzioni qui. Prendere la via d'uscita semplice sarebbe scambiare i programmi ps e top con versioni modificate che nascondono ciò che vuoi nascondere.

L'alternativa sarebbe eseguire il codice incorporato in un processo esistente o scrivere uno script wrapper attorno al codice con un nome innocuo.

In alcune versioni di PS, puoi modificarlo cambiando argv [], ma non sei sicuro che funzioni al meglio e non sei sicuro che funzioni in Linux (è principalmente una convenzione BSD).

Dipende tutto, esattamente da cosa stai cercando di ottenere facendo questo?


il mio obiettivo qui è che i processi generati da root non siano visibili a tutti gli utenti (forse demoni legati alla sicurezza o simili)
warren

@flanchetto Quindi, stai dicendo che se ho un programma che è già in esecuzione e in seguito esegue un comando da riga di comando con una password nello stesso processo in cui la password verrà data in modo sicuro? ad esempio, eseguire python myScript.pye tutti i subprocess.Popencomandi (che possono contenere o meno password) non vengono visualizzati, purché si tratti dello stesso processo?
Brōtsyorfuzthrāx,

Comunque, non funziona (l'ho appena provato e ho visto la password). Quindi, presumo che tu intenda qualcos'altro. Sentiti libero di chiarire. :)
Brōtsyorfuzthrāx,

13

Secondo la patch del kernel http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=0499680a42141d86417a8fbaa8c8db806bea1201 , è possibile utilizzare l'opzione hidepid per il filesystem proc:

hidepid = 0 (impostazione predefinita) indica il vecchio comportamento: chiunque può leggere tutti i file / proc / PID / * leggibili dal mondo.

hidepid = 1 significa che gli utenti non possono accedere a nessuna directory / proc //, ma alla propria. I file sensibili come cmdline, sched *, status sono ora protetti contro altri utenti. Poiché il controllo delle autorizzazioni eseguito in proc_pid_permission () e le autorizzazioni dei file non vengono toccati, i programmi che prevedono modalità di file specifici non vengono confusi.

hidepid = 2 significa hidepid = 1 più tutto / proc / PID / sarà invisibile agli altri utenti. Non significa che nasconda l'esistenza di un processo (può essere appreso con altri mezzi, ad esempio uccidendo -0 $ PID), ma nasconde il processo 'euid ed egid. Compensa il compito dell'intruso di raccogliere informazioni sui processi in esecuzione, se alcuni daemon vengono eseguiti con privilegi elevati, se un altro utente esegue un programma sensibile, se altri utenti eseguono qualsiasi 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 attendibili (come i daemon, ecc.) Che non dovrebbero monitorare le attività nell'intero sistema non dovrebbero essere aggiunti al gruppo.

Non puoi controllare la visibilità a livello di processo, tuttavia puoi assicurarti che i tuoi utenti possano vedere solo i propri processi.

Se hai una versione del kernel maggiore di 3.3 puoi provare con il seguente comando:

 
mount /proc -o remount,hidepid=2


Puoi limitare la hidepid=2cosa in modo che influisca solo su utenti specifici (o così autorizza determinati utenti)?
Brōtsyorfuzthrāx l'

Funziona alla grande! Il mio problema era che mi collegavo a un server usando uno script cron e qualsiasi utente era in grado di vedere le credenziali usando "htop" (per esempio). Impostando su "hidepid = 2" gli utenti non possono vedere i processi avviati da altri utenti che è quello che stavo cercando. Perché non è impostato di default?
lepe,

@lepe probabilmente per motivi legati al passato. Spezzerebbe questo e quello e quindi non può (ancora) essere usato ovunque.
Florian Wendelborn,

OP ha chiesto che il pid sia invisibile nel complesso, non solo agli altri utenti ...?
phil294,

Esiste un modo per nascondere i processi creati solo da determinati utenti? per esempio. root?
Avery235

-2

utilizzare il comando F in comando top e n, ad esempio per configurare ciò che si desidera vedere. usa il comando W per scrivere la configurazione che ti piace in ~ / .toprc - usa? per vedere i comandi principali. Questo potrebbe risolvere rapidamente il tuo problema, lo ha fatto per me. Con F posso aggiungere / rimuovere i campi che voglio vedere, mentre in f posso usare s per impostare l'ordinamento, quindi q per tornare alla visualizzazione. quindi n per impostare quanti processi voglio vedere e W per salvare in .toprc


Ciò nasconde solo qualcosa a mio avviso
Warren l'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.