Налаштування правильних дозволів для завантаження файлів


12

У мене є скрипт php, який завантажує файл у каталог під назвою "uploads". Єдиний спосіб я можу змусити завантажувати роботу, якщо це зробити:

chmod 777 uploads

Я знаю, що це неправильно, але я не знаю, що я повинен зробити, щоб змусити його працювати.

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

Запитання:

  • Як дізнатися, яким користувачам потрібен доступ ... наприклад, що таке ім'я користувача для apache чи веб-сервера?

  • Який рівень доступу мені потрібно надати і яку команду я би використовував для цього.

Дякую!

Редагувати: Я знайшов багато відповідей на переповнення стека, які буду досліджувати. Наприклад

/programming/3642241/php-file-upload-permissions

/programming/10842880/setting-permissions-in-php-on-server

/programming/8948537/permission-denied-when-attempting-to-upload-file-with-php

Дякую

Відповіді:


20

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

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сторінки, якщо щось незрозуміле (це повинно бути досить простим).


Дякую. Це дуже допомогло. apache - користувач. Команди sudo chown і sudo chmod обидва працюють.
fun_programming

Чітке та просте рішення, велике спасибі Тепер мені більше не потрібен дозвіл на ризик 777
lhrec_106
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.