Sambaを使って、共有フォルダを作成していきます。
ここで言う共有フォルダは、社内・家庭内のような閉じた環境におけるモノです。
インターネットを経由する場合は、対象外です。
インターネット経由なら、Google Driveを使いましょう。
「閉じた環境で気軽にファイル共有をしたい」
これが、Sambaを使う理由だと思います。
この記事では、このような考えのもとで共有フォルダを作成していきます。
本記事の内容
- Windowsクライアントにおけるワークグループの確認
- Sambaへのユーザー設定
- Samba設定ファイルの変更
- Samba設定変更の反映
- ファイアウォールでポート開放
- 共有フォルダの動作確認
それでは、上記に沿って解説していきます。
Windowsクライアントにおけるワークグループの確認
ここで扱う共有とは、同じネットワーク(グループ)にいることが前提です。
属しているネットワークは、「システムのプロパティ」で確認できます。
上の画面では、「ワークグループ」という項目になります。
環境によっては、「ドメイン」と表現されていることもあるでしょう。
ここでは、「ワークグループ」と表示されている場合についてのみ説明を進めます。
「ドメイン」の場合は、Active Directoryが出てくるので説明する内容が変わってきます。
では、「ワークグループ」に話を戻しましょう。
ここでは、「WORKGROUP」と設定されています。
初期設定のままだと、「WORKGROUP」になっているはずです。
そして、この「ワークグループ」の設定値を確認します。
なぜなら、Samba設定ファイルの変更の際に必要となるからです。
以上、Windowsクライアントにおけるワークグループの確認について説明しました。
次は、Sambaへのユーザー設定を行っていきます。
Sambaへのユーザー設定
ユーザー毎にフォルダを用意する場合、Sambaへのユーザー登録が必要となります。
そのユーザー登録には、pdbeditツールを利用します。
sudo pdbedit -a ユーザー名
上記のコマンドにより、Sambaへのユーザー登録が可能です。
ただし、そのユーザーはOS(ここではUbuntu)に存在していることが前提となります。
pdbeditでできることは、Sambaへのユーザー登録(追加)です。
新規にユーザーを作成することではありません。
なお、Ubuntuでのユーザー作成は以下のように行います。
「smb_test」というユーザーを新規に作成しています。
$ sudo adduser smb_test ユーザー `smb_test' を追加しています... 新しいグループ `smb_test' (1002) を追加しています... 新しいユーザー `smb_test' (1002) をグループ `smb_test' に追加しています... ホームディレクトリ `/home/smb_test' を作成しています... `/etc/skel' からファイルをコピーしています... 新しいパスワード: 新しいパスワードを再入力してください: passwd: パスワードは正しく更新されました smb_test のユーザ情報を変更中 新しい値を入力してください。標準設定値を使うならリターンを押してください フルネーム []: 部屋番号 []: 職場電話番号 []: 自宅電話番号 []: その他 []: 以上で正しいですか? [Y/n] Y
では、ユーザーがいる前提で作業を進めましょう。
pdbeditを利用して、該当ユーザーを登録します。
$ sudo pdbedit -a smb_test
上記を実行すると、途中でパスワードを聞かれます(確認を含めて2回)。
その際のパスワードは、Samba専用となります。
別にユーザーのOS用パスワードと同じでもシステム的には問題ありません。
そこは、各自のセキュリティポリシーに応じて対応しましょう。
ユーザー登録が完了すると、以下のように表示されます。
Unix username: smb_test NT username: Account Flags: [U ] User SID: S-1-5-21-1942680053-984438793-854212618-1000 Primary Group SID: S-1-5-21-1942680053-984438793-854212618-513 Full Name: Home Directory: \\ubuntu-focal\smb_test HomeDir Drive: Logon Script: Profile Path: \\ubuntu-focal\smb_test\profile Domain: UBUNTU-FOCAL Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: 木, 07 2月 2036 00:06:39 JST Kickoff time: 木, 07 2月 2036 00:06:39 JST Password last set: 水, 23 6月 2021 07:12:13 JST Password can change: 水, 23 6月 2021 07:12:13 JST Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
以上、Sambaへのユーザー設定の説明でした。
次は、Sambaの設定ファイルを変更していきます。
Samba設定ファイルの変更
aptコマンドでSambaをインストールしていれば、設定ファイルは以下となります。
Samba設定ファイル
/etc/samba/smb.conf
Sambaのインストールについては、次の記事で解説しています。
設定ファイルでは、以下の項目を変更・追加します。
- workgroup
- 個別の共通フォルダ設定
それぞれを以下で説明します。
workgroup
まず、Sambaの設定ファイルの構成を理解する必要があります。
設定ファイルは、[global](セクション)の下に値が記述されています。
[global]は、初期の共通設定です。
この共通設定をベースにして、個別の設定を行うことになります。
そして、[global]において以下がデフォルトで設定されています。
# Change this to the workgroup/NT-domain name your Samba server will part of workgroup = WORKGROUP
ここに、上記で確認したワークグループ名を設定します。
今回は、同じ「WORKGROUP」であるため、この部分は何も変更しません。
もちろん、異なる場合は変更する必要があります。
個別の共通フォルダ設定
[global]は、共通の設定でした。
これをベースに共有フォルダを追加していく形となります。
今回は、設定ファイルの最終行に以下を追加しています。
[test_pubic] path = /mnt/pubic writable = yes guest ok = yes guest only = yes [test_private] path = /mnt/private writable = yes valid users = smb_test
上記が意味するのは、二つの共有フォルダの追加です。
ここは、自由に決めてOKです。
※test_publicではなくtest_pubic(名前は何でもよいということです)。
それぞれのフォルダについて説明します。
[test_pubic]
誰でも(ゲスト)アクセス可能な共有フォルダの追加です。
「path」は、OS上のディレクトリを指定します。
「writable」は、書き込みを認めるかどうかを設定します。
この共有フォルダのポイントは、以下です。
guest ok = yes guest only = yes
「guest ok」は、ゲストのアクセスを認めるかどうかの設定になります。
「guest only」は、若干ややこしいです。
簡単に言うと、ファイル・フォルダ作成者をゲストに統一するかどうかの設定と言えます。
「guest only = yes」であれば、次のユーザー・グループでファイルなどが作成されます。
ユーザー | nobody |
グループ | nogroup |
[test_private]
ユーザーを指定した共有フォルダの追加です。
valid users = smb_test
「Sambaへのユーザー設定」でSambaに登録したユーザーを設定しています。
この場合、guest関連の項目は不要です。
まとめ
基本的には、デフォルトの共通設定を利用しています。
細かく設定を行いたい場合は、設定ファイルのコメントが役に立ちます。
もしくは、マニュアルですね。
以上、Samba設定ファイルの変更について説明しました。
次は、Samba設定変更を反映させましょう。
Samba設定変更の反映
反映させる前に、設定ファイルを確認しましょう。
設定ファイルに問題がないかどうかを、testparmで確認できます。
あくまで、構文エラーがあるかどうかのチェックですけどね。
$ testparm Load smb config files from /etc/samba/smb.conf Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions
実行すれば、上記のようにチェック結果を表示します。
「OK」で問題ないようです。
では、設定変更を反映させましょう。
リロードでもいいですが、再起動を実施します。
$ sudo systemctl restart smbd nmbd
これで反映したはずです。
以上、Samba設定変更の反映を説明しました。
次は、ポートの開放を行います。
ファイアウォールでポート開放
Sambaに関しては、ポートが何個か出てきます。
ここでは、445ポートだけを開放します。
まずは、現状の状況を確認することから始めます。
$ sudo ufw status | grep '445'
何も表示されないなら、「445」は未開放という状況になります。
そもそも、「ufw」コマンドが動かない場合は、次の記事をご覧ください。
「ファイアウォールの設定」の箇所に、「ufw」のインストールについて説明があります。
「ufw」コマンドが動くなら、次のコマンドを実行します。
$ sudo ufw allow 445 ルールを追加しました ルールを追加しました (v6)
では、再びポートの状況確認です。
$ sudo ufw status | grep '445' 445 ALLOW Anywhere 445 (v6) ALLOW Anywhere (v6)
ポートが、開放されています。
これで、外部からの接続が可能となります。
以上、ファイアウォールの開放について説明しました。
最後に、共有フォルダの動作確認を行います。
共有フォルダの動作確認
SambaをインストールしたサーバーのIPを確認します。
IPアドレスは、192.168.33.80です。
(もちろん、各自の環境によって異なります)
このIPアドレスにエクスプローラーでアクセスします。
設定が成功していれば、上記のように表示されます。
設定ファイルに追加した共有フォルダが見えます。
test_pubicへは、ゲストでアクセス可能です。
ファイルを保存できれば、test_pubicへの書き込みが確認できました。
公開共有フォルダとしては、何も問題ありません。
このファイルをUbuntu上で確認した結果は、以下。
$ ls -l 合計 4 -rwxr--r-- 1 nobody nogroup 327 6月 23 13:45 test.txt
では、次はtest_privateへアクセスします。
認証のポップアップが表示されます。
指定したユーザーのユーザー名とパスワードを入力します。
今回は、「smb_test」をユーザーに指定しています。
パスワードは、Samba用に登録したモノです。
認証が成功すれば、あとはtest_pubicと同じようにアクセスが可能となります。
ファイルも保存できます。
同様に、このファイルをUbuntuで確認してみましょう。
$ ls -l 合計 4 -rwxr--r-- 1 smb_test smb_test 323 6月 17 19:08 user.txt
ユーザーとグループが、「smb_test」になっていますね。
問題ありません。
以上、共有フォルダの動作確認を説明しました。