2011-10-08 31 views
5

Không chắc chắn đây có phải là sự cố cấp phép tệp cấu hình hoặc cấu hình php hay không. Vấn đề tôi đang gặp là khi một tập tin được tải lên thông qua php sử dụng move_uploaded_file() vào thư mục đó có nhóm thiết lập để ubuntuchủ thiết lập để www-data, các tập tin được tải lên chủnhóm quyền thay đổi thành www-data gây ra sự cố cho tập lệnh python của tôi để đi vào và thực hiện tác vụ của nó trên tệp được tải lên.quyền của nhóm và chủ sở hữu là sai khi tải lên tệp php

dụ:

move_uploaded_file($tempFile,$targetSAVE); 

- $ targetSAVE thư mục được thiết lập để:

group: ubuntu 
owner: www-data 
permissions: 0755 

--php tải lên tập tin thay đổi chủ sở hữu nhóm-www-data

new file changes to: 
    group: www-data <-- need this set to *ubuntu* 
    owner: www-data 
    permissions: 0755 

kịch bản --python cần nhóm các tập tin được tải lên thiết lập để ubuntu

làm thế nào tôi có thể cấu hình php để thiết lập quyền sở hữu hoặc nhóm các tập tin được tải lên ubuntu hoặc nếu điều này là một vấn đề linux cho phép tập tin như thế nào tôi có thể sửa cái này không?

Tất cả các thư mục và thư mục con được thiết lập để: nhóm: ubuntu chủ sở hữu: ubuntu phép: 0755 trừ thư mục các tập tin đang được tải lên, điều này được thiết lập để:

group: ubuntu 
owner: www-data 
permissions: 0755 

Trả lời

3

Tìm giải pháp. Sau khi kéo tóc của tôi ra và cố gắng tất cả các phản ứng khác nó hóa ra là rất đơn giản đây là những gì làm việc.

chown -R ubuntu:www-data /var/www/ 
chmod -R 775 /var/www/ 

Sau đó tập lệnh python được thực thi hoàn hảo từ php.

0

Tôi đoán tôi chỉ cần thêm một chỉ thị chirp ở phần cuối của kịch bản PHP, nếu điều đó sẽ làm việc trong trường hợp của bạn. http://us.php.net/manual/en/function.chgrp.php

Tìm trong/etc/passwd để lấy ID số cho người dùng "ubuntu".

Lưu ý từ tài liệu: "Chỉ người siêu người dùng mới có thể thay đổi nhóm tệp tùy ý; người dùng khác có thể thay đổi nhóm tệp thành bất kỳ nhóm nào mà người dùng đó là thành viên".

1

Điều này xảy ra vì PHP chạy khi người dùng chạy máy chủ web. Trong thực tế, tất cả các trang web trên hệ thống của bạn sẽ chạy như người dùng/nhóm này và do đó tất cả đều có quyền truy cập để đọc các tập tin và thư mục của eachother được tạo ra bởi các tập lệnh php.

Cài đặt Apache mod suPHP có lẽ là giải pháp dễ nhất cho vấn đề này. Điều này sẽ cho phép bạn chạy các tập lệnh php trong một máy chủ ảo như một người dùng và nhóm cụ thể. Bạn cũng có thể chạy PHP như một CGI và sử dụng Apache suEXEC nhưng điều này phức tạp hơn một chút để thiết lập suPHP đó. Ngoài ra, bạn chỉ có thể sắp xếp các tệp từ tập lệnh của mình cho người dùng/nhóm thích hợp, nhưng hiệu quả sẽ là máy chủ web không thể đọc/chỉnh sửa các tệp đó nữa khi bạn thay đổi quyền sở hữu chúng.

Các vấn đề liên quan