Možno ste sa už stretli s tým, že je potreba nejaký shell script pustiť pod užívateľom root. Pokiaľ pracujete priamo v konzole, nie je to problém. Stačí pridať pred príkaz sudo (napr: sudo ./moj_script.sh), prípadne sa prepnúť na roota (príkaz su, prípadne sudo su) a v prípade nutnosti zadať heslo ručne. Problém je, keď chceme takýto script umožniť spustiť niekomu, kto nevie heslo alebo sa bude spúšťať z iných scriptov, kedy nie je možné heslo ručne zadať.
Jednou možnosťou, ako toto vyriešiť je nastavenie bitu set uid a roota ako ownera pre script. Táto zmena užívateľa ale nie je dokonalá a zmení sa iba vykonávajúce uid ale script tým nezíska práva roota, čiže tento spôsob je nepoužiteľný. Dôvodom prečo je to tak, je hlavne bezpečnosť a fakt, že tento spôsob zmeny užívateľa je určený pre zníženie práv (napr z roota na usera) pre vykonanie scriptu.
Postupovať treba inak. Stačí nechať daný script vykonať pomocou príkazu sudo, teda:
sudo /cesta/ku/scriptu
Sudo ale štandardne bude vyžadovať zadanie hesla, ktoré sa ale dá vypnúť menovite pre konkrétne scripty a užívateľov editáciou sudoers príkazom:
visudo
Do editora pridajte na koniec:
meno_uzivatela ALL = NOPASSWD: /cesta/ku/scriptu
Týmto sa zabezpečí, že príkaz sudo nebude pre daného užívateľa a script vyžadovať heslo. Taktiež dajte pozor na to, že sudoers sa smie editovať iba príkazom visudo. A v neposlednej rade treba scripty dobre zabezpečiť, aby ich nemohol neikto upraviť a tým získať kontrolu nad serverom.
Od Sylvi dňa Máj 14, 2014 | Odpovedať
Ahoj, prosím ta nevedel by si mi povedať čo by mohlo byť teoreticky zle, keď mám skript (fungujúci len v linuxe v grasse), ale ked ho lauchnem neotvorí sa nič? Trošku som už zúfalá.