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:
コンピュータのドメイン参加
- 下記手順に従いコンピュータをドメインに参加させます。
http://www.microsoft.com/japan/windowsxp/pro/using/itpro/networking/joindomain.mspx
参加の際に必要となる、ユーザ名、パスワードは以下を入力します。
ユーザ名 :Administrator
パスワード:ldapadmin
ログオン
- さきほど作成した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
動作確認
- ブラウザでアクセスして動作を確認して下さい。
http://192.168.11.200/lam/
コマンド
ユーザ追加
# smbldap-useradd -a -m -P -g groupname username
グループ追加
# smbldap-groupadd -a "groupname"