Wednesday, September 30, 2009

09/30/2009


  • 23:00 まで残業

  • 席替えらしい

  • 3 島ほど移動する予定

  • 本日で何名かの人材が退社するようだ

  • 外部スタッフの挨拶は不要でしょう

Tuesday, September 29, 2009

09/29/2009


  • 今日も 22:30 過ぎまで残業した。

  • 12:00 過ぎまで、昨日と同一の作業を対応した。

  • その後、既存のドキュメントを更新した。

  • その後、本来の作業のドキュメントを更新した。

  • ちょっぴり先走ってコーディングを開始した。

Monday, September 28, 2009

09/28/2009


  • 金曜日の夜にメールを受信していたらしく、朝から対応に追われた。

  • 任意で参加だったはずの会議に出席することに。

  • その後、ずっと 22:30 ごろまで対応していた。

  • もっとも大きな原因は、担当者が設定ミスしていたためだった。

  • バグっぽい現象も確認したが、原因を特定できなかった。

Sunday, September 27, 2009

09/27/2009


  • 昨日も同様の症状だったが、突然、寒気を感じて鳥肌となるなどした。

  • PAM について、ほんの少しだけ学習した。

  • キムチ鍋



Enabling cracklib support on Ubuntu

Installation



ユーザのパスワード管理を強化するため cracklib サポートを有効にしてみる。環境は Ubuntu 9.04 Server 32-bit であり VMware Server で起動している。まず、モジュールをインストールする。

% sudo apt-get install libpam-cracklib



モジュールは /lib/security ディレクトリにインストールされる。もし 64-bit バージョンの Ubuntu を利用しているなら /lib64/security ディレクトリにインストールされるはずだ。

% ls -l /lib/security/pam_cracklib.so 
-rw-r--r-- 1 root root 13616 2009-09-04 03:04 /lib/security/pam_cracklib.so
%


Examples



次は libpam-cracklib をインストールする前の /etc/pam.d/common-password ファイルの記述だ。

% grep -v '\(^#\)\|\(^[   ]*$\)' /etc/pam.d/common-password
password [success=1 default=ignore] pam_unix.so obscure sha512
password requisite pam_deny.so
password required pam_permit.so
%


libpam-cracklib をインストールすると /etc/pam.d/common-password ファイルは、以下のように更新される。

% grep -v '\(^#\)\|\(^[   ]*$\)' /etc/pam.d/common-password 
password requisite pam_cracklib.so retry=3 minlen=8 difok=3
password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512
password requisite pam_deny.so
password required pam_permit.so
%


更新された内容について調査する場合、

% man 7 pam





% man 5 pam.conf





% man 8 pam_cracklib



などを参照すること。

How to change your shell prompt

satoshiabe@ubuntu-0904-server-i386-1:~$ uname -a
Linux ubuntu-0904-server-i386-1 2.6.28-11-server #42-Ubuntu SMP Fri Apr 17 02:48:10 UTC 2009 i686 GNU/Linux
satoshiabe@ubuntu-0904-server-i386-1:~$ echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
satoshiabe@ubuntu-0904-server-i386-1:~$ export PS1=%\
% echo 'Hello, world!'
Hello, world!
%

Debugging Bash scripts

% /bin/bash -x ./do_something.bash

Saturday, September 26, 2009

09/26/2009


  • 10:00 AM : NTT 東日本の担当者から電話あり。この電話で目覚めた。

  • OCN へ電話した。

  • NTT 東日本の担当者へ電話した。折り返しを待つ。

  • OCN の担当者から電話あり。30 日までに連絡をほしい、と。

  • NTT 東日本の担当者から電話あり。オーナーが "OK" と回答すれば連絡をもらえる予定だ。

  • PAM について調査した。

  • K-1 の試合を観戦した。

  • 風邪っぽいので、薬を飲んだ。

Understanding Linux-PAM

Preface



これは、自分が PAM (Pluggable Authentication Modules) を理解すべく、情報をまとめたポストだ。





Introduction



普段から Linux ディストリビューションを操作したりする人は、"PAM" という単語を聞いて、それが Linux に関係する技術的な用語だと理解できるはずだ。ただし、はたしてどれくらいの人が、正確に理解しているだろうか。少なくとも、自分は理解していなかった。私が理解していた内容といえば、

認証で利用できる機能を提供してくれる何か

くらいであった。最近 OpenLDAP を頻繁に操作している途中で、OpenLDAP のバックエンドデータベースに保持しているユーザ情報により、Linux ホストにログインさせたりするため PAM や NSS を操作したいた。途中、自分が理解していないことが多すぎると感じたため、ちょうどよい機会だと考えた。

