Назад | Перейти на главную страницу

Apache, как сделать каталог доступным только локально, а также использовать аутентификацию с допустимым пользователем

Я пытаюсь сделать это с помощью require local и require valid-user, но похоже, что require local переопределяет действительного пользователя. сделать локальный доступ не нужно аутентифицировать

AuthName "Authenticate"
AuthType Basic
AuthUserFile "/home/tmp/.htpassword"
Require local
Require valid-user

Когда я удаляю требуемый локальный, аутентификация работает. но он разрешает доступ извне. Итак, как настроить это, чтобы я мог разрешить локальный доступ только с допустимым пользователем

Начиная с Apache 2.4 у вас есть возможность использовать RequireAll Директива группировки:

<Directory /some/path>
    AuthName "Authenticate"
    AuthType Basic
    AuthUserFile "/home/tmp/.htpassword"
    <RequireAll>
       Require valid-user
       Require ip 192.168.1       
    </RequireAll>               
</Directory>

Без этого явного RequireAll директива Apache использует неявный RequireAny где для предоставления доступа достаточно успешного соответствия только одному из требований.

В Apache 2.2 у вас был менее детальный контроль, но можно было использовать Satisfy директива, чтобы указать Apache, как следует комбинировать директивы Allow и Require.

<Directory /some/path>
    AuthName "Authenticate"
    AuthType Basic
    AuthUserFile "/home/tmp/.htpassword"
    Require valid-user
    Order allow,deny
    Allow from 192.168.1       
    Satisfy All                
</Directory>

Для этого требуется как аутентифицированный пользователь, так и клиентский IP-адрес из вашего локального диапазона: в этом примере192.168.1.0/24.