現在、htpasswdから作成されたパスワードファイルを使用して認証するApacheサーバーがあります。そのように構成されています:
AuthType Basic
AuthName "Secured Site"
AuthUserFile "/etc/Apache2/users.passwd"
これを変更してローカルシステムアカウントを介して認証し、さらに指定したグループのローカルシステムアカウントのサブセットのみに制限するにはどうすればよいですか?
David Zによって提案されているように、mod-authnz-externalを使用できます。たとえば、 pwauth で使用します。
Debianまたはその派生物を実行している場合:
apt-get install libapache2-mod-authnz-external pwauth
a2enmod authnz_external
構成に追加
<IfModule mod_authnz_external.c>
AddExternalAuth pwauth /usr/sbin/pwauth
SetExternalAuthMethod pwauth pipe
</IfModule>
そして、ディレクトリセクションまたは.htaccessファイル:
AuthType Basic
AuthName "Login"
AuthBasicProvider external
AuthExternal pwauth
Require valid-user
# or
# Require user jules jim ...
最後に、Apache2ctl restart
またはservice Apache2 reload
を使用して構成を再ロードします。
このドキュメント も参照してください。
mod_auth_pam
のようなものを調べたいと思うかもしれません。 PAMは「PluggableAuthenticationModule」システムであり、標準のLinux(これはLinuxだと思います)システムのログインメカニズムは、PAMに依存して認証を行います。
別のオプションは mod_authnz_external
で、これは/etc/shadow
ファイルを直接参照してアカウントを認証します。
[〜#〜]編集[〜#〜]:どうやらmod_auth_pam
は(残念ながら)もはやメンテナンスされていないため、おそらくmod_authnz_external
より良い賭けだろう...
Apacheモジュール mod_auth_pam
はまさにこれを行います。モジュールを有効にすると、構成ファイルは次のようになります。
AuthType Basic
AuthName "secure area"
require group staff
require user webmaster
そして、あなたはすべて準備ができています。