Tôi nên đặt quyền truy cập tập tin nào trên web root?


53

Tôi sử dụng Ubuntu Server 10.10 và đã cài đặt máy chủ web Nginx với apt-get install nginx. Nó tạo ra một trang web mặc định tại /var/www/nginx-default/và thư mục đó có quyền drwxr-xr-x 2 root root.

Khi tôi truy cập trang web mặc định trên http://localhost/tôi nhận được thông báo này trên trang 403 Forbidden.

Làm cách nào để đặt quyền truy cập tệp trên root www để tôi có thể truy cập an toàn vào các trang web? Hoặc có điều gì khác mà tôi phải thay đổi?


LƯU Ý: các toàn bộ đường dẫn đầy đủ đến thư mục cuối cùng của bạn phải được truy cập! Thậm chí không có một thư mục ở giữa.
Lucio

Câu trả lời:


33

Tôi thường dính vào một 755(hoặc rwxr-xr-x) trên web root của mình, nhưng tôi không nghĩ đây là vấn đề bạn gặp phải vì thư mục của bạn đã được đặt thành đó. nginxnên có quyền truy cập vào thư mục của bạn. Câu hỏi sau đó trở thành quyền (hoặc sự tồn tại của) tệp bạn đang cố truy cập. Các tập tin trong thư mục của bạn sẽ cần phải được đọc bởi người dùng nginxđang chạy như. Tôi thường để các tập tin này được đặt thành một 755(giống như thư mục). Bạn có thể thay đổi toàn bộ thư mục bằng cách làm sudo chmod -R 755 /var/www/nginx-default/.

Tuy nhiên, nếu không có tệp chỉ mục trong thư mục, bạn vẫn sẽ gặp lỗi tương tự. Tệp chỉ mục được sử dụng khi bạn yêu cầu thư mục không bật danh sách thư mục. Các tập tin chỉ mục phổ biến nhất là index.html. Mặc định này có thể được chỉnh sửa trong cấu hình của bạn, tuy nhiên, bằng cách sử dụng một cái gì đó như:

location / {
    index index.php;
}

Nếu bạn muốn nginxtạo danh sách các tệp trong thư mục đó cho bạn, chỉ cần bật lập chỉ mục thư mục , như vậy:

location  /  {
  autoindex  on;
}

Không tôi có một index.htmltrong thư mục đó.
Jonas

index.htmlSau đó, bạn có quyền gì?
Jack M.

Cảm ơn, tệp confiugration thực sự được trỏ đến /var/www/và tệp được tạo index.htmlđược đặt vào /var/www/nginx-default/để tôi phải sao chép tệp cp /var/www/nginx-default/index.html /var/www/đó sau đó tôi có thể truy cập trang web bằng trình duyệt web của mình.
Jonas

56

Tôi sẽ đề nghị thay đổi nhóm webroot của bạn thành www-data, người dùng được sử dụng bởi nginx và cả php5-fpm.

Ví dụ:

sudo chown -R "$USER":www-data /webdirectory
sudo chmod -R 0755 /webdirectory

trong đó người dùng của tôi là tài khoản của riêng bạn (cho phép bạn đặt các tệp dễ dàng vào webroot của bạn mà không cần sudo).


Cảm ơn, các lệnh được thực thi mà không có bất kỳ vấn đề nào, nhưng tôi vẫn nhận được 403 Forbiddenkhi truy cập nó bằng trình duyệt web.
Jonas

@Jonas, tôi đề nghị kiểm tra nhật ký lỗi nginx của bạn để xem vấn đề là gì.
Peter Smit

Cảm ơn, tôi đã tìm thấy lỗi, đó là trong nhật ký lỗi. Xem bình luận của tôi để Jacks trả lời.
Jonas

4
Còn những tập tin mới thì sao?
mcont

@MatteoContrini sử dụng chmod 2755 webdirectory/để chúng được lưu trữ với cùng quyền và quyền
rhand
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.