samba+LDAPでADっぽいのを作った時の備忘録です。

■説明
samba+LDAPでWindowsのADっぽいのを作成してみます。
色々ハマったけど、一応できたので備忘録として書きます。

■OSバージョン
CentOS 5.6 64bit
注)OSのインストール方法は、以下アドレスの通りにしています。
http://www.kurobuti.com/linuxserver/index.php?option=com_content&view=artic
le&id=68&Itemid=74


■OpenLDAPバージョン
openldap-2.3.43-12.el5_6.7
openldap-servers-2.3.43-12.el5_6.7
openldap-2.3.43-12.el5_6.7

■sambaバージョン
samba-client-3.0.33-3.29.el5_6.2
samba-common-3.0.33-3.29.el5_6.2
samba-common-3.0.33-3.29.el5_6.2
samba-3.0.33-3.29.el5_6.2

■smbldap-toolsバージョン
smbldap-tools-0.9.5-1
※rpmパッケージ化をしてインストールします。
※最新版は以下URLを参照してください。
http://sourceforge.jp/projects/freshmeat_smbldap-tools/releases/

■rpmforgeリポジトリバージョン
rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
※最新版は以下URLを参照してください。
http://pkgs.repoforge.org/rpmforge-release/

■ルートDN
cn=Manager, dc=example, dc=com

■ドメイン
TEST-DOMAIN

■サーバ名(ホスト名)

example

■サーバIP
192.168.0.60

■ADに登録するユーザー名
ldapuser

■ADに登録するコンピューター名
winxp
※前提として、「winxp」と言う名前をADに登録するコンピューターに設定しているものとします。

(1)rpmforgeリポジトリをインストール

[root@example ~]# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
[root@example ~]# rpm -ivh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
※rpmforgeリポジトリをインストールする理由は、smbldap-toolsをパッケージ化してインストールするのに必要なPerlモジュールをインストールするため。

(2)必要なパッケージのインストール
[root@example ~]# yum -y install perl-Convert-ASN1 perl-LDAP perl-Digest-SHA1 perl-IO-Socket-SSL perl-Crypt-SmbHash perl-Unicode-MapUTF8 samba samba-common samba-client openldap-servers

(3)samba.schemaのコピー
[root@example ~]# cp /usr/share/doc/samba-3.0.33/LDAP/samba.schema /etc/openldap/schema/

(4)slapd.confの設定変更
[root@example ~]# cd /etc/openldap/
[root@example openldap]# slappasswd -h {CRYPT} ← LDAPにアクセスするようのパスワードを生成する。
New password:
Re-enter new password:
{CRYPT}89Z8MePYPf7zM
[root@example openldap]# vi slapd.conf
include         /etc/openldap/schema/samba.schema # 追加
suffix          "dc=my-domain,dc=com"
↓ # 修正
suffix          "dc=example,dc=com"

rootdn          "cn=Manager,dc=my-domain,dc=com"
↓ # 修正
rootdn          "cn=Manager,dc=example,dc=com"

# rootpw                {crypt}ijFYNcSNctBYg
↓ # 修正
rootpw                  {CRYPT}89Z8MePYPf7zM

[root@example openldap]# cp DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@example openldap]# chown ldap:ldap /var/lib/ldap/DB_CONFIG

(5)ldap.confの修正
[root@example ~]# vi /etc/ldap.conf
#host 127.0.0.1
↓ # コメントアウト削除
host 127.0.0.1

base dc=example,dc=com # 適正なものに修正(ここではこれ)

#bind_policy hard
↓ # 修正
bind_policy soft

(6)ldapの起動
[root@example ~]# service ldap start
slapd の設定ファイルをチェック中:  config file testing succeeded
                                                           [  OK  ]
slapd を起動中:                                            [  OK  ]
[root@example ~]# chkconfig ldap on
[root@example ~]# ps aux | grep ldap
ldap      5769  2.0  8.9 506028 91764 ?        Ssl  20:32   0:00 /usr/sbin/slapd -h ldap:/// -u ldap

(7)smbldap-toolsのダウンロード
[root@example ~]# cd /usr/src/redhat/SOURCES/
[root@example SOURCES]# wget http://freshmeat.net/urls/af7cbdd717205137623080a133362b0e

(8)smbldap-toolsのインストール
[root@example SOURCES]# tar zxvf smbldap-tools-0.9.5.tgz smbldap-tools-0.9.5/smbldap-tools.spec
smbldap-tools-0.9.5/smbldap-tools.spec
[root@example SOURCES]# mv smbldap-tools-0.9.5/smbldap-tools.spec ../SPECS/
[root@example SOURCES]# rmdir smbldap-tools-0.9.5
[root@example SOURCES]# cd ../SPECS/
[root@example SPECS]# rpmbuild -bb smbldap-tools.spec
[root@example SPECS]# cd ../RPMS/noarch/
[root@example noarch]# rpm -ivh smbldap-tools-0.9.5-1.noarch.rpm
準備中...                ########################################### [100%]
   1:smbldap-tools          ########################################### [100%]

