Windowsでファイル共有するためにUbuntuにSambaをインストールする方法


Sambaは、同じネットワーク上のLinuxホストとWindowsホストを含むUnixライクなシステム間でファイルと印刷サービスを共有するために、無料/オープンソースで広く使用されているソフトウェアです。

このガイドでは、UbuntuシステムとWindowsマシン間で基本的なファイル共有を行うためにSamba4をセットアップする方法を示します。匿名(安全でない)と安全なファイル共有の2つのシナリオについて説明します。

バージョン4.0以降、SambaはActive Directory(AD)ドメインコントローラー(DC)として使用できることに注意してください。 Samba4 Active Directoryドメインコントローラーをセットアップするための特別なシリーズを編成しました。これは、Ubuntu、CentOS、およびWindowsの主要なトピックで構成されています。

  1. Setting Up Samba4 Active Directory Domain Controller

UbuntuにSambaをインストールして構成する

示されているように、Sambaサーバーは、aptパッケージマネージャーツールを使用して、デフォルトのUbuntuリポジトリからインストールできます。

$ sudo apt install samba samba-common python-dnspython

sambaサーバーをインストールしたら、今度はsambaサーバーを次のように構成します。安全でない匿名で安全なファイル共有。

このために、メインのSamba構成ファイル/etc/samba/smb.conf(さまざまな構成ディレクティブを説明している)を編集する必要があります。

まず、元のSamba構成ファイルを次のようにバックアップします。

$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.orig

その後、以下で説明するように、匿名で安全なファイル共有サービス用にSambaを構成します。

重要:先に進む前に、WindowsマシンがUbuntuサーバーで構成されるのと同じワークグループにあることを確認してください。

Windowsマシンにログインし、「このPC」または「マイコンピュータ」→プロパティ→システムの詳細設定→コンピュータ名を右クリックして、ワークグループを確認します。

または、コマンドプロンプトを開き、以下のコマンドを実行して表示し、「ワークステーションドメイン」を探します。

>net config workstation

Windowsワークグループがわかったら、先に進んでファイル共有用にSambaサーバーを構成します。

匿名のSambaファイル共有

まず、ファイルが保存される共有Sambaディレクトリを作成することから始めます。

$ sudo mkdir -p /srv/samba/anonymous_shares

次に、ディレクトリに適切な権限を設定します。

$ sudo chmod -R 0775 /srv/samba/anonymous_shares
$ sudo chown -R nobody:nogroup /srv/samba/anonymous_shares

次に、構成ファイルを開きます。

$ sudo vi /etc/samba/smb.conf
OR
$ sudo nano /etc/samba/smb.conf

次に、以下の説明に従って、ディレクティブ設定を編集または変更します。

global]
	workgroup = WORKGROUP
	netbios name = ubuntu
	security = user
[Anonymous]
	comment = Anonymous File Server Share
	path = /srv/samba/anonymous_shares
	browsable =yes
	writable = yes
	guest ok = yes
	read only = no
	force user = nobody

次に、以下のコマンドを実行して、現在のSamba設定を確認します。

$ testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
WARNING: The "syslog" option is deprecated
Processing section "[printers]"
Processing section "[print$]"
Processing section "[Shares]"
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

# Global parameters
[global]
	netbios name = UBUNTU
	server string = %h server (Samba, Ubuntu)
	server role = standalone server
	map to guest = Bad User
	obey pam restrictions = Yes
	pam password change = Yes
	passwd program = /usr/bin/passwd %u
	passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
	unix password sync = Yes
	syslog = 0
	log file = /var/log/samba/log.%m
	max log size = 1000
	dns proxy = No
	usershare allow guests = Yes
	panic action = /usr/share/samba/panic-action %d
	idmap config * : backend = tdb

[printers]
	comment = All Printers
	path = /var/spool/samba
	create mask = 0700
	printable = Yes
[print$]
	comment = Printer Drivers
	path = /var/lib/samba/printers
	browseable = No
[Anonymous]
	comment = Anonymous File Server Share
	path = /srv/samba/anonymous_shares
	force user = nobody
	read only = No
	guest ok = Yes

次に、Sambaサービスを再起動して、上記の変更を有効にします。

$ sudo systemctl restart smbd   [Systemd]
$ sudo service smbd restart     [Sys V]

Windowsマシンに移動し、Windowsエクスプローラウィンドウから「ネットワーク」を開きます。 Ubuntuホスト(この場合はTECMINT)をクリックするか、IPアドレスを使用してSambaサーバーにアクセスしてみてください。

\2.168.43.168

注:UbuntuサーバーのIPアドレスを取得するには、ifconfigコマンドを使用します。

次に、匿名ディレクトリを開き、そこにファイルを追加して他のユーザーと共有してみます。

安全なSambaファイル共有

