UbuntuにSambaをインストールしてファイルサーバーを構築する基本的な手順は以下の通りです。この手順は、Ubuntu DesktopでもUbuntu Serverでもほぼ同じですが、細かな設定は目的によって異なります。
1. パッケージの更新とSambaのインストール
まず、システムを最新の状態に更新し、Sambaパッケージをインストールします。
Bash
sudo apt update
sudo apt upgrade
sudo apt install samba
2. 共有フォルダの作成と権限の設定
共有したいフォルダを作成し、Sambaでアクセスできるように適切な権限を設定します。既存のフォルダを共有することも可能です。
Bash
# 例: /home/your_username/share というフォルダを共有する場合
mkdir -p /home/your_username/share
# 共有フォルダの権限を設定 (例: グループに書き込み権限を与え、他は読み取りのみ)
# あなたの環境に合わせて変更してください。
# この例では、所有者とグループにフルアクセス、その他に読み取りと実行権限を与えています。
chmod 775 /home/your_username/share
# フォルダの所有者とグループをSambaユーザーまたは適切なユーザーに変更することも検討してください
# 例: chown your_username:your_username /home/your_username/share
重要: 権限設定はセキュリティに直結します。必要以上に緩い権限(例: chmod 777)を設定することは推奨されません。
3. Samba設定ファイルの編集
Sambaの設定ファイルは /etc/samba/smb.conf です。このファイルを編集して、共有するフォルダの情報を追加します。編集する前に、元のファイルをバックアップすることをお勧めします。
Bash
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
sudo nano /etc/samba/smb.conf
smb.conf の最後に、以下のような共有設定を追加します。
Ini, TOML
[share]
comment = Ubuntu Shared Folder
path = /home/your_username/share # 上で作成した共有フォルダのパス
browseable = yes # ネットワーク上で表示されるようにする
read only = no # 書き込み可能にする
guest ok = yes # ゲストアクセスを許可する (ユーザー認証なし)
create mask = 0664 # 新規作成ファイルの権限 (所有者とグループに書き込み許可)
directory mask = 0775 # 新規作成ディレクトリの権限 (所有者とグループに書き込み許可)
# valid users = your_username # 特定のユーザーのみアクセスを許可する場合 (guest ok = no と併用)
※ #マークのコメントは下記のように改行として使ってください。そのままだと起動時にエラーが出ます。
path = /home/your_username/share
# 上で作成した共有フォルダのパス
browseable = yes
# ネットワーク上で表示されるようにする
ポイント:
[share]は、Windowsなどからアクセスする際に表示される共有名です。pathは、実際に共有するUbuntu上のフォルダのパスです。guest ok = yesは、ユーザー名とパスワードなしでアクセスできるようにする設定です。セキュリティ上の理由から、通常はguest ok = noに設定し、valid usersで特定のユーザーのみにアクセスを許可することが推奨されます。
ユーザー認証が必要な場合(推奨)
もし guest ok = no に設定してユーザー認証を行う場合は、以下の設定を検討してください。
Ini, TOML
[share]
comment = Ubuntu Shared Folder
path = /home/your_username/share
browseable = yes
read only = no
guest ok = no
valid users = your_username # アクセスを許可するLinuxユーザー名
create mask = 0664
directory mask = 0775
また、[global] セクションに以下の設定を追加して、セキュリティを向上させることも検討してください。
Ini, TOML
[global]
# ... 既存の設定 ...
client min protocol = NT1 # 古いWindowsクライアントとの互換性が必要な場合
server min protocol = SMB2_02 # より新しいプロトコルを強制する場合
# DNSで名前解決できない場合にWINSサーバーを使う設定 (通常は不要)
; wins support = yes
# ローカルユーザーとSambaユーザーのパスワード同期を試みる (非推奨の古い方法)
; unix password sync = yes
設定ファイルを保存してエディタを閉じます(nanoの場合は Ctrl + O で保存、Ctrl + X で終了)。
4. Sambaユーザーの作成
Sambaで共有フォルダにアクセスするユーザーを作成します。このユーザーは、Ubuntuのシステム上に存在するユーザーである必要があります。
Bash
sudo smbpasswd -a your_username
your_username の部分を、実際に共有フォルダにアクセスするLinuxユーザー名に置き換えてください。このコマンドを実行すると、Samba用のパスワードを設定するように求められます。このパスワードは、Linuxのログインパスワードとは異なるものを設定できますが、同じにすることも可能です。
Linuxシステム上でグループを作成し、そこにメンバー(ユーザー)を追加する一連の流れを解説します。
Sambaで共有フォルダへのアクセスを制限する際、個別にユーザーを指定するよりも「グループ」で管理したほうがメンテナンスが楽になります。
1. グループを作成する
まずは、新しいグループを作成します。
Bash
sudo groupadd グループ名
例:sudo groupadd developers
2. 既存のユーザーをグループに追加する
既存のユーザーを特定のグループに所属させます。
Bash
sudo usermod -aG グループ名 ユーザー名
-a(append): 現在所属している他のグループから外れないように「追記」します。-G(groups): 対象となるグループを指定します。
例:sudo usermod -aG developers tanaka
3. 新規ユーザーを作成してグループに追加する
まだユーザーが存在しない場合、作成と同時にグループに所属させることができます。
Bash
sudo adduser ユーザー名
sudo usermod -aG グループ名 ユーザー名
4. 正しく登録されたか確認する
ユーザーがどのグループに所属しているかを確認するには groups コマンドを使います。
Bash
groups ユーザー名
実行結果に指定したグループ名が含まれていれば成功です。
5. 【重要】フォルダ自体の権限設定
グループを smb.conf の valid users に書くだけでは不十分な場合があります。Linux側のディレクトリ(フォルダ)自体にも、そのグループがアクセスできる権限を与える必要があります。
Bash
# 1. フォルダの所有グループを変更する
sudo chgrp -R グループ名 /path/to/share
# 2. グループに対して書き込み権限を与える
sudo chmod -R 775 /path/to/share
まとめ:コマンドの流れ
- グループ作成:
sudo groupadd tech - ユーザー追加:
sudo usermod -aG tech user1 - Samba設定変更:
valid users = @tech - ディレクトリ権限変更:
sudo chgrp tech /home/share - 再起動:
sudo systemctl restart smbd
これで、tech グループに属するユーザー全員がSamba経由でアクセスできるようになります。
Sambaユーザーの一覧を表示するコマンド
Sambaユーザーの一覧を表示するコマンドは、pdbedit -L です。このコマンドは、登録されているSambaユーザーのIDや名称を表示します。詳細な情報を確認したい場合は、pdbedit -L -v を使用します。これらのコマンドは管理者権限(sudo)で実行する必要があります。
代表的なコマンドとオプション:
- pdbedit -L: 登録済みのSambaユーザー一覧(簡易)
- pdbedit -L -v: 登録済みのSambaユーザー詳細一覧
- pdbedit -Lw: 旧形式(smbpasswd形式)で一覧を表示
これらのコマンドはSamba 3系以降、ユーザーデータベースを管理する際に利用されます
========================================================================
5. Sambaサービスの再起動
設定変更を反映させるために、Sambaサービスを再起動します。
Bash
sudo systemctl restart smbd nmbd
または
Bash
sudo service smbd restart
sudo service nmbd restart
6. ファイアウォールの設定 (UFWを使用している場合)
Ubuntuのファイアウォール (UFW) を有効にしている場合は、Sambaの通信を許可する必要があります。
Bash
sudo ufw allow samba
sudo ufw enable # UFWがまだ有効になっていない場合
7. アクセスの確認
Windowsや他のLinux、macOSからSamba共有にアクセスできるか確認します。
Windowsからのアクセス
- エクスプローラーを開き、アドレスバーに
\\<UbuntuのIPアドレス>または\\<Ubuntuのホスト名>と入力してEnterキーを押します。 例:\\192.168.1.100または\\ubuntu-server - ユーザー名とパスワードを求められたら、Sambaユーザーとして設定したユーザー名とSambaパスワードを入力します。
- 共有フォルダが表示されれば成功です。
Linuxからのアクセス
ファイルマネージャー(Nautilus, Dolphinなど)から「他の場所」や「ネットワーク」などを選択し、smb://<UbuntuのIPアドレス> または smb://<Ubuntuのホスト名> と入力して接続を試みます。
macOSからのアクセス
Finderのメニューバーから「移動」>「サーバーへ接続…」を選択し、smb://<UbuntuのIPアドレス> または smb://<Ubuntuのホスト名> と入力して接続を試みます。
これで、UbuntuにSambaサーバーが設定され、ファイル共有ができるようになります。問題が発生した場合は、smb.conf の設定や共有フォルダの権限、ファイアウォールの設定などを再確認してください。
Sambaの再起動コマンド
Sambaの再起動コマンドは、使用しているUbuntuのバージョンやシステム構成によっていくつか選択肢がありますが、現在主流のsystemdを採用しているUbuntu(多くのモダンなバージョン)では、以下のコマンドが一般的かつ推奨されます。
推奨される再起動コマンド:
Bash
sudo systemctl restart smbd nmbd
このコマンドは、Sambaの主要な2つのサービス、smbd(SMB/CIFSファイル共有デーモン)とnmbd(NetBIOS over TCP/IPネームサービスデーモン)の両方を再起動します。通常、Sambaの設定ファイル (smb.conf) を変更した後に、このコマンドを実行して変更を反映させます。
個別のサービスを再起動する場合:
smbdのみ再起動:Bashsudo systemctl restart smbdnmbdのみ再起動:Bashsudo systemctl restart nmbd通常は両方再起動することが推奨されますが、smbdの設定変更が主で、NetBIOS名解決に問題がない場合はsmbdのみでも良い場合があります。
古いSysVinitスタイルのコマンド(古いUbuntuや他のLinuxディストリビューションで使用される可能性あり):
もし上記の systemctl コマンドが機能しない、または非常に古いUbuntuバージョンを使用している場合は、以下のコマンドも試せます。
Bash
sudo service smbd restart
sudo service nmbd restart
確認方法:
再起動後、Sambaサービスが正常に動作しているか確認するには、以下のコマンドを使用します。
Bash
sudo systemctl status smbd
sudo systemctl status nmbd
両方のコマンドの出力で「Active: active (running)」と表示されていれば、サービスは正常に動作しています。
UbuntuでSambaが起動しているか確認
UbuntuでSambaが起動しているか確認する方法はいくつかあります。主に以下のコマンドを使用します。
1. systemctl status コマンド (推奨)
これが最も確実で推奨される方法です。Sambaの主要なサービスである smbd と nmbd の状態を確認します。
Bash
sudo systemctl status smbd
sudo systemctl status nmbd
確認ポイント:
Active: active (running)と表示されているか。これが表示されていれば、サービスは正常に動作しています。- エラーメッセージが表示されていないか。エラーがある場合は、その内容から原因を探ることができます。
例:
$ sudo systemctl status smbd
● smbd.service - Samba SMB/CIFS server
Loaded: loaded (/lib/systemd/system/smbd.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2025-07-06 17:00:00 JST; 20min ago
Docs: man:smbd(8)
man:samba(7)
Main PID: 1234 (smbd)
Status: "smbd: ready to serve connections..."
Tasks: 4 (limit: 4616)
Memory: 10.5M
CPU: 123ms
CGroup: /system.slice/smbd.service
├─1234 /usr/sbin/smbd --foreground --no-process-group
├─1235 /usr/sbin/smbd --foreground --no-process-group
└─1236 /usr/sbin/smbd --foreground --no-process-group
Jul 06 17:00:00 ubuntu systemd[1]: Started Samba SMB/CIFS server.
2. smbstatus コマンド
このコマンドは、Sambaサーバーに現在接続しているユーザーやロックされているファイルなど、Sambaの現在の接続状況や稼働状況の詳細を表示します。Sambaサービスが起動していなければ、このコマンドはエラーになります。
Bash
smbstatus
確認ポイント:
- コマンドを実行した際にエラーが出ずに、何らかの出力が表示されるか。
Samba versionやService、PIDなどの情報が表示されれば、Sambaは起動しています。- 現在接続しているクライアントがあれば、その情報も表示されます。
例:
$ smbstatus
Samba version 4.15.13-Ubuntu
PID Username Group Machine Protocol Version Encryption Signing
----------------------------------------------------------------------------------------------------------------------------------------
2345 your_username your_group 192.168.1.10 (ipv4:192.168.1.10:50000) SMB3_11 AES-128-GCM AES-128-CMAC
Service Pid Duration of lock File
------------------------------------------------------------------------------------------
No locked files
3. ps aux | grep samba または pgrep smbd
これらのコマンドは、Sambaプロセスがシステム上で実行されているかを確認します。
Bash
ps aux | grep smbd
ps aux | grep nmbd
または
Bash
pgrep smbd
pgrep nmbd
確認ポイント:
ps aux | grepの場合、smbdやnmbdのプロセスに関する行が表示されるか。pgrepの場合、プロセスのPID(プロセスID)が表示されるか。PIDが表示されれば、そのプロセスは実行中です。何も表示されなければ、実行されていません。
これらの方法で、Ubuntu上のSambaサービスが正常に起動しているかを確認できます。通常は sudo systemctl status smbd と sudo systemctl status nmbd を確認するのが最も手軽で確実です。
Sambaをシステム起動時に常時起動する
Sambaをシステム起動時に常時起動するように設定するコマンドは、以下の通りです。
Bash
sudo systemctl enable smbd
sudo systemctl enable nmbd
このコマンドは、smbd (Samba SMB/CIFSサーバー) と nmbd (NetBIOS over TCP/IPネームサービスデーモン) の両方を、システム起動時に自動的に開始するよう設定します。
補足:
enableコマンドは、サービスを「有効化」するもので、即座にサービスを起動するわけではありません。サービスをすぐに起動したい場合は、別途sudo systemctl start smbd nmbdコマンドを実行する必要があります。- 一度
enableに設定すれば、システムを再起動するたびにSambaサービスが自動的に起動するようになります。 - 現在の自動起動設定を確認するには、
sudo systemctl is-enabled smbdやsudo systemctl is-enabled nmbdコマンドを使用します。enabledと表示されれば、自動起動が有効になっています。