LoginSignup
6
14

More than 3 years have passed since last update.

【Samba】Linux⇔Windowsマシン間相互のファイル共有

Last updated at Posted at 2020-11-04

目標

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の追加を実施しました。
コメントが記載されているパラメータが更新、もしくは追加を行った箇所となります。

smb.conf
[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実行時に入力したパスワード)

Capture.PNG

認証がOKな場合、Sambaサーバの共有フォルダ/tmp/testsamba内に作成したテストファイルsharetestが表示される想定です。

Capture.PNG

3.Sambaのクライアント機能(LinuxマシンからWindows共有フォルダへのアクセス)

今度は逆にLinuxマシンからWindows共有フォルダへSambaのクライアント機能を利用したアクセスを試してみます。

①Windows共有フォルダの作成
Windows serverマシン側のC直下にwindows_shareという検証共有フォルダを作成します。
Capture.PNG

上記共有フォルダを右クリックし、Give access toSpesific peopleとクリック
共有許可する対象を選ぶコンソール移動するので、以下のようにEveryoneRead/Write権限を付与しShareをクリックします。

Capture.PNG

作成した共有フォルダwindows_share内にテストファイルwindows_sharetestを作成します。

Capture.PNG

②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からファイル共有してみた

6
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
14