Как настроить аутентификацию для личного каталога пользователей в Apache?

Я думаю, что вы можете перечислить команды, которые может выполнять другой пользователь, только если вы можете выполнять произвольные команды от имени (ВСЕГО) этого пользователя. Поэтому вместо этого...

В sudoers:

non_sudo_user ALL=(ALL) NOPASSWD: /usr/bin/sudo -l

И перечислить их, запуская от имени не_sudo_user:

for target_user in user1 user2 user3... ; do
    sudo -u "$target_user" sudo -l
done
1
13.09.2018, 14:23
1 ответ

Ключом является директива Limit. Подсказка находится в разделе Directive на странице документации core mod Apache.

При использовании директив или с параметром Require обратите внимание, что первый Require для успешного выполнения разрешает запрос, независимо от наличия других директив Require.

Как оказалось, первое Require, соответствующее рассматриваемому случаю, определяет, как оно будет обработано. С конфигурацией из моего вопроса, а именно:

            <Limit GET POST OPTIONS>
                    Require all granted
            </Limit>
            <LimitExcept GET POST OPTIONS>
                    Require all denied
            </LimitExcept>
            AuthType Basic
            AuthName "Personal HTML"
            AuthUserFile "/usr/share/apache2/passwd/passwords"
            Require valid-user

с простым запросом GET, это Require all grant во второй строке приведенного выше листинга, который делает это. AuthType Basic и другие строки ниже него являются мертвым кодом. Правильный путь:

            <Limit GET POST OPTIONS>
                    AuthType Basic
                    AuthName "Personal HTML"
                    AuthUserFile "/usr/share/apache2/passwd/passwords"
                    Require valid-user
            </Limit>
            <LimitExcept GET POST OPTIONS>
                    Require all denied
            </LimitExcept>

Кстати, вот случай, когда директива Limit игнорируется.

            Require all granted
            <Limit GET POST OPTIONS>
                    AuthType Basic
                    AuthName "Personal HTML"
                    AuthUserFile "/usr/share/apache2/passwd/passwords"
                    Require valid-user
            </Limit>
            <LimitExcept GET POST OPTIONS>
                    Require all denied
            </LimitExcept>

Первая строка завершается успешно и авторизует запрос.

0
28.01.2020, 00:55

Теги

Похожие вопросы