vlastni spousteci rc skript

Dan Lukes dan at obluda.cz
Tue Aug 13 13:36:23 CEST 2024


On 13.8.2024 11:20, Petr Macek wrote:
> potrebuji vytvorit vlastni /usr/local/etc/rc.d script

> Skript musi spoustet a ukoncovat vice php kolektoru/skriptu.

> Mam ale problem s tim, ze vsechny procesy jsou spustene jako uzivatel 
> root a to samozrejme nechci. Potrebuji je spustit jako uzivatel apache 
> nebo cacti. Kdyz si ale zkusim s timhle hrat a pridat usera do 
> command_args, tak se mi to cele rozbiji, protoze dany uzivatel nema 
> prava pro zapis pidfile a output_file.

Na to nejde odpovedet uplne obecne. Zalezi jestli spousteny program ty 
soubory chce vytvaret (a pri ukoncovani rusit) nebo zda se spokoji s 
tim, ze jen meni jejich obsah. V druhem pripade je resenim mu je dopredu 
vytvorit, v prvnim pripade nikoliv.

A dale, zda je nebo neni ovlivnitelne kde spousteny script ten PID a 
nebo output file vytvari. V prvnim pripade mu vyrobis adresar, kde 
potrebna prava mit bude a rc.d scriptu jen reknes, kde se PID soubor 
vytvari, v druhem pripade je tahle cesta uzavrena.

Co se spousteni vice deamonu v ramci jednoho rc.d scriptu muze inspiraci 
poskytnout spousteci script od portu net/quagga

Ten ale vsechno spousti jako root, takze o tomhle se v nem poucit nelze.

Spousteni "jako nekdo jiny" se zaridi napriklad pomoci

cacti_flow_collector_user=TEN_USER

ale to neresi, ze kazdy ten daemon se ma poustet jako neco jineho.


V zasade ten run_rc_command "$1" co je na konci potrebujes volat 
vickrat, pro ruzne daemony s ruzne neastavenymi promennymi.

To ale neresi ten zakladni problem - jestli spousteny script dokaze 
bezet kdyz mu PID soubor dopredu vytvoris. Pokdu cely zhavaruje, kdyz se 
mu to nepovede (protoze soubor uz existuje) tak mas zakladnejsi problem 
nez ten, o kterem je dosud rec.

Pokud to co spoustit jsou tvoje PHP scripty, tak reseni z uplne jine 
strany je spoustet je jako superuzivatel a v ramci jejich kodu se prav 
aktivne vzdat volanim posix_setuid().

Takze moznych reseni je vic, vyber toho optimalniho zalezi na tom jestli 
spoustis svoje scripty jejichz chovani muzes ovlivnit, a pokud je 
ovlivnit nemuzes, tak jak se chovaji ...

Pokdu jsi dobre seznameny se shellem, tak prostuduj v /etc/rc.subr 
funkcni run_rc_command

Muze ti to ukazat nektere triky, ktere lze pri reseni pouzit.

Dalsi moznosti jak vyresit "pravovy problem" by mohl nabidnout chroot 
nebo jail.

Dan


More information about the Users-l mailing list