手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 Samba 構築 – LDAP 認証と SID の基本

Ubuntu 22.04 で Samba を LDAP 認証と組み合わせる場合、Linux のユーザー解決、SMB の認証情報、Samba の SID を分けて考える必要があります。LDAP にユーザーがあるだけでは、Samba の SMB 認証と SID の扱いまで自動で決まるわけではありません。

この記事では、既存の Ubuntu 22.04 環境を保守する前提で、ldapsam を使った Samba の基本設定、SID の確認、Samba ユーザー登録、接続確認の流れを確認します。

関連する記事
この記事で確認すること
  • Samba の認証情報を LDAP に置く構成
  • Linux 認証、SMB 認証、SID の役割の違い
  • ldapsam を使う smb.conf の基本
  • net getlocalsidnet setlocalsid の確認
  • pdbedit による Samba ユーザー登録
参考
書籍
参考書籍

ストーリーで覚える Linux CLI 入門

Linux のコマンドライン操作を基礎から確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

Samba と LDAP の役割を分ける

LDAP はユーザーやグループの情報を保持します。SSSD は Linux 側で UID/GID やログイン認証を扱います。Samba は SMB クライアントに対する認証、共有、SID の管理を扱います。

要素主な役割確認コマンド
LDAPユーザー、グループ、Samba 属性の保存ldapsearch
SSSDLinux のユーザー解決とログイン認証getent passwd
SambaSMB 認証、共有、SID の管理pdbedit / net

Active Directory 構成にしない前提

この記事では Samba を Active Directory Domain Controller として構成しません。既存の LDAP に Samba の認証情報を持たせ、Samba は standalone server としてファイル共有を提供する前提です。

  • Windows ドメイン参加や Group Policy は扱わない
  • LDAP はユーザー情報と Samba 属性の保存先として使う
  • Linux ログイン認証は SSSD 側で確認する
  • SMB 認証は Samba の passdb と SID で確認する

パッケージをインストールする

Samba 本体を導入します。LDAP クライアント確認用のコマンドは、LDAP 連携の記事側で準備済みである前提にします。

sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y samba
smbd --version

LDAP と Linux ユーザーを確認する

Samba 設定に入る前に、対象ユーザーを Linux 側で解決できることを確認します。ここで失敗する場合は、Samba ではなく LDAP または SSSD 側を先に確認します。

getent passwd myadmin
id myadmin
ldapsearch -x -H ldaps://ldap.example.local -b dc=example,dc=local uid=myadmin

smb.conf を作成する

passdb backendldapsam を指定し、Samba の認証情報を LDAP に保存する構成にします。DN や suffix は環境に合わせて変更します。

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.orig
sudo tee /etc/samba/smb.conf >/dev/null <<'EOF'
[global]
  server role = standalone server
  server string = %h file server
  workgroup = EXAMPLE
  security = user
  passdb backend = ldapsam:ldaps://ldap.example.local
  ldap admin dn = cn=samba-admin,dc=example,dc=local
  ldap suffix = dc=example,dc=local
  ldap user suffix = ou=users
  ldap group suffix = ou=groups
  ldap ssl = start tls
  ldap passwd sync = yes
  log file = /var/log/samba/log.%m
  logging = file
  max log size = 1000
  map to guest = Bad User
  usershare allow guests = No
  load printers = No
  idmap config * : backend = tdb
[homes]
  read only = No
  browseable = No
  create mask = 0600
  directory mask = 0700
EOF
sudo testparm -s

LDAP admin DN のパスワードを登録する

Samba が LDAP へ Samba 属性を書き込むため、ldap admin dn のパスワードを Samba 側に登録します。この値は平文で手順に残さず、対象サーバー上で入力します。

sudo smbpasswd -w
sudo testparm -s

SID を確認する

Samba では SID が SMB 認証や権限管理に関わります。複数の Samba サーバーで同じ認証基盤を扱う場合、SID の扱いを確認してから運用します。

sudo net getlocalsid
sudo net getdomainsid

SID を指定する

既存環境に合わせて SID を指定する場合は、対象 SID を確認したうえで net setlocalsid を実行します。新規環境では、むやみに変更せず、設計上必要な場合だけ実施します。

sudo net setlocalsid S-1-5-21-1111111111-2222222222-3333333333
sudo net getlocalsid

Samba サービスを再起動する

設定ファイルと SID を確認したら、Samba サービスを再起動します。Ubuntu 22.04 では smbdnmbd の状態を確認します。

sudo systemctl restart smbd nmbd
systemctl status smbd --no-pager
systemctl status nmbd --no-pager

Samba ユーザーを追加する

LDAP に Linux ユーザーが存在していても、Samba の SMB 認証情報は別に登録が必要です。pdbedit で Samba ユーザーとして追加します。

sudo pdbedit -a myadmin
sudo pdbedit -L
sudo pdbedit -Lv myadmin

ホームディレクトリを確認する

[homes] 共有を使う場合は、対象ユーザーのホームディレクトリが存在し、所有者と権限が適切であることを確認します。自動作成の方針は別記事で扱います。

sudo install -d -m 0700 -o myadmin -g myadmin /home/myadmin
ls -ld /home/myadmin

接続を確認する

Samba サーバー自身または別端末から、共有一覧とホーム共有への接続を確認します。名前解決で迷う場合は、ホスト名ではなく IP アドレスでも確認します。

smbclient -L //samba.example.local -U myadmin
smbclient //samba.example.local/myadmin -U myadmin
sudo journalctl -u smbd -n 100 --no-pager

パスワード変更を確認する

SMB 認証用のパスワードを変更する場合は smbpasswd を使います。Linux ログイン用パスワードとの同期方針は、LDAP と Samba の設計に合わせて決めます。

sudo smbpasswd myadmin
sudo pdbedit -Lv myadmin

運用時に見るポイント

Samba と LDAP の連携では、どこで失敗しているかを層ごとに切り分けます。Linux ユーザー解決、LDAP 書き込み、SMB 認証、共有アクセスを同時に追わない方が判断しやすくなります。

  • getent passwd で Linux 側のユーザー解決を確認する
  • ldapsearch で LDAP の対象エントリを確認する
  • pdbedit -L で Samba ユーザーを確認する
  • net getlocalsid で SID を確認する
  • smbclient で SMB 接続を確認する

まとめ

Ubuntu 22.04 で Samba と LDAP を組み合わせる場合、LDAP、SSSD、Samba の役割を分けて確認します。LDAP ユーザーが存在すること、Linux で UID/GID を解決できること、Samba の SMB 認証情報が登録されていることは別の確認項目です。

SID は Samba 側の識別情報として扱い、既存環境に合わせる必要がある場合だけ慎重に変更します。設定変更後は testparmpdbeditsmbclient で段階的に確認します。

関連する記事
Ubuntu 22.04 Samba 構築 – LDAP 認証と SID の基本

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る