GNU/Linux >> Znalost Linux >  >> Linux

Jak zajistit, aby skript Shell vždy běžel jako root?

Chci vědět, jak vytvořit (pokud je to možné) bash skript, který běží jako root na Debianu bez ohledu na uživatele, který jej spouští, aniž bych žádal o jakoukoli autentizaci.

Tento soubor bude spouštět všechny své příkazy jako uživatel root, ale pouze skutečný uživatel root jej bude moci číst nebo do něj zapisovat.

Potřebuji to, protože chci spouštět příkazy jako swapoff , swapon , apt , atd... Ale přes jinou aplikaci a chci, aby se mě na žádné heslo neptal.

Příkazy budou opraveny (tyto kořenové příkazy budou mít své parametry v souboru, nikoli jako vstup), takže bezpečnostní implikace nejsou zrovna moje starost, ale přijímám i vysvětlení.

Přijatá odpověď:

Nízkoúrovňový způsob, jak mít program vždy spuštěn pod konkrétním UID, je bit setuid v binárním souboru. Takhle např. sudo a su získat oprávnění root, i když je obvykle spouští normální použití.
Obecně ale platí, že systémy podobné Unixu nepodporují setuid skripty , viz:Povolit setuid ve skriptech prostředí

Co však můžete udělat, je nakonfigurovat sudo nebo nějaký jiný takový nástroj, který uživatelům umožní spouštět některé konkrétní soubory s příslušnými právy. To by například umožnilo viceadmin ke spuštění /usr/local/bin/sudoswapon s jakýmikoli argumenty a bez ověření:

viceadmin ALL = NOPASSWD:/usr/local/bin/sudoswapon

Nyní, od sudo se zabývá samotnou změnou oprávnění, sudoswapon může být skript Shell.

Máte pravdu, když poznamenáváte, že skript by si měl dávat pozor na to, jak zachází s argumenty příkazového řádku, a že všechny budou platit gotchas jazyka shellu. Naštěstí sudo filtruje většinu proměnných prostředí, alespoň pokud env_reset možnost je nastavena.


Linux
  1. Jak zpětně zajistit, aby skript běžel jako root?

  2. Jak spustit skript Shell na pozadí?

  3. Jak spouštět skripty Pythonu ze shellu

  1. Nějaký způsob, jak spustit příkazy shellu na Androidu programově?

  2. Paralelní spuštění skriptu shellu

  3. Jak spustit skript shellu při spuštění

  1. Jak zajistit, aby skript Python běžel jako služba?

  2. Spustit příkaz shell v jenkins jako uživatel root?

  3. Mohu zajistit, aby se skript vždy spouštěl jako root?