Đã kích hoạt userdir của Apache2 nhưng vẫn không có quyền truy cập


9

Tôi đang cố gắng thiết lập một máy chủ apache trên máy tính xách tay Kubfox 13.04 của mình. Tôi đã cài đặt gói apache2 và sudo a2enmod userdir; sudo service apache2 restart, nhưng khi tôi truy cập http://localhost/~user, nó nói như thế này:

Forbidden

You don't have permission to access /~user on this server.

Apache/2.2.22 (Ubuntu) Server at localhost Port 80

Kết quả của tail /var/log/apache2/access.log

127.0.0.1 - - [02/Aug/2013:16:22:01 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:16:22:02 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:35:30 +0200] "GET /~kaiyin HTTP/1.1" 403 501 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:35:30 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:35:30 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:36:26 +0200] "GET /favicon.ico HTTP/1.1" 404 499 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:36:26 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:21:05:17 +0200] "GET /~kaiyin HTTP/1.1" 403 501 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:21:05:17 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:21:05:17 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"

Kết quả của tail /var/log/apache2/error.log

[Fri Aug 02 21:05:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:05:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:54 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:54 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:59 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /~kaiyin denied
[Fri Aug 02 21:06:59 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:59 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:07:17 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /~kaiyin denied
[Fri Aug 02 21:07:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:07:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico

Bạn có một public_htmlthư mục cho người dùng? Người dùng đang chạy apache có được phép đọc nó không?
jordanm

@jordanm Vâng, tôi đã đặt nó thành 755, cũng đã thử 777.
qed

Câu trả lời:


8

Các public_htmlthư mục cần phải có các quyền như thế này để người dùng mà Apache đang chạy có thể truy cập nó:

$ chmod -R 755 ~/public_html

vẫn không làm việc?

Nếu bạn nhìn vào nhật ký lỗi Apache của mình, bạn có thể thấy một dòng như thế này:

[Thứ Sáu 02 Tháng 8 21:06:59 2013] [lỗi] [client 127.0.0.1] (13) Quyền bị từ chối: quyền truy cập vào / ~ kaiyin bị từ chối

Điều này cho bạn biết rằng Apache không có quyền điều hướng đến thư mục người dùng của bạn (~ kaiyin) trong ví dụ này.

Làm thế nào để khắc phục điều này?

Bạn cần đảm bảo rằng các bit đọc + thực thi được đặt cho một nhóm mà Apache là thành viên hoặc các bit đọc + thực thi khác được đặt trên thư mục của người dùng để Apache có thể truy cập vào public_htmlthư mục bên dưới.

Thí dụ

/home
|-- [drwxr-x---]  /home/sam

/home/sam
|-- [drwxr-xr-x]  /home/sam/public_html

Người giới thiệu


Tôi đã làm điều đó, nhưng tôi vẫn bị cấm 403.
qed

@C giácSprite - theo dõi nhật ký apache ( /var/log/httpd/access.log) và ( /var/log/httpd/error.log) để xem có thông báo bổ sung nào không.
slm

Tôi đã thêm nhật ký vào bài viết.
qed

@C giácSprite - chú ý truy cập bị từ chối trên ~ kaiyin`? Người dùng của Apache không có quyền truy cập vào các thư mục cấp cao nhất của người dùng. Bạn cần đọc quyền + thực thi để nó có thể truy cập chúng.
slm

2
Trên thực tế, bạn gần như chắc chắn không cần 755; 711 hoặc thậm chí 710 nhóm dữ liệu www nên làm cho cha mẹ của public_html; nó cũng sẽ hoạt động trên public_html nếu bạn không cần danh sách tệp, nếu không thì Apache cũng sẽ cần đọc (vì vậy 755/750 thay vì 711/710).
một CVn

1
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root

  <Directory /home/*/public_html>
    AllowOverride All
    Options MultiViews Indexes SymLinksIfOwnerMatch
    <Limit GET POST OPTIONS>
      # Apache <= 2.2:
      #Order allow,deny
      #Allow from all

      # Apache >= 2.4:
      Require all granted
    </Limit>
    <LimitExcept GET POST OPTIONS>
      # Apache <= 2.2:
      #Order deny,allow
      #Deny from all

      # Apache >= 2.4:
      Require all denied
    </LimitExcept>
  </Directory>
</IfModule>

Hãy chắc chắn rằng bạn có các cài đặt chính xác trong /etc/apache2/mods-enabled/userdir.conf. Tôi đã bị từ chối sau khi kiểm tra công khai_html của mình và sau đó quyết định kiểm tra userdir.conf. Tôi nhận thấy có các cài đặt cho các phiên bản apache trước đó, cũng như mới hơn. Tôi biết tôi đang chạy bản mới nhất nên đã bật cài đặt mới hơn và bây giờ tất cả đều hoạt động tốt


0

Ngoài ra, bạn có thể sử dụng /etc/hoststệp để loại bỏ sự cần thiết của URL tạm thời. Nếu có tham chiếu cho URL hoàn chỉnh trong chủ đề hoặc plugin (nếu bạn có), trang web sẽ không hiển thị nội dung ở định dạng phù hợp.

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.