GNU/Linux >> Linux の 問題 >  >> Cent OS

RHEL 8 /CentOS8にsambaをインストールして設定する方法

Sambaは、LinuxマシンとWindowsマシン間でファイルを共有できるようにするサーバーおよびクライアントソフトウェアを提供します。 RHEL 8 /CentOS8へのインストールと構成は非常に簡単です。ディレクトリをsambaと共有する方法と、適切なSELinuxコンテキストをそのディレクトリに適用する方法を学ぶために読み続けてください。

このチュートリアルでは、次のことを学びます。

  • RHEL8にsambaをインストールする方法
  • smbデーモンとnmbデーモンを有効にして起動する方法
  • Samba共有を作成する方法
  • Samba共有にアクセスできるようにファイアウォールを設定する方法
  • sambaが正しく機能するように正しいSELinuxコンテキストを設定する方法

RHEL 8 /CentOS8でのSamba共有

使用されるソフトウェア要件と規則

システム ソフトウェア その他 規約
ソフトウェア要件とLinuxコマンドラインの規則
カテゴリ 使用する要件、規則、またはソフトウェアバージョン
Red Hat Enterprise Linux 8
Samba、coreutils、policycoreutils-python-utilsパッケージ
root権限でコマンドを実行する権限。
–指定されたLinuxコマンドは、rootユーザーとして直接、またはsudoを使用して、root権限で実行する必要があります。 コマンド
$ –特定のLinuxコマンドを通常の非特権ユーザーとして実行する必要があります

Sambaの紹介

プロジェクトのホームページに記載されているように、Sambaはオープンソースソフトウェアであり、GPLの下でリリースされています。 SMB/CIFSを使用してファイルと印刷サービスを共有できるようにするライセンス プロトコル。

このプロジェクトは、Windowsマシンとの相互運用を可能にするサーバーとクライアントの両方のソフトウェアを提供し、混合環境での理想的なソリューションを表しています。このチュートリアルでは、Red Hat Enterprise Linux 8にSambaをインストールする方法、Samba共有をセットアップする方法、共有リソースへのアクセスを許可するファイアウォールをセットアップする方法、および適切なSELinuxコンテキストを適用する方法を説明します。

インストール

最初に行う必要があるのは、マシンにsambaをインストールすることです。パッケージと必要なライブラリは、公式のRHEL 8 / CentOS 8リポジトリで入手できるため、yumまたはdnfを使用するだけでインストールできます。このバージョンのRHEL/CentOSでは、最初のコマンドは2番目のコマンドへの単なる「リンク」です:

$ sudo dnf install samba samba-client

samba-clientパッケージは厳密には必要ありませんが、それによって提供されるユーティリティは便利です。パッケージがインストールされたら、smbを起動して有効にする必要があります およびnmb 起動時のデーモン。 1つ目は実際の転送と共有操作の実行を処理するデーモンで、2つ目はNetBIOSを実行します。 名前の解決。Windowsでネットワークを閲覧するときにリソースを表示できるようにします。これで、1つのコマンドで両方のsystemdサービスを有効にして開始できます:

$ sudo systemctl enable --now {smb,nmb}

ファイアウォールの構成

次のステップはファイアウォールの構成です。他のマシンからsamba共有リソースにアクセスできるように、適切なポートを開く必要があります。 RHEL 8 /CentOS8のデフォルトのファイアウォール管理ソフトウェアはfirewalldです。

幸いなことに、手動でポートを開く必要はありません。必要なのは、ゾーンに「samba」サービスを追加することだけです。 「サービス」は、サービスが使用する各ポートを設定(および記憶)する代わりに、サービス名を参照することにより、サービスに必要なすべてのポートを通過するトラフィックを許可する単なる抽象概念です。 「サービス」に関する情報を収集したい場合は、次のコマンドを実行できます。

$ sudo firewall-cmd --info-service samba
samba
  ports: 137/udp 138/udp 139/tcp 445/tcp
  protocols:
  source-ports:
  modules: netbios-ns
  destination:

コマンドの出力から、サービスがポート173 / udp、138 / udp、139 / tcp、および445/tcpを介したトラフィックを許可することがわかります。サービスをデフォルトゾーンに永続的に追加するには、次のコマンドを実行します。

$ sudo firewall-cmd --permanent --add-service=samba

