GNU/Linux >> Znalost Linux >  >> Linux

Je možné 'skrýt' proces ze seznamu `ps` nebo `top` v Linuxu

Podle opravy jádra http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=0499680a42141d86417a8fbaa8c8db806bea1201 můžete pro souborový systém proc použít volbu hidepid:

hidepid=0 (výchozí) znamená staré chování – kdokoli může číst soubory /proc/PID/*, které jsou čitelné pro celý svět.

hidepid=1 znamená, že uživatelé nemají přístup k žádným adresářům /proc//, ale ke svým vlastním. Citlivé soubory jako cmdline, sched*, status jsou nyní chráněny proti ostatním uživatelům. Vzhledem k tomu, že kontrola oprávnění prováděná v proc_pid_permission() a oprávnění souborů zůstávají nedotčena, programy očekávající režimy specifických souborů nejsou zmatené.

hidepid=2 znamená hidepid=1 plus všechny /proc/PID/ budou pro ostatní uživatele neviditelné. Neznamená to, že skrývá, zda proces existuje (lze se to naučit jinými způsoby, např. kill -0 $PID), ale skrývá euid a egid procesu. To komplikuje úkol vetřelce shromažďovat informace o běžících procesech, zda nějaký démon běží se zvýšenými oprávněními, zda jiný uživatel spouští nějaký citlivý program, zda ostatní uživatelé vůbec nějaký program spouštějí atd.

gid=XXX definuje skupinu, která bude moci shromažďovat informace o všech procesech (jako v režimu hidepid=0). Tato skupina by měla být použita místo vložení uživatele nonroot do souboru sudoers nebo tak něco. Do skupiny by však neměli být přidáváni nedůvěryhodní uživatelé (likedaemoni atd.), kteří by neměli sledovat úlohy v celém systému.

Nejste schopni ovládat viditelnost na úrovni procesu, ale můžete zajistit, aby vaši uživatelé viděli pouze své vlastní procesy.

V případě, že máte verzi jádra vyšší než 3.3, můžete to zkusit pomocí následujícího příkazu:

 
mount /proc -o remount,hidepid=2


No, tady máte několik možností. Nejjednodušší cestou by bylo vyměnit ps a top programy za upravené verze, které skryjí to, co chcete skrýt.

Alternativou by bylo spustit váš kód vložený do existujícího procesu nebo napsat obalový skript kolem vašeho kódu s neškodným názvem.

V některých verzích PS jej můžete upravit změnou argv[], ale nejste si jisti, zda to funguje pro top, a nejste si jisti, zda to funguje v linuxu (je to hlavně konvence BSD).

Vše záleží na tom, čeho přesně tím chcete dosáhnout?


Linux
  1. Jak vypočítat využití CPU procesu pomocí PID v Linuxu z C?

  2. Jak nastavit IP adresu z C v linuxu

  3. Jaký je aktuální zdrojový kód jádra Linuxu?

  1. Název procesu z jeho pid v linuxu

  2. Je možné nainstalovat font Helvetica na linux?

  3. RSS čtečka z terminálu v Linuxu

  1. Najděte čas provedení příkazu nebo procesu v systému Linux

  2. Jak vyhledávat na webu z terminálu v systému Linux

  3. Jaká je definice relace v linuxu?