$PATH を OpenLDAP 属性に設定

$PATH を OpenLDAP 属性に設定

$PATHOpenLDAPユーザー(CentOS6 / 7)にこれを設定する必要があります。 LDAP.profile.bashrcクライアントシステムではなくLDAPサーバーのLDAP属性なので、ユーザーがホストにログインするたびに設定されますssh。クライアント側には何もなく、LDAPサーバーだけがあります。可能ですか?どうすればいいですか?

ベストアンサー1

LDAPディレクトリのみお店LDAP クライアント層が必要なデータ (例pam_ldap:)するそれと関係があります。 NetWare / ActiveDirectoryとは異なり、ログインスクリプトをディレクトリのユーザー属性として持つことは他の環境では標準ではなく、そのようなスクリプトの[パス]を格納する標準属性はありません(labelledURI候補にもかかわらず)。

PAM + NSSを使用すると、LDAPを指すことができるいくつかの「データベース」のみがサポートされます(パスワード、グループなどは参照)。nsswitch.conf(5))それらのどれもこれを容易にしません。

どちらもありませんPADLpam_ldap...でもないnss-pam-ldap基本属性の作成に加えて、柔軟なタイプのLDAP属性処理が提供されます。getpwent() password構造フィールド。

ただし、「クライアントに何もない」要件を満たすことはできませんが、いくつかの回避策があるかもしれません。

  1. pam_execまたはを使用するpam_scriptとログインの子プロセスとして実行されるため、環境の変更に直接影響を与えることはできませんが、一部のスクリプトを作成して、PATH常にその項目または末尾に.profile(健全性要件に応じて)正しい内容を表示させることができます。

  2. /etc/profileLDAPからユーザー属性を取得して適切に設定するために使用されます(これを上書きするのを防ぐのは難しいPATHかもしれません)。.profile

  3. 変数は、前に付けられた属性のpam_unix乱用を許可してサポートするように修正されました(例:PADL、AFAICTには適用されません)。loginShellPATH=/opt/thing/bin /bin/bash

  4. 修正済みpam_umask、Linux PAMpam_umask追加情報の処理「umask = nnnn、ulimit = nnnn」などのgecosフィールドでは、ここにいくつかの前例があります。

  5. pam_ldapLDAP属性をPAM「データ」として保存するように変更します。pam_set_data()そして、それはpam_get_data()他のPAMモジュールでそれを処理するために使用されます(以前はこれを行いました。私の場合は、LDAP属性の詳細を使用してSQLユーザーデータベースから要求時にユーザーを作成することでした)。pam_envここに良い候補があります。

  6. PAM「プロジェクト」にも同様の概念があります(pam_set_item()/ pam_get_item())小さなデータ項目セットの場合(PAMデータの以前の概念は、任意の名前/値データに関するものです)pam_envサポートする@{PAM_itemname}環境値を設定するには、次の構文を使用します。可能のような項目を乱用する能力PAM_XDISPLAYpam_ldapすでに設定されているプロジェクトがあるので、これはおそらく最も簡単なコード変更です。

(明確に言えば、「修正」は「ソース変更」を意味するため、これらのソリューションにはクライアントでの構成とバイナリの展開が必要です。)

以下は、最初の2つのオプションで動作する(強力な)bashの例です。

 while read line; do
     [[ "$line" =~ ^description:\ setenv\ ([a-zA-Z_][a-zA-Z0-9_]+)=(.*) ]] && {
         export "${BASH_REMATCH[1]}"="${BASH_REMATCH[2]}"
     }
 done < <(ldapsearch -LLL -o ldif-wrap=no -H ldap://ldap0/ -b ${LDAPBASE} \
    -s sub "(&(objectClass=posixAccount)(uid=${USER}))" description

次の形式では、各ユーザーに1つ以上の「説明」属性が提供されます。

setenv MYVAR=MYVALUE

ここでは、説明属性を説明ではなくデータで埋めるためのあいまいな方法を使用します。これは、複数値属性に最大1024文字を格納する便利な方法です。ldapsearchこれは、値/タイプがBase64でエンコードされた出力になる場合に使用するのに問題がある可能性がある簡単なアプローチです。

おすすめ記事