簡単にまとめると、個々のアプリケーションが、それぞれ認証ロジックを用意せず、提供される PAM を利用すると幸せになれますよ、と。とりあえず man を確認してみるべく

% man pam



を実行したところ

This manual is intended to offer a quick introduction to Linux-PAM. For more information the reader is directed to the Linux-PAM system administrators´ guide.



と記載されている。





Configuration



pam.conf により設定する方法は、out of date のようだ。

/etc/pam.conf



このマシン Ubuntu 9.04 Server 32-bit における、デフォルトの pam.conf は、以下の内容で記述されている。

# ---------------------------------------------------------------------------#
# /etc/pam.conf #
# ---------------------------------------------------------------------------#
#
# NOTE
# ----
#
# NOTE: Most program use a file under the /etc/pam.d/ directory to setup their
# PAM service modules. This file is used only if that directory does not exist.
# ---------------------------------------------------------------------------#

# Format:
# serv. module ctrl module [path] ...[args..] #
# name type flag #


"#" は、コメントアウトを意味するため、すべての行がコメントアウトされている。NOTE という部分に記述されているが、このファイル pam.conf は、/etc/pam.d ディレクトリが存在しない場合のみ使用される。

Directory based configuration - /etc/pam.d



これも Ubuntu 9.04 Server 32-bit であり、デフォルトの /etc/pam.d ディレクトリに保存されているファイルだ。

% ls -l /etc/pam.d
total 60
-rw-r--r-- 1 root root 182 2009-04-17 16:53 atd
-rw-r--r-- 1 root root 384 2009-04-04 14:42 chfn
-rw-r--r-- 1 root root 581 2009-04-04 14:42 chsh
-rw-r--r-- 1 root root 1208 2009-09-26 14:36 common-account
-rw-r--r-- 1 root root 1221 2009-09-26 14:36 common-auth
-rw-r--r-- 1 root root 1440 2009-09-26 14:36 common-password
-rw-r--r-- 1 root root 1201 2009-09-26 14:36 common-session
-rw-r--r-- 1 root root 289 2008-11-13 00:47 cron
-rw-r--r-- 1 root root 3592 2009-04-04 14:42 login
-rw-r--r-- 1 root root 520 2009-03-21 18:28 other
-rw-r--r-- 1 root root 92 2009-04-04 14:42 passwd
-rw-r--r-- 1 root root 168 2009-02-21 02:24 ppp
-rw-r--r-- 1 root root 1272 2009-01-29 05:58 sshd
-rw-r--r-- 1 root root 2305 2009-04-04 14:42 su
-rw-r--r-- 1 root root 119 2009-02-17 12:22 sudo
%


"login" ファイルの内容が、どのように記述されているかを確認してみる。

% cat /etc/pam.d/login 
#
# The PAM configuration file for the Shadow `login' service
#

# Enforce a minimal delay in case of failure (in microseconds).
# (Replaces the `FAIL_DELAY' setting from login.defs)
# Note that other modules may require another minimal delay. (for example,
# to disable any delay, you should add the nodelay option to pam_unix)
auth optional pam_faildelay.so delay=3000000

# Outputs an issue file prior to each login prompt (Replaces the
# ISSUE_FILE option from login.defs). Uncomment for use
# auth required pam_issue.so issue=/etc/issue

# Disallows root logins except on tty's listed in /etc/securetty
# (Replaces the `CONSOLE' setting from login.defs)
auth [success=ok ignore=ignore user_unknown=ignore default=die] pam_securetty.so

# Disallows other than root logins when /etc/nologin exists
# (Replaces the `NOLOGINS_FILE' option from login.defs)
auth requisite pam_nologin.so

# SELinux needs to be the first session rule. This ensures that any
# lingering context has been cleared. Without out this it is possible
# that a module could execute code in the wrong domain. (When SELinux
# is disabled, this returns success.)
session required pam_selinux.so close

# This module parses environment configuration file(s)
# and also allows you to use an extended config
# file /etc/security/pam_env.conf.
#
# parsing /etc/environment needs "readenv=1"
session required pam_env.so readenv=1
# locale variables are also kept into /etc/default/locale in etch
# reading this file *in addition to /etc/environment* does not hurt
session required pam_env.so readenv=1 envfile=/etc/default/locale

# Standard Un*x authentication.
@include common-auth

# This allows certain extra groups to be granted to a user
# based on things like time of day, tty, service, and user.
# Please edit /etc/security/group.conf to fit your needs
# (Replaces the `CONSOLE_GROUPS' option in login.defs)
auth optional pam_group.so

