Portál AbcLinuxu, 30. dubna 2025 21:23

PHP potřetí(exec)

15.2.2007 15:08 | Programování

Tak už jsem vyřešil skoro všechny základní problémy v projektu, který v PHP-ku píšu. Poslední věc, se kterou si tak trošku nevím rady, je jak zajistit spouštění systémových příkazů jako iptables, nebo service ...(které může spouštět jenom root).

Dělat to přes sudo NOPASSWD se mi zdá docela hloupé, protože tím udělam docela díru do systému, která by se sice myslím dala nějak zalepit pomocí SELinuxu, ale do toho se mi nechce.

Existuje tedy nějaká dobrá metoda, jak to v PHP zajistit?

Předem děkuji za rady.

       

Hodnocení: 33 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

15.2.2007 15:41 maleprase | skóre: 28
Rozbalit Rozbalit vše Re: PHP potřetí(exec)
Odpovědět | Sbalit | Link | Blokovat | Admin
sudo s NOPASSWD klidne pouzij ale ke kazdemu systemovemu prikazu si udelej skript ktery bude delat jen ciste to co chces vcetne osetreni vstupu

takze udelas treba restart_httpd.sh ve kterym bude jen /sbin/service httpd restart a do sudoerrs das neco jako

uzivatel ALL = NOPASSWD: /usr/local/bin/restart_httpd.sh

tim uzivateli povolis pres sudo poustet jen /usr/local/bin/restart_httpd.sh
15.2.2007 15:44 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: PHP potřetí(exec)
Odpovědět | Sbalit | Link | Blokovat | Admin
Vzhledem k tomu, že tyto aplikace musí běžet pod rootem, obejít to nijak nepůjde, to by to zabezpečení v Linuxu nebylo k ničemu. A jak spustit aplikaci pod rootem, aniž bych byl root? V úvahu připadá suid bit, a to není zrovna nejlepší varianta, a pak sudo. To už je lepší. Můžete si třeba vytvořit nějakého uživatele a sudo povolit jemu, z PHP pak spouštět pod daným uživatelem sudo -u. Samozřejmě je nutné počítat s tím, že kdokoliv může vidět zdrojové kódy toho PHP (nebo nějaký konfigurační soubor, kam uložíte jméno/heslo toho uživatele), může spouštět i ten sudo skript.
15.2.2007 16:10 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: PHP potřetí(exec)
hmm, a takáto možnosť?

ls -l /usr/sbin/suid-php:
-r-sr-x--- root suidphp  suid-php
head -1 aaa.cgi:
#/usr/sbin/suid-php
Josef Kufner avatar 15.2.2007 16:18 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: PHP potřetí(exec)
Spouštět php s právy roota je poněkud, ehm, nebezpečné. Řešení se specializovanými, jednoduchými a neprůstřelnými scripty + sudo je asi nejbezpečnější.
Hello world ! Segmentation fault (core dumped)
15.2.2007 18:11 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: PHP potřetí(exec)
njn, php sux, ale riešenie to je :-)

potom by ešte bolo možné vytvoriť virtual host s iným User ako celý apache, a sudo povoliť len na tohoto užívateľa.

15.2.2007 16:23 maleprase | skóre: 28
Rozbalit Rozbalit vše Re: PHP potřetí(exec)
tohohle bych se bal.

pokud to ma jet jako webova sluzba, pak by musel uzivatel apache(httpd), pod kterym je spusten webserver, byt ve skupine suidphp a to znamena, ze kdokoliv, kdo muze vytvaret skripty na tom stroji, se dostane k pravum roota
15.2.2007 16:24 maleprase | skóre: 28
Rozbalit Rozbalit vše Re: PHP potřetí(exec)
skripty jako ve smyslu muze vytvaret dynamicky generovane stranky
15.2.2007 16:22 Abraxis
Rozbalit Rozbalit vše Re: PHP potřetí(exec)
Odpovědět | Sbalit | Link | Blokovat | Admin
Take jsem totez resil (sprava uzivatelu, skupin, kvot apod. pres webovske rozhrani) a nic lepsiho nez sudo jsem nenasel.

Jen bych doporucil napsat si vlastni funkci: MyExec($command) ktera teprve udela exec ('sudo "'.AddSlashes($command).'"'); (pripadne zalogovani a dalsi veci) a dusledne volat to vzdy pres tuhle funkci.
15.2.2007 16:39 Honza
Rozbalit Rozbalit vše Re: PHP potřetí(exec)
Odpovědět | Sbalit | Link | Blokovat | Admin
Ja podobny problem kdysi resil pres suid C-ckovi wrapper pro perl-ovy skript s zapnutym 'tainted mode'. Perl s touto variantou nejak pocita, jak moc je to bezpecny ale ale otazka...

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.