トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   一覧 最終更新   ヘルプ   最終更新のRSS
 


Samba/3.0.33/LDAPの連携方法

動作確認ディストリビューション

  • Scientific Linux 5.5

Samba 3.0.33とLDAPの連携方法

Sambaのインストール。

# yum -y install samba

LDAPサーバとクライアントのインストール。

# yum -y install openldap-servers
# yum -y install openldap-clients

RPMによるLDAP関連のパッケージのインストール。

# yum -y install perl-LDAP perl-IO-Socket-SSL perl-Digest-SHA1

イロイロと参考にさせていただいたサイトではYUMのリポジトリにRPMforgeを追加するというやり方が記載されていたが、
今回、smbldap-toolsと一部のperlモジュールについては、EPELのパッケージを利用した。

# rpm -ivh http://download.fedora.redhat.com/pub/epel/5/i386/smbldap-tools-0.9.6-3.el5.noarch.rpm \
> http://download.fedora.redhat.com/pub/epel/5/i386/perl-Crypt-SmbHash-0.12-6.el5.noarch.rpm \
> http://download.fedora.redhat.com/pub/epel/5/i386/perl-Digest-MD4-1.5-4.el5.i386.rpm \
> http://download.fedora.redhat.com/pub/epel/5/i386/perl-Unicode-MapUTF8-1.11-7.el5.noarch.rpm \
> http://download.fedora.redhat.com/pub/epel/5/i386/perl-Unicode-Map-0.112-12.el5.i386.rpm \
> http://download.fedora.redhat.com/pub/epel/5/i386/perl-Unicode-Map8-0.12-15.el5.i386.rpm \
> http://download.fedora.redhat.com/pub/epel/5/i386/perl-Unicode-String-2.09-7.el5.i386.rpm \
> http://download.fedora.redhat.com/pub/epel/5/i386/perl-Jcode-2.06-6.el5.noarch.rpm

LDAP管理者用パスワードをMD5で取得。

# slappasswd -s 管理者用パスワード -h {MD5}
{MD5}XXXXXXXXXXXXXXXXXXXXXXXX

LDAPの設定ファイルをコピー。

# cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# cp /usr/share/doc/samba-3.0.33/LDAP/samba.schema /etc/openldap/schema/

LDAPの設定ファイルのオリジナルを保存。

# cp /etc/openldap/slapd.conf /etc/openldap/slapd.conf.orig

LDAPの設定ファイルを編集。

# vi /etc/openldap/slapd.conf

以下のように修正。

include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema
↓↓↓↓この行を追記↓↓↓↓
include         /etc/openldap/schema/samba.schema

suffix          "dc=my-domain,dc=com"
rootdn          "cn=Manager,dc=my-domain,dc=com"
↓↓↓↓修正↓↓↓↓
suffix          "dc=lovebug,dc=jp"
rootdn          "cn=Manager,dc=lovebug,dc=jp"

# rootpw                secret
# rootpw                {crypt}ijFYNcSNctBYg
↓↓↓↓この行を追記↓↓↓↓
rootpw          {MD5}XXXXXXXXXXXXXXXXXXXXXXXX <= slappasswdで取得したパスワードを設定

↓↓↓↓最下行に以下を追記↓↓↓↓
access to attrs=SambaLMPassword
        by self write
        by anonymous auth
        by * none

access to attrs=SambaNTPassword
        by self write
        by anonymous auth
        by * none

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

access to *
        by self write
        by * read

以下のコマンドを実行。

# authconfig-tui

[LDAP を使用]、[LDAP 認証を使用]にチェックし、[次]を選択。

