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