10

У меня есть php-скрипт, который загружает файл в каталог под названием "uploads". Единственный способ заставить загрузку работать, если я это сделаю:

chmod 777 uploads

Я знаю, что это не правильно, но я не знаю, что я должен делать, чтобы заставить его работать.

Информация о сервере: T1-Micro Amazon Linux AMI 2013.03 на Amazon EC2

Вопросы:

  • Как мне узнать, к каким пользователям нужен доступ ... например, как называется имя пользователя для Apache или веб-сервера?

  • Какой уровень доступа мне нужно предоставить и какую команду я бы использовал для этого.

Спасибо!

Изменить: я нашел много ответов на переполнение стека, которые я буду исследовать. Например

https://stackoverflow.com/questions/3642241/php-file-upload-permissions

https://stackoverflow.com/questions/10842880/setting-permissions-in-php-on-server

https://stackoverflow.com/questions/8948537/permission-denied-when-attempting-to-upload-file-with-php

Спасибо

1 ответ1

17

Попробуйте запустить:

ps -ef | grep apache

и посмотрите на самый левый столбец, соответствующий серверу Apache. Это пользователь, который запускает Apache, и по наследству также PHP.

Измените права собственности на каталог загрузки для этого пользователя и немного ограничьте права доступа, например, если пользователь веб-сервера имел www-data , принадлежащие группе с тем же именем (используя пример пути /var/www/uploads):

sudo chown www-data:www-data /var/www/uploads
sudo chmod 755 /var/www/uploads

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

Если вы уже загрузили файлы / каталоги, вы можете изменить владельца и права доступа к ним. Для этого, перейдя от 777 к более разумным разрешениям, вы можете запустить:

sudo chown -R www-data:www-data /var/www/uploads
sudo chmod -R 755 /var/www/uploads
sudo find /var/www/uploads -type f -exec chmod -x {} \;

Не "вслепую" запускайте команды, если вы не понимаете каждую их часть. Проверьте man страницы, если что-то неясно (это должно быть довольно просто).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .