Đặt quyền chính xác để tải lên tệp


12

Tôi có một tập lệnh php tải tập tin lên một thư mục có tên là "tải lên". Cách duy nhất tôi có thể khiến tải lên hoạt động là nếu tôi làm:

chmod 777 uploads

Tôi biết điều này không đúng nhưng tôi không biết tôi phải làm gì để nó hoạt động.

Thông tin máy chủ: T1-Micro Amazon Linux AMI 2013.03 trên Amazon EC2

Câu hỏi:

  • Làm cách nào để tìm hiểu những gì người dùng cần truy cập ... ví dụ: tên người dùng cho apache hoặc máy chủ web là gì?

  • Tôi cần đưa ra mức truy cập nào và tôi sẽ sử dụng lệnh nào để làm điều đó.

Cảm ơn!

Chỉnh sửa: Tôi tìm thấy rất nhiều câu trả lời về stack overflow mà tôi sẽ nghiên cứu. Ví dụ

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

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

/programming/8948537/ allow-denied-whoen-patorrowing-to-upload-file-with-php

Cảm ơn

Câu trả lời:


20

Hãy thử chạy:

ps -ef | grep apache

và nhìn vào cột ngoài cùng bên trái tương ứng với máy chủ Apache. Đây là người dùng đang chạy Apache và do thừa kế cũng là PHP.

Thay đổi quyền sở hữu thư mục tải lên cho người dùng này và hạn chế quyền một chút, ví dụ: nếu người dùng máy chủ web www-datathuộc nhóm cùng tên (sử dụng đường dẫn mẫu /var/www/uploads):

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

(hoặc bất kỳ quyền nào bạn muốn trong trường hợp này). Tôi sử dụng sudotrong các lệnh ví dụ - Tôi không biết chính xác các hệ thống EC2 được thiết lập như thế nào để có được các đặc quyền siêu người dùng.

Nếu bạn đã tải lên các tệp / thư mục, bạn cũng có thể muốn thay đổi quyền sở hữu và quyền đối với chúng. Để làm điều này, đi từ 777các quyền hợp lý hơn, bạn có thể chạy:

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 {} \;

Đừng "mù quáng" chạy các lệnh nếu bạn không hiểu từng phần của chúng. Kiểm tra các mantrang nếu có bất cứ điều gì không rõ ràng (nó sẽ khá đơn giản).


Cảm ơn. Điều này đã giúp rất nhiều. apache là người dùng. Cả hai lệnh sudo chown và sudo chmod đều hoạt động.
fun_programming

Giải pháp rõ ràng và đơn giản, Cảm ơn rất nhiều. Bây giờ tôi không cần sự cho phép rủi ro 777 nữa
lhrec_106
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.