rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

sambaインストール

2026 Nov. 04.

2026 Sep. 13.

2026 Mar. 17.
2025 Sep. 24.

2025 Aug. 29.

2024 Jan. 21.

2021 May 02.

2021 Apr. 30.

2021 Mar. 28.

2021 Jan. 31. 

2020 Sep. 28.

2020 Jan. 19.

2017 Feb. 11.

インストール

$ sudo apt update && sudo apt install samba
 

ポート開放

(複数ポートをまとめて設定可能)

$ sudo ufw enable

$ sudo ufw allow from YOUR.NETWORK.ADDRESS.0/24 to any app Samba

(例) sudo ufw allow from 192.168.1.0/24 to any app Samba

$ sudo ufw reload

 

(個別設定する場合)

$ sudo ufw enable

$ sudo ufw allow proto udp from YOUR.NETWORK.ADDRESS.0/24 to any port 137

$ sudo ufw allow proto udp from YOUR.NETWORK.ADDRESS.0/24 to any port 138

$ sudo ufw allow proto tcp from YOUR.NETWORK.ADDRESS.0/24 to any port 139

$ sudo ufw allow proto tcp from YOUR.NETWORK.ADDRESS.0/24 to any port 445

$ sudo ufw reload

 

(Chat GPT情報)

Sambaは通常、以下のポートを使用します。

    TCP 139: NetBIOSセッションサービス
    TCP 445: Microsoft-DSサービス
    UDP 137: NetBIOSネームサービス
    UDP 138: NetBIOSデータグラムサービス

これらのポートは、SambaがWindowsファイルおよびプリンタ共有を提供するために使用されます。ただし、特にセキュリティ上の理由から、TCP 445が最も一般的に使用されるポートです。したがって、多くの場合、SambaサーバーへのアクセスはTCP 445ポートを介して行われます。

ただし、ネットワーク環境や設定によっては、他のポートも使用されることがあります。特にUDP 137とUDP 138は、NetBIOSネームサービスとデータグラムサービスに関連しており、ネームリゾルバやブラウジングに使用されることがあります。

したがって、必要に応じてこれらのポートをファイアウォールやセキュリティグループで適切に設定することが重要です。ネットワーク構成によっては、TCP 445だけでなく、他のポートも許可する必要があるかもしれません。

 

OpenVPN経由での接続のためのポート開放

https://rasumus.hatenablog.com/entry/2018/05/26/103300

 

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

Arch系のManjaro Linuxでは/etc/sambaは存在するものの、設定ファイルはなく、manjaro-settings-samba をインストールすると/etc/samba/smb.confが置かれる。

 

Debian、Ubuntuではsambaをインストールすると/etc/samba/smb.confが置かれる。

 

global設定

[global]
wide links = yes
unix extensions = no
security = user
map to guest = never
browseable = yes
load printers = no
disable spoolss = yes
 
## "disable netbios = yes"があれば無効化する。
# disable netbios = yes
 
 

homeディレクトリ公開

[homes]
   comment = Home Directories
   browseable = no
   guest ok = no
   read only = no
   create mask = 0644
   directory mask = 0755
   writable = yes
   valid users = %S

 

任意のディレクトリ公開

[SOME-DIR]
   path = /SOME/DIR
   browseable = yes
   read only = no
   writable = yes
   guest ok = no
   valid users = USER1,USER2
   create mask = 0644
   directory mask = 0755
   acl_xattr:ignore system acls = no
 
 
 
[ptint$] セクションと [printers] セクションは不要なので、すべてコメントアウトする。
 
 

設定メモ

browseable = no
 ファイラーに表示するには[global]セクションで browseable = yes とする
 
writable = yes
  読み書き・削除を可能にする
 

"guest ok = no"と"public = no"は同じなので。どちらかの指定でよい。

"guest ok= no"と"map to guest = never"は効果が重なるため、どちらかの指定でよい。

 

printer関連

sambaクライアントでsambaサーバーを通じて印刷を行わないなら、[ptint$] と [printers] の設定は不要。
 

シンボリックリンクの読み込み

[global]
wide links = yes
unix extensions = no
 

ユーザー 認証

[global]
security = user
map to guest = never
 
 

クライアント端末に公開ディレクトリを表示する

[global]
browseable = yes
 

プリンターをクライアントに表示しない

[global]
load printers = no
disable spoolss = yes

