sudo probléma

Fórumok

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

Hozzászólások

Használj teljes elérési utat, pl: /usr/bin/sudo

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.

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).

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

Besuzol www-datara, majd sudo /usr/sbin/mail_profile.sh -ra mit mond?

Sudoersben a requiretty opcio tiltasa?

---
Apple iMac 20"
áéíóöőúüű

É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.