samba共有をパスワードで保護するには、グループ「smbgrp」を作成し、各ユーザーのパスワードを設定する必要があります。この例では、ユーザーとしてaaronkilikを使用し、「tecmint」としてパスワードを使用します。

$ sudo addgroup smbgrp
$ sudo usermod aaronkilik -aG smbgrp
$ sudo smbpasswd -a aaronkilik

注:sambaセキュリティモード:security u003d userは、クライアントが共有に接続するためにユーザー名とパスワードを入力することを要求します。

Sambaユーザーアカウントはシステムアカウントとは別のものですが、オプションで、システムユーザーとパスワードをsambaユーザーデータベースと同期するために使用されるlibpam-winbindパッケージをインストールできます。

$ sudo apt install libpam-winbind

次に、共有ファイルが保存される安全なディレクトリを作成します。

$ sudo mkdir -p /srv/samba/secure_shares

次に、ディレクトリに適切な権限を設定します。

$ sudo chmod -R 0770 /srv/samba/secure_shares
$ sudo chown -R root:smbgrp /srv/samba/secure_shares

次に、構成ファイルを開きます。

$ sudo vi /etc/samba/smb.conf
OR
$ sudo nano /etc/samba/smb.conf

次に、以下の説明に従って、ディレクティブ設定を編集または変更します。

[Secure]
	comment = Secure File Server Share
	path =  /srv/samba/secure_shares
	valid users = @smbgrp
	guest ok = no
	writable = yes
	browsable = yes

前と同じように、このコマンドを実行して現在のSamba設定を確認します。

$ testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
WARNING: The "syslog" option is deprecated
Processing section "[printers]"
Processing section "[print$]"
Processing section "[Shares]"
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

# Global parameters
[global]
	netbios name = UBUNTU
	server string = %h server (Samba, Ubuntu)
	server role = standalone server
	map to guest = Bad User
	obey pam restrictions = Yes
	pam password change = Yes
	passwd program = /usr/bin/passwd %u
	passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
	unix password sync = Yes
	syslog = 0
	log file = /var/log/samba/log.%m
	max log size = 1000
	dns proxy = No
	usershare allow guests = Yes
	panic action = /usr/share/samba/panic-action %d
	idmap config * : backend = tdb
[printers]
	comment = All Printers
	path = /var/spool/samba
	create mask = 0700
	printable = Yes
[print$]
	comment = Printer Drivers
	path = /var/lib/samba/printers
	browseable = No
[Anonymous]
	comment = Anonymous File Server Share
	path = /srv/samba/anonymous_shares
	force user = nobody
	read only = No
	guest ok = Yes
[Secure]
	comment = Secure File Server Share
	path = /srv/samba/secure_shares
	valid users = @smbgrp
	read only = No

上記の構成が完了したら、Sambaサービスを再起動して変更を適用します。

$ sudo systemctl restart smbd   [Systemd]
$ sudo service smbd restart     [Sys V]

以前と同様に、Windowsマシンで、Windowsエクスプローラウィンドウから「ネットワーク」を開きます。 Ubuntuホスト(この場合はTECMINT)をクリックします。次の手順に進まない場合、以下のエラーが発生する可能性があります。

IPアドレスを使用してサーバーにアクセスしてみてください。このような 92.168.43.168 。次に、ユーザーaaronkilikの資格情報(ユーザー名とパスワード)を入力し、[OK]をクリックします。

これで、すべての共有ディレクトリが表示されます。[セキュリティで保護]をクリックして開きます。

一部のファイルをこのディレクトリにドロップすることで、ネットワーク上の他の許可されたユーザーと安全に共有できます。

UbuntuのUFWファイアウォールでSambaを有効にする

システムでUFWファイアウォールを有効/アクティブにしている場合は、Sambaがファイアウォールを通過できるようにするルールを追加する必要があります。

これをテストするために、192.168.43.0ネットワークスキームを使用しました。ネットワークアドレスを指定して、以下のコマンドを実行します。

$ sudo ufw allow proto udp to any port 137 from 192.168.43.0/24
$ sudo ufw allow proto udp to any port 138 from 192.168.43.0/24
$ sudo ufw allow proto tcp to any port 139 from 192.168.43.0/24
$ sudo ufw allow proto tcp to any port 445 from 192.168.43.0/24

また、ネットワーク上でのSambaファイル共有に関するこれらの役立つ記事を確認することもできます。

  1. Setting Up Samba4 Active Directory Domain Controller- Part 1 to 14
  2. How to Mount/Unmount Local and Network (Samba & NFS) Filesystems in Linux
  3. Using ACLs (Access Control Lists) and Mounting Samba / NFS Shares
  4. How to Fix SambaCry Vulnerability (CVE-2017-7494) in Linux Systems

それで全部です!このガイドでは、UbuntuとWindowsマシン間で匿名で安全なファイル共有を行うためにSamba4をセットアップする方法を示しました。以下のフィードバックフォームを使用して、ご意見をお聞かせください。