php - exec, de hogyan?

php - exec, de hogyan?

Hozzászólások

Sziasztok,

Van nehany userem akik csak webezesre hasznaljak a gepet, ftp chrootolva es apache2+php4, azt akarom most megoldani, hogy phpval ne tudjanak semmit futtatni a szerveren, netudjanak korulnezni etc. viszon nekem mukodjon minden mert en hasznalom :)

olvasgattam a temaval kapcsolatban php.net -en es talaltam is hasznalhato megoldast de nemtudom, hogy ez mennyire jo... a gond az, hogy a usereket zavarja a (www.domain.hu/~user) ~ -jel es nemis akarom , hogy minden domainrol elerheto legyen a weboldaluk ezert bevannak aliasolva a megfelelo domain ala es apacheba beallitottam egy ilyet azokra a konyvtarakra amire az alias mutat:
[code:1:00b934e52d]
<Directory /home/user1/web>
Options MultiViews SymLinksIfOwnerMatch
AllowOverride ALL
Order allow,deny
Allow from all
php_admin_value safe_mode on
php_admin_value register_globals Off
</Directory>

<Directory /home/ixodes/web>
Options MultiViews SymLinksIfOwnerMatch
AllowOverride ALL
Order allow,deny
Allow from all
php_admin_value safe_mode off
php_admin_value register_globals Off
</Directory>
[/code:1:00b934e52d]
ezutan nallam tovabbra is megy minden php ahogyan eddigis es az usernel szerintem nem, csak annyi kerdesem lenne hogy ez a safe_mode on -ra allitasa mindenfele szerveren torteno parancs futtatasat tiltja? szoval ennyi beallitassal valoban nemtud semmit futtatni?

én még néhány dolgot beleraknék:
php_admin_value open_basedir /home/user1/web
php_admin_value disable_functions ini_set,phpinfo
php_admin_value enable_dl = Off
meg ilyenek.
safe mode-ban csak azokhoz a filékhez fér hozzá, amelyeknek uidja megegyezik a futó process uidjával, www-data és tsai.

Szia!

Nem vagyok nagy PHP-guru, sőt, kimondottan nem értek a nyelvén, de talán segíthetek. Ha a safe_mode-ot bekapcsolod, akkor a PHP-d nem engedélyezi, hogy az aktuálisan futó parancsállományod tulajdonosán kívül más is dolgozhasson a parancsállományod által kezelendő fájllal. Vagyis ha a felhasználó, amely elindítana egy parancsot, nem tulajdonosa a parancsfájlnak, akkor nem tudja elindítani.

Már látom, más is hozzászólt! Egyébként nem egyértelműen írtam, ha a parancs, amit el akar indítani a felhasználó, nem ugyanolyan tulajdonosú, mint a PHP-s parancsállomány, akkor nem tudja elindítani. Szóval ennyi, de ezt az előttem szóló értelmesebben elmondta. Az open_basedir jó ötlet!

meg ha nem okoz gondot, akkor noexec-el (nálam: noexec,nosuid,nodev,noatime) csatold fel azt a partíciót ahol ezeknek a felhasználóknak a területe van, nehogy eszükbe jusson feltölteni valami futtatható filét...

koszi a helpet

azt akarom hogy pl ls /home -t se tudjon megnezni

az open_basedir nem engedelyez neki valamit?

open basedir az hasonló mint a chroot, csak php-hez. annál "feljebb" levő filékhez nem fér hozzá phpből, tehát futtatni sem tudja azokat. a noexec pedig az open basedir-ben levő filéken akadályozza meg a végrehajtást.
ez persze csak php, ha az apache-ból közvetlenül végre lehet hajtani valamit, az ellen nem véd :)

ha nem szeretnéd hogy filéket tudjon kilistázni, akkor viszont le kell tiltanod a directory meg filesystem funkciókat is!

safe_mode_gid,
safe_mode_exec_dir,
safe_mode_include_dir

ezeket is nezegesd meg, ill http://hu.php.net/exec korul is erdemes tiltogatni.

t

Csak annyit mondanék, hogy minden rendszer annyira biztonságos, mint a leggyengébb része. Nem biztos, hogy jó ötlet egy privilegizált PHP usert csinálni.