コマンド_samba

Linux
ブログ

samba関係コマンド

testparm

smb.confの構文ミスのチェック

pdbedit

-Lsambaユーザーの一覧表示
-asambaユーザーの追加
-xsambaユーザーの削除

smbpasswd

-asambaユーザーの作成
-dsambaユーザーの無効化
-esambaユーザーの有効化
-xsambaユーザーの削除
※ただし、sambaユーザーはLinuxユーザーとして存在していなければ設定できないため、Linuxユーザーとして存在していないsambaユーザーを上記コマンドで作成しようとしても、作成できません。また、sambaは/etc/passwdを参照しないため、さらに「pdbedit」で、sambaにsambaユーザーを登録(追加)しなければならない。

smbstatus

sambaサーバーに接続されているクライアント(IPアドレス、ポート番号、クライアント名、グループ名など)、使用中の共有、ロックされているファイルを表示。

smbclient

オプション説明サブコマンド説明
-Lリスト表示dirファイルリストの表示
-N認証を行わないexitsmbclientを終了
-U ユーザーユーザー指定get ファイルファイルの取得
mget ファイル複数ファイルをまとめて取得
サブコマンド説明mkdir ディレクトリディレクトリの作成
cd ディレクトリディレクトリを移動mput ファイル複数ファイルをまとめてサーバに転送
del ファイルファイルを削除lcd ディレクトリローカル側のディレクトリを移動
put ファイルファイルをサーバーに転送
rmdir ディレクトリディレクトリの削除
smbclient -L 1.2.3.4 -U test ホスト(IPアドレス:1.2.3.4)にtestユーザーでログインし、共有リソースを一覧表示
smbclient -L 1.2.3.4 -N ホストに認証なしでログインし、共有リソースを一覧表示

samba設定の一連の流れ

設定

 OS : UbuntuServer22.04 (IPアドレス:4.44.244.4)
 共有フォルダ設置場所 : /var/samba/
 設置するフォルダ  Linux内に作るフォルダ : 共有フォルダ名
             public_folda   : public
             aaa_folda     : aaa
             bbb_folda     : bbb
 sambaユーザー : pub(パスワードなし)
           aaa(パスワード:aaa)
           bbb(パスワード:bbb) 

sambaインストール(Ubuntu)

$ sudo apt install samba

共有ファイルの作成

# sambaで使用するLinuxユーザーの作成(同時に同名のグループが作られる)
$ sudo useradd pub
$ sudo useradd aaa
$ sudo useradd bbb

# 共有するフォルダの作成
$ sudo mkdir -p /var/samba/{public_folda,aaa_folda,bbb_folda}

# 共有するフォルダの所有者を変更
$ sudo chown pub:pub /var/samba/public_folda
$ sudo chown aaa:aaa /var/samba/aaa_folda
$ sudo chown bbb:bbb /var/samba/bbb_folda

# 共有するフォルダのパーミッションを設定
$ sudo chmod 775 /var/samba/public_folda
$ sudo chmod 775 /var/samba/aaa_folda
$ sudo chmod 775 /var/samba/bbb_folda

sambaユーザーの作成

# Linuxユーザーの中から、sambaユーザーにするものを指定することになる。
# 最初はsambaユーザーがないため
$ sudo pdbedit -L ← sambaユーザーの一覧を表示
  何も出てこない
$ sudo pdbedit -a pub ← パスワードの指定をする。pubは何も指定しない(2回Enter)。
$ sudo pdbedit -a aaa ← パスワードを「aaa」に指定。
$ sudo pdbedit -a bbb ← パスワードを「bbb」に指定。

sambaの設定(/etc/samba/smb.conf)

[global]
   guest account = pub  ← 左記を[global」直下に追記。

# 以下を最終行に追記

[public]
   writable = yes
   path = /var/samba/public_folda
   create mask = 0664
   directory mask = 0775
   force user = pub
   force group = pub
   guest ok = yes
   guest only = yes

[aaa]
   security = user
   writable = yes
   path = /var/samba/aaa_folda
   guest ok = no
   read only = no
   valid users = aaa
   create mask = 0664
   directory mask = 0775
   force user = aaa
   force group = aaa

[bbb]
   security = user
   writable = yes
   path = /var/samba/bbb_folda
   guest ok = no
   read only = no
   valid users = bbb
   create mask = 0664
   directory mask = 0775
   force user = bbb
   force group = bbb

設定のチェック等

# 書式が正しいかチェック
$ sudo testparm
 何もエラーがなければOK
# sambaを再起動
$ sudo systemctl restart smbd.service

Windowsから共有フォルダへアクセス(aaaフォルダ)

エクスプローラーから直接共有フォルダへアクセス「\\4.44.244.4\aaa」と入力し、「Enter」を押下。

右図のような画面が出てきます。

ユーザー名「aaa」

パスワード「aaa」

「OK」を押下。

これで、「public」フォルダと「aaa」フォルダにアクセス可能となる。「bbb」フォルダは、アクセス権が異なるため、アクセス不可となります。

 もしも、うまくアクセスができなかった場合は、LinuxとWindowsを再起動してからアクセスするとうまくいきます。(たぶん・・・・)

その他の設定

ホストのアクセス制限(hosts allow , hosts deny)

 ルール

  [global][homes][printers]それぞれの箇所で有効となる

  「hosts allow」で許可、「hosts deny」で拒否を行う。

  「hosts allow」にないホストは、自動的に拒否

  「hosts deny」にないホストは、自動的に許可

  「hosts allow」「hosts deny」競合の場合は、「hosts allow」優先

例示
 hosts deny = 192.168.1.55, 192.168.1.56 → 192.168.1.55及び192.168.1.56を拒否
 hosts allow = 192.168.11. → 192.168.11.0/24を許可
 hosts allow = 192.168.100. except 192.168.100.200
              → 192.168.100.200を除く192.168.100.0/24を許可

参考文献

【第27回】ミニPCで作るSambaサーバー入門【Sambaサーバー構築編】

Ubuntu 22.04にsambaをインストールしてファイルサーバにする(Linuxユーザーのホームディレクトリを共有)

Ubuntu Server 22.04.1 LTS で Samba設定

LinuC Level2 10.0教科書

コメント