Samba+OpenLDAP(目次)

Table of Contents

インストール環境

  • OS
    • CentOS 5.4(kernel 2.6.18-164.6.1.el5)
  • パッケージ
    • samba-3.0.33-3.15.el5_4
    • samba-client-3.0.33-3.15.el5_4.1
    • samba-swat-3.0.33-3.15.el5_4.1
    • openldap-servers-2.3.43-3.el5
    • openldap-clients-2.3.43-3.el5
  • smbldap-tools.noarch 0:0.9.5-1.el5.rf
  • rpmforge-release-0.3.6-1.el5.rf
  • httpd-2.2.3-31.el5.centos.2
  • php-5.1.6-24.el5_4.5
  • php-ldap-5.1.6-24.el5_4.5
  • php-mhash-5.1.6-15.el5.centos.1

OpenLDAP側の作業

インストール

  • samba.schemaが必要となるためsambaをインストール
    # yum install samba
    # yum install perl* 
    # yum install openldap-servers
    # yum install openldap-clients

設定

  • ldap管理者のパスワードを生成します。 今回は「ldapadmin」とします。
    # slappasswd
    New password: ldapadmin
    Re-enter new password: ldapadmin
    {SSHA}za0pLkK+6MBkulRtycWUJeVFNsN8kqmb
  • DB_CONFIGのサンプルをコピーします。
    # cp -rp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
  • sambaのスキーマをコピーします。
    # cp -rp /usr/share/doc/samba-3.0.33/LDAP/samba.schema /etc/openldap/schema

slapd.confの編集

  • 下記設定を追加します。
    # vi /etc/openldap/slapd.conf
     
    include         /etc/openldap/schema/samba.schema
    
    suffix      "dc=oss,dc=dip,dc=jp"
    rootdn      "cn=Manager,dc=oss,dc=dip,dc=jp"
    #先ほど生成したパスワードを入力します
    rootpw      {SSHA}za0pLkK+6MBkulRtycWUJeVFNsN8kqmb
    
    indexobjectClass,uid,sambaSID,uidNumber,gidNumber,cn,memberuid eq
    
    # ユーザが自分のパスワード変更できるようにアクセス権を設定する
    access to attrs=userPassword
           by self write
           by anonymous auth
           by * none
    
    # samba
    access to attrs=SambaLMPassword,SambaNTPassword
            by self write
            by anonymous auth
            by * none
    
    
    #管理者のみ書き込み可能、その他のユーザは読み取り専用
    access to *
            by self write
            by * read
    
  • LDAPを起動します。
    # /etc/init.d/ldap start

ユーザ情報、認証設定

  • LDAPに登録されたユーザをLinuxのユーザとして認識させるために、 NSS(ネームサービス スイッチ)とPAM(プラガブル認証モジュール)の設定を行います
    # authconfig-tui
    
    ───────────────────┤ 認証の設定 ├────────────────────┐
    ユーザ情報
    [*] LDAPを使用
    
    認証
    [*] MD5 パスワードを使用
    [*] シャドウパスワードを使用
    [*] LDAP 認証を使用
    
    ────────────────────┤ LDAP 設定 ├────────────────────┐
    サーバー: ldap://127.0.0.1/
    ベース DN: dc=oss-d,dc=net
    

    これで以下の情報が変更されます。
    • ユーザ情報(/etc/nsswitc.conf)
    • LDAP設定(/etc/openldap/ldap.conf)
    • 認証設定(/etc/pam.d/system-auth)
  • LDAPサーバに接続できない場合、何度もリトライしないよう「/etc/ldap.conf」に以下を追加します。
    # vi /etc/ldap.conf
    bind_policy soft

自動起動の設定

  • chkconfigコマンドで自動起動をONにします
    # chkconfig ldap on

  • chkconfigコマンドで自動起動の確認をします。 LUNレベル3,4,5がonになっていれば問題ありません。
    # chkconfig --list ldap
    ldap            0:off   1:off   2:on    3:on    4:on    5:on    6:off

smbldap-toolsのインストール

インストール

  • smbldap-toolsは標準パッケージではないためrpmforgeのリポジトリをyumに加えて対応する
    # wget http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
    # rpm -Uhv rpmforge-release-0.3.6-1.el5.rf.i386.rpm
  • インストール
    # yum install smbldap-tools
  • SIDを生成します。
    # net getlocalsid 
    SID for domain SERV200 is: S-1-5-21-1404179429-3428614465-2853648378

設定

