変更要約: 初版(主題2.11・副主題2.11.1〜2.11.2に対応)
5.1Sambaの設定と管理
Windows クライアントとファイル・プリンタを共有するSambaの設定と管理を学びます。設定ファイル/etc/samba/smb.conf、デーモンsmbd・nmbd・winbinddの役割、testparmによる構文検証、smbpasswdによるSambaユーザー管理、smbstatus・smbcontrolによる運用監視、smbclient・net・samba-toolによるクライアント操作とAD連携、ユーザマッピングとgetfacl・setfaclによるACL管理を押さえます。
混在環境の現場では「Linux サーバーのファイルを Windows から普通のネットワークドライブとして使いたい」という要求が絶えません。Samba は SMB/CIFS プロトコルを実装し、Linux を Windows から見た共有サーバー(ときには AD ドメインメンバー)に変える中核コンポーネントです。202 試験でも重要度4と最重量級の副主題です。
5.1.1設定ファイルとデーモン
- 設定の本体=/etc/samba/smb.conf。
[global]セクションでサーバー全体の挙動(ワークグループ/ドメイン・セキュリティモード等)、[共有名]セクションで各共有のパスや権限を定義する。ログは既定で/var/log/samba/配下。 - smbd=ファイル・プリンタ共有本体(SMB/CIFS 接続を処理し認証・アクセス制御を行う)。nmbd=NetBIOS 名前解決とブラウジング(NetBIOS over TCP/IP・マスターブラウザ機能)を担当。winbindd=Windows ドメイン/AD のユーザー・グループ情報を Linux 側に取り込む(Unix アカウントとしてマッピングし、AD 統合認証を可能にする)。
5.1.2検証・運用・クライアントコマンド
- testparm=smb.conf の構文チェック(デーモン再起動前に必ず実行する定石。エラー・警告と実効設定を表示)。smbpasswd=Samba 独自のユーザーDB(パスワード)を管理(Unix アカウントとは別に Samba 用パスワードを設定・
smbpasswd -a userで追加)。 - smbstatus=現在の接続・ロック状況を表示(誰がどの共有に接続中か)。smbcontrol=稼働中の smbd/nmbd/winbindd に対して制御シグナルを送る(設定再読み込み等)。nmblookup=NetBIOS名前解決の確認(名前→IPの引き当てをテスト)。
- smbclient=FTP風の対話クライアントで共有に接続(
smbclient //server/share -U userで動作確認・ファイル転送)。net=Samba の汎用管理コマンド(ドメイン参加・共有一覧・ユーザー管理等の多目的サブコマンド群)。samba-tool=AD DC(ドメインコントローラ)としての Samba を管理(ドメイン・ユーザー・グループ・GPO 等)。
「設定を変えたらまず testparm」「smbd=共有処理・nmbd=名前解決/ブラウジング・winbindd=AD情報の取り込み」「Samba独自パスワード管理=smbpasswd」「現在の接続確認=smbstatus」 が最頻出の対比です。samba-tool は AD DC 管理専用、net はより汎用の管理コマンドという役割分担も選択肢で問われます。
実務での典型フローを追うと構造がつかみやすくなります。まず/etc/samba/smb.confの[global]でワークグループ名やセキュリティモードを決め、[data]のような共有セクションでパス(path = /srv/samba/data)や書き込み可否(writable = yes)、有効ユーザー(valid users = @staff)を定義します。編集後は必ずtestparmで構文を検証してからsmbd・nmbdを再起動します。Samba 側の認証には Unix パスワードとは独立したsmbpasswdデータベースがあり、新規ユーザーにはsmbpasswd -aで Samba パスワードを設定しないと接続できません。運用中に「誰がどのファイルをロックしているか分からない」といったトラブルにはsmbstatusが最初の一手で、接続中のセッション・共有・ロック情報を一覧できます。クライアント側からの疎通確認はsmbclientで行い、smbclient -L //serverで共有一覧を、smbclient //server/shareで対話接続を試せます。AD 環境に参加させる場合はwinbinddが Windows 側のユーザー/グループ SID を Unix の UID/GID にユーザマッピングし、Linux のファイルパーミッションと整合させます。共有ディレクトリの細かい権限制御は Unix パーミッションだけでは不十分なことが多く、ACL(getfaclで確認・setfaclで設定)を併用して「特定グループだけ書き込み可」のような柔軟な制御を実現するのが定石です。samba-tool は Samba を AD ドメインコントローラそのものとして動かす場合(ドメイン作成・ユーザー/グループ/GPO 管理)に使い、通常のファイルサーバー運用の管理タスクは net や上記コマンド群でまかないます。
| コマンド/デーモン | 役割 | 主な用途 |
|---|---|---|
| smbd | ファイル・プリンタ共有本体 | SMB/CIFS接続の処理・認証 |
| nmbd | NetBIOS名前解決・ブラウジング | 名前解決・マスターブラウザ |
| winbindd | AD/Windowsユーザー情報の取り込み | ユーザマッピング・AD統合認証 |
| testparm | smb.conf構文チェック | 再起動前の検証 |
| smbpasswd | Samba独自パスワード管理 | smbpasswd -a userでユーザー追加 |
ひっかけ: 「nmbd がファイル共有本体で、smbd は名前解決を担当する」は役割が逆です。共有処理=smbd、名前解決/ブラウジング=nmbdが正しい対応。また「Samba への接続は Unix パスワードだけで認証できる」も誤り=Samba独自のsmbpasswdデータベースへの登録(smbpasswd -a)が別途必要です。「samba-tool は通常のファイル共有設定にも使う汎用コマンドである」も誤り=samba-tool はAD DC管理が主目的で、通常の共有管理はsmb.conf編集とnet等で行います。
5.1.3この節のまとめ
- 設定は/etc/samba/smb.conf([global]+[共有名])。変更後は必ずtestparmで検証してから再起動。デーモンはsmbd=共有・nmbd=名前解決・winbindd=AD情報取り込み
- ユーザー管理はsmbpasswd、監視はsmbstatus/smbcontrol、クライアント確認はsmbclient、AD DC管理はsamba-tool。細かい権限はACL(getfacl/setfacl)を併用
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. Samba サーバーの smb.conf を編集した後、smbd を再起動する前に実施すべき最も適切な作業はどれか。
Q2. 新しい Linux ユーザーを Samba 共有に接続できるようにしたいが、Unix パスワードを設定しただけでは Windows クライアントから接続できない。追加で行うべき操作はどれか。
Q3. 共有ディレクトリで、Unix のパーミッションだけでは表現できない「特定グループのみ書き込み可」という細かいアクセス制御を実現したい。使用すべき仕組みはどれか。

