私はopenldap
(phpldapadmin
)すべてのユーザーをLinux Debianサーバーに同期しており、LDAPユーザーをLinuxユーザーとして追加しようとすると、ユーザーが既に存在します(無効ではないことを知っています)というエラーが発生します。
aabuhasna@qa:/$ who am i
aabuhasna pts/1 2016-06-16 03:38 (XXXXX)
aabuhasna@qa:/$ sudo adduser aabuhasna
[sudo] password for aabuhasna:
adduser: The user `aabuhasna' already exists.
aabuhasna@qa:/$ cat /etc/passwd |grep aabuhasna
aabuhasna@qa:/$
そうしないと、openldap
ユーザーはどのサーバーにもログインできません。私の問題は、ユーザーが自分のLDAP情報を使用して3つのサーバーにのみアクセスできるようにしたいということです。/bin/bash
loginshell
私の質問:
- 回避策としてユーザーを追加して
/etc/passwd
ログインできるようにすることはできますか?可能であれば、正しい追加方法を提案してください。 - オプション1が機能しない場合(にユーザーを追加
/etc/passwd
)、この使用の例外を作成するために変更できるファイルはありますか?
答え1
私はあなたが達成したいことを達成するための2つの方法があることを知っています。 1つ目は、個々のサーバーのモジュールを使用してpam_access
ユーザーごとにアクセスを許可/拒否することです。 2つ目は、pam_check_host_attr
inディレクティブを使用して/etc/pam_ldap.conf
すべてのサーバーでこの機能を有効にし、ユーザーがログインできる必要があるサーバーごとに指定されたユーザーIDに関連付けられている属性と値のペアを作成することです。
ben
たとえば、ホスト名「gargoyle」でこの機能を有効にした後にユーザーがそのホストにログインできるようにするには、属性と値のペア「host:gargoyle」をben
LDAPエントリに追加する必要があります。
答え2
Johnの答えがうまくいくでしょう。
または、filter
構成のステートメントを使用すると、任意のLDAPフィルタでユーザーをフィルタリングできます。nss_ldap
nslcd
filter passwd (|(uidNumber=1234)(gidNumber=1234))
この例では、現在のコンピュータでuidまたはgidが '1234'のユーザーのみを定義します。ここでは、有効なLDAPフィルタを使用できます。 Johnのソリューションとの違いは、これはフィルタリングされたユーザーがそのサーバーに存在しないことです(つまり、getent passwd
そのユーザーに対して何も返されません)。