2013-09-26 2 views
5

У меня есть файловый сервер, и я использую mod_autoindex для сервера файлов. У меня есть имя пользователя и пароль в htaccess, поэтому только определенные люди могут обращаться к файлам. Я добавил другого пользователя в htpasswd, но мне бы хотелось, чтобы этот пользователь обращался к некоторым файлам/папкам.htaccess пароль защищает файлы с разными пользователями

Вот мой файл .htaccess Сейчас:

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

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

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

Я уверен, что я делаю что-то неправильно, но я не могу найти хорошую документацию по этому вопросу.

+0

Что такое "filesForAnyUser"? Это папка? –

+0

ya Это папка с файлами, которые должны быть доступны любому пользователю –

+0

'E: \\ path \\ to \\. Htpasswd' рассмотреть возможность изменения его на' E:/path/to/.htpasswd', используя обратную косую черту. избавите вас от некоторых проблем в некоторых конкретных ситуациях. – Prix

ответ

5

Если у вас есть папка с именем «filesForAnyUser» и папка, в которой у вас есть файлы только для администратора, вам необходимо сделать 2 файла htaccess. Один в "filesForAnyUser":

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

И один в другой каталог:

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

, который работал, но почему не работают директивы или ? –

+0

@UziTech Оба [Каталог] (http://httpd.apache.org/docs/current/mod/core.html#directory) и [Местоположение] (http://httpd.apache.org/docs/current/mod /core.html#location) имеют контексты конфигурации «server» и «virtualhost». ** Не ** «htaccess», поэтому эти директивы не могут использоваться в файле htaccess, что имеет смысл, поскольку размещение файла htaccess в каталоге похоже на использование '' в этом каталоге. –

+0

имеет смысл. благодаря –

1

Так вот мое окончательное решение для всех остальных.

Вставьте следующий в корневой папке:

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

Поместите следующий в любую папку, где администратор и user1 может получить доступ к файлу:

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

Если вы хотите, чтобы user1 на доступ только некоторые файлы, которые вы можете использовать <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> 

Это дает администратору доступ ко всем файлам в этой папке, но user1 только доступ к файлам, перечисленным в <FilesMatch>

Примечание: Файлы в <FilesMatch> предназначены для текущей директории и любого подкаталога. Я не уверен, как ограничить его только текущим каталогом.

Смежные вопросы