2009年9月アーカイブ

以前から個人的にLDAPを導入しているのですが、意外と忘れがちなので備忘をかねてメモります。

昔のメモなので今と挙動が違うかもしれませんがご了承ください。OSはCentOS 5です。

まずはOpen LDAPのインストールと設定をします。

関連パッケージのインストール

$ yum -y install openldap openldap-servers openldap-clients openldap-devel


ディレクトリマネージャのパスワードを生成する

$ /usr/sbin/slappasswd -h {SSHA}
New password:
Re-enter new password:

slapd.confの設定

/etc/openldap/slapd.conf
...snip...

access to attrs=userPassword
 by self write
 by anonymous auth
 by * none
access to *
 by self write
 by * read

...snip...

suffix      "dc=example,dc=com"
rootdn      "cn=Manager,dc=example,dc=com"

...snip...

rootpw さっき作ったパスワード

...snip...

ldapd.confの設定

/etc/openldap/ldap.conf
...snip...

URI ldap://127.0.0.1/

...snip...

slapdの起動と自動起動設定

$ /etc/init.d/ldap start
$ /sbin/chkconfig ldap on

既存アカウントの移行をします

移行ツールの設定

/usr/share/openldap/migration/migrate_common.ph
-- snip --
# Default base
$DEFAULT_BASE = "dc=example,dc=com";
-- snip --

base, passwd, groupをエクスポート

$ /usr/share/openldap/migration/migrate_base.pl > base.ldif
$ /usr/share/openldap/migration/migrate_group.pl /etc/group > group.ldif
$ /usr/share/openldap/migration/migrate_passwd.pl /etc/passwd > passwd.ldif

適当に整形してLDAPサーバに挿入

$ ldapadd -h localhost -x -D "cn=Manager,dc=example,dc=com" -W -f base.ldif
$ ldapadd -h localhost -x -D "cn=Manager,dc=example,dc=com" -W -f passwd.ldif
$ ldapadd -h localhost -x -D "cn=Manager,dc=example,dc=com" -W -f group.ldif

確認

$ ldapsearch -x -D "cn=Manager,dc=example,dc=com" -W -b "dc=example,dc=com" "uid=hide"
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=com> with scope subtree
# filter: uid=hide
# requesting: ALL
#

# hide, People, example.com
dn: uid=hide,ou=People,dc=example,dc=com
uid: hide
cn: hide
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
--snip--

PAM認証先をLDAPに向けます

関連パッケージのインストール

$ yum -y install nss_ldap nscd

nscd(ネームサービス)の起動と自動起動の設定

$ /etc/init.d/nscd start
$ /sbin/chkconfig nscd on

認証をLDAPに向ける

$ /usr/sbin/authconfig-tui

            │  ユーザー情報         認証                          │
            │  [*] キャッシュ情報   [*] MD5 パスワードを使用      │
            │  [ ] Hesiod を使用    [*] シャドウパスワードを使用  │
            │  [*] LDAP を使用      [*] LDAP 認証を使用           │
            │  [ ] NIS を使用       [ ] Kerberos 5 を使用         │
            │  [ ] Winbind を使用   [ ] SMB 認証を使用            │
            │                       [ ] Winbind 認証を使用        │
            │                       [ ] ローカル認証は十分です    │
            │                                                     │

...次へ...

            │                                                     │
            │            [ ] TLS を使用                           │
            │  サーバー: ldap://127.0.0.1/_______________________ │
            │ ベース DN: dc=example,dc=com______________________ │
            │                                                     │

...OK...

LDAPサーバが落ちていてもローカルで認証できるようにする

/etc/ldap.conf
--snip--
#bind_policy hard
bind_policy soft
--snip--

最初のログインで自動的にホームディレクトリをスケルトンから作るようにする

/etc/pam.d/system-auth-ac
--snip--
session     required      pam_mkhomedir.so skel=/etc/skel umask=0022

ちなみに、システム認証をLDAPに依存する以上、slapdが落ちたら一般アカウントでのログインが出来なくなります。また、通常rootアカウントでのsshのアクセスは認められていないので、コンソールからログインしてslapdを立ち上げる必要があります。

