GNU/Linux >> Znalost Linux >  >> Linux

Příkaz Bash :(){ :|:&};:spustí procesy vedoucí ke smrti jádra. Můžete vysvětlit syntaxi?

:(){ :|:& };:

..definuje funkci s názvem : , který se sám vytvoří (dvakrát, jedno potrubí do druhého) a sám se vytvoří na pozadí.

Se zalomením řádků:

:()
{
    :|:&
};
:

Přejmenování : funkce na forkbomb :

forkbomb()
{
    forkbomb | forkbomb &
};
forkbomb

Takovým útokům můžete zabránit pomocí ulimit pro omezení počtu procesů na uživatele:

$ ulimit -u 50
$ :(){ :|:& };:
-bash: fork: Resource temporarily unavailable
$

Trvaleji můžete použít /etc/security/limits.conf (alespoň na Debianu a dalších), například:

* hard nproc 50

To samozřejmě znamená, že můžete spustit pouze 50 procesů, možná budete chtít toto zvýšit v závislosti na tom, co stroj dělá!


To definuje funkci nazvanou : který se volá dvakrát (kód:: | : ). Dělá to na pozadí (& ). Po ; definice funkce je hotová a funkce : začíná.

Takže každá instance :začíná dvě nové :a tak dále... Jako binární strom procesů...

Napsáno v prostém C, to je:

fork();
fork();

Linux
  1. Rozdíl mezi operátory Bash [[ Vs [ Vs ( Vs ((?

  2. Rozumíte vykřičníku (!) v Bash?

  3. Vysvětlete možnosti příkazu Readlink?

  1. 3 Linuxové příkazy pro vypnutí systému a budete to moci udělat snadno

  2. Průvodce příkazem Linux „Top“.

  3. Spuštění funkce uživatelského prostoru z prostoru jádra

  1. Příkaz „eval“ v Bash?

  2. Můžete spustit Xcode v Linuxu?

  3. Jak si mohu vybavit argument předchozího příkazu bash?