sambaクライアントからsambaサーバーを介したネットワークプリンタ利用をしない

[print$]セクションをすべてコメントアウトもしくは削除する。

システムのunix/linuxアカウントのパスワードとSambaユーザーアカウントのパスワードの同期

下記の設定であるが、sambaインストール時にデフォルト設定されていた。
 
(smb.conf設定)
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
 
上記3行の設定により、unix password syncパラメータを「yes」に設定することで、Sambaパスワードが変更されるタイミングでUNIXのパスワード変更コマンドを起動することができる。
 
 
smb.confの構文チェック
$ testparm
 
​オプションなしで testparm コマンドを実行した場合、カレントディレクトリの位置に関わらず、システム上のデフォルトのパスにある設定ファイル(通常は /etc/samba/smb.conf)を自動的に探し出して構文チェックを行う。
エラーが表示されず設定が正しく読み込まれていれば成功。
 
 

samba再起動(設定読込)

$ sudo systemctl restart smbd.service
$ sudo systemctl restart nmbd.service

 

unix/linuxユーザーの登録

( www.atmarkit.co.jp/ait/articles/0901/28/news153.html より)
$ sudo pdbedit -a USER  // パスワード登録も求められる。

 

パスワード変更

ログイン中のユーザーのパスワード変更
$ smbpasswd
  "unix password sync = yes" ならlinxu/unixシステムのユーザーパスワードも変更される。
 
他のユーザーのパスワード変更
$ smbpasswd USER
  "unix password sync = yes" ならlinxu/unixシステムのユーザーパスワードも変更される。

"guest ok ="の意味

Sambaサーバにアカウントを持たないユーザーがアクセスした場合に、それを特定のUNIXアカウント(ゲストアカウント)にマッピングしてアクセスを許可する設定。
yes : ゲストアカウントでのアクセスを許可する。public = yesとしても同じ。


"guest account ="の値で特定の UNIXアカウントに指定する。

"map to guest ="で、 Sambaユーザーとして存在しないユーザーがアクセスした場合にゲストアカウントとして扱う設定にする。
"map to guest =" の値
 never : 不正なパスワードによるユーザーのログイン要求を拒否する。
 bad User: 不正なパスワードによるユーザーのログイン要求を拒否するが、指定されたユーザーが存在しなかった場合はゲストログインとして扱う。この場合、guest accountで指定したユーザーとなる。
 Bad Password : 不正なパスワードによるユーザーのログイン要求はゲストユーザーとして扱う。この場合、guest accountで指定したユーザーとなる。

samba関連ポート

 
通信目的          samba側の待受ポート 接続元のポート
名前登録など        137/udp        137/udp
ブラウジングなど      138/udp        138/udp
ファイル / 印刷サービスなど 139/tcp         Hi/tcp
ファイル / 印刷サービスなど (Direct Hosting of SMB)
              445/tcp         Hi/tcp
 

137/udp と 138/udp は UDP のため、基本的に双方向に通過可能にする必要がありますが、それではセキュリティが低下してしまいます。

実は、この 2つが存在しない場合でも、139/tcp(もしくは 445/tcp)が通過できればファイル / 印刷サービスは提供できます。

ただし、139/tcp のみを通過可能にした場合は、ブラウジング機能が動作しないため、Samba マシンのアイコンは「ネットワークコンピュータ」上に表示されません。

TCP 139 NetBIOS

参考元 https://ja.play-and-more.com/5251-smb-port-what-is-port-445-port-139-used-for

    第4回 WindowsネットワークとNetBIOS:Windowsネットワークの基礎 - @IT

Windowsネットワークの基本的なプロトコル。

NetBIOS名を使用して互いの位置を特定し、識別します。 NetBIOS名は最大16文字で、通常はコンピュータ名とは別の名前です。

ドメイン、ワークグループ、システム名、アカウント情報など、あらゆる種類の情報はNetBIOS経由で入手できます。

 

再チェック! ファイル共有プロトコル「SMB」のためのセキュリティ対策 (2/2):山市良のうぃんどうず日記(83) - @IT より

TCP 137  NETBIOS Name Service(netbios-ns) 

138/UDP NETBIOS Datagram Service(netbios-dgm)
139/TCP NETBIOS Session Service(netbios-ssn)
445/TCP Direct Hosting of SMB(microsoft-ds)