コマンドを実行するときに、--permanentを使用しました 変更を永続化するために切り替えます。また、defaultを想定しました 使用するゾーン。適用するアクションに別のゾーンを指定する場合は、--zoneを使用します。 オプションで、引数としてゾーン名を指定しました(例:–zone =external)。変更は永続的に設定されているため、変更を有効にするには、ファイアウォール構成を再読み込みする必要があります。

$ sudo firewall-cmd --reload

次のコマンドを実行することで、「samba」サービスがゾーンの一部になったことを確認できます。

$ sudo firewall-cmd --list-services
cockpit dhcpv6-client http samba ssh

ここでも、ゾーンが指定されていない場合、コマンドはデフォルトのゾーンに適用されます。

ゲストがアクセスできる共有ディレクトリの構成

sambaを介してディレクトリを共有し、ゲストユーザーがパスワードを入力しなくても、このディレクトリに無料でアクセスできるようにしたいとします。目的の結果を得るには、/etc/samba/smb.confにいくつかの変更を加える必要があります。 ファイルを作成し、共有用の「スタンザ」を追加します。お気に入りのエディタで、[global]でファイルを開きます セクションで、強調表示されたテキストを追加します:

[global]
        workgroup = SAMBA
        security = user

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
        map to guest = bad user

map to guest = bad user 命令は、不正なユーザー名でのログイン試行をデフォルトのゲストユーザー(デフォルトではnobody)にマップします 。これは、パスワードを入力せずに匿名アクセスを許可するために必要です。

この変更後、ファイルの最後に共有専用の新しいスタンザを追加する必要があります。共有リソースに「linuxconfig」という名前を付けます:

[linuxconfig]
        path = /mnt/shared
        guest only = yes

上記の設定で、/mnt/sharedのコンテンツを共有することを宣言しました ディレクトリ、ユーザー認証の必要なし。この設定は明らかに危険であり、ここでは例としてのみ報告されています。実際のシナリオでは、少なくともゲストへの書き込みアクセスを拒否したい場合があります(writeable = noを追加することで可能です)。 命令)。変更を有効にするには、デーモンを再起動する必要があります:

$ sudo systemctl restart {smb,nmb}

登録ユーザーのみがアクセスできる共有を構成する

ログインプロンプトでリソースへのアクセスを保護するには、sambaがスタンドアロンサーバーとして実行されている場合、既存のユーザーをsambaデータベースに追加する必要があります。このユーザーの資格情報は、共有ディレクトリにアクセスするために必要になります。セキュリティ上の理由から、タスク専用のユーザーを作成し、ホームディレクトリの作成を省略して、偽のシェルを割り当てることをお勧めします。

$ sudo adduser -M sambauser -s /sbin/nologin

-M コマンドに渡されるオプションは、--no-create-homeの短縮形です。 、これは非常に自明です。 -s オプションではなく、シェルを指定します。この場合は、意図的に無効なシェルを指定します:/sbin/nologin 。この時点で、ユーザーはシステムにパスワードを設定する必要さえありません。

ユーザーを作成したら、それをsambaデータベースに追加する必要があります。smbpasswdを使用して操作を実行できます。 コマンド:

$ sudo smbpasswd -a sambauser
New SMB password:
Retype new SMB password:
Added user sambauser.

コマンドを実行すると、ユーザーにパスワードを割り当て、確認するよう求められます。このパスワードはSambaコンテキストでのみ有効であり、システムのユーザーアカウントとは関係ありません。以前に作成した共有を制限するには、専用セクションに少し変更を加える必要があります:

[linuxconfig]
        path = /mnt/shared
        guest ok = no

testparmを使用して、セットアップが有効であることを確認できます。 コマンド:

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

ここでも、smbを再起動する必要があります およびnmb 変更を有効にするためのデーモン。共有ディレクトリには、正しい資格情報を入力した後にのみアクセスできるようになります。

Samba用のSELinuxのセットアップ

SELinuxはしばしば合併症のように見られ、すぐに無効になります。これは必須ではありません。構成方法を学び、それが提供するセキュリティの強化を利用するだけです。 SELinuxが「強制」モードのときにsamba共有が機能するためには、共有ディレクトリとファイルに適切なコンテキストを割り当てる必要があります。

