2013-09-26 139 views
5

Tôi có một máy chủ tập tin và tôi sử dụng mod_autoindex để máy chủ các tập tin. Tôi có một tên người dùng và mật khẩu trong htaccess vì vậy chỉ có một số người có thể truy cập các tập tin. Tôi đã thêm một người dùng khác vào htpasswd nhưng tôi chỉ muốn người dùng đó truy cập một số tệp/thư mục.htaccess mật khẩu bảo vệ tập tin với người dùng khác nhau

Đây là tập tin htaccess của tôi bây giờ:

AuthType Basic 
AuthName "restricted" 
AuthUserFile E:\\path\\to\\.htpasswd 

<Files "filesForAnyUser\\*"> 
    Require valid-user 
</Files> 

<Files "*"> 
Require user admin 
</Files> 

tôi chắc chắn rằng tôi đang làm một cái gì đó sai nhưng tôi không thể tìm thấy bất kỳ tài liệu tốt về điều này.

+0

"filesForAnyUser" là gì? Đó có phải là một thư mục không? –

+0

ya là thư mục có tệp sẽ có sẵn cho bất kỳ người dùng nào –

+0

'E: \\ đường dẫn \\ đến \\. Htpasswd' xem xét việc thay đổi thành' E:/path/to/.htpasswd' bằng dấu gạch chéo ngược tiết kiệm cho bạn một số rắc rối trong một số tình huống cụ thể. – Prix

Trả lời

5

Nếu bạn có thư mục có tên là "filesForAnyUser" và thư mục nơi bạn chỉ có tệp cho quản trị viên, bạn cần tạo 2 tệp htaccess. Một trong "filesForAnyUser":

AuthType Basic 
AuthName "restricted" 
AuthUserFile E:\\path\\to\\.htpasswd 
Require valid-user 

Và một trong những thư mục khác:

AuthType Basic 
AuthName "restricted" 
AuthUserFile E:\\path\\to\\.htpasswd 
Require user admin 
+0

đã hoạt động nhưng tại sao các chỉ thị hoặc không hoạt động? –

+0

@UziTech Cả [Directory] (http://httpd.apache.org/docs/current/mod/core.html#directory) và [Location] (http://httpd.apache.org/docs/current/mod /core.html#location) có ngữ cảnh của cấu hình "máy chủ" và "virtualhost". ** Not ** "htaccess", vì vậy những chỉ thị này không thể được sử dụng trong một tệp htaccess, điều này có ý nghĩa vì việc đặt một tệp htaccess trong một thư mục giống như sử dụng một '' trên thư mục đó. –

+0

có ý nghĩa. Cảm ơn –

1

Vì vậy, đây là giải pháp cuối cùng của tôi cho bất cứ ai khác.

Đặt sau trong thư mục gốc:

AuthType Basic 
AuthName "restricted" 
AuthUserFile E:\\path\\to\\.htpasswd 
Require user admin 

Đặt sau đây trong bất kỳ thư mục mà admin và user1 có thể truy cập các tập tin:

AuthType Basic 
AuthName "restricted" 
AuthUserFile E:\\path\\to\\.htpasswd 
Require user admin user1 #users separated by space or "Require valid-user" if all users 

Nếu bạn muốn cho phép User1 để chỉ truy cập một số tệp nhất định bạn có thể sử dụng <FilesMatch>:

AuthType Basic 
AuthName "restricted" 
AuthUserFile E:\\path\\to\\.htpasswd 
Require user admin 
<FilesMatch "^(doc1.pdf|doc2.txt|doc3.docx)$"> 
    Require user admin user1 #or valid-user 
</FilesMatch> 

Điều này cung cấp cho quản trị viên truy cập vào tất cả các tệp trong thư mục đó nhưng user1 chỉ truy cập vào các tệp được liệt kê trong <FilesMatch>

Lưu ý: Các tệp trong <FilesMatch> là dành cho thư mục hiện tại và bất kỳ thư mục con nào. Tôi không chắc chắn làm thế nào để giới hạn nó để chỉ các thư mục hiện hành.