403 Lỗi bị cấm trên Mac OS X Localhost


22

Tôi đã thiết lập Chia sẻ web trong Tùy chọn hệ thống trên Mac OS X 10.6 và nhấp vào liên kết mà nó đưa cho tôi ở đó. Thật đáng tiếc, Apache đã cho tôi lỗi 403 này:

Cấm

Bạn không có quyền truy cập /~myusername/index.html trên máy chủ này.

Nhật ký truy cập hiển thị: 10.0.1.2 - - [30/Jun/2010:16:25:15 -0700] "GET /~myusername/ HTTP/1.1" 403 210

Nhật ký lỗi hiển thị: [Wed Jun 30 16:26:09 2010] [error] [client 10.0.1.2] client denied by server configuration: /Users/myusername/Sites/

Thật kỳ lạ, truy cập http: // localhost hoạt động tốt. Chỉ với hai trong số các thư mục người dùng mà tôi gặp sự cố, thư mục người dùng khác, mới hơn so với nâng cấp hệ thống của tôi, đang hoạt động tốt.

Tôi đã làm việc này trên máy của mình ở Leopard trước đây, vì vậy tôi đã chỉnh sửa mọi thứ vào ~/Sitesnăm 755, điều này không làm được gì cả. Bất kỳ đề xuất? Tôi cho rằng tôi đã làm gì đó với máy của mình, điều này gây ra điều này, vì tôi không thể tưởng tượng được Apple đang làm hỏng thứ gì đó như thế này.

Tôi đã thiết lập PEAR với các hướng dẫn này , nhưng tôi không biết liệu đó có phải là nguyên nhân của nó không.


Xin lỗi nếu đây là một câu hỏi ngớ ngẩn, nhưng chính xác bạn sẽ truy cập URL nào? Tôi hỏi vì URL "/~myusername/index.html" là một số lẻ - nó phải là "~ myusername / index.html" hoặc nó phải là " localhost / ~ myusername / index.html " hoặc một cái gì đó giống. Đơn giản chỉ cần bắt đầu từ / và sau đó thêm ~ myusername có mùi buồn cười. Ngoài việc trả lời (hoặc thay vì) trả lời, bạn có thể truy cập Console.app (/Appluggest/Utilities/Console.app) và tìm apache2 access_log và error_log. Kéo nó lên, có thể xóa màn hình và sau đó thử lại URL của bạn để xem nhật ký lỗi cho bạn biết gì.
Michael H.

@khedron: URL là localhost / ~ myusername / index.html , nhưng lỗi hiển thị /~myusername/index.html part
waiwai933

OK chỉ cần kiểm tra. Nhật ký apache nói gì trong bảng điều khiển (console.app)?
Michael H.

@khedron: Tôi đã đăng quyền truy cập và đăng nhập lỗi trong câu hỏi. Có cái khác không?
waiwai933

1
Tôi có cùng một vấn đề như bạn, và tôi chỉ làm: chmod 777 / Ứng dụng / XAMPP / htdocs / myusername, nó hoạt động với tôi
Wassim Sboui

Câu trả lời:


22

Apple có một tài liệu hỗ trợ cho vấn đề này . Khắc phục vấn đề liên quan đến việc tạo ra một tập tin /etc/apache2/users/yourusername.conf( yourusername là tài khoản tên viết tắt , ví dụ như danielbeck- nó thường là tên của thư mục nhà của bạn trong /Users) với nội dung sau:

<Directory "/Users/yourusername/Sites/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Sau đó, chạy sudo chown root:wheel /etc/apache2/users/yourusername.confvà khởi động lại Apache.


và quá khởi động lại apache của bạn, chỉ cần thực hiện sudo apachectl restarttrong thiết bị đầu cuối của bạn.
nil

15

Để Apache xem tệp, người dùng mà Apache chạy dưới dạng (có thể wwwhoặc _www) phải có quyền truy cập vào các thư mục Trang web của những người dùng này. Có quyền đọc / thực thi quyền truy cập vào nội dung của ~/Siteslà không đủ, bởi vì nó phải được phép đi qua từ /đường dẫn đến ~/Sites. Vì vậy, hãy chắc chắn /, /Users, /Users/myusername, và /Users/myusername/Sitestất cả đều có ít nhất a+xcho phép (các bit thực thi trên thư mục cho phép mà lớp người sử dụng để đi qua các thư mục, ngay cả khi đọc truy cập không được phép).

ls -lde / /Users/ /Users/myusername/ /Users/myusername/Sites

Nếu bất kỳ thư mục nào trong số đó không hiển thị bộ cuối cùng x(thư mục cho "những thư mục khác"), thì hãy sử dụng một cái gì đó như chmod a+x ...để đặt nó cho thư mục đó.

Nếu ACL cho bất kỳ thư mục nào trong số đó cho thấy rằng người dùng wwwđã bị từ chối truy cập cụ thể, thì hãy sử dụng các đối số thích hợp chmodđể sửa ACL.


Bit thực thi được đặt cho tất cả các thư mục đó, nhưng tôi không biết cách kiểm tra xem một người dùng cụ thể có bị từ chối truy cập hay không.
waiwai933

Đó là những gì "e" trong "ls -lde" dành cho. Nó liệt kê các ACL (nếu có) cho mỗi tệp.
Spiff

2
Thay đổi quyền trên / Users / myusername thành chmod 755 đã khắc phục sự cố cho tôi.
Đánh dấu

