h-otterの備忘録

インフラを中心にコンピュータ関連をいいかんじにやっていきます

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と組み合わせるとLinuxWindowsの連携がとても取りやすくなるのでお勧めです。ぜひやってみてください。

参考URL

以下のサイトを参考にしました。ありがとうございます。
Samba Winbind : Server World
How to authenticate Linux accounts against an Active Directory and mount a Windows share on login? : Server Fault