As Good A Place As Any
Tim Thomas's Blog
OpenSolaris CIFS サーバーをドメインモードで構成
最近、「OpenSolaris CIFS サーバーをワークグループモードで構成」というブログを書きました。今回はこの手順を Active Directory 環境で行なってみました。
前回と同様、Sun Fire X4500 に Solaris Nevada build 86 をインストールして作業しています。
root@isv-x4500b # uname -a
SunOS isv-x4500b 5.11 snv_86 i86pc i386 i86pc
使用したコマンドやシステムのファイルはほぼそのまま記載しましたが、一部のフィールドはこの記事のために編集しています。
1. OpenSolaris サーバーを Active Directory ドメインサーバーの DNS クライアントとして構成する
このためには /etc/resolv.conf ファイルを作成または修正し、Active Directory ドメインコントローラに対して検索を行うようにします。
root@isv-x4500b # cat /etc/resolv.conf
domain sspg.central.sun.com
nameserver 192.168.2.1
search sspg.central.sun.com central.sun.com
次に /etc/nsswitch.conf ファイルを設定し、DNS 経由でホストが解決されるようにします。既存の /etc/nsswitch.conf ファイルを修正するか、単に /etc/nsswitch.dns を /etc/nsswitch.conf にコピーします。
DNS が正常に動作していることを確認するために、既知のホストを nslookup で検索する簡単なテストを行うのもよいでしょう。
2. Kerberos を設定する
/etc/krb5/krb5.conf ファイルを編集し、使用している環境に合わせながら次のようにフィールドを設定します。次に記載してあるのは /etc/krb5/krb5.conf ファイルの一部だけです。マニュアルの 42 ~ 43 ページに手順が詳しく説明されています。
<-- 省略 -->
[libdefaults]
default_realm = SSPG.CENTRAL.SUN.COM
[realms]
SSPG.CENTRAL.SUN.COM = {
kdc = domaincontroller.sspg.central.sun.com
admin_server = domaincontroller.sspg.central.sun.com
kpasswd_server = domaincontroller.sspg.central.sun.com
kpasswd_protocol = SET_CHANGE
}
[domain_realm]
.sspg.central.sun.com = SSPG.CENTRAL.SUN.COM
<-- 省略 -->
3. 使用しているサーバーの時計をドメインコントローラと同期させる
これは見落としやすい手順です。あとで Kerberos の初期化で問題が発生し、ドメインに参加できない可能性があります。実際、筆者の身にも起こりました。
マニュアルの 43 ページでは時計を同期させる方法をいくつか説明していますが、筆者は次の方法で行いました。
root@isv-x4500b # ntpdate domaincontroller.sspg.central.sun.com
4. CIFS サービスを開始する
root@isv-x4500b # svcadm enable -r smb/server
svcadm:svc:/milestone/network depends on svc:/network/physical, which has multiple instances.
このメッセージは無視してかまいません。
5. ドメインに参加する
この手順を完了するには、ドメインで Administrator 権限を持つ Active Directory ユーザーの名前 (この場合 aduser) とパスワードを入手しておく必要があります。
この部分で筆者はしばらく立ち往生しました。マニュアルの 43 ページで sharectl を使用していますが、ここでは余分な手順が説明されているとみられ、うまくいきませんでした。結局、次の方法で解決しました。
root@isv-x4500b # smbadm join -u aduser sspg.central.sun.com
Enter domain password:
Joining 'sspg.central.sun.com' ... this may take a minute ...
Successfully joined domain 'sspg.central.sun.com'
もし失敗した場合、手順 3 を実行したか確認してください。サーバー間の時間差が大きすぎるときにドメインに参加しようとした場合、システムログに Kerberos のメッセージが残ります。これが原因ではなければ、Troubleshooting Guide を参照してください。
6. CIFS サーバーを停止および開始する
root@isv-x4500b # svcadm enable -r smb/server
svcadm:svc:/milestone/network depends on svc:/network/physical, which has multiple instances.
7. ZFS ファイルシステムを作成する
筆者はすでに tank という ZFS ストレージ��ールを作成してあります。
root@isv-x4500b # zfs create -o casesensitivity=mixed tank/cifs1
8. SMB 経由で ZFS ファイルシステムを共有し、共有名をカスタマイズする
root@isv-x4500b # zfs sharesmb=on tank/cifs1
デフォルトの共有名は tank_cifs1 になります。次のようにすると、これを cifs1 に変更できます。
root@isv-x4500b # zfs sharesmb=name=cifs1 tank/cifs1
これは sharemgr を使用すると確認できます。
root@isv-x4500b # sharemgr show -vp
default nfs=()
zfs
zfs/tank/cifs1 smb=()
cifs1=/tank/cifs1
9. 共有ディレクトリにアクセス権を設定する
筆者は、2 台の Windows クライアントから Active Directory の登録ユーザーで共有にアクセスしようと考えていました。共有ディレクトリでアクセス権を設定し、アクセス上の問題が発生しないようにしました。
root@isv-x4500b # chmod 777 /tank/cifs1
この手順をもっと簡潔に行えるようにするには、Solaris CIFS Administrators Guide に記述されているように、ZFS ACL や ID マッピングについてさらに実験を重ねる必要があります。これについては今後考察してみます。
10. 共有にアクセスする
Microsoft Windows Server 2003 が稼働している 2 台のクライアント (client 1 と client 2) から共有にアクセスします。
2 台とも CIFS サーバーと同じ Active Directory ドメインのメンバーです。各サーバーに対し、別々の Active Directory 登録ユーザーとしてログインします。つまり、user1 が client1 にログインし、user2 が client2 にログインします。
共有を両方のクライアントに対してマップします。

共有をマップしたとき、ワークグループのときのようにユーザー ID とパスワードを要求されることはありませんでした。しかしシステムログを見ると認証が行われており、共有に対する rw アクセス権限がユーザー [SSPG\user1] と [SSPG\user2] に付与されています。
Apr 8 05:49:30 isv-x4500b smbsrv:NOTICE: smbd[SSPG\user1]: cifs1 rw access granted
Apr 8 05:49:53 isv-x4500b smbsrv: NOTICE: smbd[SSPG\user2]: cifs1 rw access granted
両方のクライアントから問題なく同じ共有ディレクトリを参照したり、そこにファイルやフォルダを作成したりできました。
詳細情報
OpenSolaris Project: CIFS Server のホームページ
Open Solaris CIFS Documentation と、Solaris CIFS Administrators Guide や Troubleshooting Information
また Open Solaris Storage Discuss Forum への参加もご検討ください
Posted at 09:00AM Apr 27, 2008 in Storage |