(9)sambaの設定変更
[root@example ~]# cd /etc/samba
[root@example samba]# mv smb.conf smb.conf.ori
[root@example samba]# vi smb.conf
[global]
        dos charset = CP932
        unix charset = UTF-8
        display charset = UTF-8
        netbios name = test
        workgroup = TEST-DOMAIN
        passdb backend = ldapsam:ldap://localhost:389
        admin users = Administrator
        domain master = yes
        domain logons = yes
        ldap suffix = dc=example,dc=com
        ldap admin dn = cn=Manager,dc=example,dc=com
        ldap user suffix = ou=Users
        ldap group suffix = ou=Groups
        ldap machine suffix = ou=Machine
        ldap idmap suffix = ou=Imap
        ldap passwd sync = yes
        add user script = /usr/sbin/smbldap-useradd -m '%u'
        delete user script = /usr/sbin/smbldap-userdel -r '%u'
        add group script = /usr/sbin/smbldap-groupadd -p '%g'
        delete group script = /usr/sbin/smbldap-groupdel '%g'
        add user to group script = /usr/sbin/smbldap-groupmod -m '%u' '%g'
        delete user from group script = /usr/sbin/smbldap-groupmod -x '%u' '%g'
        set primary group script = /usr/sbin/smbldap-usermod -g '%g' '%u'
        add machine script = /usr/sbin/smbldap-useradd -w '%u'

[profiles]
        path = /var/samba/profiles/%u
        read only = No
        writeenable = yes
        profile acls = yes
        create mask = 0600
        directory mask = 0700
        browseable = No

(10)LDAPのルートDNパスワード設定
[root@example ~]# smbpasswd -w password
Setting stored password for "cn=Manager,dc=example,dc=com" in secrets.tdb

(11)SIDの取得
[root@example samba]# net getlocalsid
SID for domain EXAMPLE is: S-1-5-21-1298838609-3213121885-3716364989
※SIDとは
http://itpro.nikkeibp.co.jp/article/Keyword/20070209/261685/

(12)smbldap-toolsの設定変更
[root@example ~]# cd /etc/smbldap-tools/
[root@example smbldap-tools]# vi smbldap.conf
SID="S-1-5-21-2252255531-4061614174-2474224977"
↓ # 取得したSIDに修正
SID="S-1-5-21-1298838609-3213121885-3716364989"

sambaDomain="DOMSMB"
↓ # 修正
sambaDomain="TEST-DOMAIN"

slaveLDAP="ldap.iallanis.info"
↓ # 修正
slaveLDAP="localhost"

masterLDAP="ldap.iallanis.info"
↓ # 修正
masterLDAP="localhost"

ldapTLS="1"
↓ # 修正
ldapTLS="0"

suffix="dc=iallanis,dc=info"
↓ # 修正
suffix="dc=example,dc=com"

computersdn="ou=Computers,${suffix}"
↓ # 修正
computersdn="ou=Machine,${suffix}"

hash_encrypt="SSHA"
↓ # 修正
hash_encrypt="CRYPT"

#userProfile="\\PDC-SRV\profiles\%U"
↓ # 修正
userProfile="\\192.168.0.60\profiles\%U"

[root@example smbldap-tools]# vi smbldap_bind.conf
slaveDN="cn=Manager,dc=iallanis,dc=info"
slavePw="secret"
↓ # 修正
slaveDN="cn=Manager,dc=example,dc=com"
slavePw="password" # ルートDNのパスワード

masterDN="cn=Manager,dc=iallanis,dc=info"
masterPw="secret"
↓ # 修正
masterDN="cn=Manager,dc=example,dc=com"
masterPw="password" # ルートDNのパスワード

(13)nsswitchの修正
[root@example ~]# vi /etc/nsswitch.conf
passwd:     files
shadow:     files
group:      files
↓ # 修正
passwd:     files ldap winbind
shadow:     files ldap
group:      files ldap winbind

hosts:      files dns
↓ # 修正
hosts:      files dns wins

(14)LDAP認証の有効化
[root@example ~]# LANG=en_US.UTF-8
[root@example ~]# authconfig --update --enableldap --enableldapauth --ldapserver 127.0.0.1 --ldapbasedn dc=example,dc=com
※authconfig-tuiでも可能

(15)smbldap-populateでLDAPに初期データを挿入
[root@example ~]# smbldap-populate -a Administrator
Populating LDAP directory for domain TEST-DOMAIN (S-1-5-21-1298838609-3213121885-3716364989)
(using builtin directory structure)

adding new entry: dc=example,dc=com
adding new entry: ou=Users,dc=example,dc=com
adding new entry: ou=Groups,dc=example,dc=com
adding new entry: ou=Machine,dc=example,dc=com
adding new entry: ou=Idmap,dc=example,dc=com
adding new entry: uid=Administrator,ou=Users,dc=example,dc=com
adding new entry: uid=nobody,ou=Users,dc=example,dc=com
adding new entry: cn=Domain Admins,ou=Groups,dc=example,dc=com
adding new entry: cn=Domain Users,ou=Groups,dc=example,dc=com
adding new entry: cn=Domain Guests,ou=Groups,dc=example,dc=com
adding new entry: cn=Domain Computers,ou=Groups,dc=example,dc=com
adding new entry: cn=Administrators,ou=Groups,dc=example,dc=com
adding new entry: cn=Account Operators,ou=Groups,dc=example,dc=com
adding new entry: cn=Print Operators,ou=Groups,dc=example,dc=com
adding new entry: cn=Backup Operators,ou=Groups,dc=example,dc=com
adding new entry: cn=Replicators,ou=Groups,dc=example,dc=com
adding new entry: sambaDomainName=TEST-DOMAIN,dc=example,dc=com

