Cum să ascundeți un proces în Linux

Toate sistemele de operare multitasking moderne, inclusiv Linux, lansează mai multe procese pentru a finaliza fiecare sarcină. Utilizarea blocnotesului, fereastra terminalului, serverul SSH, conexiunea SSH etc. sunt toate procese separate. Sistemul de operare, în cazul nostru Linux, alocă resurse de sistem (timp CPU, memorie, I/O) între procese, astfel încât fiecare proces să poată funcționa.

Pentru a vedea o listă a proceselor care rulează în prezent, utilizați utilitarul ps:

Parametrii auxiliari spun utilitarului să imprime toate procesele de sistem cu informații despre utilizatorul de la care au fost lansate și comanda de apel.

După cum puteți vedea, lista conține procese deținute de diverși utilizatori, inclusiv pi, utilizatorul implicit al Raspberry Pi, root și www-data. Iată o altă captură de ecran care arată procesele și informațiile despre comanda și parametrii lor de pornire:

Dacă te uiți în jos în listă, vei vedea comanda nano MYBANKACCOUNTNUMBER.TXT executată de utilizatorul john. Aceste date sunt furnizate tuturor utilizatorilor sistemului și pot fi utilizate în scopuri rău intenționate.

În versiunea de kernel 3.2 și superioară, funcția este implementată pentru a împiedica utilizatorul să vizualizeze informații despre procese care nu îi aparțin. Comanda ps primește informații despre proces din sistemul de fișiere /proc. A fost adăugat un nou parametru hidepid care se aplică la montarea sistemului de fișiere. Vă permite să ascundeți informații despre procese de la utilizatorii care nu au acces la acestea.

  • hidepid = 0 - valoare implicită, toți utilizatorii pot citi fișierele /proc/pid
  • hidepid = 1 - utilizatorii pot accesa doar propriul subdirector /proc/pid, dar fișierele cmdline, io, sched*, de stare sunt disponibile pentru toată lumea
  • hidepid = 2 - toate subdirectoarele /proc/pid sunt ascunse utilizatorilor

Sistemul de fișiere /proc poate fi remontat din mers folosind opțiunea de remontare a utilitarului de montare. Pentru a testa hidepid, puteți folosi următoarea comandă:

sudo mount -o remount,rw,hidepid=2 /proc

Apoi încercăm să executăm ps din nou:

Acum vom vedea numai procesele rulând ca utilizator pi.

Pentru a face aceste modificări permanente, editați fișierul /etc/fstab. Acest fișier controlează modul în care sistemele de fișiere sunt montate la pornire.

sudo nano /etc/fstab

Găsiți această linie:

proc /proc proc implicit 0 0

Și înlocuiește-l cu:

proc /proc proc defaults,hidepid=2 0 0

Închideți editorul cu Ctrl+C și reporniți computerul. După o repornire, /proc va fi montat cu opțiunile corecte. Utilizați comanda mount și grep pentru a verifica opțiunile de montare.

montură | grep hidpided

Acum să încercăm să rulăm ps:

După cum puteți vedea, sunt vizibile doar procesele care aparțin utilizatorului curent. Dar există o remarcă. Superutilizatorul poate vedea în continuare toate procesele și opțiunile de apel.