Portál AbcLinuxu, 17. července 2025 18:36
Zdravím,
potřebuji zajistit aby neprivilegovaný uživatel mohl restartovat/reloadovat apache.
Původne jsem myslel že stačí jednoduchý bash script kterým zavolám /etc/init.d/httpd reload nebo killall -HUP httpd. Bohužel u scriptů nefunguje set uid bit.
Takže jsem se jal vše přepsat vše do C a výsledné binárce nastavit chmod ag+s ./httpdreload.
Zkoušel jsem:
Napiš vhodný shell skript a nastav sudo a spouštěj ten sktript přes něj.
Ale pokud chci aby službu mohl spoštět např. uživatel APACHE (samozřejmě pokud splní určité podmínky) tak mi to moc nepomůže.
Abych byl konkrétní snažím se udělat si systém na vytváření virtualhostů. Vše mi šlape podle mých představ jen znovunačtení konfigurece se mi nedaří.
Nastuduj si jak funguje sudo
Pokud ti stačí suid skripty tak se také mrkni na superl, ale toto řešení ti nedoporučuji.
Moc netuším, co to tu zkoušíte za řešení, ale nestačilo by Vám použít sudo?
Funkce system() provádí příkazy přes shell, který shazuje práva.To je taková obrana proti takovým chytrákům, co si myslí, že napíšou suid wrapper a přitom neví která bije :) To je donutí jít na abclinuxu, tam se zeptat a my už jim to rozmluvíme a doporučíme třeba to sudo.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.