я использую сайт php+mysql на облачном сервере с лампой Ubuntu (amazon ec2). Я использую сессии PHP. пользователь apache php называется www-data.
для каждой сессии (SID) мне нужно создать временную папку, которая является подкаталогом www и имеет идентификатор сессии в качестве имени (непредсказуемый, поэтому не может быть предварительно создан). например: /var /www /fileStore /s35S10nT3Mp /.
позже я получу доступ к файлам в этих папках с помощью функции JavaScript (на стороне клиента).
Я работаю в предположении, что:
- все, что выполняется (или вызывается) с помощью php-кода, будет выполняться под пользователем www-data
- javascript на стороне клиента не может получить доступ к подкаталогу OUTSIDE www (например: /var /outsideFileStore /s35S10nT3Mp /, где webroot = public_html = /var /www)
Я хотел бы ошибиться в одном или обоих из вышеперечисленного, потому что это решило бы мою проблему без дальнейших церемоний. если я не ошибаюсь ни по одному из моих предположений:
У меня есть проблема безопасности с предоставлением пользователю разрешения на запись www-данных (необходимо для php для mkdir новой папки) в подкаталоге www, потому что это оставляет сервер и данные в этих папках слишком открытыми.
Я хотел бы знать, может ли сеанс php запускать (или вызывать) серверный скрипт / процесс, который выполняется под другим пользователем (который получит разрешение на запись в / var / www / fileStore /), а не www-data. этот процесс будет затем создавать (и собирать мусор) эти временные папки.
Следствие: в случае, если это не может быть сделано под Apache, tomcat поможет (если я запустил php под Java, а не http_server)?
следствие 2: что если я запустил сокет-соединение (изнутри php) с сокет-сервером (который у меня есть в c++) и имел сокет-сервер (другой пользователь, очевидно), создававший файл? это перебор?