# Uncomment and edit /etc/security/time.conf if you need to set
# time restrainst on logins.
# (Replaces the `PORTTIME_CHECKS_ENAB' option from login.defs
# as well as /etc/porttime)
# account requisite pam_time.so

# Uncomment and edit /etc/security/access.conf if you need to
# set access limits.
# (Replaces /etc/login.access file)
# account required pam_access.so

# Sets up user limits according to /etc/security/limits.conf
# (Replaces the use of /etc/limits in old login)
session required pam_limits.so

# Prints the last login info upon succesful login
# (Replaces the `LASTLOG_ENAB' option from login.defs)
session optional pam_lastlog.so

# Prints the motd upon succesful login
# (Replaces the `MOTD_FILE' option in login.defs)
session optional pam_motd.so

# Prints the status of the user's mailbox upon succesful login
# (Replaces the `MAIL_CHECK_ENAB' option from login.defs).
#
# This also defines the MAIL environment variable
# However, userdel also needs MAIL_DIR and MAIL_FILE variables
# in /etc/login.defs to make sure that removing a user
# also removes the user's mail spool file.
# See comments in /etc/login.defs
session optional pam_mail.so standard

# Standard Un*x account and session
@include common-account
@include common-session
@include common-password

# SELinux needs to intervene at login time to ensure that the process
# starts in the proper default security context. Only sessions which are
# intended to run in the user's context should be run after this. (When
# SELinux is disabled, this returns success.)
session required pam_selinux.so open
%


やや多いので、コメントアウトされている行と、空行を削除した情報のみを取得してみる。

% grep -v '\(^#\)\|\(^[   ]*$\)' /etc/pam.d/login 
auth optional pam_faildelay.so delay=3000000
auth [success=ok ignore=ignore user_unknown=ignore default=die] pam_securetty.so
auth requisite pam_nologin.so
session required pam_selinux.so close
session required pam_env.so readenv=1
session required pam_env.so readenv=1 envfile=/etc/default/locale
@include common-auth
auth optional pam_group.so
session required pam_limits.so
session optional pam_lastlog.so
session optional pam_motd.so
session optional pam_mail.so standard
@include common-account
@include common-session
@include common-password
session required pam_selinux.so open
%


/etc/pam.d ディレクトリの各ファイルは、次のフォーマットで記述されている。

type control module-path module-arguments


type



The type is the management group that the rule corresponds to. It is used to specify which of the management groups the subsequent module is to be associated with. Valid entries are:

account


this module type performs non-authentication based account management. It is typically used to restrict/permit access to a service based on the time of day, currently available system resources (maximum number of users) or perhaps the location of the applicant user -- 'root' login only on the console.

auth


this module type provides two aspects of authenticating the user. Firstly, it establishes that the user is who they claim to be, by instructing the application to prompt the user for a password or other means of identification. Secondly, the module can grant group membership or other privileges through its credential granting properties.

session


this module type is required for updating the authentication token associated with the user. Typically, there is one module for each 'challenge/response' based authentication (auth) type.

password


this module type is associated with doing things that need to be done for the user before/after they can be given service. Such things include the logging of information concerning the opening/closing of some data exchange with a user, mounting directories, etc

control



required


failure of such a PAM will ultimately lead to the PAM-API returning failure but only after the remaining stacked modules (for this service and type) have been invoked.

requisite


like required, however, in the case that such a module returns a failure, control is directly returned to the application. The return value is that associated with the first required or requisite module to fail. Note, this flag can be used to protect against the possibility of a user getting the opportunity to enter a password over an unsafe medium. It is conceivable that such behavior might inform an attacker of valid accounts on a system. This possibility should be weighed against the not insignificant concerns of exposing a sensitive password in a hostile environment.

sufficient


success of such a module is enough to satisfy the authentication requirements of the stack of modules (if a prior required module has failed the success of this one is ignored). A failure of this module is not deemed as fatal to satisfying the application that this type has succeeded. If the module succeeds the PAM framework returns success to the application immediately without trying any other modules.

optional


the success or failure of this module is only important if it is the only module in the stack associated with this service+type.

module-path



module-path is either the full filename of the PAM to be used by the application (it begins with a '/'), or a relative pathname from the default module location: /lib/security/ or /lib64/security/, depending on the architecture.

module-arguments



module-arguments are a space separated list of tokens that can be used to modify the specific behavior of the given PAM. Such arguments will be documented for each individual module. Note, if you wish to include spaces in an argument, you should surround that argument with square brackets.





