はじめに
- 社内のファイル共有環境をWindowsのActive Directory(AD)と連携させる必要があり、RHEL9.6上のSambaサービスをADに登録する作業を担当しました。この記事では、その手順と注意点をまとめます。
構成概要
-
対象サーバ:
hostname
(10.x.x.x
) - OS: Red Hat Enterprise Linux 9.6
-
ADドメイン:
DOMAIN.EXAMPLE
-
ADサーバ:
-dcsv-m01
(10.x.x.x
)
-dcsv-m02
(10.x.x.x
) - 目的: WindowsクライアントからSamba共有にADユーザーでアクセスできるようにする
必要なパッケージのインストール
まず、AD連携に必要なツール群をインストールします。realmd
はAD参加を簡素化するツール、sssd
はシステム認証を管理するサービスです。
sudo dnf install realmd sssd samba samba-common krb5-workstation oddjob oddjob-mkhomedir adcli -y
AD参加の手順
- AD参加前の状態確認
既存のドメイン参加状況を確認します。出力が空であれば、まだどのドメインにも参加していません。
realm list
- ADへの参加
ADの管理者アカウントを使って、Sambaサーバをドメインに参加させます。このコマンドを実行後、パスワードの入力が求められます。
sudo net ads join -U admin@DOMAIN.EXAMPLE
- AD参加の確認
正しくADに参加できたかを確認します。コマンドの出力に成功メッセージが表示されれば問題ありません。
net ads testjoin
Sambaの設定と共有ディレクトリの定義
AD連携を有効にするため、/etc/samba/smb.confファイルを編集します。
/etc/samba/smb.conf の設定例
[global]workgroup = EXAMPLE
security = ADS
realm = DOMAIN.EXAMPLE
kerberos method = secrets and keytab
log file = /var/log/samba/log.%m
log level = 3 server role = member server
# ADユーザーIDとLinuxユーザーIDのマッピング設定 idmap config * : backend = tdb
idmap config * : range = 10000-99999# ADドメイン(EXAMPLE)のIDマッピング設定 idmap config EXAMPLE : backend = rid
idmap config EXAMPLE : range = 100000-199999# その他の設定 winbind use default domain = yes winbind enum users = yes winbind enum groups = yes winbind refresh tickets = yes template shell = /bin/bash
template homedir = /home/%U
[対象のディレクトリ]path = /mnt/対象のディレクトリ/対象のディレクトリ
read only = nobrowseable = yes
create mask = 0775
follow symlinks = yes
wide links = yes
unix extensions = no
valid users = ad_user
valid usersには、アクセスを許可するADユーザー名またはグループ名を指定します。
Winbindサービスの起動と有効化
設定を反映させるためにwinbindサービスを再起動し、OS起動時に自動で立ち上がるように有効化します。
sudo systemctl restart winbind
sudo systemctl enable winbind
共有ディレクトリの工夫:シンボリックリンクとバインドマウント
バインドマウントによるディレクトリ共有
Windowsクライアントからシンボリックリンクが見えなかったため、バインドマウントを使用しました。これにより、既存のディレクトリ構造を維持しつつ、Sambaの共有パスに公開することができます。
# 既存のシンボリックリンクを削除
sudo rm /mnt/samba/samba/rlog
# バインドマウント用のディレクトリを作成
sudo mkdir -p/mnt/samba/samba/rlog
# ディレクトリをバインドマウント
sudo mount --bind/mnt/usr1/income/rlog/log/mnt/samba/samba/rlog
バインドマウントの恒久化
OS再起動後もバインドマウントを維持するには、/etc/fstabに以下の行を追加します。
/mnt/usr1/income/rlog/log /mnt/samba/samba/rlog none bind 0 0
動作確認とトラブルシューティング
動作確認コマンド
以下のコマンドで、ADユーザーが正しく認識されているかを確認できます。
net ads testjoin: AD参加状態を確認
wbinfo -u: Winbindが認識しているADユーザー一覧を表示
getent passwd ad_user: 特定のADユーザーがシステムで認識されているか確認
主なトラブルと対策
時刻同期: Kerberos認証は厳密な時刻同期が必要です。chronydサービスを有効にし、ADサーバと時刻を合わせるように設定しましょう。
ログ確認: エラーが発生した場合は、journalctl -xeや/var/log/messages、/var/log/samba/以下のログファイルを確認することで、原因を特定できます。
設定ファイル: sssd.confやkrb5.confなど、関連する設定ファイルも必要に応じて見直します。
まとめ
SambaのAD連携を1人で構築したことで、Linux、AD、認証、ファイル共有という幅広い分野の知識が深まりました。
この記事が、同じような課題に直面している方の助けになれば幸いです。