lqqqqqqqqqqqqqqqqqqqu 認証の設定 tqqqqqqqqqqqqqqqqqqqqk
x                                                     x
x  ユーザー情報         認証                          x
x  [ ] キャッシュ情報   [*] MD5 パスワードを使用      x
x  [ ] Hesiod を使用    [*] シャドウパスワードを使用  x
x  [*] LDAP を使用      [*] LDAP 認証を使用           x
x  [ ] NIS を使用       [ ] Kerberos 5 を使用         x
x  [ ] Winbind を使用   [ ] SMB 認証を使用            x
x                       [ ] Winbind 認証を使用        x
x                       [ ] ローカル認証は十分です    x
x                                                     x
x         lqqqqqqqqqqk                lqqqqk          x
x         x 取り消し x                x 次 x          x
x         mqqqqqqqqqqj                mqqqqj          x
x                                                     x
x                                                     x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

[サーバー]欄に[ldap://127.0.0.1/]、[ベース DN]欄に[dc=lovebug,dc=jp]と入力し、[OK]を選択。

lqqqqqqqqqqqqqqqqqqqqu LDAP 設定 tqqqqqqqqqqqqqqqqqqqqk
x                                                     x
x            [ ] TLS を使用                           x
x  サーバー: ldap://127.0.0.1/_______________________ x
x ベース DN: dc=lovebug,dc=jp________________________ x
x                                                     x
x          lqqqqqqk                  lqqqqk           x
x          x 戻る x                  x OK x           x
x          mqqqqqqj                  mqqqqj           x
x                                                     x
x                                                     x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

上記設定により以下のファイルが変更されるので、内容を確認する。

# less /etc/openldap/ldap.conf 
# less /etc/ldap.conf 
# less /etc/pam.d/system-auth 
# less /etc/nsswitch.conf 

LDAPサーバへの接続失敗時にリトライし続けないように設定。
※この設定をしておかないと、サーバ起動時にudevdがネットワーク接続前にLDAPに問い合わせにいってしまい、サーバが永遠に起動しなくなってしまう場合がある。

# vi /etc/ldap.conf

#bind_policy hard
↓↓↓↓↓↓↓↓
bind_policy soft

LDAPサーバを起動。

# service ldap start

LDAPサーバの自動起動設定。

# chkconfig ldap on

Sambaの設定ファイルのオリジナルを保存。

# cp /etc/samba/smb.conf /etc/samba/smb.conf.orig

Sambaの設定ファイルを編集。

# vi /etc/samba/smb.conf

以下のように修正。

↓↓この行を追記↓↓
smb ports = 139 <= この設定を記述しておかないと、以下のようなエラーがSambaのログに出力される。
                   「getpeername failed. Error was 通信端点が接続されていません」
                   「Gethostbyaddr failed for 192.168.0.XXX」
                   「read_data: read failure for 4 bytes to client 0.0.0.0. Error = 接続が相手からリセットされました」

workgroup = MYGROUP
↓↓↓↓修正↓↓↓↓
workgroup = LOVEBUG

;       netbios name = MYSERVER
↓↓↓↓修正↓↓↓↓
netbios name = HOSTNAME

↓↓↓↓以下の行を追記↓↓↓↓
admin users = Administrator
passdb backend = ldapsam:ldap://localhost
ldap suffix = dc=lovebug,dc=jp
ldap admin dn = cn=Manager,dc=lovebug,dc=jp
ldap user suffix = ou=Users
ldap group suffix = ou=Group
ldap machine suffix = ou=Computers
ldap passwd sync = yes
add user script = /usr/sbin/smbldap-useradd -m '%u'
add machine script = /usr/sbin/smbldap-useradd -w '%u'
add group script = /usr/sbin/smbldap-groupadd -p '%g'
add user to group script = /usr/sbin/smbldap-groupmod -m '%u' '%g'
delete user script = /usr/sbin/smbldap-userdel -r '%u'
delete group script = /usr/sbin/smbldap-groupdel '%g'
delete user from group script = /usr/sbin/smbldap-groupmod -x '%u' '%g'
set primary group script = /usr/sbin/smbldap-usermod -g '%g' '%u'

passdb backend = tdbsam
↓↓↓↓修正↓↓↓↓
;passdb backend = tdbsam

;       hosts allow = 127. 192.168.12. 192.168.13.
↓↓↓↓修正↓↓↓↓
※アクセス制御については環境に合わせて設定してください。
hosts allow = [ネットワークアドレス] 127. EXCEPT [ゲートウェイアドレス]
hosts deny  = ALL

;       os level = 33
;       preferred master = yes
↓↓↓↓修正↓↓↓↓
os level = 64
preferred master = yes

;       domain master = yes
;       domain logons = yes
↓↓↓↓修正↓↓↓↓
domain master = yes
domain logons = yes

;       logon path =
↓↓↓↓修正↓↓↓↓
logon path =

Sambaの設定ファイルの内容が正しいか確認

# testparm

Sambaの管理者パスワードの設定。

# smbpasswd -w xxxxxxxxxx
Setting stored password for "cn=Manager,dc=lovebug,dc=jp" in secrets.tdb

SIDを取得。

# net getlocalsid
SID for domain HOSTNAME is: S-1-5-21-XXXXXXXXX-XXXXXXXXXX-XXXXXXXXX

LDAPの設定ファイルのオリジナルを保存。

# cp /etc/smbldap-tools/smbldap.conf /etc/smbldap-tools/smbldap.conf.orig

LDAPの設定ファイルを編集。

# vi /etc/smbldap-tools/smbldap.conf

以下のように修正。

#SID="S-1-5-21-2252255531-4061614174-2474224977"
↓↓↓↓修正↓↓↓↓
SID="S-1-5-21-XXXXXXXXX-XXXXXXXXXX-XXXXXXXXX" <= net getlocalsidで取得した値を設定

#sambaDomain="DOMSMB"
↓↓↓↓修正↓↓↓↓
sambaDomain="LOVEBUG" <= smb.confのworkgroupで設定した値と同じ値を設定する

slaveLDAP="ldap.example.com"
↓↓↓↓修正↓↓↓↓
slaveLDAP="127.0.0.1"

masterLDAP="ldap.example.com"
↓↓↓↓修正↓↓↓↓
masterLDAP="127.0.0.1"

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

suffix="dc=example,dc=com"
↓↓↓↓修正↓↓↓↓
suffix="dc=lovebug,dc=jp"

usersdn="ou=People,${suffix}"
↓↓↓↓修正↓↓↓↓
usersdn="ou=Users,${suffix}"

hash_encrypt="SSHA"
↓↓↓↓修正↓↓↓↓
hash_encrypt="MD5" <= slappasswdで指定したハッシュ方法を設定する

defaultMaxPasswordAge="45"
↓↓↓↓修正↓↓↓↓
defaultMaxPasswordAge="365"

userSmbHome="\\PDC-SRV\%U"
↓↓↓↓修正↓↓↓↓
userSmbHome="\\HOSTNAME\%U" <= smb.confのnetbios nameで設定した値と同じ値を設定する

userProfile="\\PDC-SRV\profiles\%U"
↓↓↓↓修正↓↓↓↓
userProfile="\\HOSTNAME\profiles\%U" <= smb.confのnetbios nameで設定した値と同じ値を設定する

mailDomain="example.com"
↓↓↓↓修正↓↓↓↓
mailDomain="lovebug.jp"

LDAPの設定ファイルのオリジナルを保存。

# cp /etc/smbldap-tools/smbldap_bind.conf /etc/smbldap-tools/smbldap_bind.conf.orig

LDAPの設定ファイルを編集。

# vi /etc/smbldap-tools/smbldap_bind.conf

以下のように修正。

slaveDN="cn=Manager,dc=example,dc=com"
slavePw="secret"
masterDN="cn=Manager,dc=example,dc=com"
masterPw="secret"
↓↓↓↓修正↓↓↓↓
slaveDN="cn=Manager,dc=lovebug,dc=jp"
slavePw="XXXXXXXX" <= slappasswdで取得したパスワードをハッシュ化していない状態(生パスワード)で設定
masterDN="cn=Manager,dc=lovebug,dc=jp"
masterPw="XXXXXXXX" <= slappasswdで取得したパスワードをハッシュ化していない状態(生パスワード)で設定

LDAPデータの初期化。

# smbldap-populate -a Administrator -b Guest
Populating LDAP directory for domain LOVEBUG (S-1-5-21-XXXXXXXXX-XXXXXXXXXX-XXXXXXXXX)
(using builtin directory structure)

adding new entry: dc=lovebug,dc=jp
adding new entry: ou=Users,dc=lovebug,dc=jp
adding new entry: ou=Group,dc=lovebug,dc=jp
adding new entry: ou=Computers,dc=lovebug,dc=jp
adding new entry: ou=Idmap,dc=lovebug,dc=jp
adding new entry: uid=Administrator,ou=Users,dc=lovebug,dc=jp
adding new entry: uid=Guest,ou=Users,dc=lovebug,dc=jp
adding new entry: cn=Domain Admins,ou=Group,dc=lovebug,dc=jp
adding new entry: cn=Domain Users,ou=Group,dc=lovebug,dc=jp
adding new entry: cn=Domain Guests,ou=Group,dc=lovebug,dc=jp
adding new entry: cn=Domain Computers,ou=Group,dc=lovebug,dc=jp
adding new entry: cn=Administrators,ou=Group,dc=lovebug,dc=jp
adding new entry: cn=Account Operators,ou=Group,dc=lovebug,dc=jp
adding new entry: cn=Print Operators,ou=Group,dc=lovebug,dc=jp
adding new entry: cn=Backup Operators,ou=Group,dc=lovebug,dc=jp
adding new entry: cn=Replicators,ou=Group,dc=lovebug,dc=jp
adding new entry: sambaDomainName=sambaDomain,dc=lovebug,dc=jp
adding new entry: sambaDomainName=LOVEBUG,dc=lovebug,dc=jp

Please provide a password for the domain Administrator:
Changing UNIX and samba passwords for Administrator
New password:XXXXXXXX <= Administratorユーザのパスワードを入力
Retype new password:XXXXXXXX <= パスワードの確認入力

Sambaサーバを起動。

# service smb start

Sambaサーバの自動起動設定。

# chkconfig smb on

LDAP情報の登録確認。

# getent passwd
# getent group

テスト用ユーザーの作成。

# smbldap-useradd -a -m testuser <= 一般ユーザーの作成(-a:Windowsユーザー作成 -m:ホームディレクトリ作成)

# smbldap-passwd testuser <=  パスワード設定
Changing password for testuser
New password :xxxxxxxxxx
Retype new password :xxxxxxxxxx

# smbldap-usermod -F "" testuser <= 移動プロファイルの無効化

# smbldap-usershow testuser <= 登録状況の確認
dn: uid=testuser,ou=Users,dc=lovebug,dc=jp
objectClass: top,person,organizationalPerson,inetOrgPerson,posixAccount,shadowAccount,sambaSamAccount
cn: testuser
sn: testuser
givenName: testuser
uid: testuser
uidNumber: 1000
gidNumber: 513
homeDirectory: /home/testuser
loginShell: /bin/bash
gecos: System User
sambaLogonTime: 0
sambaLogoffTime: 2147483647
sambaKickoffTime: 2147483647
sambaPwdCanChange: 0
displayName: testuser
sambaSID: S-1-5-21-1751259611-3615877051-3367673207-3006
sambaLMPassword: 0F20048EFC645D0A944E2DF489A880E4
sambaAcctFlags: [U]
sambaNTPassword: D183983EAEA7BE9959C8F4C198ED0E68
sambaPwdLastSet: 1306854989
sambaPwdMustChange: 1338390989
userPassword: {MD5}XZxoxsUO09AqL89U9jmTtg==
shadowLastChange: 15125
shadowMax: 365

# smbldap-userdel -r testuser <= ユーザ削除

# smbldap-usershow testuser <= 削除確認
user testuser doesn't exist
  • 関連書籍
    #amazon(4774121967,center,)#amazon(4798108545,center,)#amazon(4798018007,center,)#amazon(4822234002,center,)#amazon(0596007698,center,)

Last-modified: 2011-06-01 (水) 00:35:51 (2850d)