GNU/Linux >> Znalost Linux >  >> Linux

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

Buďte opravdu opatrní:skripty v kombinaci s setuid jsou nebezpečné!

Nejprve se prosím podívejte na tuto otázku/odpovědi, zejména na tuto odpověď a bezpečnostní varování.

Pokud přesto chcete spustit skript s setuid set, pak můžete napsat krátký program v C jako obal a nastavit setuid bit na zkompilovaném binárním souboru.

Příklad obálky:

int main(void) {        
    setuid(0);
    clearenv();
    system("/absolute/path/to/your/script.sh");
}

Jiné řešení pomocí sudo (zde zmíněno):

  1. Jako root zabraňte zápisu (a možná i dalšímu) přístupu k vašemu skriptu:

    chown root /absolute/path/to/your/script.sh
    chmod 700 /absolute/path/to/your/script.sh
    
  2. Ověřte, že skript nemůže nahradit nikdo kromě root , např. úpravou přístupových práv nadřazené složky:

    chown root /absolute/path/to/your/
    chmod 755 /absolute/path/to/your/
    
  3. Upravte přístupová práva sudo v /etc/sudoers s visudo :

    ALL    ALL = (root) NOPASSWD: /absolute/path/to/your/script.sh
    

    Více podrobností o nastavení (např. omezení přístupu na konkrétní uživatele nebo skupiny) lze nalézt v manuálové stránce sudoers.

Poté mohou všichni uživatelé spustit skript jako root bez hesla:

sudo /absolute/path/to/your/script.sh

Je to podobné jako u výše uvedeného řešení wrapper/setuid.


Nejjednodušším a nejbezpečnějším způsobem je použití bitů SETUID v oprávněních souboru. Tímto způsobem budou oprávnění příkazů zvýšena na oprávnění vlastníka souboru.

abyste zabránili skriptu ve vydání, nenastavujte zápis pro všechny bity.


Linux
  1. Jak zrychlit tento sed skript?

  2. Spusťte skript Python přes crontab

  3. nemůže zdrojový skript v aktuálním adresáři

  1. Nelze vytvořit menuconfig

  2. Jak mohu spustit program jako root pomocí správce oken?

  3. Jak spustit bash skript?

  1. Může být skript spustitelný, ale nečitelný?

  2. Může být soubor .sh malware?

  3. Proč nemohu tento soubor smazat jako root?