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