(Linux)ActiveDirectory連携したSambaサーバでWinクライアントからSamba共有フォルダにシングルサインオン
(Linux)SambaでActiveDirectoryと連携する で、Linux(CentOS5.5)でSambaサーバを建てたときにパスワードの認証だけActiveDirectoryを使うということをしました。
しかし、この方法だと、WindowsクライアントからSambaサーバを使うユーザを、Linuxにいちいち登録しないといけません。
登録したとしても、Windows端末からSambaにアクセスすると、認証ダイアログボックスが表示されます。
Winbindを使うと、ユーザ情報もADを使えるので毎回Linuxに登録する必要がなくなり、Windows端末からのアクセス時にも、現在ログインしているユーザで認証を自動的に行うので認証ダイアログボックスが表示されません。(ActiveDirectoryの持ち味であるシングルサインオンとなるわけです。)
設定としては、/etc/samba/smb.conf にwinbindの設定を下記のように、追加します。
# vi /etc/samba/smb.conf
[global]
dos charset = CP932
display charset = UTF-8
workgroup = HOGEDOMAIN ←ドメインのNetBIOS名を大文字で指定
server string = Samba Server Version %v
passdb backend = tdbsam
load printers = No
disable spoolss = Yes
hosts allow =
cups options = raw
netbios name = SAMBASV ←sambaサーバ名
security = ads ←Active Directoryドメインで認証を行う
realm = HOGEDOMAIN.JP ←ActiveDirectoryのFQDNを大文字で指定
#-----↓ここからWinbindの設定を追加-------
idmap uid = 10000-50000 ←ADに登録されているユーザ数より多い範囲を指定。ドメインユーザはこの範囲でuidが振られる
idmap gid = 10000-50000 ←ADに登録されているグループ数より多い範囲を指定。グループはこの範囲でuidが振られる
winbind cache time = 15
winbind separator = + ←ドメイン名とユーザ名の区切り文字。\は問題があるらしいので+にしておく
winbind use default domain = yes ←Noにした場合は "ドメイン名(大文字)\ユーザー名" でログインすることが必要(区切り文字は"winbind separator"で指定した値)
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/%U ←ユーザのホームディレクトリをどこにするか。
template shell = /bin/false ←ユーザのデフォルトシェル。telnetやsshを使わさせないのでこの値とする。
password server = domainsv01.hogedomain.jp ←ドメインコントローラ
encrypt passwords = yes ←暗号化パスワードを使用する。必ずYES。
obey pam restrictions = yes
#-----↓共有フォルダの設定-------
[share01]
comment = テスト
path = /share
valid users = HOGEDOMAIN+user01 @hogedomain+group01 ←アクセス許可するグループとユーザ指定
read only = No
browseable = yes
writable = yes
available = yes
/etc/nsswitch.confも修正します。これにより、認証時にpasswdファイルだけでなく、winbindが使えるようになります。
# vi /etc/nsswitch.conf
passwd: files winbind ←winbind追加
shadow: files winbind ←winbind追加
group: files winbind ←winbind追加
これで、samba、winbindを起動、自動起動に設定します。
# service smb restart
# service winbind start
# chkconfig smb on
# chkconfig winbind on
下記コマンドでwinbindが動いているか確認します。
# wbinfo -t
checking the trust secret via RPC calls succeeded
↑"succeeded" と出ていれば成功。
# wbinfo -u ←アカウントの一覧を列挙する
HOGEDOMAIN\administrator
HOGEDOMAIN\guest
......
# id 'HOGEDOMAIN+user01' ←指定したアカウントのuidとgidを参照
uid=10000(HOGEDOMAIN+user01) gid=10022(HOGEDOMAIN+domain users)
# getent passwd 'HOGEDOMAIN+user01' ←指定したアカウントのpasswd情報を参照
HOGEDOMAIN\user01:*:10000:10022:sannryuu pg:/home/user01:/bin/false
これで、Windowsクライアントからからドメインユーザでログインし、共有フォルダにシームレスにアクセスできればOKです。
ちなみに、これらの設定は、(Linux)ログイン時にActiveDirectoryのユーザ名・パスワードで認証できるようにするの 8. のPAM認証以外の部分となります。
参考:
Active DirectoryとLinuxの認証を統合しよう:第5回 SambaのWinbind機構による認証統合[1]|gihyo.jp … 技術評論社