LDAPサービス
LDAP
個々の理解によるとサービスが、また、それがデータベースとして理解することができますが、データベースが読み取りと書き込みのパフォーマンスをされていないMySQL
、良い読み取りを持っているように、パフォーマンスを書きますが、LDAP
読書に興味がありますが、書かれたよりも弱いです。そして、LDAP
データ型は、オブジェクト指向のデータ型であり、これらのMySQL
異なるデータタイプ、およびデータを共通データベース(リレーショナルデータベース)は、ツリー構造を使用して記録され、大きな差を有します。そして、すべての両方におけるすべて表しLDAP
、このサービスは、共通データベース(リレーショナルデータベース)として使用されていないが、このような小さな、マルチリードに貯蔵及び他の同様のアカウントで、オブジェクトタイプを含める必要があり、オブジェクトは、関連するアプリケーションの属性。
LDAP作業メカニズム
ただ、上記と同じが言った、LDAPを使用すると、ノードの1つを検索したい場合は、あなたが層ごとによってクエリを持っているように、データベースのツリー構造で、かつ唯一のパスの各ノードは、このノードのパスがそれを呼び出すことを確認する必要がありますDNに、DN書き込みパスは、例えば、下から上に書かれている必要があります。
CN =スコット、OU =マーケティング、OU =人、DC = MYDOMAIN、DC =組織
キーワード | 英語名 | 意味 |
---|---|---|
DC | ドメインコンポーネント | そのようなドメイン名はexample.com次いでれているようにいくつかの部分に分け、完全修飾ドメイン名の形式であるドメイン名の部分がある:dc = example、dc = comの |
UID | ユーザーID | こうした「タム」などのユーザーID、 |
若しくは | 組織単位 | コンテナオブジェクトであるLinuxファイルシステム内のサブディレクトリに似た組織単位、組織単位は、「市場」として(他の組織単位を含む)は、種々の他のオブジェクトを含んでいてもよいです |
CN | 一般名 | こうした「トーマス・ヨハンソン」などの一般的な名称、 |
SN | 姓 | こうした「ヨハンソン」として姓、 |
C | 国 | このようように「CN」または「米国」となどの国、。 |
インクルード | 組織 | 組織名など、「例、株式会社」 |
DN | 識別名 | 唯一の識別名、Linuxファイルシステムに似た絶対パスは、各オブジェクトには、「UID =トム、OU =市場、dc = example、dc = comの」、DNいつものディレクトリツリーとして、固有の名前を持っていますのみです |
RDN | 相対DN | 相対識別名は、「UID =トム」または「CN =トーマス・ヨハンソン」と、ディレクトリツリーの部分から独立しているファイルシステムの相対パスと類似しています |
これらのカテゴリは、アプリケーションの裁量に完全にある特定の使用を指定しないでください。
LDAPのインストール
Debianの:
apt install slapd ldap-utils # slapd 为服务端, ldap-utils 为客户端程序
CentOSの:
yum install openldap-servers openldap-clients # 上同
LDAPサーバの設定の初期化
このステップの目的は、データベースを構成パッケージデータベースに捨てられた、完全にカスタマイズ可能です初期化することであるようにしてください。
もちろん、あなたも、このステップをスキップすることができ、ちょうど次のステップを開始し、これも問題ではありません。
また、あなたのDebianサーバー構成を完了するための便利な方法を提供し使用することができます。 dpkg-reconfig slapd
:次のように(完全に個人的な理解)なぜまず、最初のいくつかを説明するため
のOpenLDAPの新バージョンは、slapd.confの設定ファイルを放棄しており、代わりにサーバー構成を設定するには、ディレクトリslapd.dでツリーファイルを使用します。しかしslapd.dがサービス・プロセスによって維持され、そしてテキストが変更されたかどうかを確認するためにCRCを使用して、我々は簡単に変更することはできません、slapdのインストールは、コマンドで私たちを契約しslapadd
、設定ファイルを作成するので、初期化するには、以下の方法を使用しましたデータベース。後で使用するldapmodify
か、ldapadd
サーバーの構成を完了すること。
最初のピットストップデータベースサービス:
systemctl stop slapd
次に、ファイルを編集します。
# 首先备份文件,以免无法复原
mkdir /root/back
tar -Jcvf /root/back/slapd.config-`date '+(%Y.%m.%d_%H:%M:%S)'`.tar.xz /etc/ldap/slapd.d/
tar -Jcvf /root/back/slapd.data-`date '+(%Y.%m.%d_%H:%M:%S)'`.tar.xz /var/lib/ldap /var/lib/slapd
# 然后再删除配置文件
rm -rf /etc/ldap/slapd.d/*
rm -rf /var/lib/slapd/*
rm -rf /var/lib/ldap/*
# 复制配置文件到临时目录
cp /usr/share/slapd/slapd.init.ldif /tmp
cd /tmp
ここで私は次のように選択してください、使いやすいSEDの表ルールを作成しました。
# file: rules
##################################
# 本文请自行选择复制到到文件内 #
##################################
#自定义基本域名(必选):
s/@SUFFIX@/$(basename)/g
#自定义管理员用户密码(必须):
s/@PASSWORD@/$(password)/g
#自定义管理员用户名称(可选):
s/cn=admin/cn=$(username)/g
#数据库类型(3选1,必选):
# mdb
s/@BACKEND@/mdb/g
s/@BACKENDOBJECTCLASS@/olcMdbConfig/g
s/@BACKENDOPTIONS@/olcDbMaxSize: 1073741824/g
# hdb
s/@BACKEND@/hdb/g
s/@BACKENDOBJECTCLASS@/olcHdbConfig/g
s/@BACKENDOPTIONS@/olcDbConfig: set_cachesize 0 2097152 0\nolcDbConfig: set_lk_max_objects 1500\nolcDbConfig: set_lk_max_locks 1500\nolcDbConfig: set_lk_max_lockers 1500/g
# bdb
s/@BACKEND@/bdb/g
s/@BACKENDOBJECTCLASS@/olcBdbConfig/g
s/@BACKENDOPTIONS@/olcDbConfig: set_cachesize 0 2097152 0\nolcDbConfig: set_lk_max_objects 1500\nolcDbConfig: set_lk_max_locks 1500\nolcDbConfig: set_lk_max_lockers 1500/g
私は次のようにサンプルがあり、HDBデータベースを選択しました:
# file:rule
s/@SUFFIX@/dc=black,dc=com/g
s/@PASSWORD@/{SSHA}RadcVPriXsR6gCwhwPKsCLkhnHy3r1ZS/g
s/cn=admin/cn=root/g
s/@BACKEND@/hdb/g
s/@BACKENDOBJECTCLASS@/olcHdbConfig/g
s/@BACKENDOPTIONS@/olcDbConfig: set_cachesize 0 2097152 0\nolcDbConfig: set_lk_max_objects 1500\nolcDbConfig: set_lk_max_locks 1500\nolcDbConfig: set_lk_max_lockers 1500/g
パスワードが生成される場合:
slappasswd -s 147258369
{SSHA} RadcVPriXsR6gCwhwPKsCLkhnHy3r1ZS
そして、コマンドで設定ファイルを変更し、コンフィギュレーションファイルとデータベースを生成します。
sed -i -f rule /tmp/slapd.init.ldif
slapadd -F "/etc/ldap/slapd.d/" -b "cn=config" -l slapd.init.ldif
_ #################### 100.00%イータなし経過なし速いです!
DBを閉じます...
私たちは、これらのファイルを見てみましょう:
ll /etc/ldap/slapd.d/*
-rw ------- 1つのルートルート478 7月10日9時06分/etc/ldap/slapd.d/cn=config.ldifの
/etc/ldap/slapd.d/cn=config:
合計28
-rw- ------ 1つのルートルート452 7月10日9時06分CN =モジュール{0}の.ldif
drwxr-X --- 2ルートルート4096 7月10日9時06分CN =スキーマ
-rw ------- 1つのルートルート394 7月10日9時06 = CNのschema.ldif
-rw ------- 1ルートルート412 7月10日9時06 olcBackend = {0} hdb.ldif
-rw ------- 1ルートルート542 7月10日9時06 olcDatabase = {0} config.ldif
-rw ------- 1ルートルート657 7月10日9時06 olcDatabase = { - 1} frontend.ldif
-rw ----- - 1ルートルート1084年7月10日9時06 olcDatabase = {1} hdb.ldif
ああ、ここで私たちは、ファイルのパーミッションを参照してくださいああ、好きなので、私たちは、ファイルの所有者を変更するには変更する必要はありません。
chown -R openldap:openldap slapd.d
chown -R openldap:openldap /var/lib/slapd/*
chown -R openldap:openldap /var/lib/ldap/*
だからここには、サーバーを起動することができます。
systemctl start slapd
LDAPデータベースの作成
ここでは、また、サーバー構成が以前に作成しながら、DN情報があることに注意する必要がありますが、我々はこれらのデータベースを手動で作成する必要があり、実際のデータベースを作成していません。もちろん、あなたがコマンドを使用することができslapcat
たりldapsearch
、データが存在するかどうかを照会するコマンドを。
まず、LDAPデータベースは、インタラクティブなインターフェースを持っていない、それぞれの操作はコマンドでなければなりません、データを堆積させるために必要な記録のためのファイルを作成し、実際には、これはLDAPは、オブジェクト指向のサービス部分の読み取りの型であること側ではなく、包括的なデータベースサービス。
# file:base.ldif
# 根节点 复制时,注意把这这个注释删了!!!!
dn: dc=black,dc=com
dc: black
objectClass: top
objectClass: domain
# 管理员用户root
dn: cn=root,dc=black,dc=com
objectClass: organizationalRole
cn: root
description: LDAP Manager
その後、我々は、コマンドを渡し、base.ldif
この情報はデータベースにインポートされます
ldapadd -x -D "cn=root,dc=black,dc=com" -w 147258369 -f base.ldif
新しいエントリを追加し、 "DC =黒、dc = comの"
新しいエントリの追加"CN =ルート、DCを=黒、dc = comの"
ここは、コマンドの基本的な使用方法を説明する必要があります:
- -x:輻輳表示基本認証
- 147258369 -w -D "CN =ルート、DC =黒、dc = comのは、":ユーザー名とパスワードを指定します。
- -f:ファイルを指定します。
だからここに再びデータベースが正常に作成されたかどうかをテストします。
ldapsearch -x -D "cn=root,dc=black,dc=com" -w 147258369 -b "dc=black,dc=com"
#はLDIF拡張
#1
#1のLDAPv3
#ベースを<DC =黒、dc = comの>スコープサブツリーと
#フィルタ:(オブジェクトクラス= *)
ALL:要求#
#
#black.com
DN:DC =黒、直流= COMの
DC:黒い
オブジェクトクラス:トップ
オブジェクトクラス:ドメイン
#ルート、black.com
DN:CN =ルート、DC =黒、dc = comの
オブジェクトクラス:organizationalRole
CN:ルート
の説明:LDAP Managerの
#検索結果
検索:2
結果:0成功
#のnumResponses:3
#1 numEntries :2
パラメータを説明します。
- -b:ベースのディレクトリ検索を指定します。
LDAP後半管理
データベース管理#
しかし、ここにも(LDAPアプリケーションをデプロイ)LDAPを完了するために、いくつかのデータベース管理ソフトウェアを使用するだけでなく、コマンドラインについて書くためには、高いため、コマンドラインの柔軟性、そして理解しやすいのは、これらは、それは比較することはできませんアプリケーションです。
ldapaddのエントリープラス#
そして、データを格納するために使用されるファイルを作成し、データベースまたは上記と同様に作成します。
# file: group.ldif
# 组织单元
dn: ou=User,dc=black,dc=com
objectClass: organizationalUnit
ou: User
# 用户1
dn: uid=User1,ou=User,dc=black,dc=com
objectClass: account
objectClass: simpleSecurityObject
uid: User1
userPassword: {SSHA}5WjJz9QfntUjurHirfv9C4832x1xh9Kt
# 用户2
dn: uid=User2,ou=User,dc=black,dc=com
objectClass: account
objectClass: simpleSecurityObject
uid: User2
userPassword: {SSHA}9biML+BP/W8w3mRkVack7CyB1hfDi8cD
その後、我々は、データベースにファイルを追加するためのコマンド:
ldapadd -x -D "cn=root,dc=black,dc=com" -w 147258369 -f group.ldif
新しいエントリを追加し、 "OU =ユーザー、DC =黒、dc = comの"
新しいエントリを追加し、 "UID =ユーザー1、OU =ユーザー、DC =黒、dc = comの"
新しいエントリ「UIDを追加= User2に、OU =ユーザー、DC =黒、dc = comの」
データは、標準入力と出力から読み取ることができながら、ldapaddのは、ファイルからデータを読み取ることができます。
cat << EOF | ldapadd -x -D "cn=root,dc=black,dc=com" -w 147258369
dn: uid=User3,ou=User,dc=black,dc=com
objectClass: account
objectClass: simpleSecurityObject
uid: User3
userPassword: {SSHA}iES3qeH0nYUcwGtSQm1hIBCEsV+gBF3P
EOF
新しいエントリの追加 "のuidを=ユーザー3、OU =ユーザー、DC =黒、dc = comの"
私は証明しませんが、これは一時的にデータを追加しますが、これはまた、bashスクリプトが終了すると、ボリュームのユーザーを追加するために使用することができます。
エントリ#を変更ldapmodifyを
または同じファイルにデータを書き込み、それは変更のエントリであるので、書面で指定したモードを変更し、目的地を変更する必要があるので、ここで注意。
# file: change.ldif
dn: uid=User3,ou=User,dc=black,dc=com
changetype: modify
replace: userPassword
userPassword: {SSHA}9TM5y06bvepK6k8i+Jfkc/9C6GkVsobm
その後、コマンドを使用します。
ldapmodify -x -D "cn=root,dc=black,dc=com" -w 147258369 -f change.ldif
エントリを変更する "UID =ユーザ3、OU =ユーザー、DC =黒、dc = comの"
だから、検証します:
ldapwhoami -x -D "uid=User3,ou=User,dc=black,dc=com" -w 147
DNます。uid =ユーザー3、OU =ユーザー、DC =黒、dc = comの
返すかのように、その後、変更が成功しています。
エントリ#のldapdeleteのを削除します。
エントリは唯一のDNであるエントリへのパスを指定する必要があるか、明確に記述する必要はありません削除する方法。
ldapdelete -x -D "cn=root,dc=black,dc=com" -w 147258369 "uid=User3,ou=User,dc=black,dc=com"
このコマンドは、それが正常に実行されたことを示し、情報を返しません。もう一度、我々は確認するためのコマンドを使用します。
ldapwhoami -x -D "uid=User3,ou=User,dc=black,dc=com" -w 123456
ldap_bind:無効な資格情報(49)
これは、リターンの資格情報が正常に削除され、無効なエントリがあることを示しています。
ldapsearchの検索エントリ#
これは、直接コマンドで、言っているわけではありません。
ldapsearch -x -b "dc=black,dc=com" -D "cn=root,dc=black,dc=com" -w 147258369 "(&(objectclass=account)(uid=User1))" # 这里最后一段是filter,用于过滤查询结果
#はLDIF拡張
#
#1のLDAPv3
スコープサブツリーと#ベース<DC =黒、dc = comの>を
(オブジェクトクラス= *):#フィルタ
#要求:ALL
#1
#ユーザ1を、ユーザー、black.com
DN:UID =ユーザー1、OU =ユーザー、DC =黒、dc = comの
オブジェクトクラス:アカウントの
オブジェクトクラス:simpleSecurityObject
のuserPassword :: e1NTSEF9OWJpTUwrQlAvVzh3M21Sa1ZhY2s3Q3lCMWhmRGk4Y0Q =
UID:ユーザー1
#の検索結果
検索:2
結果:0成功
#のnumResponses:6
#1 numEntries:5
-b:ベースパスを指定し、パス内のすべてのノードを検索し
ldapwhomaiのユーザークエリ#
また、直接コマンドで、フロントを使用しました。
ldapwhoami -x -D "cn=root,dc=black,dc=com" -w 147258369
DN:CN =ルート、DC =黒、dc = comの
戻り値は正常の上方を示し
サーバー構成#
ここでは、その後のコンフィギュレーション・サーバは、ディレクトリslapd.d内のファイルを移動することはできません、だLDAPサーバの設定により提供されるAPIインターフェイスを完了する必要があり、この点は非常に重要です。だから我々はまた、このような変更管理者パスワードとして、クライアントサービスのコンフィギュレーションにコマンドldapmodifyコマンドを渡す必要があります。
異なるノードとデータベースノードここでDN、あなたは、これらが何度も何度も、もちろん、slapd.dを対応するディレクトリエントリ内のファイルであるノード名のサフィックス(LDIF)追加がされて見ることができます。
# file: config.ldif
dn: olcDatabase={1}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}5WjJz9QfntUjurHirfv9C4832x1xh9Kt
次に、コマンドの変更が完了:
ldapmodify -Y EXTERNAL -H ldapi:/// -f config.ldif
SASL /外部認証が開始
のgidNumber = 0 + uidNumber属性= 0、CN = peercred、CN =外部、CN = AUTH:SASLユーザ名
SASL SSF:0
修飾エントリ"olcDatabaseは= {1} HDB、CN = configと"
ノードが存在しない場合、あなたはまだ作成したいが、また、あなたが作成して追加するには、コマンドのldapaddを使用したいファイルパスにDNノードを指定する必要があります注意してください。
LDAPのバックアップと#を復元
ここで私は主に、便利かつ包括的な、操作を完了するために提供されるコマンドのslapdを使用し、これは本当になかった、他の方法を理解する必要はありません。
サーバーのバックアップ#
slapcat -n 0 -l slapcat.bak.0.ldif # 0 表示备份服务器配置
slapcat -n 1 -l slapcat.bak.1.ldif # 1 表示备份数据库
ノーリターンメッセージは正常に実行されたことを示していません。
サーバー#を復元
サーバーをシャットダウンします。
systemctl stop slapd
元のファイルを削除します。
# 首先备份文件,以免无法复原
mkdir /root/back
tar -Jcvf /root/back/slapd.config-`date '+(%Y.%m.%d_%H:%M:%S)'`.tar.xz /etc/ldap/slapd.d/
tar -Jcvf /root/back/slapd.data-`date '+(%Y.%m.%d_%H:%M:%S)'`.tar.xz /var/lib/ldap /var/lib/slapd
# 然后再删除配置文件
rm -rf /etc/ldap/slapd.d/*
rm -rf /var/lib/slapd/*
rm -rf /var/lib/ldap/*
データベースを復元します。
slapadd -l slapcat.bak.0.ldif -F /etc/ldap/slapd.d/ -b "cn=config" # 还原服务器配置
slapadd -l slapcat.bak.1.ldif -F /etc/ldap/slapd.d/ # 还原数据库
_ #################### 100.00%イータなし経過なし速いです!
DBを閉じます..._ #################### 100.00%イータなし経過なし速いです!
DBを閉じます...
これは、取得します。
しかし、まだ注意権限を払う必要があります。
chown -R openldap:openldap /etc/ldap/slapd.d/*
chown -R openldap:openldap /var/lib/slapd/*
chown -R openldap:openldap /var/lib/ldap/*
サーバーを起動します。
systemctl start slapd
LDAPアプリケーションのデプロイメント
ここで直接Phpldapadmin、そして私が手にしたくない、どのようにシンプルな、どのようにしています。
apt install phpldapadmin
その後、ルックphpladpadminファイルを設定できます。
# file: /etc/phpldap/config.php
……
$servers->setValue('server','base',array('dc=black,dc=com')); # 在300行,更改服务器
……
……
$servers->setValue('login','bind_id','cn=root,dc=black,dc=com'); # 在326行,更改登入的默认字符串
……
次に、サインイン:
次のようにインターフェースは次のとおりです。
S