##目標
Sambaサーバ及びSambaクライアントを利用して、Linuxマシン⇔Windowsマシン間相互でのファイル共有を実現する。
##Sambaの基礎知識
Sambaの基礎知識に関しては、以下サイトが分かりやすかったです。
Sambaの基本を知っておこう
##前提
・AWS EC2インスタンス2台(※1)(OSはAmazon Linux 2、及びMicrosoft Windows Server 2019(※2))が構築済みであること。
※1
上記EC2インスタンス双方において、Sambaで利用する以下のポート(本記事ではファイル共有のみしか実施しないため厳密には139番ポート、445番ポートのみ使用となります。)をセキュリティグループ上で空けておく(Linux教科書 LPICレベル2 Version4.5対応より)。
・UDP 137番ポート:NetBIOS名前解決やブラウジング
・UDP 138番ポート:NetBIOS名前解決やドメインログオン
・TCP 139番ポート:ファイル共有(下記のMicrosoft Direct Hosting SMBを利用していない場合)
・TCP 445番ポート:ファイル共有(Windows2000以降のマシンでMicrosoft Direct Hosting SMBを利用している場合)
※2
EC2をWindowsサーバとして構築する手順に関しては以下参考
リニューアル!Amazon EC2インスタンスを立ちあげてみよう!前編 ~Windows Server編~
##利用環境
・Linuxマシン
仮想マシン: AWS EC2
OS(AMI): Amazon Linux 2 AMI (HVM), SSD Volume Type
ミドルウェア: Samba(Version 4.10.16)
・Windows Serverマシン
仮想マシン: AWS EC2
OS(AMI): Microsoft Windows Server 2019 Base
##作業の流れ
項番 | タイトル |
---|---|
1 | Sambaサーバの構築 |
2 | WinsowsマシンからSamba共有フォルダへアクセス |
3 | Sambaのクライアント機能(LinuxマシンからWindows共有フォルダへのアクセス) |
##手順
###1.Sambaサーバの構築
①必要パッケージのインストール
事前作成したEC2のLinux側のマシンにOSログインし、ルートスイッチ及びパッケージのアップデートを実行
sudo su -
yum -y update
Sambaをインストールをします。
yum -y install samba
②Sambaユーザの設定
Linux側及びSamba側にSambaユーザを追加します。
まずはLinux側にSambaユーザ(今回がtestsambaとした)を登録
useradd testsamba
passwd testsamba
続いてpdbeditコマンドを利用して、Samba側にtestsambaユーザを登録(※)します。
pdbedit -a testsamba
Sambaユーザの一覧を確認します。
[root@ip-172-31-36-198 ~]# pdbedit -L
testsamba:1001:
③共有フォルダの作成
Sambaを利用して共有させるフォルダを作成します。
先ほど作成したtestsambaユーザにスイッチ後、共有フォルダとして/tmp/testsambaを作成します。
また共有テスト用のファイルもついでに作成します。
su - testsamba
mkdir /tmp/testsamba
touch /tmp/testsamba/sharetest
作成後、ルートユーザに戻ります。
exit
④Samba設定ファイル編集
Sambaの設定ファイル**/etc/samba/smb.conf**を編集を行います。
vi /etc/samba/smb.conf
今回は認証時のパスワード暗号化、プリンタ共有の無効化、共有セクションtestsambaの追加を実施しました。
コメントが記載されているパラメータが更新、もしくは追加を行った箇所となります。
[global]
# ワークグループ名はwindowsマシンと同一にしておく(標準はWORKGROUP)
workgroup = WORKGROUP
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
# プリンタ共有を無効化
load printers = no
cups options = raw
# パスワードの暗号化を有効化
encrypt passwords = yes
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
# 共有セクション追加
[testsamba]
comment = testshare
path = /tmp/testsamba
writable = yes
⑤Samba起動
Sambaを構成するプロセスsmbd及びnmbd(※)の起動→自動起動→ステータス確認を行います。
ステータス確認で状態がrunningであればOKです。
※Sambaを構成するサーバプロセス(Linux教科書 LPICレベル2 Version4.5対応より)
サーバプロセス | 提供する機能 |
---|---|
smbd | ファイル共有、認証など |
nmbd | ブラウジング機能、NetBIOS名前検索、WINSサーバなど |
winbindd | WInbind機能 |
systemctl start smb
systemctl start nmb
systemctl enable smb
systemctl enable nmb
systemctl status smb
systemctl status nmb
###2.WinsowsマシンからSamba共有フォルダへアクセス
①Windows serverマシンへのアクセス
事前作成したEC2のWindows serverマシン側へローカルマシンからRDPを利用してアクセス(※)します。
※参考手順
リニューアル!Amazon EC2インスタンスを立ちあげてみよう!後編 ~Windows Server編~
②共有フォルダへのアクセス
Windows serverマシン上のエクスプローラを起動し、Sambaの共有フォルダへアクセスをかけます。
アクセスする際の接続文字列が以下の形式となります。
\\SambaサーバのプライベートIPアドレス\testsamba
正常に接続されれば以下のように認証が求められるので、以下のように入力
User name: testsamba
Password: testsambaのパスワード(pdbedit実行時に入力したパスワード)
認証がOKな場合、Sambaサーバの共有フォルダ/tmp/testsamba内に作成したテストファイルsharetestが表示される想定です。
###3.Sambaのクライアント機能(LinuxマシンからWindows共有フォルダへのアクセス)
今度は逆にLinuxマシンからWindows共有フォルダへSambaのクライアント機能を利用したアクセスを試してみます。
①Windows共有フォルダの作成
Windows serverマシン側のC直下にwindows_share
という検証共有フォルダを作成します。
上記共有フォルダを右クリックし、Give access to
⇒Spesific people
とクリック
共有許可する対象を選ぶコンソール移動するので、以下のようにEveryone
のRead/Write
権限を付与しShare
をクリックします。
作成した共有フォルダwindows_share内にテストファイルwindows_sharetest
を作成します。
②Sambaクライアントを利用してWindows共有フォルダへアクセス
Linux側マシンからSambaクライアントを利用して先ほど作成したWindows server側の共有フォルダへアクセスをしてみます。
まずはSambaクライアントのインストール
yum -y install samba-client
smbclientコマンドを利用してアクセスします。
-Uオプションを利用してWindows Server側の管理ユーザであるAdministratorユーザとしてアクセスする必要があります。
smbclient -U Administrator //WindowsマシンのプライベートIPアドレス/windows_share
パスワード入力後、正常に認証されればsmbコンソールに移動するのでlsで共有フォルダ内のファイルを確認、
事前作成したwindows_sharetest.txtが確認できればOKです!
[root@ip-172-31-36-198 ~]# smbclient -U Administrator //172.31.40.93/windows_share
# Administratorのパスワードを入力(RDPでアクセスした際に利用したパスワード)
Enter SAMBA\Administrator's password:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Wed Nov 4 08:14:44 2020
.. D 0 Wed Nov 4 08:14:44 2020
windows_sharetest.txt A 0 Wed Nov 4 08:14:33 2020
7863807 blocks of size 4096. 4238018 blocks available
smb: \>
##参考にさせて頂いた書籍及びサイト
・参考書籍
Linux教科書 LPICレベル2 Version4.5対応
・参考サイト
EC2にSambaを構築してWindowsからファイル共有してみた