3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【2023年6月版】Sambaメモ

Last updated at Posted at 2023-06-24

はじめに

Samba関連のメモ

前提条件

Ubuntu22.04 上での Samba の構築メモ
たぶん、UNIXの Samba ならだいたい一緒

単語

  • NetBIOS
  • WINS
  • CIFS
  • ファイルサーバ
  • プリントサーバ
  • WINSサーバ
  • ドメインコントローラー
  • Active Directory
  • メンバーサーバ
  • Microsoft ネットワーククライアント
  • ブラウジング
  • ブラウザマスタ
    • ブラウザマスタは、ネットワーク上の他のマシン(ワークステーションやサーバなど)が共有を見つけるために参照する、共有とサービスのリストを保持するマシン
    • ローカルマスターブラウザは、サブネットワーク内のすべてのマシンを知り、ドメインマスターブラウザと情報を交換する

インストール

$ sudo apt install samba

サービス

$ sudo systemctl status smbd
$ sudo systemctl status nmbd
$ sudo systemctl status winbindd

ポート

  • 137/UDP
    • NetBIOS 名前解決、ブラウジング
  • 138/UDP
    • NetBIOS 名前解決、ドメインログオン
  • 139/TCP
    • ファイル共有
  • 445/TCP
    • ファイル共有

設定

読み込まれるファイル

$ cat /etc/samba/smb.conf

元のファイル

$ cat /usr/share/samba/smb.conf

smb.conf の記述

[global]

全体設定、予約されている

  • workgroup = ワークグループ名 or ドメイン名
  • server role = 動作モード
    • AUTO
      • securityパラメータの設定に従う
    • STANDALONE
      • スタンドアローンのサーバ
    • MEMBER SERVER
      • ドメインのメンバサーバ
    • CLASSIC PRIMARY DOMAIN CONTROLLER
      • NTドメインのプライマリドメインコントローラ、PDC
    • CLASSIC BACKUP DOMAIN CONTROLLER
      • NTドメインのバックアップドメインコントローラ、BDC
    • ACTIVE DIRECTORY DOMAIN CONTROLLER
      • Active Directory のドメインコントローラ
  • netbios name = NetBIOS名
  • server string = サーバのコメント
  • hosts allow = 接続許可ホスト
  • hosts deny = 接続不許可ホスト
  • guest account = ゲストユーザ名
  • map to guest = Never or Bad User or Bad Password
  • log file = ログファイル名
  • max log size = ログファイルの最大サイズ、KB指定、0は制限なし
  • encrypt password = Yes or No
  • smb passwrd file = パスワード認証を smbpasswd 方式で行う場合の、パスワードファイルのパス
  • unix password sync = Yes | No
    • Yes にすると、Sambaパスワードの変更時にLinuxユーザのパスワードも同時に変更される
  • passwd program = パスワードコマンドのパス、通常は passwd
  • passwd chat = パスワード変更プロセス中に期待するプロンプトと応答
    • デフォルト値は、 passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*
  • username map = マッピングファイル名 (/etc/samba/smbusers)
    • ファイルは、Linuxユーザ名 = Windowsのユーザ名(複数可) の形式で記述
      john = John
      smith = "John Smith"
      taro = "大阪太郎"
      root = admin administrator
      
  • logon script = スクリプトファイル名
    • WindowsクライアントがSambaサーバーにログインした時に実行するスクリプト
    • スクリプトは、通常、netlogon共有を作成して配置する
    • 以下は、logon script = logon.bat に設定する例
      /etc/samba/smb.conf
      [global]
      logon script = logon.bat
        :
        :
      [netlogon]
         comment = Network Logon Service
         path = /export/smb_share/netlogon
         guest ok = yes
         read only = yes
        :
        :
      [shared]
        :
        :
      
      /export/smb_share/netlogon/logon.bat
      @echo off
      net use s: \\SAMBA-SERVER\shared
      
  • wins support = Yes or No
  • wins server = WINSサーバのIPアドレス
  • local master = Yes or No
    • ローカルマスターブラウザとして機能するかどうか
  • os level = 優先度(0-255)
    • マスターブラウザとして選ばれる優先度
    • 値が高いほど、Sambaサーバがブラウザマスターに選ばれる可能性が高くなる
    • os level の値だけがブラウザマスターの選出に影響するわけではなく、マシンの種類(例えば、PDC(Primary Domain Controller)はBDC(Backup Domain Controller)やメンバーサーバよりも優先される)、起動時間(より長く稼働しているマシンが優先される)、同じ os level の場合はアルファベット順に優先される
    • Windows 9X = 1、ドメインコントローラー以外のWindows = 16、ドメインコントローラー = 32
  • domain master = Yes or No
  • preferred master = Yes or No or Auto
  • security = USER or SHARE or DOMAIN or ADS
    • USER
      • クライアントは自身のユーザー名とパスワードを提供し、その資格情報はサーバー上の対応するユーザーとパスワードにより認証される
      • デフォルトのモード
    • SHARE
      • 接続先の共有自体に対してパスワードが設定される
      • 各共有には独自のパスワードが存在し、それを知っているクライアントだけが接続できる
      • このモードは古く、非推奨
    • DOMAIN
      • Windowsドメインコントローラーに対してユーザー認証を委譲する。ユーザーはドメインコントローラーに登録された資格情報を使用して認証を行う
      • 既存のWindowsドメインにSambaサーバーを統合する際に利用
    • ADS
      • Active Directoryサービスとの統合
      • Active Directoryドメインのメンバーサーバとして機能し、Kerberosを使用して認証を行う
  • passdb backend = smbpasswd or tdbsam or ldapsam
    • smbpasswd
      • テキスト形式のファイルにユーザ情報を保存する
      • /etc/samba/smbpasswd
    • tdbsam
      • Trivial Database
      • Samba のデフォルト形式
      • バイナリ形式のデータベースファイルにユーザ情報を保存する
      • /etc/samba/passdb.tdb
      • 記述は、passdb backend = tdbsam:/etc/samba/passdb.tdb
    • ldapsam
      • LDAPディレクトリサービスを使用してパスワードを管理
      • Active Directory との連携で使用
    • 複数指定
      • passdb backend = tdbsam:/etc/samba/passdb.tdb,smbpasswd のように複数を指定可能

