2011-12-29 3 views
2

В настоящее время я нахожусь на ssh на удаленной системе CentOS 5.6, которая запускает веб-сервер Apache. Мне нужно использовать двоичный файл poppler pdftohtml, который, к сожалению, в настоящее время не установлен на этой машине. Поэтому я загрузил пакет poppler и построил его под своей пользовательской папкой. С II утра не системный администратором, я не делалPHP shell_exec, разрешен отказ на выполнение скрипта оболочки -rwxrwxrwx

make install 

и у меня есть все мои скомпилированные файлы под

/users/myfolder/poppler-0.18.2/ 

файл, который мне нужно выполнить через PHP shell_exec() является

/users/myfolder/poppler-0.18.2/utils/pdftohtml 

Если я выполню его через мой ssh ​​bash, я получаю правильный вывод. Если я, вместо того, поставить эту строку на скрипт:

echo shell_exec("https://stackoverflow.com/users/myfolder/poppler-0.18.2/utils/pdftohtml"); 

Я получаю следующий вывод:

sh: /users/myfolder/poppler-0.18.2/utils/pdftohtml: Permission denied 

Я попытался установить 777 права доступа к файлам, которые в настоящее время являются -rwxrwxrwx. Я также заметил, что использование shell_exec("whoami"); приводит к «apache». Не следует ли apache выполнить сценарий, если права доступа к файлу - rwxrwxrwx?

Я также знаю, что установка poppler через make install решит проблему, но поскольку это предназначено для тестирования, я хотел бы избежать «заражения» системы вне моей личной папки до завершения тестирования.

Спасибо всем, кто поможет!

+0

Не CentOS также использует SELinux? – mario

ответ

8

Просто потому, что файл является исполняемым для пользователя, не означает, что пользователь действительно может выполнить файл. Пользователь должен также иметь возможность «добраться до» файла: пользователю требуется разрешение на выполнение для всех «родительских каталогов», в вашем случае для/users, myfolder, poppler-0.18.2 и utils.

Предполагая, что пользователи/пользователи - это то же самое, что и/home, каждый должен иметь + x. Оттуда вы можете установить его: просто сделать chmod o+x /users/myfolder /users/myfolder/poppler-0.18.2 /users/myfolder/poppler-0.18.2/utils

(Примечание: Это сделает возможным все выполнить этот двоичный файл, а не только Apache.)

Если пользователь апача и вы разделяете группу , было бы лучше использовать chown каталог poppler и все, что принадлежит этой группе, и установить g + x вместо o + x.

+0

Очень четкий ответ. Благодарю. –

+0

Проклятье, это сумасшествие. два дня расследований были потрачены впустую (спасибо большое). Я видел пару подобных ответов здесь, но они не упоминали, что каталоги всех родителей должны иметь разрешения на выполнение. Только это сработало для меня. – heximal

Смежные вопросы