Sharing Files between Ubuntu 20.04 and Windows Systems with Samba
On 1月 21, 2022 by adminLinux はデスクトップ市場にいくつか進出しましたが、その起源と未来は非常にサーバベースです。 したがって、Ubuntu がファイル サーバーとして動作する機能を備えていることは、驚くことではありません。 また、ネットワーク環境でUbuntuとWindowsのシステムを並べて使用することは、極めて一般的です。 したがって、Ubuntuシステム上のファイルは、ネットワーク接続を介してLinux、UNIX、Windowsベースのシステムからアクセス可能であることが一般的な要件となります。 同様に、Windows システムに存在する共有フォルダーとプリンターも、Ubuntu ベースのシステムからアクセスできる必要があるかもしれません。
Windows システムは、サーバー メッセージ ブロック (SMB) として知られているプロトコルを使用して、ファイル システムやプリンターなどのリソースを共有しています。 Ubuntu システムがネットワーク上で Windows システムにそのようなリソースを提供するため、またはその逆の場合は、SMB をサポートする必要があります。 これは、Sambaと呼ばれる技術を使用して実現されています。
この章では、Ubuntuシステム上のファイルシステム資源とプリンターをリモートのWindowsとLinuxシステムと共有し、UbuntuからWindows資源にアクセスするために必要なステップを見ます。
1.1 GNOME デスクトップから Windows リソースにアクセスする
Samba の共有の詳細に入る前に、Ubuntu GNOME デスクトップ内から Windows 共有フォルダーにアクセスしたいだけなら、GNOME Files アプリケーション内ですでにサポートされていることは、注目すべきことでしょう。 Files アプリケーションは、図 23-1 で強調表示されているように、ダッシュボードに配置されています。2 SambaとSambaクライアント
Sambaは、UbuntuのリソースをWindowsシステムと共有することと、WindowsのリソースをUbuntuシステムと共有することの両方を可能にします。 Ubuntuは、Sambaクライアントを使用してWindowsリソースにアクセスします。
1.3 UbuntuシステムにSambaをインストールする
Ubuntu インストールプロセスで使用するデフォルト設定は、通常必要なSamba パッケージをインストールしません。 Sambaをインストールするように特別に要求しない限り、システムにSambaがインストールされている可能性は低いです。 Sambaがインストールされているかどうかを確認するには、ターミナルウィンドウを開き、次のコマンドを実行します:
# apt -qq list samba-common samba smbclient
足りないパッケージは、aptコマンドラインツールを使用してインストールできます:
# apt install samba-common samba smbclient
1.4 Samba
を可能にするUbuntuファイアーウォールの設定
次に、Ubuntuシステムを現在保護中のファイアーウォールは、Sambaの通信ができるよう設定する必要があります。
Uncomplicated Firewall (ufw) を使用している場合、次のコマンドを実行します:
# ufw allow samba
あるいは、firewalld を使用している場合、次のように firewall-cmd コマンドを実行します。
# firewall-cmd --permanent --add-port={139/tcp,445/tcp}# firewall-cmd --reload
Samba サービスを開始する前に、Ubuntu システムが Windows システムにどのように表示されるか、およびリモート クライアントと共有されるリソースを定義するために、多くの設定手順が必要です。
1.5 smb.conf ファイルの設定
Samba は非常に柔軟で設定可能なシステムで、Windows ネットワーク上でリソースが共有される方法を制御するために多くの異なるオプションを提供します。 この柔軟性は、Sambaが過度に複雑であるという感覚につながるかもしれない。
この章の目的のために、WindowsワークグループにUbuntuシステムを参加させ、 特定のユーザーによってアクセス可能な共有リソースとしてディレクトリを設定することに注目する。 これはスタンドアロンSambaサーバーとして知られる構成である。 Active Directory環境内でSambaを統合するような、より高度な設定も可能であるが、これらは本書の範囲外である。
Samba を設定する最初のステップは、/etc/samba/smb.conf ファイルを編集する。
1.5.1 節の設定
smb.conf ファイルは節々に分割される。 最初のセクションは、Sambaの設定全体に適用される設定を指定するセクションである。 これらの設定はグローバルですが、各オプションは設定ファイルの他のセクション内で上書きすることができます。
最初のタスクは、Ubuntuリソースが共有されるWindowsワークグループの名前を定義することです。 これは、デフォルトで次のように構成されているセクションの workgroup = ディレクティブによって制御されます。
workgroup = WORKGROUP
必要に応じて、これをワークグループの実際の名前に変更します。
ワークグループ設定に加えて、他の設定は、これが共有リソースがユーザーパスワードによって保護されるスタンドアロンサーバーであることを示します。
.. netbios name = LinuxServer..
「netbios name」プロパティは、ネットワーク上の他のシステムからサーバーが見えるようにする名前を指定します。
1.5.2 共有リソースの設定
次のステップは、共有リソース(Windowsネットワーク上の他のシステムからアクセスできる他のリソース)を構成することです。 これを実現するために、セクションには、共有時に参照される名前を付けます。 たとえば、Ubuntuシステムの/sampleshareディレクトリを共有する場合、そのセクションに.NET Frameworkという名前をつけます。 このセクションでは、さまざまな設定オプションが可能です。 しかし、この例では、単に共有されるディレクトリを定義し、そのディレクトリが閲覧および書き込み可能であることを示し、ゲスト ユーザーがアクセスできるようにリソースの公開を宣言します:
comment = Example Samba share path = /sampleshare browseable = Yes public = yes writable = yes
特定のユーザーにアクセスを制限するには、たとえば、「有効ユーザー」プロパティが使用されます。
valid users = demo, bobyoung, marcewing
1.5.3 不要な共有物の削除
smb.conf ファイルには、プリンタやシステム上のユーザーのホームフォルダを共有するセクションがあらかじめ設定されている。 これらのリソースが共有される必要がない場合、対応するセクションをコメントアウトすることで、Sambaによって無視されるようにすることができる。 次の例では、セクションはコメントアウトされている:
..## comment = Home Directories# valid users = %S, %D%w%S# browseable = No# read only = No# inherit acls = Yes..
1.6 Sambaユーザーの作成
Samba 共有リソースへのアクセスを必要とするユーザーは、Sambaユーザーとして 設定されパスワードを割り当てられなければならない。 このタスクはsmbpasswdコマンドラインツールを使用して達成される。 例えば、demoというユーザーが、WindowsシステムからUbuntuシステムの /sampleshareディレクトリにアクセスできることが必要であるとする。 この要求を満たすために、次のようにSambaユーザーとしてdemoを追加しなければならない:
# smbpasswd -a demoNew SMB password:Retype new SMB password:Added user demo.
さて、非常に基本的なSambaサーバーの設定を完了したので、設定ファイルをテストして、Sambaサービスを開始する時間である:
1.7 smb.conf ファイルのテスト
smb.conf ファイル内の設定は、Sambaサービスを開始するために必要な設定である。
# testparmLoad smb config files from /etc/samba/smb.confrlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)WARNING: The "syslog" option is deprecatedProcessing section ""Processing section ""Processing section ""Loaded services file OK.Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions # Global parametersdns proxy = Nolog file = /var/log/samba/log.%mmap to guest = Bad Usermax log size = 1000netbios name = LINUXSERVERobey pam restrictions = Yespam password change = Yespanic action = /usr/share/samba/panic-action %dpasswd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .passwd program = /usr/bin/passwd %usecurity = USERserver role = standalone serverserver string = %h server (Samba, Ubuntu)syslog = 0unix password sync = Yesusershare allow guests = Yeswins support = Yesidmap config * : backend = tdb browseable = Nocomment = All Printerscreate mask = 0700path = /var/spool/sambaprintable = Yes comment = Printer Driverspath = /var/lib/samba/printers comment = Example Samba shareguest ok = Yespath = /sampleshareread only = No
1.8 SambaとNetBIOSネームサービスの開始
Ubuntu サーバーを Windows ネットワーク内で操作するには、Samba (SMB) と NetBIOSネームサービス (NMB) サービスの両方を開始しなければなりません。 オプションとして、システムが起動するたびにサービスが開始されるように、サービスを有効にします:
# systemctl enable smbd# systemctl start smbd# systemctl enable nmbd# systemctl start nmbd
Windows システムから接続しようとする前に、smbclient ユーティリティを使用して、共有が設定されていることを確認します。9 Samba共有へのアクセス
さて、Sambaリソースが設定され、サービスが実行されているので、いよいよ Windowsシステムから共有リソースにアクセスすることになります。 Ubuntuシステムと同じワークグループ上の適切なWindowsシステム上で、 Windowsエクスプローラーを開き、ネットワークパネルにナビゲートする。 この時点で、エクスプローラーはネットワークを検索し、見つけたSMBプロトコルを使用しているすべてのシステムをリストアップする必要があります。 次の図は、Windows 10 システムで Windows エクスプローラーを使用して LINUXSERVER という名前の Ubuntu システムを検索している様子を示しています:
Figure 23-3
LINUXSERVER ホストをダブルクリックすると、アクセス権限のあるユーザーの名前とパスワードが要求されます。 この場合、smbpasswd ツールを使用して設定したデモ アカウントです。
Figure 23-4
ユーザー名とパスワードを入力すると、そのユーザーに対して設定した共有リソースが、以前に設定した /sampleshare リソースを含めてエクスプローラ ウィンドウに表示されるようになりました。
図 23-5
共有リソース /sampleshare をダブルクリックすると、そこに含まれるファイルとディレクトリのリストが表示されます。
Linux システムを見ることができないか、共有フォルダーへのアクセスに問題がある場合、次のようにSamba共有をローカルのWindowsドライブにマッピングしてみてください:
- Windowsファイルエクスプローラを開き、左側のパネルのネットワークエントリーを右クリックして、結果として現れるメニューからネットワークドライブのマッピング…を選択します。
- Map Network Driveダイアログから、ドライブ文字を選択してから共有フォルダーにパスを入力します。 例:
\LinuxServer\sampleshare
Connect using different credentials の隣にあるチェックボックスを有効にします。 Windows システムにログインするたびにドライブをマッピングしたくない場合は、対応するチェックボックスをオフにします:
Figure 23-6
設定を入力し、終了ボタンをクリックして、ドライブをマッピングし、この章の前に設定した Samba ユーザーに対するユーザー名とパスワードを要求されたら入力します。
1.10 Ubuntu
As previously mentioned, Samba is a two way street, allowing Windows systems to access files and printers hosted on a Ubuntu system, but also allowing the Ubuntu system to access shared resources on Windows systems.このようにSambaは、WindowsシステムがUbuntuシステム上のファイルやプリンターにアクセスするだけでなく、UbuntuシステムがWindowsシステムにアクセスすることを可能にします。 これは、この章の始めにインストールされたsmbclientパッケージを使用して達成される。 現在インストールされていない場合は、ターミナルウィンドウから次のようにインストールします:
# apt install smbclient
Windowsシステム上の共有リソースは、Ubuntuデスクトップからファイルアプリケーションを使用してアクセスするか、コマンドラインからsmbclientとマウントツールを使用してアクセスすることが可能です。 このセクションの手順は、Windows システム上で適切なネットワーク共有設定が有効になっていることを前提としています。
GNOME デスクトップを使用して Windows システム上の共有リソースにアクセスするには、まず Files アプリケーションを起動し、Other Locations オプションを選択します。 これにより、Windows ネットワークのアイコン (検出された場合) を含む以下の図 23-7 に示す画面が表示されます:
Figure 23-7
Windows ネットワークオプションを選択すると、ネットワーク上で検出された Windows システムが表示され、共有リソースにアクセスすることができるようになります。
図 23-8
あるいは、特定のシステムに接続するためにサーバに接続オプションを使用することもあります。 リモートシステムの名前またはIPアドレスの前に smb:// を付けなければならず、その後に特定の共有リソースへのパスが続くことがあることに注意してください(例:
smb://WinServer10/Documents
コメントを残す