2021/01/15

Sambaサーバのインストールと設定 | Ubuntu 20.04 Server

昨年からVMWare上に技術検証環境を構築してから、WindowsやLinuxなどサーバが少しずつ増えてきました。サーバ間で大きなファイルのやり取りをすることが増えてきましたので、直接やり取りできるように、ファイル共有をするためのしくみを導入しようと思います。

ファイル共有というと、NFS (Network File Share)、FTP (File Transfer Protocol)、Sambaあたりが思い浮かびます。NFSは主にLinux系で発展、SambaはWindows系で発展してきた経緯があります。Windowsも利用する検証環境なので、いろいろなOSで対応しているSambaを導入することとしました。

本記事では、Sambaサーバのインストールおよび設定、動作確認方法を記載します。


Sambaサーバのインストール

aptコマンドでsambaを指定すると自動で関連する必要なパッケージとともに、Sambaサーバをインストールしてくれます。

sudo apt install -y samba
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  attr ibverbs-providers libavahi-client3 ...

  :

0 upgraded, 36 newly installed, 0 to remove and 0 not upgraded.
Need to get 16.6 MB of archives.
After this operation, 98.4 MB of additional disk space will be used.

  :

Done
Setting up samba (2:4.11.6+dfsg-0ubuntu1.6) ...
Adding group `sambashare' (GID 118) ...
Done.
Samba is not being run as an AD Domain Controller: Masking samba-ad-dc.service
Please ignore the following error about deb-systemd-helper not finding those services.
(samba-ad-dc.service masked)
Created symlink /etc/systemd/system/multi-user.target.wants/nmbd.service → /lib/systemd/system/nmbd.service.
Failed to preset unit: Unit file /etc/systemd/system/samba-ad-dc.service is masked.
/usr/bin/deb-systemd-helper: error: systemctl preset failed on samba-ad-dc.service: No such file or directory
Created symlink /etc/systemd/system/multi-user.target.wants/smbd.service → /lib/systemd/system/smbd.service.
samba-ad-dc.service is a disabled or a static unit, not starting it.
Processing triggers for ufw (0.36-6) ...
Processing triggers for systemd (245.4-4ubuntu3.3) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.1) ...


関連するパッケージも合わせて36個もインストール/アップデートされたようです。


次に、インストールが正しく行われたかを確認してみます。

whereis samba
samba: /usr/sbin/samba /usr/lib/x86_64-linux-gnu/samba /etc/samba /usr/share/samba /usr/share/man/man7/samba.7.gz /usr/share/man/man8/samba.8.gz

問題なくインストールされました。


Sambaサーバの設定

ファイルを共有するフォルダを作成し、アクセスするユーザアカウントを作成します。


共有フォルダの設定

私の場合、フォルダを共有するサーバでは1つの運用アカウントのみ利用する予定です。そのため、既存のユーザのホームディレクトリ配下にSambaでファイルを共有するためのフォルダを作成することにします。

mkdir ~/fileshare
ls
fileshare


Sambaの設定ファイルを開き、共有するフォルダの設定を行います。

sudo vi /etc/samba/smb.conf

設定ファイルの最後に以下を追記します。大括弧内の文字列は共有フォルダ名になります。pathがサーバ上の実際のフォルダパスです。

[fileshare]
    comment = Samba on Ubuntu
    path = /home/xxxxx/fileshare
    read only = no
    browsable = yes


設定ファイルを上書き後、設定を反映させるためSambaを再起動します。

sudo service smbd restart

また、Sambaのトラフィックをホストファイアウォールで許可するためにufwコマンドを実行します。SambaがAllowとなったことを確認します。

sudo ufw allow samba
sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
Samba                      ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
Samba (v6)                 ALLOW       Anywhere (v6)


Sambaユーザアカウントの設定

Sambaはシステムアカウントのパスワードを利用しないため、smbpasswdコマンドを実行してSamba用にパスワードを設定する必要があります。

sudo smbpasswd -a xxxxx
New SMB password:
Retype new SMB password:
Added user xxxxx.

以上でSambaの設定は完了です。


Samba共有フォルダへの接続確認

Windows環境から先ほど設定したSamba共有フォルダへ接続できるかを確認してみます。

コマンドプロンプトを開き、net useコマンドでユーザを指定して接続してみます。

C:\Users\Administrator>net use /user:xxxxx \\x.x.x.x\fileshare
The command completed successfully.


Windows Exploreを開き、アドレスバーに\\x.x.x.x\fileshareを指定して接続すると・・・

成功です!


おわりに

Sambaを導入することで、今後は検証環境内のファイルのやり取りが簡単にできるようになりそうです。今まで、わざわざインターネットからファイルを取得し、インターネット上のファイル共有サービスにファイルを配置し、検証環境からダウンロードする、というプロセスを踏んでいましたので、これはかなりの効率化が期待できそうです。