• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

samba

date: 2021-12-13 excerpt: sambaの設定と使い方

tag: linuxosxwindowssamba


sambaの設定と使い方

概要

  • linuxの共有ファイルシステムでWindowsと相互運用できる
  • ログインに使うユーザ情報はlinuxのユーザと紐付ている

インストール

ubuntu, debian

$ sudo apt install samba

Linuxでユーザのホームフォルダ以下をパスワード付きでSMBで共有する方法

  • サーバサイド
    • 編集する箇所が少なく、sambaを最小の設定でセットアップするのに向いている
    • sambaをインストールする
    • 共有したいユーザをsambasareグループに追加する
    • /etc/samba/smb.confに[homes]の設定を追加する
$ sudo apt install samba
$ sudo systemctl enable --now smbd
$ sudo usermod -aG sambashare $USER
$ sudo smbpasswd -a $USER

設定に追加する項目

[homes]
   comment = Home Directories
   browseable = yes
   read only = no
   create mask = 0700
   directory mask = 0700
   valid users = %S[homes]
   comment = Home Directories
   browseable = yes
   read only = no
   create mask = 0700
   directory mask = 0700
   valid users = %S

シンボリックリンクを追うようにする設定

  • セキュリティ上の理由で追わない設定になっているので注意する
[global]
...
follow symlinks = yes
wide links = yes
unix extensions = no

再起動

$ sudo systemctl restart smbd
  • クライアント
    • \\<ip-address>\<username>でアクセス可能

samba4を構成するdaemon

  • samba
    • active directoryドメインコートローラとして動作する
  • smbd
    • ファイル、プリンタの共有
    • ユーザ認証
  • nmbd
    • ブラウジング機能
    • winsサーバ(netbios名とipアドレスの解決)
  • winbindd
    • nssを利用してsambaからwindowsユーザ情報を利用可能にする

設定

設定ファイル

  • /etc/samba/smb.conf

構文確認

$ testparm -s

または

$ testparm -v # 暗黙的な詳細も表示

設定項目

  • hosts allow = <192.168.1.0>/<255.255.255.0>
    • アクセス許可のネットワーク
  • hosts deny = <1.1.1.1>
    • アクセス拒否のネットワーク
  • workgroup
    • active directoryのNetBIOS名
    • 所属するグループ名
  • netbios name
    • sambaサーバのNetBIOS名
  • server string
    • ログイン時の説明
  • wins support = <yes|no>
    • wins serverとして動作する
  • wins server = <ip-address>
    • 外部のwinsサーバを指定する
  • logon script
    • ログオン時に動くスクリプト
  • realm
    • active directoryのFQDN
  • security = <ads|user|domain>
    • 動作モード(通常はads)
    • ads
      • active directoryのドメインコントローラ
    • domain
      • ntドメインのドメインコントローラ
    • user
      • ユーザレベル認証
  • map to guest
    • Never
      • ゲスト禁止
    • Bad User
      • アカウントがないユーザはguestとして扱う
    • Bad Password
      • パスワードを間違ったユーザはguestとして扱う
  • null passwords = <yes|no>
    • パスワード空欄を許可するかしないか
  • unix password sync
    • linuxホストとパスワードを共有する
  • username map = </etc/samba/smbusers>
    • linuxとwindowsのユーザの対応表でユーザ名を変換するテーブル
  • idmap config * : backend = <tdb|ldap>
    • ldap等を利用するときのidマップシステムのバックエンド
  • idmap config * : range = <1000>-<9999>
    • linuxユーザに割り当てるuid/gidの範囲
  • guest account
    • ゲスト時、linuxホストで使うユーザ
  • password server
    • 自身ではなく他のサーバを認証局とする
  • passwd program = </usr/bin/passwd %u>
    • パスワードを変更する際のコマンド
  • passwd chat = <*new*password* %n ~~ *changed*>
    • パスワードを変更する際の対話スクリプト
  • セクション内
    • log file = </var/log/samba/log.%m>
      • ログ出力先
    • log level = <3>
      • ログレベル
    • max log size = <50>
      • ログの最大サイズ
    • comment
      • ブラウズ時のコメント
    • path
      • シェアしたいパス
    • valid users
      • アクセスできるユーザのリスト,グループ(@)
    • write list = <user1>,<user2>,<@group1>,... - 例外的に書き込みできるユーザ・グループのリスト
    • browseable = <yes|no>
      • ブラウズできるか
    • read only = <yes|no>
      • 読み込み限定
    • writable = <yes|no>
      • 書き込みさせない
    • hide dot files = <yes|no>
      • .で始まるファイルを表示しない
    • hide files = <regex>
      • 一致するものを表示しないが直接指定するとアクセスできる
    • veto files = <regex>
      • 一致するものを表示しない
    • guest okまたはpublic
      • yes|no
    • force user = <user>
      • ユーザ名を指定することでユーザを強制する
    • force group = <group>
      • グループ名を指定することでグループを強制する
  • プリンタ
    • printableかprint okのフラグを建てる必要がある
  • プリンタドライバ
    • [print$]というフィールド
  • [<section-name>($)]
    • セクションを定義する
    • $をつけるとブラウズできなくなる
  • メタ変数
    • %v
      • バージョン情報
    • %m
      • 接続ホスト
    • %U
      • ユーザ名