Không phải lệnh này cung cấp cho người dùng _www quyền truy cập vào thư mục gốc của bạn, cũng như thư mục / Users, v.v.? Điều đó có thể không đúng, phải không? Tất cả những lỗ hổng bảo mật để chia sẻ một trang trong một thư mục? Là hành vi này được ghi nhận ở đâu đó?
Tom Lianza

Trả lời nhận xét của riêng tôi, tôi đã tìm thấy câu trả lời này ( serverfault.com/a/293063/14970 ) cung cấp liên kết đến tài liệu đáng tin cậy về hành vi này: wiki.apache.org/httpd/13PermissionDenied
Tom Lianza

5

Để tham khảo, tôi chỉ giải quyết vấn đề này, và không có câu trả lời nào ở đây hoạt động trong trường hợp cụ thể của tôi. Tôi đã cấu hình máy chủ ảo, nhưng quan trọng hơn, tôi cần các tập tin htaccess của tôi để thực sự hoạt động.

Tôi đã thay đổi trên "AllowOverride none" thành "AllowOverride All" trong tệp /etc/apache2/users/USERNAME.conf của tôi và tất cả các trang web của tôi bắt đầu bị cấm.

Tôi đã thay đổi nó trở lại và sau đó thay đổi nó chỉ cho một trang web trong tệp httpd-vhosts.conf của tôi và chỉ trang web đó bị cấm.

Sau khi xem nhật ký và thấy vấn đề là do viết lại url và thiếu FollowSymLinks, tôi đã quay lại tệp USERNAME.conf. Tôi chuyển "AllowOverride none" thành "AllowOverride All" và thêm "Tùy chọn + FollowSymLinks" trên dòng tiếp theo.

Mọi thứ bắt đầu làm việc. Tôi đến từ việc sử dụng xampp trên windows và nó có rất nhiều cài đặt này đã được đặt trên toàn máy chủ cho những người giả như tôi.


1
cảm ơn rất nhiều, đã dành khá nhiều thời gian để tìm hiểu chuyện gì đang xảy ra, đã không phải
mày mò

1
Đúng, Options +FollowSymLinkslàm việc như một lá bùa.
agarie

2

Tôi gặp vấn đề tương tự: Tài khoản (cũ) của tôi không truy cập được, nhưng tài khoản người dùng khác được tạo sau khi nâng cấp lên Lion hoạt động tốt.

Sau khi đảm bảo /etc/apache2/users/USERNAME.conf của bạn trông như thế này:

<Directory "/Users/USERNAME/Sites/">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

thực hiện một gốc sudo chown: wheel /etc/apache2/users/USERNAME.conf

có vẻ như cài đặt quyền này không được đặt trong quá trình nâng cấp hệ điều hành và người dùng Apache không thể đọc tệp cấu hình và đưa ra lỗi.

Ít nhất điều này đã giải quyết nó cho tôi.


1
Và có thể chạy sudo apachectl restartsau đó.
Arjan

Điều này làm việc cho tôi chạy 10.7.5. Đường dẫn thư mục không trỏ đến root web cục bộ của tôi, một khi tôi cập nhật và khởi động lại apache thì mọi thứ đều hoạt động. Điều kỳ lạ là con đường đã không chính xác trong hơn một năm và đã hoạt động toàn bộ thời gian. Tôi vừa nhận được lỗi hôm nay ra khỏi màu xanh.
supajb

2

cập nhật cho Lion vào tháng 10/2011 tôi cũng phải thêm

UserDir được kích hoạt để /etc/apache2/extra/httpd-userdir.conf giống như thế này:

UserDir enabled 
UserDir Sites

#
# Users might not be in /Users/*/Sites, so use user-specific config files.
#
Include /private/etc/apache2/users/*.conf

<IfModule bonjour_module>
   RegisterUserSite customized-users
</IfModule>

1

Tiếp tục cuộc trò chuyện từ các bình luận câu hỏi ban đầu - Kiểm tra /etc/apache2/httpd.conftệp của bạn . Trên máy của tôi, tôi có cái này:

# User home directories
Include /private/etc/apache2/extra/httpd-userdir.conf

Tôi nghi ngờ của bạn được bình luận ra. Tôi mơ hồ nhớ lại việc thay đổi điều này bằng tay khi chuyển từ 10.5 sang 10.6 và mặc định đã thay đổi.

Điều này có thể rõ ràng, nhưng bạn sẽ phải sử dụng sudođể chỉnh sửa tệp vì nó sẽ được sở hữu bởi root.


1
Không, tôi trông giống hệt bạn.
waiwai933

1

Trường hợp của tôi là XAMPP + Mac OS X 10.7 + Thư mục trong Thư mục Dropbox (tham khảo chéo một câu hỏi khác của tôi trong Stack Overflow)

403 Truy cập Cấm được báo cáo bởi Apache, do đó, tôi đã theo dõi nhận xét trên để thay đổi Người dùng trong /XAMPP/xamppfiles/etc/httpd.conf, từ User nobodysang User my_user_name. Khởi động lại Apache và nó hoạt động tốt.


0

Bạn có thể không bật Index . Nếu bạn không cần phải tạo một tệp chỉ mục ( index.htmlhoặc index.php) hoặc chỉ định rõ ràng tệp, nghĩa là http://localhost/~me/mypage.html.


Xin lỗi, chỉ cần kiểm tra kỹ, tôi nên truy cập localhost / ~ myusername / index.html và có một tệp có tên là index.html trong thư mục Trang web của tôi, phải không? Nếu vậy, thì 403 vẫn xảy ra.
waiwai933

Tôi không nên đến thăm ~myusernametất cả tôi tin. http://localhost/nên chỉ vào /Users/youruser/Sites/.
Josh K
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.