Sambaでファイルを共有する

Ubuntuでファイルを共有する場合、一般的なのはSambaを利用する方法です。
もっとも手軽に行うのは、フォルダ右クリックメニューから共有する方法です。

右クリックメニューにSambaの共有項目を追加

マウスの右クリックで簡単にフォルダを共有できるようにします。
まずはsambaと右クリックメニューを拡張するツールをインストール。

sudo apt update
sudo apt install nautilus-share samba -y

次に、Sambaでフォルダを共有する権限をユーザーに付与します

sudo usermod -a -G sambashare $USER

匿名アクセスを許可しない場合は、Samba専用のパスワードを設定する必要があります。これは普段Ubuntuにログインする時のパスワードとは別で管理されるので、同じでも別でも構いません。

sudo smbpasswd -a $USER

設定を有効にするには、ファイルマネージャーの再起動、またはシステムの再ログインが必要。

Sambaを再起動します。

sudo systemctl restart smbd

ファイルマネージャを再起動します。

nautilus -q

コマンドを使えば細かな指定が可能

コマンドから設定すれば、より詳細な設定も可能です。ここではそれぞれ用途の違う3つのフォルダを作成した例を紹介します。

/samba/public  ゲストOK(誰でもアクセス可能)
/samba/tarou  ユーザー名tarouとパスワードを知っていれば誰でもアクセス可能
/samba/private 自分専用の共有フォルダ(普段ログインに使用しているユーザー)

フォルダを作成する

sudo mkdir -p /samba/public /samba/tarou /samba/private

各フォルダにアクセス権を設定する

# --- 1. public (誰でも読み書きOK) ---
sudo chmod 777 /samba/public

# --- 2. tarou (tarouユーザー専用) ---
sudo adduser --system --no-create-home tarou
sudo chown tarou:sambashare /samba/tarou
sudo chmod 770 /samba/tarou
sudo smbpasswd -a tarou

# --- 3. private (自分専用) ---
sudo chown $USER:$USER /samba/private
sudo chmod 700 /samba/private
sudo smbpasswd -a ユーザー名

数字の意味と権限の違い

コマンド所有者グループその他(全員)解説
777読・書・実行読・書・実行読・書・実行フルオープン。誰でもファイルを消したり作ったりできます。
770読・書・実行読・書・実行関係者のみ。所有者と特定のグループメンバー以外は中身すら見えません。
700読・書・実行自分専用。所有者本人以外は、たとえグループが同じでもアクセス不可です。

ちなみに、この指定ではtarouはsambashare グループには入っていません。フォルダの所有者が tarou 本人(chown tarou:…)なので、読み書き自体は問題なくできます。もしグループに参加させるならsudo gpasswd -a tarou sambashareと指定します。

Samba設定ファイル (/etc/samba/smb.conf) への追記

Sambaの設定ファイルに記載します。

sudo nano /etc/samba/smb.conf 

設定ファイルの末尾に、以下を貼り付けます。

# --- public: ゲストOK、パスワード不要 ---
[public]
   path = /samba/public
   guest ok = yes
   writable = yes
   force user = nobody

# --- tarou: tarouユーザーのみ(要パスワード) ---
[tarou-share]
   path = /samba/tarou
   valid users = tarou
   writable = yes
   guest ok = no

# --- private: あなただけ(要パスワード) ---
[private-share]
   path = /samba/private
   valid users = %U
   writable = yes
   guest ok = no

Sambaの設定ファイルを編集したら文法チェックをしておきましょう。

testparm

Loaded services file OK. と出ていれば設定ファイルの記述ミスはありません。

Sambaの再起動

Sambaを再起動します。

sudo systemctl restart smbd

これで設定は完了です。

Windowsからアクセスした場合のトラブル

Windowsからアクセスしたらネットワーク資格情報の入力を求められて、ユーザー名、パスワード無しだと弾かれる、といったケースがあります。

Windows 10/11はセキュリティ強化のため、相手が誰かわからない(匿名)状態での接続を拒否します。
この場合、まずは以下の入力を試してみてください。

  • ユーザー名: guest (または Everyone
  • パスワード: (空欄のまま)


これは、Ubuntu側に Everyone というユーザーは存在しないので、Sambaはそれを 「Bad User(存在しないユーザー)」 と判断します。map to guest = Bad User 設定により、存在しないユーザーからのアクセスを自動的に 「ゲスト(nobody)」 として扱い、その結果、guest ok = yes になっている [public] フォルダへのアクセスが許可されるというわけです。

ただ、tarouフォルダにアクセスしようとすると、設定したパスワードでも弾かれるといったケースもあります。これはWindowsは一度「ゲスト」としてサーバーに繋がると、同じサーバーに対して別のユーザー(tarou)でログインし直すのを拒否する性質があるからです。
この場合は、Windowsのコマンドプロンプトを開き、以下を実行してください:

net use * /delete /y

また、もし以前に別の設定で接続を試したことがある場合、Windowsが「間違った資格情報」をキャッシュしていて、新しい入力を受け付けないことがあります。Windowsのスタートメニューで「資格情報マネージャー」と検索して開き、関係する項目おを一旦削除してみると解決するかもしれません。

Macの場合

Macのネットワークからアクセスすると一覧は表示されますが、tarouやPriveteにアクセスしようとすると「オリジナルの項目が見つからないため、操作を完了できません。」などと表示されてでエラーになる事があります。
この場合、Finderのメニューバーから [移動] > [サーバへ接続…] (または Command + K)を選択し、以下のようにユーザー名を指定して入力します。

smb://tarou@192.168.x.x

これでtarouなどをマウントしようとすれば、パスワードを入力出来るようになります。