lmhostsファイル

  • netbiosとipの対応が記されている

再起動

$ sudo systemctl restart smbd

ユーザの追加、削除、確認、パスワードの設定

追加

$ sudo pdbedit -a <username>

有効化

$ sudo smbpasswd -e <username>
  • -dは無効化

削除

$ sudo pdbedit -x <username>

確認(すべてのユーザを表示)

$ sudo pdbedit -L

パスワードの追加

$ sudo smbpasswd -a <username>

パスワードの変更

$ sudo smbpasswd <username>

設定ツール

  • samba-tool

サブコマンド

  • dns
    • dns管理
  • domain
    • ドメイン管理
  • testparm
    • 設定ファイルの構文チェック
    • testparm -v
      • すべて表示
    • testparm -s
      • 変更したところのみ表示
  • user
    • ユーザ管理

マスターブラウザ

概要

  • Windowsのネットワークのコンピュータのリストを管理するコンピュータのこと

グループ名からマスターブラウザを探す

$ nmblookup -M WORKGROUP
192.168.122.1 WORKGROUP<1d>

ホスト名から詳細情報を得る

$ nmblookup -A <ip-address>

マスターブラウザの優先順位を上げる

smb.confにいずれかを設定する

  • preferred master = yes
  • os levelの値を大きくする
  • local master = yes

wins server

概要

  • IPとNetBIOSを解決するサービス

/etc/samba/lmhosts

概要

  • IPとNetBIOSの対応表

sambaクライアント

cifsを使う方法

インストール

ubuntu, debian

$ sudo apt install cifs-utils

マウント

$ sudo mount -t cifs -o user=<username> //<ip-address>/<dir-name>  <target-dir>/

smbclientを使う方法

インストール

ubuntu, debian

$ sudo apt install smbclient

アクセス

ログインする場合

$ smbclient //<ip-address>/<dir-name> -U <username>
  • -U|--user
    • ユーザを指定

ゲストの場合

$ smbclient //<ip-address>/<dir-name> -N
  • -N|--no-pass
    • パスワードを入力しないでアクセス

アクセスの管理

smbstatus

  • クライアントのアクセス状況を確認する
    # smbstatus
    

windowsネットワーク操作コマンド(net)

windowsのActive Directoryに参加する

$ sudo net ads join -U Administrator

参考

  • Install and Configure Samba
  • Ubuntu server 18.04 Samba


linuxosxwindowssamba Share Tweet