smbldap.confの設定

  • smbldap.confを設定します。
    # vi /etc/smbldap-tools/smbldap.conf
    
    #net getlocalsid の実行結果
    SID="S-1-5-21-1404179429-3428614465-2853648378"
    
    sambaDomain="DOMSMB"
    slaveLDAP="127.0.0.1"
    masterLDAP="127.0.0.1"
    ldapTLS="0"
    suffix="dc=oss-d,dc=net"
    usersdn="ou=Users,${suffix}"
    hash_encrypt="SSHA"
    
    userLoginShell="/bin/bash"
    userHome="/home/%U"
    defaultMaxPasswordAge="365"
    userSmbHome="\\MYSERVER\%U"
    userProfile="\\MYSERVER\profiles\%U"
    mailDomain="oss-d.net"

smbldap_bind.confの設定

  • smbldap_bind.confを編集します。
    # vi /etc/smbldap-tools/smbldap_bind.conf
    
    #slavePw,masterPw は「slappasswd -s ldapadmin」の実行結果を設定
    slaveDN="cn=Manager,dc=oss-d,dc=net"
    slavePw="ldapadmin"
    masterDN="cn=Manager,dc=oss-d,dc=net"
    masterPw="ldapadmin"

LDAPデータベース初期化

  • 初期データの登録時にオプションで管理者アカウント(Administrator)とゲストアカウント(Guest)を追加します。
    # smbldap-populate -a Administrator -b Guest
    Populating LDAP directory for domain DOMSMB (S-1-5-21-1404179429-3428614465-2853648378)
    (using builtin directory structure)
    
    adding new entry: dc=oss-d,dc=net
    adding new entry: ou=Users,dc=oss-d,dc=net
    adding new entry: ou=Groups,dc=oss-d,dc=net
    adding new entry: ou=Computers,dc=oss-d,dc=net
    adding new entry: ou=Idmap,dc=oss-d,dc=net
    adding new entry: uid=Administrator,ou=Users,dc=oss-d,dc=net
    adding new entry: uid=Guest,ou=Users,dc=oss-d,dc=net
    adding new entry: cn=Domain Admins,ou=Groups,dc=oss-d,dc=net
    adding new entry: cn=Domain Users,ou=Groups,dc=oss-d,dc=net
    adding new entry: cn=Domain Guests,ou=Groups,dc=oss-d,dc=net
    adding new entry: cn=Domain Computers,ou=Groups,dc=oss-d,dc=net
    adding new entry: cn=Administrators,ou=Groups,dc=oss-d,dc=net
    adding new entry: cn=Account Operators,ou=Groups,dc=oss-d,dc=net
    adding new entry: cn=Print Operators,ou=Groups,dc=oss-d,dc=net
    adding new entry: cn=Backup Operators,ou=Groups,dc=oss-d,dc=net
    adding new entry: cn=Replicators,ou=Groups,dc=oss-d,dc=net
    adding new entry: sambaDomainName=DOMSMB,dc=oss-d,dc=net
    
    Please provide a password for the domain Administrator:
    Changing UNIX and samba passwords for Administrator
    New password: ldapadmin
    Retype new password: ldapadmin
    

samba側の作業

sambaの設定

smb.confの設定

  • Sambaの設定を変更します。
    # vi /etc/samba/smb.conf
    
    #======================= Global Settings =====================================
    dos charset = UTF-8
    unix charset = UTF-8
    display charset = UTF-8
    
    # ----------------------- Network Related Options -------------------------
    workgroup = DOMSMB
    server string = Samba Server
    netbios name = MYSERVER
    
    security = user
    passdb backend = ldapsam:ldap://127.0.0.1
    admin users = Administrator
    guest account = Guest
    
    # ----------------------- Domain Members Options ------------------------
    domain master = Yes
    domain logons = Yes
    ldap suffix = dc=oss-d,dc=net
    ldap machine suffix = ou=Computers
    ldap user suffix    = ou=Users
    ldap group suffix   = ou=Groups
    ldap admin dn = cn=Manager,dc=oss-d,dc=net
    ldap passwd sync = Yes
    ldap ssl = No
    
    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'
    
    # Browser Control Options
    local master = yes
    os level = 64
    preferred master = yes
    
    #----------------------------- Name Resolution -------------------------------
    wins support = yes
    
    #============================ Share Definitions ==============================
    
       [homes]
       comment = Home Directories
       browseable = no
       writable = yes
       valid users = %S
    
       [netlogon]
       comment = Network Logon Service
       path = /var/lib/samba/netlogon
       browseable = no
       guest ok = yes
       writable = no
       share modes = no
    
       [Profiles]
       path = /var/lib/samba/profiles
       browseable = no
       guest ok = yes
       writable = yes
       profile acls = yes      #移動ユーザプロファイルの設定
       create mask = 0600
       directory mask = 0700
    
       [public]
       path = /var/www/public
       writable = yes

