Sambaを使えば、Linuxサーバーをドメインコントローラーとして設定できます。ただし、ここで言うのはActive Directoryのプライマリドメインコントローラー(PDC)ではありません。Windows NT4スタイルのドメインコントローラーとして機能することができます。この構成の大きな利点の一つは、ユーザーとマシンの認証情報を一元管理できることです。
言い換えれば、本格的な PDC を必要とせず、単に認証情報のストレージを集中管理したいだけであれば、Ubuntu Server/Samba のセットアップの方がはるかに簡単に操作でき、かなりの予算を節約できます。
それでは、早速作業に取り掛かりましょう。この複雑なパズルのピースの一つをご紹介したいと思います。それは、/etc/smb.conf ファイルをドメインコントローラーとして設定するための、インタラクティブな Samba ツールです。
インストール
まず最初に、Sambaとwinbindをインストールする必要があります。ターミナルウィンドウを開き、次のコマンドを実行してください。
sudo apt install samba libpam-winbind
このインストールではいくつかの依存関係が取得される可能性があります。それらをインストールできるようにすると、構成を開始する準備が整います。
準備
samba-tool を実行する前に、 /etc/hostsファイルが次のように DC の完全修飾ドメイン名と IP アドレスに正しくマッピングされていることを確認する必要があります。
127.0.0.1 localhost.localdomain
âIP_ADDRESS_OF_SERVER localhost
âIP_ADDRESS_OF_SERVER SAMBADOM.EXAMPLE.NET SAMBADOM
IP_ADDRESS_OF_SERVERはSambaサーバーの実際のアドレスです。上記の設定は、ネットワークのニーズに合わせて編集してください。
次に、サーバーのホスト名を設定する必要があります。上記の/etc/hostsファイルによると、この設定でのホスト名はSAMBADOMになります。これを設定するには、 /etc/hostnameファイルを開いて、適宜変更してください。変更が完了したら、サーバーを再起動してください。
サーバーを再起動したら、現在のsmb.confファイルとSambaデータベースファイル(*.tdbおよび*.ldbファイル)を削除する必要があります。これらのファイルが格納されているディレクトリを見つけるには、以下の2つのコマンドを実行します。
smbd -b | grep "CONFIGFILE"
smbd -b | egrep “LOCKDIR|STATEDIR|CACHEDIR|PRIVATE_DIR”
コマンドの出力(図A)を使って、これらのディレクトリを確認し、必要なファイルを削除できるはずです。もしこれらのファイルが存在しなければ、そのまま進めます。
図A
samba-toolの使用
では、samba-tool コマンドを起動してみましょう。以下のコマンドを実行して、対話モードで実行します。
sudo samba-tool domain provision --use-rfc2307 --interactive
–use-rfc2307をつけてコマンドを実行すると、NIS 拡張機能が有効になります。この時点で、samba-tool は以下のオプションを設定するように要求します。
- レルム。これはAD DNSドメインとしても使用され、hostsファイルで設定されます。例:SAMBADOM.EXAMPLE.NET
- ドメイン。SambaサーバーのNetBIOSドメイン名。注:AD DNSドメインの最初の部分を使用することをお勧めします。例:SAMBADOM
- サーバーロール。サーバーの役割を定義します。デフォルトのdcを使用します。
- DNSバックエンド。DNSバックエンドを設定します。デフォルトのSAMBA_INTERNALを使用してください。
- DNSフォワーダーのIPアドレス。転送を使用しない場合は「none」と入力し、転送を使用する場合はDNSフォワーダーのIPアドレスを入力します(DNS転送の詳細については、Samba Wikiページをご覧ください)。
- 管理者パスワード。ドメイン管理者のパスワードを設定します。
管理者パスワードを確認すると、samba-tool がSambaをDCとして設定します。その後、/etc/ samba/smb.conf ファイルを確認して必要な変更を加えてください。この時点でsmb.confファイルの記述がいかに少ないか、驚かれることでしょう。
これで、Sambaにユーザーとユーザーのパスワードを追加できるはずです。この手順は必須です。追加しないと、ユーザーはSambaで認証できなくなります。これを行うには、以下のコマンドを使用します。
smbpasswd -a USERNAME
âsmbpasswd -e USERNAME
USERNAME は、Samba に追加する既存のユーザー名です。最初のコマンドを実行すると、Samba パスワードの作成を求められます(2 番目のコマンドでユーザーが有効化されます)。
アップストリームDNSの削除
ドメインコントローラのDNSが自身を指していることを確認する必要があります。そのためには、/etc/network/interfacesファイルを編集し、以下の設定を反映させる必要があります(これにより、ネットワークインターフェースが静的IPアドレスを使用するようになります)。
auto INTERFACE_NAME
âiface INTERFACE_NAME inet static
âaddress IP_ADDRESS_FOR_SERVER
ânetmask NETMASK
âgateway GATEWAY
âdns-nameservers IP_ADDRESS_FOR_SERVER
注意: 上記のすべて大文字の部分は、ニーズに合わせて設定する必要があります。
このファイルを保存し、次のコマンドでネットワークを再起動します。
sudo service networking restart
上記と同じ変更を反映するために、/etc/resolv.confファイルも編集する必要があります。このファイルには、以下の内容を入力します。
nameserver IP_ADDRESS_FOR_SERVER
ここで、IP_ADDRESS_FOR_SERVER は、上記の dns-nameservers で使用したアドレスと同じアドレスです。
Kerberosの設定
Kerberos にはデフォルトで独自の設定ファイルが用意されており、これを Samba プロビジョニングによって生成された krb5.conf ファイルに置き換える必要があります。これを行うには、以下のコマンドを実行します。
sudo mv /etc/krb5.conf /etc/krb5.conf.orig
âsudo ln -sf /var/lib/samba/private/krb5.conf /etc/krb5.conf
注: 元の/etc/krb5.confファイルが存在しない場合があります。その場合は、上記の 2 番目のコマンドを実行してください。
テストと接続の準備完了
これで、Sambaドメインコントローラーへの接続とテストを開始するために必要なものがすべて揃いました。しかし、DCのセットアップで最も難しいのは、この部分です。すべてが稼働していることを確認するための簡単なテストとして、次のコマンドを実行してください。
smbclient -L localhost -U%
ユーザーの Samba パスワードを入力すると、接続が成功したことが表示されます (図 B )。
図B
ご覧のとおり、smbclient テストでは netlogon と sysvol の両方が共有としてリストされています。これらはデフォルトで作成され、使用するには DC 上に存在している必要があります。また、すべてのクライアントに必要なログインスクリプトをすべて/var/lib/samba/sysvol/REALM/scriptsに配置する必要があります(REALM は samba-tool コマンド実行時に設定した REALM です)。
この時点で、Sambaドメインコントローラーは接続準備が完了しています。samba-toolによって生成されるファイルはごくわずかであるため、 /etc/ samba/smb.confを開いて、ニーズに合わせて設定を微調整する必要があるかもしれません。しかし、このファイルは適切な手順を踏むためのものです。