[global] 以外で、共通の定義

  • comment = 共有のコメント
  • browseable = Yes or No
  • writable = Yes or No
  • read only = Yes or No
  • path = ディレクトリのパス
  • force user = ユーザ名
    • 共有内に作成するファイルやディレクトリの所有者を、強制的に指定
  • force group = グループ名
    • 共有内に作成するファイルやディレクトリの所有グループを、強制的に指定
  • write list = ユーザ名 or @グループ名
    • writable = No or read only = Yes のとき、例外で書き込みができるユーザ、グループ名
    • 複数の場合は、スペースで区切って記述
  • hide dot file = Yes or No
    • . が先頭につくファイルを隠すかどうか
    • 隠すだけでアクセスはできるので注意、アクセス制限は acl で行う
  • hide files = /ファイル名/
    • 隠すファイルを指定
    • '/' で区切ってファイルとディレクトリを複数指定可能、? や * のワイルドカードを指定することも可能
    • 隠すだけでアクセスはできるので注意、アクセス制限は acl で行う
  • veto files = /ファイル名/
    • 表示も、アクセスもさせたくないファイルとディレクトリを指定
    • '/' で区切ってファイルとディレクトリを複数指定可能、? や * のワイルドカードを指定することも可能
  • create mask = ファイルに適用可能なパーミッション、デフォルトは 0744、論理積(AND)される
  • directory mask = ディレクトリに適用可能なパーミッション、デフォルトは 0755、論理積(AND)される
  • force create mode = 必ずファイルに適用されるパーミッション、デフォルトは 0000、論理和(OR)される
  • force directory mode = 必ずディレクトリに適用されるパーミッション、デフォルトは 0000、論理和(OR)される
  • valid users = ユーザ名 or @グループ名
    • 複数の場合は、スペースで区切って記述
  • guest ok = Yes or No
  • public = Yes or No

[homes]

ユーザーごとにホームディレクトリの共有を自動的に作成するための特別な設定、予約されている

[printers]

プリンタ共有の設定、予約されている

  • print ok = Yes or No
  • pritable = Yes or No

[セクション名]

共有フォルダや共有プリンタなどファイル共有設定、[]内の文字列が共有名となる
共有名の末尾が$の共有は、ブラウズしても見えない隠し共有となる、browseable = No と同様

  • shared の設定例
    /etc/samba/smb.conf
      :
      :
    [shared]
       comment = ubuntu22.04 share
       path = /export/smb_share
       available = yes
       read only = no
       browsable = yes
       public = yes
       writable = yes
       guest ok = yes
      :
      :
    

設定ファイルの検証

$ testparm

ユーザ管理

pdbedit

  • ユーザ一覧
    • pdbedit -L
  • ユーザ追加
    • pdbedit -a NEW_USER
    • linux のユーザを追加するわけではない、linuxのユーザとsambaのユーザを関連付ける
  • ユーザ削除
    • pdbedit -x DELETE_USER
    • linux のユーザが削除されるわけではない、linuxのユーザとsambaのユーザの関連付けを削除する

smbpasswd

  • ユーザ削除
    • smbpasswd -x DELETE_USER
    • linux のユーザが削除されるわけではない、linuxのユーザとsambaのユーザの関連付けを削除する
  • ユーザの無効化
    • smbpasswd -d DISABLE_USER
    • linux のユーザが無効化されるわけではない、sambaのユーザが無効化される
  • ユーザの有効化
    • smbpasswd -e ENABLE_USER
    • linux のユーザが有効化されるわけではない、sambaのユーザが有効化される

コントロール

smbcontrol

  • smbcontrol 宛先 コマンド の形式
  • 宛先は、smbd or nmbd or winbindd or プロセスID or all
  • コマンド
    • debug
      • デバッグレベルを設定
    • ping
      • デーモンが動作しているかを確認
    • profile
      • プロファイリングデータを取得または設定
    • shutdown
      • デーモンを終了
    • reload-config
      • デーモンに設定の再読み込みを指示

smbstatus

  • Sambaの現在の状態と、現在の接続状況を表示

samba-tool

  • dns
    • DNS管理
  • domain
    • ドメイン管理
  • testparm
    • 設定ファイルの検証
  • user
    • ユーザ管理

nmblookup

  • 後日

smbclient

  • SMBサーバと接続
    SMBサーバが 192.168.100.100 ユーザ名/パスワードが smbuser/smbpassword の場合
$ smbclient --user smbuser //192.168.100.100/share smbpassword

acl

  • 後日

net

  • 後日

さいごに

かんたんでしたね

参考リンク

Samba公式
日本Sambaユーザ会

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?