ディレクトリの作成

  • 必要なディレクトリを作成します。
    # mkdir -p /var/lib/samba/netlogon
    # chmod 755 /var/lib/samba/netlogon
    # mkdir -p /var/lib/samba/profiles
    # chmod 1777 /var/lib/samba/profiles
    # mkdir /var/www/public
    # chmod 1777 /var/www/public

ログオンスクリプトの作成

  • ログオン時に実行されるスクリプトを作成します。 今回はログオン時に「\\myserver\共有」をZドライブとして設定するスクリプトを作成します。
    # cd /var/lib/samba/netlogon
    # vi logon.bat
    net use z: \\myserver\public
  • 改行コードをwindows用に変換します。
    # nkf -w -Lu logon.bat > logon.bat2
    # mv logon.bat2 logon.bat

LDAP管理者パスワードの設定

  • sambaからLDAPにアクセスできるようにLDAP管理者のパスワードを登録します。
    # smbpasswd -w ldapadmin
    Setting stored password for "cn=Manager,dc=oss-d,dc=net" in secrets.tdb
    これで/etc/samba/secrets.tdbにパスワードが保存されました。

自動起動の設定

  • chkconfigコマンドで自動起動をONにします
    # chkconfig smb on

  • chkconfigコマンドで自動起動の確認をします。 LUNレベル3,4,5がonになっていれば問題ありません。
    # chkconfig --list smb 
    smb             0:off   1:off   2:on    3:on    4:on    5:on    6:off
  • sambaを起動します。
    # /etc/init.d/smb start

動作確認

ユーザ追加

  • テストユーザを追加します。
    # smbldap-useradd -a -m -P testuser
    Changing UNIX and samba passwords for testuser
    New password:
    Retype new password:

コンピュータのドメイン参加

ログオン

  • さきほど作成したtestuserでログオンして問題なければ完了です。

ldap-account-manager

ユーザ管理をCLIで行うのは大変なため、ユーザ管理ツール「ldap-account-manager」を導入します。

インストール

  • yumで必要なパッケージをインストールします。
    # yum install httpd
    # yum install php
    # yum install php-ldap
    # yum install php-mhash
    
  • ldap-account-manager ダウンロードしてインストールします。
    # wget "http://sourceforge.net/projects/lam/files/LAM/2.9.0/ldap-account-manager-2.9.0-0.fedora.1.noarch.rpm/download"
    # rpm -ivh ldap-account-manager-2.9.0-0.fedora.1.noarch.rpm

phpの設定

  • memory_limitが64M未満の場合はLDAP Account Managerでエラーになるため、64M以上に設定します。
    # vi /etc/php.ini
    memory_limit = 64M
  • 変更を反映させるためapacheを再起動します。
    # /etc/init.d/httpd restart

LDAP Account Managerの設定

設定ファイルの作成

  • 雛形を利用して設定ファイルを作成します。
    # cd /var/www/html/lam/config
    # cp -rp config.cfg_sample config.cfg
    # cp -rp lam.conf_sample lam.conf
    

lam.confの編集

  • 下記の設定を環境にあわせて変更します。
    # vi  /var/www/html/lam/config/lam.conf
    
    serverURL: ldap://localhost:389
    admins: cn=Manager,dc=oss-d,dc=net
    
    treesuffix: dc=oss-d,dc=net
    defaultLanguage: ja_JP.utf8:UTF-8:日本語 (日本)
    
    types: suffix_user: ou=Users,dc=oss-d,dc=net
    types: suffix_group: ou=groups,dc=oss-d,dc=net
    types: suffix_host: ou=Computers,dc=oss-d,dc=net
    types: suffix_smbDomain: sambaDomainName=DOMSMB,dc=oss-d,dc=net

動作確認

コマンド

ユーザ追加

# smbldap-useradd -a -m -P -g groupname username 

グループ追加

# smbldap-groupadd -a "groupname"
このエントリーをはてなブックマークに追加
Last-modified: 2010-06-05 (土) 12:30:45   最終更新のRSS