Выполнить код PHP от другого пользователя

rafaello

Новичок
Доброго дня!
Ребята, подскажите!
Есть код, который выполняется по крону, но так же его надо выполнять через браузер тоже.
Этот код содержит
PHP:
unlink($em_file['msg']);
Апач работает как www-data
Сам удаляемый файл принадлежит к другой группе (pmta : root или pmta : pmta) два варианта.
Получаю ошибку
HTML:
unlink(/etc/pmta/inbound/0005c06746ebc1e0.msg): Permission denied in .....
Дополнительно пробовал предварительно вводить
PHP:
chown($em_file['msg'], 'www-data');
chmod($em_file['msg'], 0777);
бесполезно тоже не работает, потому что не от root выполняется.
Также пробовал как описано здесь вводить строку
Форматирование (BB-код):
www-data ALL=(ALL:ALL) NOPASSWD: /var/www/roundcubemail/pmta-cron.php
но тоже не дало эффекта.
Подскажите, как сделать, чтобы и безопасно было и чтобы код выполнялся?
Повторюсь, код должен работать и от крона и в браузере (обычный файл .php)
 
У roundcube есть api, наверное, надо его использовать, а не напрямую в файлы лазить?
 
Вобщем если долго мучаться, что нибудь получится.
решил вопрос вот так
PHP:
$file = '/etc/pmta/inbound/my-site.ru/0005c05785c419ae.msg';
$text = 'sudo unlink '.$file;

exec ($text);
 
Если MDA складывает файлы в одну папку, сделай ей
setfacl -m "u:www-data:X,d:u:www-data:rwX"
 
пробовал уже. Этот MDA под названием PowerMTA не работает с папками, если они ему не принадлежат..... Или pmta : pmta или pmta : root , других вариантов нет.
А так спасибо за подсказки!
Спасибо всем!
 
Она так и останется, просто будет дополнительная запись в ACL. Хотя, если MDA настолько бешеный, что как SSH, кроме 0600 ничего не принимает, сделайте тупой скрипт для перемещения файлов в какую-то другую папку.
 
Сверху