2016-02-08 2 views
0

У меня есть сценарий оболочки, который при запуске делает некоторые папки и файлы копий в них. У меня также есть node.js «программа», которая делает именно то, что делает сценарий оболочки.PHP: shell_exec сценарий оболочки по сравнению с shell_exec программа на linux (разрешения)

Когда я вызываю скрипт оболочки с использованием PHP shell_exec, я получаю ошибку разрешения, которая в основном говорит о том, что сценарий оболочки не имеет прав на создание папок. Я сделал некоторые поисковые запросы и выяснил, что мне нужно будет установить пароль без пароля и кто знает, что еще обмануть, чтобы исправить это.

Тем не менее, я сделал то же самое с узлом, и когда я запустил «программу» узла, вызвав его с помощью shell_exec, как и раньше, и кажется, что этот «программа» этого узла имеет права делать что угодно.

В чем причина этого? Почему «программы» имеют привилегии при запуске, но сценарии оболочки нет? Это законный способ сделать, например, операции с файловой системой (вызов чего-то, сделанного с помощью node.js из PHP)? Потому что это раздражает, чтобы играть с разрешением, если я попытаюсь выполнить те же операции с PHP.

ответ

0

Php был запущен apache или что-то подобное и запускается под пользовательскими www-данными или http или что-то в этом роде. Возможно, ваш сервер узлов работает под пользователем piwwoli. piwwoli может создать каталог под/home/piwwoli, но www-data не может.

Обе программы и shellscripts имеют привилегии при запуске, вопрос в том, кто их запускает.

Вы можете создать каталог, который записываемые как на WWW-данных и piwwoli:

mkdir /path/to/dir 
chmod o+w,g+w /path/to/dir 
chown piwwoli.www-data /path/to/dir # maybe you'll need sudo for this to work 
Смежные вопросы