3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(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 ←ユーザのデフォルトシェル。telnetsshを使わさせないのでこの値とする。

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 … 技術評論社

Samba が動作する Linux マシンを Windows ドメインに参加させる方法 ― MIRACLE LINUX V2.1 における Samba Winbind 利用方法 ―:ミラクル・リナックス