Apache: Không đủ 755 để thiết lập symlink hoặc bí danh trên Apache httpd trên Mac OS 10.5?


15

Trên máy Mac OS 10,5 của tôi, tôi muốn thiết lập một thư mục con của ~/Documentsnhư ~/Documents/foo/htmlhttp: // localhost / foo .

Điều đầu tiên tôi nghĩ đến là sử dụng Bí danh như sau:

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options Indexes FollowSymLinks MultiViews

    Order allow,deny
    Allow from all
</Directory>

Điều này đã cho tôi 403 Cấm. Trong error_log tôi đã nhận:

[error] [client ::1] (13)Permission denied: access to /foo denied

Thư mục con trong câu hỏi có quyền truy cập chmod 755. Tôi đã thử chỉ định các lượt thích như http: //localhost/foo/test.php , nhưng điều đó cũng không hoạt động. Tiếp theo, tôi đã thử tuyến đường liên kết tượng trưng.

Đi vào /Library/WebServer/Documentsvà thực hiện một liên kết tượng trưng đến ~/Documents/foo/html. Tài liệu gốc có

Options Indexes FollowSymLinks MultiViews

Điều này vẫn khiến tôi bị cấm 403:

Symbolic link not allowed or link target not accessible: /Library/WebServer/Documents/foo

Tôi cần gì khác để thiết lập điều này?

Giải pháp :

$ chmod 755 ~/Documents

Nói chung, thư mục được chia sẻ và tất cả thư mục tổ tiên của nó cần phải được xem bởi wwwngười dùng dịch vụ.


Cảm ơn rất nhiều vì đã đăng giải pháp này - điều này thực sự giúp ích cho tôi sau khi dành nhiều năm tìm kiếm câu trả lời
Tomba

@Tomba Không có vấn đề.
Eugene Yokota

Câu trả lời:


24

Tôi cá rằng một số thư mục phía trên thư mục bạn muốn truy cập không có quyền cho phép Apache truy cập thư mục đó. Trở thành người dùng mà Apache đang chạy ( sudo -i -u apachehoặc bất cứ thứ gì), sau đó thử thay đổi vào thư mục quan tâm và lsnó. Nếu bạn không thể (như mong đợi), thì hãy thử truy cập vào các thư mục phía trên nó, từng cái một, cho đến khi một thư mục cho phép bạn vào. Thư mục con đó là thư mục cần o+xđặt. Thu thập, rửa sạch, lặp lại theo yêu cầu.


1
Có, nếu 'Trang web' đang hoạt động, bạn có thể gặp sự cố đúng trên Tài liệu, nếu 'Trang web' không hoạt động, bạn có thể gặp sự cố đúng trên thư mục người dùng của mình (điều này có thể xuất hiện với filevault)
bán kính

1
~ / Tài liệu là 700.
Eugene Yokota

Nếu tôi chạy sudo -i -u _wwwtrên OS X (vì người dùng Apache là _www trong cấu hình apache mặc định trên OS X), thì whoamitôi vẫn nhận được tên người dùng của mình chứ không phải _www
Jason S

Để thay đổi hoàn toàn cho người dùng khác bằng sudo, tôi sử dụng chính '-': sudo - www-data(cho Ubuntu).
Alexis Wilke

2

Sử dụng +FollowSymlinks

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options +Indexes +FollowSymLinks +MultiViews

    Order allow,deny
    Allow from all
</Directory>

Theo httpd.apache.org/docs/2.0/en/mod/core.html#options , "nếu tất cả các tùy chọn trên chỉ thị Tùy chọn được đặt trước ký hiệu + hoặc -, các tùy chọn sẽ được hợp nhất." Làm thế nào điều đó sẽ giúp ~ / Tài liệu được 700?
Eugene Yokota

AFAIK FollowSymLinks không kích hoạt tùy chọn, chỉ cho phép nó được kích hoạt ở cấp thấp hơn của hệ thống phân cấp thư mục.
Dave Cheney

1
Đây là câu trả lời chính xác cho tôi. Tôi đã sửa đổi tệp conf trong / etc / apache2 / users và cho phép FollowSymLinks (không có +). Nhớ khởi động lại.
siêu sáng

1

Kiểm tra để đảm bảo rằng vault tệp không được kích hoạt. Tôi đã từng gặp vấn đề tương tự. Tôi đã thử mọi thứ khác mà tôi có thể tìm thấy. Không có gì làm việc. Nhưng sau một giờ cố gắng để tìm ra điều này, tôi nhớ lại rằng tôi đã bật tệp vault.

Vô hiệu hóa nó đã giải quyết vấn đề.


1

Kiểm tra quyền sở hữu symlink. Vì bạn đang dùng Mac OS X, nên có thể thay đổi chủ sở hữu symlink. trong /Library/WebServer/Documentsviệc phải làmls -l

Nếu symlink của bạn ~/Documents/foo/htmlđược gọi foovà có quyền như

lrwxr-xr--  1 root  wheel 27  2 Nov 17:00 foo -> /Users/username/Documents/foo/html

Sau đó, theo mặc định trên OS X Apache chạy với tư cách là người dùng _www và nhóm _www, vì vậy trong trường hợp được đề cập ở trên, nó sẽ không thể đi qua liên kết tượng trưng đến ~/Documents/foo/html

Chạy man 8 chowntrên thiết bị đầu cuối hệ thống của bạn, hoặc nhìn vào nó trực tuyến người đàn ông chown

Bạn sẽ thấy rằng việc sử dụng -htùy chọn sẽ thay đổi quyền sở hữu của chính liên kết tượng trưng, ​​thay vì tệp mà nó trỏ đến (đó là nguồn). Sau đó, bạn có thể làm một cái gì đó như

sudo chown -h :_www foo 

Điều này sẽ thay đổi simlink thành

lrwxr-xr--  1 root  _www 27  2 Nov 17:02 foo -> /Users/username/Documents/foo/html

và nhóm Apache _www sẽ có thể duyệt qua liên kết.


0

Kiểm tra thư mục / Users của bạn (ls -l / Users) để xem các quyền đối với người dùng của bạn (ai đó).
Ngoài ra, thư mục 'Trang web' có sẵn chính xác trên localhost / ~ ai đó không?


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.