Web サーバーのユーザーに /etc/shadow ファイルへの読み取り権限を与えるにはどうすればよいでしょうか?

Web サーバーのユーザーに /etc/shadow ファイルへの読み取り権限を与えるにはどうすればよいでしょうか?

Nginx PAM モジュールを使用して、ローカル Linux ユーザーが認証 (ログイン) できるようにしたいと考えています。CentOS 7 サーバーを使用しています。具体的には、以下を実行しようとしています...

READMEngx http auth pam モジュールの場合:

モジュールは Web サーバー ユーザーとして実行されるため、使用される PAM モジュールは、root でなくてもユーザーを認証できる必要があります。つまり、pam_unix.so モジュールを使用してユーザーを認証する場合、Web サーバー ユーザーが /etc/shadow ファイルを読み取れるようにする必要があります (Debian のようなシステムでは、www-data ユーザーを shadow グループに追加できます)。

最初の質問は、この場合、「nginx」が Web サーバーのユーザーであるかどうかです。2 番目の質問は、Web サーバーのユーザーが /etc/shadow ファイルを読み取るための権限を設定するにはどうすればよいかということです。誰か、うまくいった手順を教えてもらえませんか。オンラインで見つけた多くのチュートリアルに従ってみましたが、うまくいきませんでした。現在、ローカル Linux ユーザーがログインできるようにしたいサイトにアクセスすると、認証プロンプト (ユーザー名とパスワードの入力) が表示されますが、ローカル Linux ユーザーの資格情報を入力すると、認証されずに、再度入力するように求められます。

ありがとうございます。どんな助けでも大歓迎です。必要であればさらに情報を提供することもできます。

編集:

私はまず以下の手順でソースからnginxを構築し、nginxでPAMを設定しました。ここnginx.conf ファイルの上部に次の行を追加して、PAM モジュールを含めました...

load_module /etc/nginx/modules/ngx_http_auth_pam_module.so;

また、nginx.conf の location ディレクティブに以下の 2 行を追加しました...

auth_pam "Secure area";
auth_pam_service_name "nginx";

nginx サービス ファイルのディレクトリ '/etc/pam.d' に次の 2 行があります...

auth required /usr/lib/security/pam_unix.so
account required /usr/lib/security/pam_unix.so

を見てREADMEngx http auth pam モジュールの場合、Web サーバー ユーザーに /etc/shadow ファイルへの読み取り権限を与える必要があることがわかります。これを行うには、まず「shadow」という新しいグループを作成しました。次に、Web サーバー ユーザー (nginx であると想定) を「shadow」グループに割り当てました。次に、/etc/shadow ファイルの権限を変更しました。これを行うために実行したコマンドは次のとおりです...

groupadd shadow
usermod -a -G shadow nginx
chown root:shadow /etc/shadow
chmod g+r /etc/shadow

これを実行した後、次のコマンドを使用して/etc/shadowファイルの権限を確認しました。

ls -l /etc/shadow

そして、出力は次のようになりました...

----r-----. 1 root shadow 1390 Aug 30 12:51 /etc/shadow

nginx ユーザーのパスワードも設定しました。繰り返しになりますが、認証が必要なサイトにアクセスすると、nginx のユーザー名とパスワードを入力すると、再度入力を求められます。

答え1

すでに nginx-module-auth-pam がインストールされ、設定されていると思います/etc/pam.d/nginx

そうでない場合は、rpmファイルをインストールしてください。すべてが自動的に設定されます。言い換えれば、/etc/shadowアクセス設定を手動で調整する必要はありません。実際、してはならないpam を使用している場合は調整してください/etc/shadow。このファイルにはユーザーの (ハッシュ化された) パスワードが含まれているため、セキュリティ上の理由から、このファイルへのプロセスやプログラム (pam 以外) またはユーザー (root 以外) のアクセスを許可しないでください。

サブスクリプションをお持ちの場合:

yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install nginx-module-auth-pam

そうでない場合: 取得または構築nginxモジュールauth-pam-rpm

なぜあなたの質問だけに答えないのですか? あなたが挙げた例は Debian のようなシステム用ですが、CentOS 7 などの Redhat のようなシステムでは設定方法が少し異なります。

このモジュールの追加設定例については、GitHub

こちらもご確認くださいnginx-extras.getpagespeed.com/ より追加の構成例については、こちらをご覧ください。

関連情報