Please provide a password for the domain Administrator:
Changing UNIX and samba passwords for Administrator
New password: ルートDNのパスワード
Retype new password: ルートDNのパスワード

(16)sambaを起動
[root@example samba]# service smb start
SMB サービスを起動中:                                      [  OK  ]
NMB サービスを起動中:                                      [  OK  ]
[root@example ~]# chkconfig smb on
[root@example ~]# ps aux | grep smb
root      6205  0.0  0.4 145284  4224 ?        Ss   20:58   0:00 smbd -D
root      6207  0.0  0.1 145284  1916 ?        S    20:58   0:00 smbd -D

(17)Administratorのパスワード変更
[root@example ~]# smbldap-passwd administrator
Changing UNIX and samba passwords for administrator
New password:
Retype new password:

(18)使用コンピューターをドメインに参加
[root@example samba]# smbldap-useradd -w winxp
[root@example samba]# smbldap-usershow winxp$
dn: uid=winxp$,ou=Machine,dc=example,dc=com
objectClass: top,account,posixAccount
cn: winxp$
uid: winxp$
uidNumber: 1002
gidNumber: 515
homeDirectory: /dev/null
loginShell: /bin/false
description: Computer
gecos: Computer

(19)ADにユーザーを追加
[root@example samba]# smbldap-useradd -a -m ldapuser
[root@example samba]# smbldap-passwd ldapuser
Changing UNIX and samba passwords for ldapuser
New password:
Retype new password:
[root@example samba]# smbldap-usershow ldapuser
dn: uid=ldapuser,ou=Users,dc=example,dc=com
objectClass: top,person,organizationalPerson,inetOrgPerson,posixAccount,shadowAccount,sambaSamAccount
cn: ldapuser
sn: ldapuser
givenName: ldapuser
uid: ldapuser
uidNumber: 1015
gidNumber: 513
homeDirectory: /home/ldapuser
loginShell: /bin/bash
gecos: System User
sambaLogonTime: 0
sambaLogoffTime: 2147483647
sambaKickoffTime: 2147483647
sambaPwdCanChange: 0
displayName: ldapuser
sambaSID: S-1-5-21-1298838609-3213121885-3716364989-3030
sambaPrimaryGroupSID: S-1-5-21-1298838609-3213121885-3716364989-513
sambaLogonScript: logon.bat
sambaProfilePath: \\192.168.0.60\profiles\ldapuser
sambaHomePath: \\PDC-SRV\ldapuser
sambaHomeDrive: H:
sambaLMPassword: 8ACD87BB336561D725AD3B83FA6627C7
sambaAcctFlags: [U]
sambaNTPassword: 50CD7FB3DF6C767FF16F9B50216736FD
sambaPwdLastSet: 1307800150
sambaPwdMustChange: 1311688150
userPassword: {CRYPT}9wQvKtsN7HWoU
shadowLastChange: 15136
shadowMax: 45

(20)プロファイル保存ディレクトリ作成
[root@example ~]# mkdir -p /var/samba/profiles/ldapuser
[root@example ~]# chmod o+w /var/samba/profiles/ldapuser
※この作業をしないと以下のエラーが発生する。
・エラー内容
移動プロファイルのサーバー用コピーが見つからないため、ローカルプロファイルを使ってログオンしようとしています。
プロファイルへの変更は、ログおh時にサーバーにはコピーされません。ネットワークの問題が発生しているか、セキュリティの権限が不足していることが原因と考えられます。
問題が解決しない場合は、管理者に問い合わせてください。
詳細 – ネットワーク名が見つかりません。

(21)Windowsマシンのドメイン参加設定
①マイコンピューターを開く

②マイコンピューター上で右クリックしてプロパティを選択する


②「コンピューター」タブの「変更」をクリックする


③「コンピューター名」が登録したものになっていることを前提とし、「ドメイン」を選択後に「参加ドメイン」を入力する


④ドメインユーザー名に「administrator」、パスワードに登録したパスワードを入力する


⑤成功すれば以下の画面のようになり、再起動する。


⑥再起動後、「Ctrl」+「Alt」+「Del」キーを押して「オプション」をクリックし、必要な情報を入力し「OK」をクリックする。


問題なくログインできること。

参考文献
1.http://kralis.dip.jp/wiki/index.php?Samba-LDAP%E3%81%A7%E3%81%AEPDC%E6%A7%8B%E7%AF%89%E3%83%A1%E3%83%A2


6月 11, 2011 at 11:32 pm by 黒ぶちメガネ
Category: Linux, samba