Fedora 15 PHP exec() не работает
Я не могу запустить исполняемый файл с помощью функции PHP exec().
ОС: Fedora 15
PHP safe_mode выключен
PHP-код:
$exe = "/tmp/defne/./CwCssUGxhjAc";
$result = system( $exe, $retval );
chmod 777
на /tmp/defne
а также /tmp/defne/CwCssUGxhjAc
Я могу запустить его в командной строке:
sudo -u apache /tmp/defne/CwCssUGxhjAc
PHP выдает apache, когда я вызываю whoami через скрипт PHP.
Я могу запускать другие исполняемые файлы, такие как gcc, whoami и т. Д. Через PHP. Но я не могу запустить скомпилированный двоичный файл C/C++.
В журнале ошибок apache написано:
sh: /tmp/defne/./CwCssUGxhjAc permission denied
Selinux включен.
PS: я не хочу отключать selinux. Спасибо за ваши гениальные идеи, если вы предлагаете отключить selinux. Я также могу отключить питание моего компьютера.
1 ответ
SELinux почти наверняка мешает Apache выполнять вещи в /tmp
, Вы можете убедиться в этом, проверив /var/log/audit/audit.log
,
Простое решение - переместить бинарный файл в стандартное место для исполняемых файлов; /usr/local/bin
вероятно, наиболее уместно.
Кроме того, вы можете применить соответствующий контекст файла (bin_t
) в двоичный файл:
sudo semanage fcontext -a -t bin_t /tmp/defne/CwCssUGxhjAc
sudo restorecon -v /tmp/defne/CwCssUGxhjAc