次にWebDAV経由でのSubversionの認証をLDAPに向けます

mod_authz_ldapのインストール

$ yum install mod_authz_ldap

mod_dav_svnの設定

認証はLDAPでdevグループにのみ閲覧・変更権限を与える

/etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

LDAPTrustedGlobalCert CA_DER /etc/pki/tls/certs/ca-bundle.crt
LDAPVerifyServerCert Off

  DAV svn
  SVNParentPath /var/repos

  AuthType Basic
  AuthName "subversion authentication"
  AuthBasicProvider ldap
  AuthLDAPGroupAttributeIsDN off
  AuthLDAPGroupAttribute memberUid
  AuthLDAPURL ldaps://localhost/dc=example,dc=com?uid?sub?(ObjectClass=*)

  Require ldap-group cn=dev,ou=Group,dc=example,dc=com

Auth*の部分は普通のhtaccessとして使えます。

次にTracの設定です。

LdapPluginのインストール

 
$ svn export http://trac-hacks.org/svn/ldapplugin/0.10/ ldapplugin
$ cd ldapplugin
$ python setup.py install

trac.iniの設定

/var/trac/conf/trac.ini
... snip ...
[components]
trac.ticket.report.* = disable
ldapplugin.* = enabled

[ldap]
enable = true
host = 127.0.0.1
port = 389
basedn = dc=example,dc=com
user_rdn = ou=People
uidattr = uid
group_rdn = ou=Group
groupmemberisdn = false
groupname = posixGroup
groupmember = memberUid
manage_groups = true
store_bind = true
bind_user = cn=Manager,dc=example,dc=com
bind_passwd = リポジトリマネージャのパスワード
... snip ...

mod_pythonの設定

/etc/httpd/conf.d/trac.conf
###
### Sample Trac configuration taken from http://trac.edgewall.org/wiki/TracModPython
###

### The recommended Trac web interface requires mod_python


### Create your Trac environments as subdirectories of /var/trac
### They will appear in a listing on your website at /trac/, and be available
### at /trac/PROJECTNAME/

  SetHandler mod_python
  PythonInterpreter main_interpreter
  PythonHandler trac.web.modpython_frontend
  PythonOption TracEnvParentDir /var/trac
  PythonOption TracUriRoot /trac


### Use htpasswd to add Trac accounts to the AuthUserFile
LDAPTrustedGlobalCert CA_DER /etc/pki/tls/certs/ca-bundle.crt
LDAPVerifyServerCert Off

   AuthType Basic
   AuthName "trac"
   AuthBasicProvider ldap
   AuthLDAPURL ldaps://127.0.0.1/dc=example,dc=com?uid?sub?(ObjectClass=*)
   AuthLDAPGroupAttribute memberUid
   AuthLDAPGroupAttributeIsDN off
   Require ldap-filter objectCLass=posixAccount




再起動

/etc/init.d/httpd restart

LDAPスキーマの追加

/etc/openldap/schema/trac.schemaを追加

/etc/openldap/schema/trac.schema
# 1.3.6.1.4.1.15527 is reserved. Do not hijack it
# Please see http://www.iana.org/cgi-bin/enterprise.pl

# Attribute type definitions
attributetype ( 1.3.6.1.4.1.15527.143
                NAME 'tracperm'
                DESC 'Trac Permission'
                EQUALITY caseIgnoreMatch
                SUBSTR caseIgnoreSubstringsMatch
                SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32} )

# Class definitions
objectclass ( 1.3.6.1.4.1.15527.8
              NAME 'tracUser'
              DESC 'Regular user with Trac permission'
              SUP top
              AUXILIARY
              MUST ( uid $ cn $ userpassword )
              MAY  ( tracperm $ sn $ description ) )
objectclass ( 1.3.6.1.4.1.15527.9
              NAME 'tracGroup'
              DESC 'Trac permission for groupofnames'
              SUP top
              AUXILIARY
              MAY  ( tracperm ) )