$ sudo chcon -R -t samba_share_t /mnt/shared

上記の例では、chconを使用しました -tを使用したコマンド オプション、TYPEを変更します SELinuxコンテキストのセクションからsamba_share_t-Rも使用しました コマンドを再帰的にするために切り替えます。この変更は再起動後も存続しますが、ディレクトリとファイルにデフォルトのポリシーが存在する場合は、デフォルトの設定が再適用されるため、システムのラベルを変更することはできません。

変更をラベル変更イベント後も存続させたい場合は、ポリシーにルールを追加する必要があります。これは、semanageを使用して行うことができます コマンド:

$ sudo semanage fcontext -a -t samba_share_t "/mnt/shared(/.*)?"

(/.*)?を使用したので 正規表現では、ルールは「共有」ディレクトリのすべてのコンテンツとディレクトリ自体に適用されます。システムで使用されているラベルを一覧表示することで、ルールがポリシーに追加されたことを確認できます。

$ sudo semanage fcontext -l | grep /mnt/shared
/mnt/shared(/.*)?                                  all files          system_u:object_r:samba_share_t:s0

これで、Sambaのセットアップが機能するはずです。 samba構成をさらに微調整するには、SELinuxブール値も操作する必要がある場合があります。たとえば、既存のユーザーをsambaに追加する場合、ホームディレクトリを共有できるようにするには、専用のSELinuxブール値を有効にする必要があります。 sambaに関連するすべてのブール値を一覧表示するには、次のコマンドを実行できます。

$ sudo semanage boolean -l|grep samba
samba_create_home_dirs         (off  ,  off)  Allow samba to create home dirs
samba_domain_controller        (off  ,  off)  Allow samba to domain controller
samba_enable_home_dirs         (off  ,  off)  Allow samba to enable home dirs
samba_export_all_ro            (off  ,  off)  Allow samba to export all ro
samba_export_all_rw            (off  ,  off)  Allow samba to export all rw
samba_load_libgfapi            (off  ,  off)  Allow samba to load libgfapi
samba_portmapper               (off  ,  off)  Allow samba to portmapper
samba_run_unconfined           (off  ,  off)  Allow samba to run unconfined
samba_share_fusefs             (off  ,  off)  Allow samba to share fusefs
samba_share_nfs                (off  ,  off)  Allow samba to share nfs
sanlock_use_samba              (off  ,  off)  Allow sanlock to use samba
tmpreaper_use_samba            (off  ,  off)  Allow tmpreaper to use samba
use_samba_home_dirs            (off  ,  off)  Allow use to samba home dirs
virt_use_samba                 (off  ,  off)  Allow virt to use samba

上記の出力では、2番目の列はブール値の現在の値を示し、3番目の列はデフォルトの値を示しています(この場合、両方ともオフです)。ホームディレクトリの共有を有効にするためにアクティブ化するブール値は、samba_enable_home_dirsです。 。 setseboolを使用して操作を実行できます コマンド:

$ sudo setsebool samba_enable_home_dirs=1

結論

このチュートリアルでは、RHEL 8 /CentOS8システムにsambaをインストールする方法を説明しました。また、ディレクトリを共有する方法、ゲストへのアクセスを許可する方法、または認証されたユーザーにディレクトリを制限する方法についても説明しました。また、ネットワーク上の他のマシンから共有にアクセスできるようにするためにファイアウォールを構成する方法も確認しました。

最後に、SELinuxを「強制」モードでSambaをセットアップするために、必要な変更を実行する方法を確認しました。 SELinuxに興味がある場合は、このテーマに関する記事も読むことができます。


Cent OS
  1. CentOS / RHEL 7 :telnet をインストールして構成する方法

  2. CentOS / RHEL に Samba をインストールして構成する方法

  3. RHEL / CentOS 5,6 に telnet をインストールして構成する方法

  1. CentOS7にNginxをインストールして構成する方法

  2. RHEL 8 / CentOS8LinuxシステムにRをインストールして構成する方法

  3. CentOS7にSambaをインストールして設定する方法

  1. CentOS 7 /RHEL7にoVirt4.0をインストールして構成する方法

  2. CentOS7およびRHEL7にJenkinsをインストールして構成する方法

  3. CentOS 7 /RHEL7にNextcloudをインストールして構成する方法