Available modules



PAM で利用できるモジュールは /lib/security ディレクトリに保存されている。64-bit バージョンのインストールした場合 /lib64/security ディレクトリに保存されている。Ubuntu 9.04 Server 32-bit の場合 /lib64 ディレクトリは、/lib ディレクトリへのシンボリックリンクのようだ。

Ubuntu 8.10 Desktop 64-bit の例



% ls -dl /lib64
lrwxrwxrwx 1 root root 4 2009-07-25 00:36 /lib64 -> /lib
%


Ubuntu 9.04 Server 32-bit の例



% ls -l /lib/security/*
-rw-r--r-- 1 root root 13916 2009-03-21 18:33 /lib/security/pam_access.so
-rw-r--r-- 1 root root 9496 2009-03-27 17:28 /lib/security/pam_ck_connector.so
-rw-r--r-- 1 root root 5392 2009-03-21 18:33 /lib/security/pam_debug.so
-rw-r--r-- 1 root root 5264 2009-03-21 18:33 /lib/security/pam_deny.so
-rw-r--r-- 1 root root 9456 2009-03-21 18:33 /lib/security/pam_echo.so
-rw-r--r-- 1 root root 13596 2009-03-21 18:33 /lib/security/pam_env.so
-rw-r--r-- 1 root root 9572 2009-03-21 18:33 /lib/security/pam_exec.so
-rw-r--r-- 1 root root 5380 2009-03-21 18:33 /lib/security/pam_faildelay.so
-rw-r--r-- 1 root root 13612 2009-03-21 18:33 /lib/security/pam_filter.so
-rw-r--r-- 1 root root 5340 2009-03-21 18:33 /lib/security/pam_ftp.so
-rw-r--r-- 1 root root 13656 2009-03-21 18:33 /lib/security/pam_group.so
-rw-r--r-- 1 root root 9516 2009-03-21 18:33 /lib/security/pam_issue.so
-rw-r--r-- 1 root root 9456 2009-03-21 18:33 /lib/security/pam_keyinit.so
-rw-r--r-- 1 root root 9496 2009-03-21 18:33 /lib/security/pam_lastlog.so
-rw-r--r-- 1 root root 17808 2009-03-21 18:33 /lib/security/pam_limits.so
-rw-r--r-- 1 root root 9500 2009-03-21 18:33 /lib/security/pam_listfile.so
-rw-r--r-- 1 root root 5352 2009-03-21 18:33 /lib/security/pam_localuser.so
-rw-r--r-- 1 root root 5352 2009-03-21 18:33 /lib/security/pam_loginuid.so
-rw-r--r-- 1 root root 9464 2009-03-21 18:33 /lib/security/pam_mail.so
-rw-r--r-- 1 root root 17792 2009-03-21 18:33 /lib/security/pam_mkhomedir.so
-rw-r--r-- 1 root root 5356 2009-03-21 18:33 /lib/security/pam_motd.so
-rw-r--r-- 1 root root 34388 2009-03-21 18:33 /lib/security/pam_namespace.so
-rw-r--r-- 1 root root 5356 2009-03-21 18:33 /lib/security/pam_nologin.so
-rw-r--r-- 1 root root 5324 2009-03-21 18:33 /lib/security/pam_permit.so
lrwxrwxrwx 1 root root 13 2009-09-26 14:27 /lib/security/pam_rhosts_auth.so -> pam_rhosts.so
-rw-r--r-- 1 root root 5340 2009-03-21 18:33 /lib/security/pam_rhosts.so
-rw-r--r-- 1 root root 5332 2009-03-21 18:33 /lib/security/pam_rootok.so
-rw-r--r-- 1 root root 9464 2009-03-21 18:33 /lib/security/pam_securetty.so
-rw-r--r-- 1 root root 17752 2009-03-21 18:33 /lib/security/pam_selinux.so
-rw-r--r-- 1 root root 9536 2009-03-21 18:33 /lib/security/pam_sepermit.so
-rw-r--r-- 1 root root 5352 2009-03-21 18:33 /lib/security/pam_shells.so
-rw-r--r-- 1 root root 13564 2009-03-21 18:33 /lib/security/pam_stress.so
-rw-r--r-- 1 root root 9496 2009-03-21 18:33 /lib/security/pam_succeed_if.so
-rw-r--r-- 1 root root 13600 2009-03-21 18:33 /lib/security/pam_tally.so
-rw-r--r-- 1 root root 9532 2009-03-21 18:33 /lib/security/pam_time.so
-rw-r--r-- 1 root root 9504 2009-03-21 18:33 /lib/security/pam_umask.so
lrwxrwxrwx 1 root root 11 2009-09-26 14:27 /lib/security/pam_unix_acct.so -> pam_unix.so
lrwxrwxrwx 1 root root 11 2009-09-26 14:27 /lib/security/pam_unix_auth.so -> pam_unix.so
lrwxrwxrwx 1 root root 11 2009-09-26 14:27 /lib/security/pam_unix_passwd.so -> pam_unix.so
lrwxrwxrwx 1 root root 11 2009-09-26 14:27 /lib/security/pam_unix_session.so -> pam_unix.so
-rw-r--r-- 1 root root 50848 2009-03-21 18:33 /lib/security/pam_unix.so
-rw-r--r-- 1 root root 9492 2009-03-21 18:33 /lib/security/pam_userdb.so
-rw-r--r-- 1 root root 5320 2009-03-21 18:33 /lib/security/pam_warn.so
-rw-r--r-- 1 root root 5360 2009-03-21 18:33 /lib/security/pam_wheel.so
-rw-r--r-- 1 root root 13716 2009-03-21 18:33 /lib/security/pam_xauth.so
%


// TODO : いくつかのモジュールをピックアップして説明を記述する。



Examples



// TODO





Resources



The Linux-PAM System Administrators' Guide

Linux.com :: Let PAM take care of GNU/Linux security for you

Friday, September 25, 2009

09/25/2009


  • 設計書を更新した。

  • PAM について調査する。




Thursday, September 24, 2009

09/24/2009


  • ログファイルをゴニョゴニョする件で、一日まるっと潰れてしまった。

  • 月曜日だと思ったら木曜日だった。

  • 自宅から職場にリモート接続して正常に cron が実行されたことを確認した。

  • Dovecot のドキュメントを更新した。


date command examples

% date
Thu Sep 24 22:29:09 JST 2009
%
% date '+%Y-%m-%d %H:%M:%S'
2009-09-24 22:29:15
%
% date -d '1 day ago' '+%Y-%m-%d %H:%M:%S'
2009-09-23 22:29:25
%
% date -d '2 months ago' '+%Y-%m-%d %H:%M:%S'
2009-07-24 22:29:33
%

Wednesday, September 23, 2009

09/23/2009


  • OpenLDAP と Dovecot の連携に成功した。





Setting up a POP3 server with Dovecot and OpenLDAP

TODOs



- ユーザごとの INBOX の作成





Known Issues



- OpenLDAP をインストールした後、自動で AppArmor を起動できない。ただし、この現象は Amazon EC2 のインスタンスを使用しているときのみ発生する。原因を特定できていない。





Preface



Ubuntu Linux 9.04 に DovecotOpenLDAP をインストールし、OpenLDAP のバックエンドデータベース - HDB - にストアしているアカウントとパスワードを使用して、POP3 の認証を実現する。





Environment



Ubuntu 9.04 Server 32-bit
# Amazon EC2 のインスタンスを利用する。





Installation - Dovecot



まず Dovecot のみをインストールし、Linux アカウントで認証できる部分までを作業する。パッケージをインストールする。

sudo apt-get install dovecot-pop3d dovecot-imapd







Configuration



続いて、Dovecot を設定する。Dovecot の設定ファイルは、/etc/dovecot/dovecot.conf だ。

sudo vi /etc/dovecot/dovecot.conf



許可するプロトコルを記述する。

protocols = pop3 pop3s imap imaps


POP3 を使用する場合、上記の protocols にエントリを記述する以外に pop3_uidl_format を指定する。UIDL (Unique IDentification Listing) は、個々のメールに付与されるユニークな ID だ。

pop3_uidl_format = %08Xu%08Xv


メールボックスのフォーマットを指定する。Maildir または mbox のどちらかを指定する。どちらの形式も Dovecot はサポートしている。それぞれに利点が存在するため、詳細を MailboxFormat - Dovecot Wiki で確認できる。

#for maildir
mail_location = maildir:~/Maildir
or
# for mbox
mail_location = mbox:~/mail:INBOX=/var/mail/%u






Test



ここまで作業したら、続いてテストする。まず、Dovecot の daemon を起動する。

sudo /etc/init.d/dovecot start



プロセスの存在を確認する。

ps -ef | grep 'dovecot'



netstat コマンドを実行し、LISTEN しているかを確認する。POP3 なら 110 ポートだ。

netstat -an | grep 'LISTEN'



ローカルホストの 110 ポートに telnet で接続してみる。

telnet localhost 110



このコマンドラインから POP3 認証をテストする場合、以下のように作業する。なお、事前に一般ユーザ satoshiabe を作成してあり、このユーザのパスワードは mypassword である。

% telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
+OK Dovecot ready.
user satoshiabe
+OK
pass mypassword
+OK Logged in.
list
+OK 0 messages:
.
quit
+OK Logging out.
Connection closed by foreign host.
%






Installation - OpenLDAP



ここまで正常に作業できたら、続いて OpenLDAP を設定する。Getting Started With OpenLDAP on Ubuntu Linux を参考に OpenLDAP にストアした情報で POP3 認証できるよう設定する。必要なコマンドと最小限の説明のみ列記する。

OpenLDAP をインストールする。

sudo apt-get install slapd ldap-utils



様々な情報を設定する。

sudo dpkg-reconfigure slapd



ldapscripts をインストールし、ユーザを操作する手間を軽減する。

sudo apt-get install ldapscripts



sudo vi /etc/ldapscripts/ldapscripts.conf



sudo sh -c "echo -n 'ldapadmin' > /etc/ldapscripts/ldapscripts.passwd"



sudo chmod 400 /etc/ldapscripts/ldapscripts.passwd



OpenLDAP 経由で HDB にユーザを追加する。

sudo ldapadduser george example



パスワードを変更する。

sudo ldapsetpasswd george



nsswitch 関連の設定をする。

sudo apt-get install libnss-ldap



auth-client-config -t nss -p lac_ldap



sudo pam-auth-update







Configuration - Dovecot



/etc/dovecot/dovecot-ldap.conf



Dovecot に LDAP の設定を記述する。

sudo vi /etc/dovecot/dovecot-ldap.conf



Space separated list of LDAP hosts to use. host:port is allowed too.

hosts = localhost


Distinguished Name - the username used to login to the LDAP server.

dn = cn=admin,dc=satoshiabe,dc=jp


Password for LDAP server, if dn is specified.

dnpass = ldapadmin


Use authentication binding for verifying password's validity.

auth_bind = yes


If you use this setting, it's a good idea to use a different dovecot-ldap.conf for userdb.

auth_bind_userdn = cn=%u,ou=People,dc=satoshiabe,dc=jp


LDAP protocol version to use. Likely 2 or 3.

ldap_version = 3


LDAP base.

base = ou=People,dc=satoshiabe,dc=jp


Search scope: base, onelevel, subtree

scope = subtree


There are also other special fields which can be returned, see http://wiki.dovecot.org/UserDatabase/ExtraFields

user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid


Filter for user lookup.

user_filter = (&(objectClass=posixAccount)(uid=%u))


Password checking attributes.

pass_attrs = uid=user,userPassword=password


Filter for password lookups

pass_filter = (&(objectClass=posixAccount)(uid=%u))


/etc/dovecot/dovecot.conf



コメントアウトされていたら UN-comment-out する。

  # LDAP database
passdb ldap {
# Path for LDAP configuration file
args = /etc/dovecot/dovecot-ldap.conf
}


  # LDAP database
userdb ldap {
# Path for LDAP configuration file
args = /etc/dovecot/dovecot-ldap.conf
}






Test



Dovecot をリスタートする。

/etc/init.d/dovecot restart



OpenLDAP をデバックモードで起動する。

/etc/init.d/slapd stop (this will stop slapd in case it's already running)
slapd -f /etc/ldap/slapd.conf -d -1
or
/usr/sbin/slapd -h ldap:/// ldapi:/// -g openldap -u openldap -F /etc/ldap/slapd.d/ -d -1


もうひとつターミナルを起動し、telnet にてログインできるかを確認する。OpenLDAP のログを注視しておく。

telnet localhost 110







Resources



Dovecot - Community Ubuntu Documentation

DovecotLDAP - Community Ubuntu Documentation

Creating a user home directory when you use LDAP Authentication

Adding this line below into /etc/pam.d/common-session :

session required pam_mkhomedir.so skel=/etc/skel/

% grep -v '^#' /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 required pam_mkhomedir.so skel=/etc/skel/
session optional pam_ldap.so
%

Tuesday, September 22, 2009

09/22/2009


  • この連休にて、ずっとハマっていた件を解決できた。

  • 要約 : PAM が参照する OpenLDAP の設定ファイにおいて、間違えた文字列を記述していた。

  • 同い年で小学校が一緒だった知人が、私の実家へ手紙を送付したようだ。来年の 1 月に女性が厄払いをしてもらうので、ついでに男性も集合して、久しぶりに集合しましょう。という流れのようだ。

  • たぶん参加しない。


Monday, September 21, 2009

09/21/2009







Changing the hostname in Debian based distributions

Debian based systems use the file /etc/hostname to read the hostname of the system at boot time and set it up using the init script /etc/init.d/hostname.sh

% cat /etc/hostname
localhost
%

strace

In the simplest case strace runs the specified command until it exits. It intercepts and records the system calls which are called by a process and the signals which are received by a rocess. The name of each system call, its arguments and its return value are printed on standard error or to the file specified with the -o option.

% strace -f -F -o ~/output_strace.txt $command

-f : Trace child processes as they are created by currently traced processes as a result of the fork(2) system call.
-F : Attempt to follow vforks.
-o : Write the trace output to the file filename rather than to stderr.

Sunday, September 20, 2009

09/20/2009


  • 出社するかもしれないと考えていたが面倒だったし Amazon で注文した商品が発送されたので自宅で作業することにした。

  • OpenLDAP でユーザ認証できなくなってしまった件、原因を特定できず困っている。

  • 次の作業を開始できないっつーの。



Unknown id

Amazon EC2 のインスタンスとして起動している Ubuntu 9.04 にて、ログイン認証を OpenLDAP に対応させようとしている。

ldapadd

により john と mike を追加した。satoshiabe は、useradd で追加されている。


とろころ、getent コマンドを root で実行すると、以下のような出力を取得できるが、

root@domU-12-31-39-07-75-43:~# getent passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
syslog:x:101:102::/home/syslog:/bin/false
klog:x:102:103::/home/klog:/bin/false
sshd:x:103:65534::/var/run/sshd:/usr/sbin/nologin
openldap:x:104:108:OpenLDAP Server Account,,,:/var/lib/ldap:/bin/false
satoshiabe:x:1000:1000::/home/satoshiabe:/bin/bash
root@domU-12-31-39-07-75-43:~#



一般ユーザが実行すると、以下のような出力を取得できる。

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
syslog:x:101:102::/home/syslog:/bin/false
klog:x:102:103::/home/klog:/bin/false
sshd:x:103:65534::/var/run/sshd:/usr/sbin/nologin
openldap:x:104:108:OpenLDAP Server Account,,,:/var/lib/ldap:/bin/false
satoshiabe:x:1000:1000::/home/satoshiabe:/bin/bash
john:x:10000:10000:John Doe:/home/john:/bin/bash
mike:x:20000:20000:Mike Davis:/home/mike:/bin/bash
satoshiabe@domU-12-31-39-07-75-43:~$


一般ユーザが実行した場合 john と mike を取得できるが root が実行すると取得できない。ちなみに su でスイッチしようとすると、以下のように unknown id となる。

satoshiabe@domU-12-31-39-07-75-43:~$ su - john
Unknown id: john
satoshiabe@domU-12-31-39-07-75-43:~$ su - mike
Unknown id: mike
satoshiabe@domU-12-31-39-07-75-43:~$


なぜだ!?

Saturday, September 19, 2009

09/19/2009


  • 風邪をひいてしまった。

  • OpenLDAP でストアしているユーザでログインできるように設定できない。このまえ、設定できたように記憶しているが、なぜだ。




Friday, September 18, 2009

09/18/2009


  • 提出した書類のみで落選...





Thursday, September 17, 2009

Wednesday, September 16, 2009

09/16/2009


  • 前倒しで作業したら注意された...





Setting up FreeRADIUS to authenticate against users within an OpenLDAP directory database

まだ途中の内容であるため bitbucket.org のリポジトリを参照させておく。

GettingStartedWithOpenLDAPAndFreeRADIUS.txt

Tuesday, September 15, 2009

09/15/2009


  • 優先度の高い開発をアサインされた。

  • 18 時ごろから風邪のような症状で頭が冴えず。

  • OpenLDAP と FreeRADIUS の接続を試験してみた TODO : 手順をまとめる

  • 明日から別の問題集で LPI Level 3 試験の対策をする。


Logging statments in PostgreSQL

Setting this to zero in postgresql.conf prints all statement durations.

log_min_duration_statement = 0

Monday, September 14, 2009

09/14/2009


  • Y 氏へ連絡した。

  • 例の件をどう実装すれば...。

  • bug っぽい内容の問い合わせで残業した。



Sunday, September 13, 2009

09/13/2009


  • たまっていた郵便物などを整理した。

  • 今週ほとんど勉強できなかったので次の週末にガッツリ勉強する予定の LPI Level 3

  • 11 月に受験するか。

  • AWS を利用するので VMware をインストールできない古いマシンであっても、ネットワークに接続していれば環境を構築できる。

  • 応募した。

Using your name for commits

By default Mercurial uses a username of the form user@localhost for commits. It's the best way to configure your information in ~/.hgrc by adding lines such as the following:

% vi ~/.hgrc
[ui]
username = satoshiabe <satoshi.abe@example.com>

Saturday, September 12, 2009

09/12/2009


  • 自社にて作業

  • 自社の社員へ、私が利用している Safari Books Online を紹介してみた。ただし、英語だけですよ、と伝えなかったので、さてどうなるか。

  • USD $ 42.99 Per Month を支払うだけで、このサービスを利用できるなら安いと自分は考えているが...。

  • Ubuntu にて H21HT (HTC Touch Diamond) を利用するとき MTU の値を変更する

  • 散髪

Subversion python bindings could not be loaded

If you're using Ubuntu Linux, and want to migrate Subversion to Mercurial, you can use "hg convert" to convert the Subversion repository to the Mercurial repository. But you may get the error message when you run "hg convert" like this :

% hg convert ~/subversion_repository ~/mercurial_repository
/home/satoshiabe/subversion_repository does not look like a CVS checkout
/home/satoshiabe/subversion_repository does not look like a Git repo
Subversion python bindings could not be loaded
/home/satoshiabe/subversion_repository is not a local Mercurial repo
/home/satoshiabe/subversion_repository does not look like a darcs repo
cannot find required "mtn" tool
/home/satoshiabe/subversion_repository does not look like a GNU Arch repo
abort: /home/satoshiabe/subversion_repository: unknown repository type

In this case, you can solve this problem to install the "python-subversion" package.

% sudo apt-get install python-subversion

After installing this package, you can convert it successfully. Let's try again.

% hg convert ~/subversion_repository ~/mercurial_repository
initializing destination /home/satoshiabe/mercurial_repository repository
scanning source...
sorting...
converting...
..........
..........
..........
..........
..........
%

That's all !!

Connecting to the Internet through HTC Touch Diamond on Ubuntu

% sudo ifconfig eth1 mtu 1200

Friday, September 11, 2009

09/11/2009


  • 不具合の原因を特定した。





Thursday, September 10, 2009

09/10/2009

Wednesday, September 09, 2009

09/09/2009


  • upgraded to a Dropbox Pro 50 account

  • 大崎




Tuesday, September 08, 2009

09/08/2009


  • 睡眠薬

  • リリース

  • 電話



Monday, September 07, 2009

09/07/2009


  • やっと試験のレビューを許可してもらえた...。

  • ただし、エビデンスの取得について注意されてしまった。




Sunday, September 06, 2009

09/06/2009


  • 今日も自社へ出社した。

  • 17:30 ぐらいで終了してビックカメラに立ち寄り、自宅へ戻った。

  • 藍屋で食事した。



Saturday, September 05, 2009

09/05/2009


  • 10:00 の予定だったが 11:00 に起床した。

  • 12:30 ごろに新宿にて自社の人と会い、自社の鍵をひきとった。

  • 池袋の自社に到着して、まったりしすぎ、夕方ごろから少しずつ作業を進めた。

  • 結果的に、ほとんど進められなかったかもしれないが、やはり職場と異なり気楽に作業を進められた。

  • 明日も自社に出社する予定だ。

  • BlackBerry のソフトウェアをアップデートした。

  • 3 G に接続している状態でもアップデートできるが、10 MB ちょっとのデータをダウンロードするだけでも予想より多く時間を必要としたし、またアップデートするために多くバッテリーも消費するので、できれば wireless LAN かつ充電できる環境でアップデートすべき。

Friday, September 04, 2009

09/04/2009


  • 続けざまに 10 口の BIG を購入してしまった。

  • 手軽すぎる...。

  • 開発環境にて十分にテストできていないらしく、レビューで戻されてしまった。

  • 22:00 ごろ、諦めて帰宅することで妥協した。


Thursday, September 03, 2009

09/03/2009


  • 22 時まで残業だった。

  • 障害が発生したようで、隣のチームのメンバは、ほとんど帰宅していなかった。

  • メインで利用しているクレジットカードを利用して簡単に登録できるようだったので toto のサイトで登録した。

  • BIG を 10 口ほど購入した。3,000 円なり。


Wednesday, September 02, 2009

09/02/2009


  • レビューを依頼した内容に careless ミスが含まれていたようで、注意されてしまった。





Tuesday, September 01, 2009

09/01/2009


  • 昨夜 cron が実行したログの収集と、残りの作業を対応した。

  • レビューを依頼した。