よくLDAP + sambaで認証とかの記事はたくさんあるのですが、たいていは一台でLDAPサーバ + sambaサーバ構成と思います。
すでにLDAPサーバがあり、LDAPサーバローカルでsamba認証ができている環境で、sambaサーバを一台立ち上げて、既存のLDAPサーバに繋げてみます。
sambaのインストール
root@raidtest:~# apt-get install samba
libpam-ldapdのインストール
たとえsambaの認証が通ってもunix accountがなければ弾かれます。
なので、pam-ldap関連を入れます
apt-get install libpam-ldapd
インストールを行うとldapサーバを聞かれますので、現在動いてるldapサーバを指定
nsswitchでの参照を行うファイルは
- passwd
- group
- shadow
あたりでいいと思います。
(shadowはいらないかも)
smb.confの設定
最小限でいいと思いますので、こんな感じで
[global]
unix charset = UTF-8
dos charset = CP932
unix extensions = no
netbios name = MYNAME
workgroup = ouchi
#LDAP Setting
passdb backend = ldapsam:ldap://<LDAPサーバ>
ldap suffix = dc=ouchi,dc=co,dc=jp (BaseDNを入れる)
ldap user suffix = ou=People
ldap group suffix = ou=Group
ldap machine suffix = ou=Computers
ldap admin dn = cn=admin,dc=ouchi,dc=co,dc=jp (adminDNを入れる)
ldap passwd sync = yes
ldap ssl = no
admin users = Administrator
[homes]
comment = Home Directories
browseable = no
writable = yes
※suffixは適宜環境に合わせてください。
設定後【testparm】を実行して問題ないかどうか確認します。
一度、いろんなものを再起動
nscdやnslcd等、変にキャッシュを持っててうまくいかない場合があるので(ついでにsmbdも)一度リスタートをかけます。
root@raidtest:/etc/samba# /etc/init.d/nslcd restart
* Restarting LDAP connection daemon nslcd [ OK ]
root@raidtest:/etc/samba# /etc/init.d/nscd restart
* Restarting Name Service Cache Daemon nscd [ OK ]
root@raidtest:/etc/samba# initctl restart smbd
smbd start/running, process 20021
※sambaはinit.dを使えないので仕方がないのでinitctlで
アカウントが見えるかどうかの確認
LDAP上に【smbtest】ってユーザを作りました
root@raidtest:/etc/samba# getent passwd | grep smbtest
smbtest:x:7077:513:System User:/home/smbtest:/bin/bash
root@raidtest:/etc/samba# id smbtest
uid=7077(smbtest) gid=513(Domain Users) groups=513(Domain Users)
getentは問題ないけど、idが出てこないとかは nscdあたりを再起動すると直ることが度々あります。
これで何時間も時間を無駄にしたことがあります。
sambaにアクセスする前に、ホームディレクトリの作成
。。。そういうコンフィグを書いてしまったので。。。
root@raidtest:/etc/samba# cd /home/
root@raidtest:/home# mkdir smbtest
root@raidtest:/home# chown 7077:513 smbtest
これでwindowsからアクセスすると、ユーザ名、パスワードが聞かれて入れるとホームディレクトリが見れる予定です。
てっきりsambaSIDあたりで悩むかと思ったら、同じSIDが振られててました。
このあたりって誰が決めてるのでしょ?? 謎です。。。