Sziasztok!
A következő problémában kérek segítséget tőletek. Van egy virtual domain-es levelező szerverem, ami egyben webkiszolgáló is (debian squezee). Az apache-hez fel van telepítve a suhosin. Postfixadmin használnék és a create-mailbox.php fájlból meghív egy fájlt (/usr/sbin/mail_profile.sh) ami beállítja a quota-t elkészít egy SPAM mappát, és a felhasználóhoz tartozó squirrelmail beállításokat is. A kérdéses sor a create-mailbox.php-ban:
system("sudo /usr/sbin/mail_profile.sh ".$fDomain." ".strtolower($_POST['fUsername'])." ". $quota." ".$fName);
Ha létrehozok egy postafiókot a következő hibaüzenetet kapom:
system() has been disabled for security reasons in /usr/share/postfixadmin/create-mailbox.php on line 233, referer: https://postfixadmin.akarmi.hu/create-mailbox.php
Az /etc/sudoers-ban a következő szerepel:
www-data www=NOPASSWD: /usr/sbin/mail_profile.sh
Ha a php.ini-ben a disable_functions alól kiszedem a system-et, akkor az apache error.log-ban a következő hibaüzenetet kapom:
sh: /sudo: No such file or directory
Innét nem jutok tovább. Hiába google-öztem, gondolkodtam. Ha az /etc/sudoers-be megadom a saját felhasználom és kézzel felparaméterezem a script-et akkor lefut rendesen
- 4267 megtekintés
Hozzászólások
Használj teljes elérési utat, pl: /usr/bin/sudo
- A hozzászóláshoz be kell jelentkezni
Ha letiltod a system() hivast, nyilvan nem fog menni. (egyebkent le szoktak tiltani, sok disznosagra jo..)
A shell mas beallitasokkal (mas $PATH ertekkel, mas environmenttel) indul, ezert nem talalja a sudo parancsot.
Esetleg megprobalhatod /usr/bin/sudo-ra cserelni a system hivasod elejen a sudo-t..
--
Always remember you’re unique, just like everyone else.
- A hozzászóláshoz be kell jelentkezni
Beállítottam a system hivást /usr/bin/sudo-val a helyzet változatlan. A shell scriptem úgy kezdődik, hogy #!/bin/bash nem volt valami shell változtatás a squezee-nél vagy akkor is kell mennie?
- A hozzászóláshoz be kell jelentkezni
ls -l /bin/bash
mit mond?
Egyébként
phpinfo()
segítségével nézd meg, hogy milyen környezeti változókkal fut a php. Próbáld meg parancssorból (php-cli -vel) lefuttatni a kérdéses system() hívást, nézd meg, hogy ott működik -e (cli -ből meghívva a php megörökli a bejelentkezett felhasználód környezeti változóit). Ha működik, akkor csak be kell állítani az Apache -ból futó php -nek a környezeti változókat (hint: apache setenv).
- A hozzászóláshoz be kell jelentkezni
Szia!
A www-data www=NOPASSWD: /usr/sbin/mail_profile.sh sorban a www=NOPASSWD: nél a www ugye a hostname?
________________
Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz, 4 Gb ram, x86_64 2.6.39-gentoo-r3
- A hozzászóláshoz be kell jelentkezni
Besuzol www-datara, majd sudo /usr/sbin/mail_profile.sh -ra mit mond?
- A hozzászóláshoz be kell jelentkezni
Sudoersben a requiretty opcio tiltasa?
---
Apple iMac 20"
áéíóöőúüű
- A hozzászóláshoz be kell jelentkezni
Én nem így csinálnám, nem adnék system() jogot ehhez.
A user táblába felvennék egy pl. mailbox_created, vagy valamilyen beszédes nevű timestamp mezőt, default null, táblamérettől függően pedig tennék rá akár indexet is. Az új user-nél ez default null lenne, és cron-ból akár percenként futna a mailbox létrehozó script, lekérné a null-os sorokat, aztán ha létrehozta akkor update-elné ezt a mezőt current_timestamp-pel. Persze saját db.user-rel, aminek annyi joga van, hogy ezt a táblát tudja olvasni és a mailbox_created mezőt update-elni.
- A hozzászóláshoz be kell jelentkezni