screen 縦分割
Ubuntuに入ってるscreenはデフォルトで縦分割が効いてるので良いね。
- C-a | 縦分割
- C-a tab 分割したWindow間の移動
- C-a X Forcusがある側のウインドウを閉じる
- C-a c 新規ウインドウ作成
- C-a num ウインドウ番号を指定して移動
- C-a n ウインドウを順番に移動
俺、これ以外のコマンド使ってない。
何はともあれ、ワイドな画面では縦分割が俄然使いやすくてよいですね。
Ubuntu 9.04 LDAPクライアント設定
LDPAサーバの設定
IPアドレス | 192.168.0.1 |
---|---|
suffix | dc=example,dc=com |
rootdn | cn=Manager,dc=example,dc=com |
rootpw | secret |
この設定でクライアントとは別にLDAPサーバが構築されているとして
LDAPクライアント設定
Ubuntuに以下のパッケージをインストール
$ sudo apt-get install libnss-ldap libpam-ldap ldap-utils
インストール中にサーバの情報入力を求めてくるのでIPアドレス、suffix、rootdn、rootpwを適宜入力する。
/etc/pam.d/common-*は問題なく変更されていたが、/etc/ldap.confと/etc/nsswitch.confは手で一部修正を加えた。
最終的に各ファイルが以下のように変更されていればOK。
/etc/ldap.conf
base dc=example,dc=com uri ldap://192.168.0.1 ldap_version 3 rootbinddn cn=Manager,dc=example,dc=com pam_password md5
/etc/ldap.secret
secret
/etc/nsswitch.conf
passwd: compat ldap group: compat ldap shadow: compat ldap hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
/etc/pam.d/common-account
account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so account [success=1 default=ignore] pam_ldap.so account requisite pam_deny.so account required pam_permit.so
/etc/pam.d/common-auth
auth [success=2 default=ignore] pam_unix.so nullok_secure auth [success=1 default=ignore] pam_ldap.so use_first_pass auth requisite pam_deny.so auth required pam_permit.so
/etc/pam.d/common-password
password [success=2 default=ignore] pam_unix.so obscure sha512 password [success=1 user_unknown=ignore default=die] pam_ldap.so use_authtok try_first_pass password requisite pam_deny.so password required pam_permit.so
/etc/pam.d/common-session
session [default=1] pam_permit.so session requisite pam_deny.so session required pam_permit.so session required pam_unix.so session optional pam_ldap.so session optional pam_ck_connector.so nox11
シェルの設定ファイルを再読み込み
.bashrcとか.zshrcを編集してログインし直さずに設定を直ぐに反映させたいとき。
$ source .zshrc
Ubuntu 9.04 インストール(後の設定)メモ
vmwareにUbuntuを入れなおしたので設定メモ。
インストール自体は基本的にはウィザードに従ってなので割愛。
簡易設定は使わずに、HDの割当やMEM割当、ホスト名などを調整。
パッケージは全部アップデート。
ruby1.9とmysqlが使える所まで。Webサーバは必要になったら入れる。今はいらん。
VMware Toolsインストール
mkdir vmware cd vmware cp /media/cdrom0/VMwareTools-7.9.6-173382.tar.gz . tar zxvf VMwareTools-7.9.6-173382.tar.gz cd vmware-tools-distrib/ sudo ./vmware-install.pl
vmware-config-tools.plも流れで実行する。
途中で解像度の設定が無かったので、「システム」→「設定」→「ディスプレイ」から「1280x800」に変更。
ネットワーク設定
「システム」→「設定」→「ネットワークの接続」から固定IPに変更。
とりあえずNetworkManagerでも今の所問題ないのでしばらく様子みる。
opensshインストール
sudo apt-get install openssh-server
パスワード認証禁止。
公開鍵をMacからコピって、~/.ssh/authorized_keysとして保存。
Vimインストール
デフォルトのvimはコンパクト版のvim-tinyなのでvim-fullをインストール。
.vimrcはMacから持って来て調整。
sudo apt-get install vim-full
screenは入ってるので
.screenrcだけコピっとく。
ruby1.9インストール
zlib入れとく。
sudo apt-get install zlib1g-dev wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.gz tar zxvf ruby-1.9.1-p243.tar.gz cd ruby-1.9.1-p243 ./configure --enable-shared --enable-pthread make sudo make install
MySQLインストール
sudo apt-get install mysql-server-5.1 libmysqlclient16-dev
5.1指定でインストールしないと5.0入れようとしてた。
libmysqlclient16-dev入れとかないと、mysql/ruby入れるときにエラーになる。
/etc/mysql/my.cnfに追加
[mysqld] skip-character-set-client-handshake default-character-set = utf8 [mysql] default-character-set = utf8 [mysqldump] default-character-set = utf8
skip-character-set-client-handshakeは文字化け対策。まだいるんかな?後で確認。
スキーマ
スキーマ
データベース構造の定義。
基本スキーマファイル
core.schema | OpenLDAPのコアスキーマ(必須) |
---|---|
cosine.schema | CosineとInternet X.500スキーマ(RFC1274) |
inetorgperson.schema | 人に関した定義に関するスキーマ(RFC2798) |
corba.schema | CORBAスキーマ(RFC2714) |
nis.schema | NIDに関するスキーマ(RFC2307) |
java.schema | JAVAに関するスキーマ(RFC2713) |
openldap.schema | OpenLDAP Projectの実験用スキーマ |
misc.schema | その他の実験的なスキーマ |
ppolicy.schema | パスワードポリシーの為の開発中のスキーマ |
オブジェクトクラスと属性
- 各スキーマ要素は、全世界的に一意のOID(Object Identifier: オブジェクト識別子)によって管理されている。
- オブジェクトクラスはobjectclassにより定義される。
- オブジェクトクラスには、ABSTRACT・STRUCTURAL・AUXILIARYの3つの構造型がある。
- オブジェクトクラスにはMUST属性(必須属性)、MAY属性(許可属性)が指定できる。
- 属性はattributetypeにより定義される。
- 属性の検索方法の定義を照合規則といい、EQUALITY・ORDERING・SUBSTRの3つがある。
- 属性のデータ型はSYNTAXに、OIDを使って指定する。
OIDの概要
- 全世界的に一意で無ければならない。
- IANA(Internet Assigned Numbers Authority)によって管理されている。
オブジェクトクラスの定義
objectclassディレクティブを利用
objectclass ( 2.5.6.6 NAME 'person' ← OIDと名前の定義: OID NAME objectclass名 DESC 'RFC2256: a person' ← オブジェクトクラスの説明 SUP top STRUCTURAL ← オブジェクトクラスの形式 MUST ( sn $ cn ) ← 必須属性 MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) ) ← 許可属性
- SUPには基底オブジェクトクラスを指定する。指定したオブジェクトクラスの機能が、継承されて利用される。personはtopというクラスを継承している。
オブジェクトクラスの構造型
ABSTTACT(抽象型) | 他のオブジェクトクラスの基底クラスとして使われるオブジェクトクラス |
---|---|
STRUCTUAL(構造型) | ディレクトリ構造を作る事ができるオブジェクトクラス。各エントリには必ず1つの構造型オブジェクトクラスが必要。 |
AUXILIARY(補助型) | 構造型と組み合わせる事で属性を追加する事が出来るオブジェクトクラス。単独でディレクトリ構造を形成する事はできない。 |
属性の定義
attributetypeディレクティブを利用。
attributetype ( 2.5.4.5 NAME 'serialNumber' ← OIDと属性の名前の定義 DESC 'RFC2256: serial number of the entity' ← 属性の説明 EQUALITY caseIgnoreMatch ← 照合規則の設定 SUBSTR caseIgnoreSubstringsMatch ← 照合規則の設定 SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{64} ) ← 属性のデータ型の設定
照合規則
- 属性の検索をどのような方法で行うかについての定義。
- 1つの属性には、必ず1つ以上の照合規則が定義されてなければならない。
照合規則の型
EQUALITY(同値照合) | 文字列や値の全体に対して照合を行う。 |
---|---|
ORDERING(順序照合) | 値の大小や文字列の順序を使って照合を行う。 |
SUBSTR(部分文字列照合) | 文字列の一部分に対して照合を行う。 |
EQUALITY型の照合規則の例
booleanMatch | 真偽(0/1)として照合 |
---|---|
caseIgnoreMatch | 英大小文字を区別せず、スペースを無視して照合。 |
caseExactMatch | 英大小文字を区別し、スペースを無視して照合。 |
distinguishedNameMatch | 識別名(DN)として照合。 |
intergerMatch | 整数として照合。 |
numbericStringMatch | 数値として照合。 |
octetStringMatch | オクテット文字列として照合。 |
objectidentiferMatch | OIDとして照合。 |
ORDERING型の照合規則の例
caseIgnoreOrderingMatch | 英大小文字を区別せず、スペースを無視して照合。 |
---|---|
caseExactOrderingMatch | 英大小文字を区別し、スペースを無視して照合。 |
intergerOrderingMatch | 整数として照合。 |
numericStringOrderingMatch | 数値として照合。 |
octetStringOrderingMatch | オクテット文字列として照合。 |
SUBSTR型の照合規則の例
caseIgnoreSubstringsMatch | 英大小文字を区別せず、スペースを無視して照合。 |
---|---|
caseExactSubstringsMatch | 英大小文字を区別し、スペースを無視して照合。 |
numericStringSubstringsMatch | 数値として照合。 |
octetStringSubstringsMatch | オクテット文字列として照合。 |
SYNTAX
- SYNTAXには属性がどのようなデータ型をとるか指定する。
- 指定にはOID(属性のOIDとは別物)を利用する。
SYNTAXに指定できるデータ型のOID
1.3.6.1.4.1.1466.155.121.1.7 | 真偽値 |
---|---|
1.3.6.1.4.1.1466.155.121.1.12 | DN形式の文字列 |
1.3.6.1.4.1.1466.155.121.1.15 | Unicode(UTF-8)文字列 |
1.3.6.1.4.1.1466.155.121.1.26 | ASCII文字列 |
1.3.6.1.4.1.1466.155.121.1.27 | 整数値 |
1.3.6.1.4.1.1466.155.121.1.34 | DNよびUID |
1.3.6.1.4.1.1466.155.121.1.36 | 数値文字列 |
1.3.6.1.4.1.1466.155.121.1.38 | OID形式の文字列 |
1.3.6.1.4.1.1466.155.121.1.40 | 任意のオクテット文字列 |
1.3.6.1.4.1.1466.155.121.1.44 | 表示可能な文字列 |
1.3.6.1.4.1.1466.155.121.1.50 | 電話番号 |
拡張スキーマ
slaptest
構文
slaptest [オプション]
オプション
-d 数 | デバッグレベルを指定する。 |
---|---|
-f ファイル名 | slapd.confの代わりに利用する設定ファイルを指定する。 |
-u | dry-runモードで検査を行う(データベースがオープンできなくても設定が正しければエラーを返さない)。 |
-v | 冗長モードで実行する。 |
ディレクトリ設計
管理したい情報の性質や組織の形態などにより、管理に適切なDITの構造は異なってくる。いったん作成したディレクトリの構造を改変するのは大変な労力がかかる為、基本構造の設計は慎重に行う。
DIT構造の設計
どのような情報をどのように管理するか検討し、適切なツリーを構築する。
ディレクトリ設計の原則
- ディレクトリの上位から下位に向けて分類は細分化される。
- アクセス管理を行う際、同一の権限を持つエントリが同一階層に存在する事が望ましい。
- DNが一意になるようディレクトリを構築する。
深い階層を持つDITのメリット・デメリット
- メリット
- 詳細な検索ベースが得られるため、検索効率が上がる場合がある。
- 階層をグループとして扱うことが出来る。
- デメリット
- 個別のエントリのDNが長くなる
- ディレクトリのメンテナンスに手間がかかる。
浅い階層を持つDITのメリット・デメリット
- メリット
- 個別のエントリが短くなる。
- ディレクトリのメンテナンスにかかる時間を軽減できる。
- デメリット
- 頻繁にエントリを更新する際の更新速度が低下する。
コンテナ
エントリを分類する目的のみに作られるエントリの事。
エントリの設計
エントリのオブジェクトクラス・属性の検討事項
- エントリが持つ属性が属性値としてすべて表現できるかどうか。
- エントリに必ず入れなければならない情報は何か、入る可能性のある情報は何か。
- その情報はどのような値とて表現されるか(文字列/数値/画像データなど)
- 検索の際にどのように利用されるものか(完全一致か、属性の有無のみか)
たいていの場合、あらかじめ用意されているスキーマファイルを利用すれば、一般的なデータは表現できる為、これらのスキーマファイルの内容を検討して、扱うべきデータの表現方法を検討する。
サービスクラス(Class of Service: CoS)
クライアントアプリケーションがエントリを取り出すときに計算された属性を動的に生成し、勤務地や電話番号などといった、複数のユーザが共通に利用する属性値の管理を集中化する事ができる機能。