Възможно ли е да има два файла с пароли в Apache2?

Мога ли да имам две директиви AuthUserFile в конфигурационен файл apache2/sites-enabled/000-default?

    <Location /repo/trac>
      AuthType Basic
      AuthName "Trac"
      AuthUserFile /etc/apache2/passfile1
      AuthUserFile /etc/apache2/passfile2
      Require valid-user
    </Location>

Искам потребителско име/парола за два типа потребители.

  • DEV - има достъп до SVN и Trac
  • NOM - има достъп само до Trac

Имам две възможности: да запазя отделни файлове с пароли за Trac и Svn и да ги включа поотделно, или да имам 2 файла с пароли в 1. Поставям DEV в друг NOM и включвам само 1 за svn и включвам два под местоположението на trac.


person Community    schedule 10.05.2012    source източник
comment
Защо искате да ги поставите в различни файлове? Може да има по-добро решение, ако посочите целта си.   -  person gpojd    schedule 10.05.2012
comment
Актуализирах въпроса, благодаря!   -  person    schedule 10.05.2012


Отговори (2)


Трябва да преместите всичко в един файл с парола и след това да използвате групи, за да контролирате достъпа до определени ресурси. Можете да създадете /etc/apache2/groups със съдържание по реда на:

DEV: bob alice
NOM: norm fred bart

И след това променете конфигурацията си, така че да изглежда така:

<Location /repo/trac>
  AuthType Basic
  AuthName "Trac"
  AuthUserFile /etc/apache2/passfile
  AuthGroupFile /etc/apache2/groups
  Require group DEV NOM
</Location>

Това би позволило на членовете на групите DEV и NOM да имат достъп до този ресурс.

Ако наистина искате да използвате няколко файла с пароли, вижте документацията за mod_authn_alias, който има пример, който прави точно това.

person larsks    schedule 10.05.2012
comment
мисълта ви е, че не е възможно да включите два файла, както направих аз? - person ; 11.05.2012
comment
Искам да кажа, че ако целта ви е да позволите на различни групи хора да имат достъп до различни ресурси, най-доброто ви решение е да използвате средството, което е проектирано да прави точно това нещо... но вижте моята актуализация. - person larsks; 11.05.2012
comment
груповият начин е по-добър, съгласен съм :) - person ; 11.05.2012

От документацията можете всъщност да имате няколко файла с пароли. Номерът е да използвате AuthnProviderAlias

https://httpd.apache.org/docs/2.4/mod/mod_authn_core.html

Във вашата глобална конфигурация:

(както е посочено от @RickyLevi, AuthnProviderAlias ​​не може да се появи във vhosts)

<AuthnProviderAlias file file1>
    AuthUserFile "/www/conf/passwords1"
</AuthnProviderAlias>

<AuthnProviderAlias file file2>   
    AuthUserFile "/www/conf/passwords2"
</AuthnProviderAlias>

Във вашия vhost:

<Directory "/var/web/pages/secure">
    AuthBasicProvider file1 file2
    AuthType Basic
    AuthName "Protected Area"
    Require valid-user
</Directory>

https://httpd.apache.org/docs/2.4/en/mod/mod_auth_basic.html#authbasicprovider

Доставчиците се запитват по ред, докато доставчикът намери съвпадение за заявеното потребителско име, в който момент този единствен доставчик ще се опита да провери паролата. Неуспешната проверка на паролата не води до предаване на контрола на следващите доставчици.

person Pierre-Olivier Vares    schedule 16.12.2019
comment
mmm <AuthnProviderAlias> cannot occur within <VirtualHost> section предполагам, че този отговор може да работи, когато file1 и file2' do act as a "provider" ? like sitename-dev`, тъй като те ще бъдат включени глобално за всички сайтове на сървърите?... - person Ricky Levi; 12.07.2021
comment
Възможно е да трябва да дефинирате глобални псевдоними на доставчика, след което да използвате този, който искате във вашия виртуален хост. С други думи, дефинирайте глобални, site1, site2, ... доставчици в global conf, след това използвайте AuthBasicProvider global site1 във вашия първи vhost, AuthBasicProvider global site2 във вашия втори и т.н. Ще се опитам да отделя малко време, за да тествам това. - person Pierre-Olivier Vares; 13.07.2021