2008/07/19

FreeBSD 7.0-RにOpenLDAP 2.3とSamba 3.0.30をインストール

cvsup をインストール

pkg_add -r cvsup-without-gui

/usr/share/examples/cvsup から ports-supfile をコピーし、適宜編集。余計なportsは更新しないように設定し、cvsup を実行。

cvsup -g -L 2 ports-supfile

openldap-server-2.3.43 のインストール

cd /usr/ports/net/openldap23-server
make
make install

OpenSSL 0.9.8h のインストール

cd /usr/ports/security/openssl
make
make install

OpenSSH portable 5.0.P1 のインストール

cd /usr/ports/security/openssh-portable
make
make install

libiconv 1.11のインストール
デフォルトだとCP932からEUCJP-MSへのコード変換ができないので,ビルド時にEXTRA_PATCHESをあてるようにオプション指定。

cd /usr/ports/converters/libiconv
make

Options for libiconv 1.11_1

[X] EXTRA_ENCODINGS Include extra character sets
[X] EXTRA_PATCHES Apply patches to fix CP932 add EUCJP-MS

make install


Samba 3.0.30 のインストール

/var/db/ports/samba3/options で、WITH_LDAP=true とする(makeで選択メニューが表示される)。

cd /usr/ports/net/samba3
make
make install

Sambaの認証をLDAPで行うためのツール、smbldap-tools-0.9.5 をインストール

cd /usr/ports/net/smbldap-tools
make
make install

nss_ldap と pam_ldap は packages からインストール

pkg_add -r nss_ldap
pkg_add -r pam_ldap

/etc/rc.conf


slapd_owner="DEFAULT"を設定しないと、boot 時にハングするので要注意。

slapd_enable="YES"
slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://0.0.0.0/"'
slapd_sockets="/var/run/openldap/ldapi"
slapd_owner="DEFAULT"
samba_enable="YES"

/usr/local/etc/smb.conf


ドメインは使わない設定。

charset = CP932
unix charset = EUCJP-MS
display charset = EUCJP-MS

workgroup = LDAP
server string = samba %v

socket options = TCP_NODELAY SO_RCVBUF=8760 SO_SNDBUF=8760

passdb backend = ldapsam:ldap://localhost
ldapsam:trusted = yes

security = user
admin users = admin
log file = /var/log/samba/log.%m

load printers = no
disable spoolss = yes

os level = 35
preferred master = Yes
domain master = Yes
domain logons = no

ldap suffix = dc=example,dc=com
ldap machine suffix = ou=Computers
ldap user suffix = ou=Users
ldap idmap suffix = ou=Users
ldap group suffix = ou=Groups
ldap admin dn = cn=Manager,dc=example,dc=com
ldap ssl = no
ldap passwd sync = yes

/usr/local/etc/nss_ldap.conf


host 127.0.0.1
base dc=example,dc=com
pam_filter objectclass=posixAccount

smbldap-populate でLDAPにsambaの認証に必要なエントリを追加。

Populating LDAP directory for domain LDAP (S-1-5-21-4022882558-1189897452-XXXXXXXXXX)
(using builtin directory structure)

entry dc=example,dc=com
entry ou=Users,dc=example,dc=com
entry ou=Groups,dc=example,dc=com
entry ou=Computers,dc=example,dc=com
entry ou=Users,dc=example,dc=com
entry uid=root,ou=Users,dc=example,dc=com
entry uid=nobody,ou=Users,dc=example,dc=com
entry cn=Domain Admins,ou=Groups,dc=example,dc=com
entry cn=Domain Users,ou=Groups,dc=example,dc=com
entry cn=Domain Guests,ou=Groups,dc=example,dc=com
entry cn=Domain Computers,ou=Groups,dc=example,dc=com
entry cn=Administrators,ou=Groups,dc=example,dc=com
entry cn=Account Operators,ou=Groups,dc=example,dc=com
entry cn=Print Operators,ou=Groups,dc=example,dc=com
entry cn=Backup Operators,ou=Groups,dc=example,dc=com
entry cn=Replicators,ou=Groups,dc=example,dc=com
entry sambaDomainName=LDAP,dc=example,dc=com Updating it...

Please provide a password for the domain root:
Changing UNIX and samba passwords for root
New password:
Retype new password:

UNIX/Linuxのパスワードファイルを migrate。-aオプションは sambaSamAccount objectClassを追加する。

smbldap-migrate-unix-accounts -P passwd -a

smbpasswd を importするのは、自前の ruby-net-ldap を利用したスクリプトで行った。


注記


smbcllient //server//foo password を試したとき NT_STATUS_UNSUCCESSFUL が発生して samba に foo ユーザで接続できなかったが、

auth/auth.c:check_ntlm_password(319)
 check_ntlm_password: Authentication for user [foo] -> [foo] FAILED with error NT_STATUS_UNSUCCESSFUL

LDAP で ou=Groups に foo ユーザのグループのエントリを定義していなかったことが原因だった。数時間もはまった。

skapcat で dump したときに,

bdb_db_open: Warning - No DB_CONFIG file found in directory /var/db/openldap-data: (2)
Expect poor performance for suffix dc=example,dc=com.

という warning メッセージが表示された。

/usr/local/etc/openldap/DB_CONFIG.example から /var/db/openldap-data/DB_CONFIG にサンプル設定ファイルをコピーしておいた。

0 件のコメント: