質問: ldapからのsshログインを/ homeディレクトリを持つユーザーに制限します ユーザーを認証するために現在activedirectory環境に接続されている複数のユーザーwebページをホストするapacheサーバー(rhel 6)があります。サーバーは、ユーザーが/ home/<user>/public_htmlフォルダーに配置したコンテンツを自動的にホストするために使用されます。また、chrootを使用するようにこのサーバーを構成しているため、ユーザーはホームフォルダーの外にあるサーバー上の他のコンテンツを参照できません。ログインスクリプトは、ユーザーのホームフォルダーを作成しません。特定のユーザーのみがこのサーバーからwebページをホストできるようにするため、これらは手動で作成されます。問題は、現在、すべてのユーザーがサーバーにログインでき、/ homeフォルダーに移動する代わりに(存在しないため)、自動的に/に移動することです。これにより、グループが読み取りアクセス権を持っているサーバー上のファイル/フォルダーを表示するためのアクセス権が与えられます。これはセキュリティ上の懸念事項であり、ログインを/ homeディレクトリを持つユーザーに制限したいと思います。 adグループまたはユーザーのリストを認証済みとして指定することは望ましくありません。そのリストは非常に長くなり、pamモジュールを作成するよりも簡単かもしれませんが、管理が難しい場合があるためです。ldapログインをすでに/ homeディレクトリを持っているユーザーのみに制限する方法はありますか? pamオプションまたはドキュメントに何も見つかりません。
回答: 解決策1:モジュールpam_homecheckをpamできますユーザーのホームディレクトリがあるかどうかを確認し、見つからない場合はセッションを拒否するだけです。問題は、opensuseでのみ利用可能ですが、ダウンロードしたパッケージからpam_homecheck.soを配置し、ldd pam_homecheck.soを使用して依存関係をインストールできます。解決策2: /etc/bashrcに以下のコンテンツを追加できますが、shell/puttyログインにのみ適用されます[[ $home == / ]] && { echo "error: home dir not define.."; exit 1; } 解決策3:ホームディレクトリが設定されていない場合は拒否します(ubuntuでテストされ、以下の手順で動作します)winscpを拒否するにはaptitude install libpam-script faoriteエディターで「/etc/pam.d/common-auth」を開き、以下のエントリを追加しますauth optional pam_script.so # add at the last お気に入りのエディターで「/usr/share/libpam-script/pam_script_auth」を開き、以下のエントリを追加します#!/bin/bash pam_home=$(awk -v u=$pam_user -f: '($1 == u ){print $6}' /etc/passwd) if [[ $pam_home == / ]]; then echo "error: home dir not define.." kill -9 $ppid # force fully kill winscp pid else /usr/lib/openssh/sftp-server fi shell/puttyログインを拒否するにはデフォルトの場所、つまり「/usr/share/libpam-script/pam_script_auth」から同じスクリプトを参照して実行します。または、ログ「tail -f /var/log/auth.log」で確認できます。