UbuntuとWindowsの間でファイル共有やプリンター共有を実現するために、SambaとActive Directoryを統合する方法について詳しく説明します。このプロセスは、LinuxシステムとWindows環境間でシームレスなネットワーク共有を提供するために非常に有効です。この記事では、SambaをActive Directoryに統合する手順をステップバイステップで解説し、実際の設定方法についても説明します。
Sambaとは?
Sambaは、Linux/UnixシステムとWindowsシステム間でファイルやプリンターを共有するためのオープンソースのソフトウェアです。Sambaは、WindowsのSMB(Server Message Block)プロトコルを利用するため、Windows環境との互換性があります。これにより、LinuxユーザーもWindowsネットワーク上でファイル共有やプリンターの利用が可能になります。
Active Directoryとは?
Active Directory(AD)は、Microsoftが提供するディレクトリサービスです。主にWindows環境で使用され、ユーザー管理、グループポリシー、ネットワークリソースへのアクセス管理などの機能を提供します。Active Directoryは、企業内ネットワークの中心的な認証および管理ツールとして広く使われています。
SambaをActive Directoryと統合する理由
SambaをActive Directoryに統合することで、Linux/UbuntuシステムがWindowsドメインに参加し、Windowsネットワーク内のリソース(ファイルサーバやプリンター)を効率的に利用できるようになります。これにより、UbuntuシステムはWindows環境と一貫性のあるセキュリティと管理機能を持つことができ、企業内での統一的なネットワーク管理が可能となります。
必要な前提条件
- Ubuntuシステム(バージョン20.04以降を推奨)
- Active Directoryが構成されたWindowsサーバ
- Sambaパッケージ
- 必要なネットワーク設定が整っていること
ステップ1: 必要なパッケージのインストール
まず、UbuntuにSamba関連のパッケージをインストールします。以下のコマンドを使用して、必要なパッケージをインストールします。
bashsudo apt update sudo apt install samba smbclient winbind libnss-winbind libpam-winbind krb5-user
このコマンドは、Sambaとその関連ツール、そしてWindowsのネットワークサービスと通信するために必要なパッケージをインストールします。
ステップ2: Kerberosの設定
Active Directoryとの通信にはKerberos認証が必要です。/etc/krb5.conf
を編集して、Kerberos設定を行います。以下のように、ADドメインの情報を設定します。
bash[libdefaults]
default_realm = EXAMPLE.COM
dns_lookup_realm = false
dns_lookup_kdc = true
[realms]
EXAMPLE.COM = {
kdc = dc.example.com
admin_server = dc.example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
ここでは、example.com
を自分のActive Directoryドメインに置き換えてください。
ステップ3: Samba設定の変更
次に、Sambaの設定ファイルである/etc/samba/smb.conf
を編集します。以下のように設定ファイルを編集し、Active Directoryに参加するための設定を行います。
bash[global]
workgroup = EXAMPLE
realm = EXAMPLE.COM
security = ads
password server = dc.example.com
idmap config *:backend = tdb
idmap config *:range = 10000-20000
winbind use default domain = yes
winbind offline logon = yes
template homedir = /home/%D/%U
template shell = /bin/bash
client use spnego = yes
kerberos method = secrets and keytab
ここでのworkgroup
はWindowsのワークグループ名、realm
はADドメイン名、password server
はActive Directoryのドメインコントローラのホスト名です。これらは自分の環境に合わせて変更してください。
ステップ4: Sambaドメインへの参加
SambaをActive Directoryに参加させるには、以下のコマンドを実行します。
bashsudo net ads join -U administrator
このコマンドは、administrator
ユーザーを使用してActive Directoryに参加します。administrator
の代わりに、自分のドメイン管理者アカウントを使用してください。
ステップ5: Winbindの設定
Winbindを有効にすることで、Active Directoryのユーザー情報をLinuxシステムで利用できるようになります。/etc/nsswitch.conf
ファイルを編集して、以下の行を追加または修正します。
bashpasswd: files winbind group: files winbind shadow: files winbind
これにより、ユーザー認証がWinbindを通じて行われるようになります。
ステップ6: サービスの再起動
設定を適用するために、SambaおよびWinbindサービスを再起動します。
bashsudo systemctl restart smbd sudo systemctl restart winbind
ステップ7: Active Directoryユーザーの確認
ADに参加した後、以下のコマンドでADユーザーが正しく取得されていることを確認できます。
bashgetent passwd
これで、Active Directoryのユーザーアカウントが表示されるはずです。
ステップ8: ファイル共有の設定
次に、Sambaを使用してファイル共有を設定します。/etc/samba/smb.conf
に共有ディレクトリを追加します。例えば、以下のように設定します。
bash[shared]
path = /srv/samba/shared
read only = no
browsable = yes
valid users = @example\\domain_users
この設定では、/srv/samba/shared
ディレクトリを共有し、domain_users
グループのメンバーだけがアクセスできるようにします。ディレクトリのパーミッションも適切に設定しておきましょう。
bashsudo mkdir -p /srv/samba/shared
sudo chown root:"domain_users" /srv/samba/shared
sudo chmod 770 /srv/samba/shared
ステップ9: プリンターの共有
プリンター共有を行う場合も、Sambaを使って設定できます。プリンターを共有するには、smb.conf
ファイルに以下のような設定を追加します。
bash[printer]
path = /var/spool/samba
printable = yes
guest ok = no
これにより、UbuntuのプリンターをWindows環境から利用できるようになります。
まとめ
SambaとActive Directoryを統合することで、UbuntuシステムとWindowsシステムの間で効率的にファイル共有やプリンター共有が可能となります。これにより、異なるオペレーティングシステム間でのリソースの一元管理が実現し、企業や組織内でのネットワーク管理が簡素化されます。