/etc/openldap/slapd.confを編集

/etc/openldap/slapd.conf
...snip...
include     /etc/openldap/schema/trac.schema
...snip...

slapdの再起動

$ /etc/init.d/ldap restart

tracの権限を与えるGroupのObjectClassにtracGroupを追加する

権限を与える

tracのホストで
$ trac-admin /var/trac/dev permission add @dev TRAC_ADMIN

これでLDAPのdevグループに参加しているユーザーでTracにログインすると管理画面からLDAPのグループやユーザーに対して権限をマッピングすることができるようになります。

個人的にはアプリケーション間でさえOpenIDだーなんだーとSSO化されてるのだから社内ツールなんかは全てLDAPで統合してしまえばいいと思います。

ザ・テレビ欄 1975~1990
ザ・テレビ欄 1975~1990
posted with amazlet at 09.09.26
テレビ欄研究会
ティー・オーエンタテインメント
売り上げランキング: 11366


新聞記者の息子なので小さいころから家には主要4誌が溢れていました。
ところが自分はというと真っ先に見るのはテレビ欄、続いてスポーツ欄、三面記事と漫画で最後に義務付けられていた天声人語を読んでおしまい、といった読み方をしていて、どんだけ親不孝者なんだといった感じでした。もともとリアルの世界より小説や物語の文章に惹かれるタイプだったのですが、もうちょっと読んでおけばよかったかなとか思います。

で、この本ですが、そんな僕がこよなく愛したテレビ欄がひたすら載っている資料的な本です。時代的にも自分の世代にぴったりで中々懐かしかったです。コラムではその時の時代背景などが取り上げられていて、「あーそうそう。そんなことあったよね。」と楽しめました。

個人的に興味深かったのがかったのが90年代初頭まで、毎日必ず何かしらのアニメが7時~8時のゴールデンタイムに放送されていたことです。時代によっては7時代に4本もアニメが流れている時代もありました。そーいえばそうだったなと思うのですが、今となっては考えられないですよね。テレビが子供の娯楽の王様だったんだということがよくわかりました。同様に懐かしかったのがプロレスがゴールデンタイムに毎週やっていたこと。これも娯楽の時代の流れを感じました。

あと地味に面白いのが3時代のワイドショーのタイトル。その時の芸能界やはやってたダイエット法だとか時代背景を違う角度から見れて面白いです。

この年代以外にも1954~1974 と1991~2005があるので、自分の世代に合わせて見ると面白いと思います。

ザ・テレビ欄0 1954~1974
ザ・テレビ欄0 1954~1974
posted with amazlet at 09.09.26
テレビ欄研究会
ティー・オーエンタテインメント
売り上げランキング: 12994
ザ・テレビ欄 2 1991~2005
テレビ欄研究会
ティー・オーエンタテインメント
売り上げランキング: 22269

YAPC::Asia 2009でmodern Catalystと称してトークをしてきました。

多分Perl史上良くも悪くも最も多くの人が開発、利用に携わったWeb Application Frameworkで、未だに現場で多く使われているCatalystがメジャーバージョンアップをしたのでその辺を話してきました。

Moose-ified = modernという訳ではないし、自分はMoose廚ではないのですが多くの時間を割く結果になりました。本当は抽象化やTest周りやおすすめのPlugin/ComponentとかTipsとかDBIC周りにも触れたかったのですが20分では無理だったので、またの機会に。最後の方でちらっとだけPSGIにも触れさせてもらいました。

今年もPerl hackersの祭典、YAPC::Asiaが始まりました。


RIMG0383


スライドを1文字も書いていないのに前夜祭で盛大に飲んでしまい、朝何とか早起きして草稿を作って、発表の5分前まで書いて発表というとんでもない綱渡りをしましたが、何とか自分のトークは終わりました。スライドの方は後ほど公開したいと思います。

というわけで、猛烈に眠いですがここからは気楽に楽しもうと思います。

プロフィール

このアーカイブについて

このページには、2009年9月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2009年8月です。

次のアーカイブは2009年11月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。