web-dev-qa-db-ja.com

LDAPとNFSを使用して一元化されたホームディレクトリとユーザー認証を設定するにはどうすればよいですか?

LDAPを使用してユーザーを認証し、ホームディレクトリを同じくサーバー上にあるNFSディレクトリに保存するようにサーバーを構成しようとしています。

つまり:サーバー上でディレクトリを共有します:

/nfsexport      10.0.2.0/24(rw,async,no_subtree_check,fsid=0,crossmnt)\
            *.em(rw,async,no_subtree_check,fsid=0,crossmnt)
/nfsexport/homes    10.0.2.0/24(rw,async,no_subtree_check)\
            *.em(rw,async,no_subtree_check)

/etc/fstabを編集して、クライアントにマウントします。

server1:/homes      /home/users nfs4    bg  0   0

そして、ファイル/etc/pam.d/loginおよび/etc/pam.d/lightdmの最後に次の行を追加します。

session required pam_mkhomedir.so skel=/etc/skel umask=0022

これで、ログイン時に/home/users/ldapuserの下にホームディレクトリが作成されます。しかし、ログインできず、サーバー上にホームディレクトリが作成されていません。私は次のアプローチを試しました:

  1. NFSではなく、ローカルにホームディレクトリを作成します。それは機能し、所有者とグループは正しいです。しかし、それは一元化されていません。
  2. サーバー上の/home/usersのアクセス許可を777に変更します。NFSでも機能しますが、最適なソリューションではありません...後でアクセス許可を755に変更しようとしましたが、ユーザーは自分に書き込むことができません。所有者とグループがnobodyとnogroupに設定されているため、ホームディレクトリ

では、openLDAPで/home/usersの下に、最初のログイン時にユーザーとグループの所有権に応じてホームディレクトリを自動的に作成するにはどうすればよいですか?または、少なくとも後で、最初にログインした後、権限が777に変更されている間に変更しますか?

または:ホームディレクトリとユーザー認証を一元化する別の方法はありますか?

2
ViggieSmalls

これは、NFSプロトコルでのユーザー識別の問題です。それがどのように機能するかは、使用しているNFSのバージョンによって異なります。

NFSv3では、ユーザー名とパスワードはプロトコルの一部ではありません。代わりに、UID番号とGID番号はです。マシンaでUID = 1000のユーザーがbartと呼ばれ、マシンbで同じuidを持つユーザーがhomerと呼ばれる場合、bartはによって作成されたファイルを読み取ることができます。マシン上のユーザーhomerb。これが、NFSを使用するときにUID同期が一般的に良い考えである理由の1つです。

ただし、NFSv4はこれの多くを変更しました。 NFSv4では、UID番号だけでなく、ユーザーとグループnameがネットワーク経由で送信されます。これが正しく機能するために、NFSv4プロトコルはいくつかの点を大幅に変更しました。

  • このプロトコルでは、すべてのユーザー名がすべてのマシンに存在する必要があります。つまり、クライアントにユーザーbartがある場合、サーバー必須にもユーザーbartがあります(それらのUIDは異なる場合があります)。それらのいずれかが上記のユーザーを欠いている場合、物事はnobodyおよび/またはnogroupユーザーとグループにフォールバックします。
  • プロトコルには「ドメイン」の概念があります。これはデフォルトでドメイン名(つまり、実行しているマシンのFQDNからホスト名を引いたもの)に基づいていますが、任意の文字列にすることができます。ドメインは、ユーザーのセットが異なるマシンを分離するために使用されます。クライアントのドメインがサーバーのドメインと一致しない場合、システムは、マシンaのユーザーbartが完全に異なるbartであると見なします。マシン上b。

詳細については、rpc.idmapd(8)のマニュアルページ(IDマッピングプロトコルのLinux実装について説明しています)を参照してください。

最近まで、明示的に要求しなかった場合、ほとんどのLinuxディストリビューションはデフォルトでNFSv3になりました。ただし、数年後、デフォルトはNFSv4に変更されています。

物事を機能させるには、2つのオプションがあります。

  1. NFSv3に戻します。これは、nfsvers=3マウントオプションを使用して行うことができます。
  2. rpc.idmapdが期待どおりに機能しない理由を理解し、機能するまでそれをいじります。

抵抗が最も少ないパスは明らかに1です。ただし、NFSv4には、NFSv3の機能セットに比べて多くの便利な機能があり、それを捨てるとそれらが失われます。

1
Wouter Verhelst

LDAPユーザーとしてログインできますか? #ldapsearch -xを使用して、#ldapsearch-d1と同様にチェックできます。 「d」はデバッグを意味し、「1」はレベルです。

応答がない場合は、IPと名前を/ etc/hostsファイルに追加することをお勧めします。また、/ etc/openldap/ldap.confファイルが正しく、正しい証明書ディレクトリを指していることを確認できます。

LDAPに接続すると、autofsユーティリティを利用してユーザーのホームディレクトリを自動的にマウントできます。

/etc/auto.masterファイルを変更し、/ etc /auto.usersを作成する必要があります

LDAPを接続して認証し、次のステップに進むには、ここで一度に1つのステップを実行すると思います。

0
cole