Active Directoryで作成したホームディレクトリをUbuntuでマウントする方法
Active Directoryの認証を利用した共有フォルダをUbuntuのホームディレクトリに設定する方法を書きます。今回はWinbindでドメインに参加し、Ubuntuでホームディレクトリに対象のフォルダをマウントしていきます。
環境
ドメインサーバー
ホスト名 : ad.domain.local
レルム : DOMAIN.LOCAL
レルムは認証をするネットワークの範囲を示します。大文字入力が一般的です。わかりやすく言えばログインするときにユーザー名に"username@domain.local"のように入力した場合、@以降に入るものがレルムと等価であると考えていいはずです。
ファイルサーバー
ホスト名 : file.domain.local
共有先 : UserShare
※ 共有先に各ユーザーに各ユーザー名のフォルダ名を付けたディレクトリを作成しておきます(詳しい方法は別記事で)
クライアント
ホスト名 : client
OS : ubuntu server 14.04 LTS
ネットワーク : DNSにADサーバーをさすようにしておいてください(詳しい方法は別記事で)
具体的な設定
1. Winbind
必要なパッケージのインストール
$ sudo aptitude -y install winbind libpam-winbind libnss-winbind krb5-config
"Configuring Kerberos Authentication"が出てきた場合
自分は出てくるときと出てこない時があるんですけど何が条件なのでしょう?誰か教えてください。
それぞれの項目に対して以下のように入力してください。
Default Kerberos version 5 realm: DOMAIN.LOCAL
Kerberos servers for your realm: ad.domain.local
Administrative server for your Kerberos realm: ad.domain.local
sambaの設定
/etc/samba/smb.conf
29行目から修正と追記
workgroup = DOMAIN password server = ad.domain.local realm = DOMAIN.LOCAL security = ads idmap config * : range = 16777216-33554431 template homedir = /home/%U template shell = /bin/bash winbind use default domain = true winbind offline logon = false
pamなどのログインの設定
/etc/nsswitch.conf
7行目から追記
passwd:compat winbind group:compat winbind shadow:compat winbind
/etc/pam.d/common-session
最終行に追記
session optional pam_mkhomedir.so skel=/etc/skel umask=077
ADに参加
ADに参加します。Windowsがドメインに参加するときと同様に"Domain Admins"に参加しているユーザーが必要になります。
$ sudo net ads join -U Administrator Enter Administrator's password: Using short domain name -- DOMAIN Joined 'client' to dns domain 'domain.local' No DNS domain configured for client. Unable to perform DNS Update. DNS update failed: NT_STATUS_INVALID_PARAMETER $ sudo initctl restart winbind winbind start/running, process * $ sudo initctl restart smbd smbd start/running, process * $ sudo initctl restart nmbd nmbd start/running, process *
これでADに参加することができました。SSHでもログインすることができるようになっていると思います。DNSの更新ができないと怒られますが支障はありません。まだ検証不足ですが、前もって動的更新をオンにした入れ子をDNSに作っておき、クライアントの"/etc/network/interfaces"正しく"dns-search"を設定したうえで参加するとうまく行ったりします。
Sudoersの設定
Winbindの最後に"Domain Admins"に管理者権限を与えます。
/etc/sudoers
22行目以降
# Members of the admin group may gain root privileges %admin ALL=(ALL) ALL %Domain\ Admins ALL=(ALL) ALL
空白などの特殊文字の前には"\"を入れます。もちろん"Domain Admins"の部分を変えればほかのグループにも管理者権限を与えることは可能ですし、複数の行を作成して複数のグループに管理者権限を与えることも可能です。
2. ホームディレクトリにマウント
ホームディレクトリにマウントするために"libpam-mount"などをインストールします。
$ sudo apt-get install libpam-mount smbclient cifs-utils
/etc/security/pam_mount.conf.xml
16行目から追記と<mkmountpoint ...>
タグの修正
<volume user="*" server="file.domain.local" path="UserShares" mountpoint="home" fstype="cifs" /> <cifsmount>mount -t cifs //%(SERVER)/%(VOLUME)/%(USER) %(MNTPT)/%(USER) -o "user=%(USER),uid=%(USERUID),gid=%(USERGID)%(before=\",\" OPTIONS)"</cifsmount> <umount>umount %(MNTPT)/%(USER)</umount> <mkmountpoint enable="1" remove="false" />
以上でログイン時ににADのsmbサーバーのホームディレクトリをマウントするようなりました。GPOと組み合わせるとLinuxとWindowsの連携がとても取りやすくなるのでお勧めです。ぜひやってみてください。
参考URL
以下のサイトを参考にしました。ありがとうございます。
Samba Winbind : Server World
How to authenticate Linux accounts against an Active Directory and mount a Windows share on login? : Server Fault