Red Hat Training

A Red Hat training course is available for RHEL 8

さまざまな種類のサーバーのデプロイメント (機械翻訳)

Red Hat Enterprise Linux 8

Red Hat Enterprise Linux 8 にさまざまな種類のサーバーをデプロイするためのガイド (機械翻訳)

Red Hat Customer Content Services

概要

本書は、Red Hat Enterprise Linux 8 で異なるタイプのサーバー(Apache HTTP Web サーバー、Samba サーバー、NFS サーバー、利用可能なデータベースサーバー、CUPS サーバーなど)を設定および実行する方法を説明します。

Red Hat ドキュメントへのフィードバック (機械翻訳)

ご意見ご要望をお聞かせください。ドキュメントの改善点ございませんか。インストールするには、次を実行します。

  • 特定の文章に簡単なコメントを記入する場合は、ドキュメントが Multi-page HTML 形式になっ ているのを確認してください。コメントを追加する部分を強調表示し、そのテキストの下に表示される Add Feedback ポップアップをクリックし、表示された手順に従ってください。
  • より詳細なフィードバックを行う場合は、Bugzilla のチケットを作成します。

    1. Bugzilla の Web サイトにアクセスします。
    2. Component で Documentation を選択します。
    3. Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも記入してください。
    4. Submit Bug をクリックします。

第1章 Apache HTTP Web サーバーの設定 (機械翻訳)

1.1. Apache HTTP Web サーバーの概要 (機械翻訳)

Web サーバー は、Web 経由でクライアントにコンテンツを提供するネットワークサービスです。これは通常、Web ページを意味しますが、他のドキュメントも提供できます。Web サーバーは、ハイパーテキスト転送プロトコル (HTTP) を使用するため、HTTP サーバーとも呼ばれます。

Red Hat Enterprise Linux 8 で利用可能な Web サーバーは次のとおりです。

  • Apache HTTP Server
  • nginx

Apache HTTP Server (httpd) は、Apache Software Foundation によって開発されたオープンソースの Web サーバーです。

Red Hat Enterprise Linux の以前のリリースからアップグレードする場合は、それに応じて httpd サービス設定を更新する必要があります。このセクションでは、新たに追加された機能の一部を確認し、以前の設定ファイルを更新します。

1.2. Apache HTTP Server への主な変更点 (機械翻訳)

RHEL 7 と RHEL 8 の間で Apache HTTP Server、バージョン 2.4.6 からバージョン 2.4.37 に、が更新されました。この更新バージョンには新機能がいくつか含まれていますが、外部モジュールの設定レベルとアプリケーションバイナリーインターフェース (ABI) で、RHEL 7 バージョンと後方互換性を維持します。

新機能は次のとおりです。

  • HTTP/2 httpd モジュールの一部である mod_http2 パッケージにより、サポートが提供されるようになりました。
  • systemd ソケットアクティベーションがサポートされます。詳細は、man ページの httpd.socket(8)を参照してください。
  • 新しいモジュールが複数追加されています。

    • mod_proxy_hcheck - プロキシーヘルスチェックモジュール
    • mod_proxy_uwsgi - Web Server Gateway Interface (WSGI) プロキシー
    • mod_proxy_fdpass - クライアントのソケットを別のプロセスに渡すためのサポートを提供します。
    • mod_cache_socache - HTTP キャッシュ(例:memcache バックエンドを使用)
    • mod_md - ACME プロトコル SSL/TLS 証明書サービス
  • 以下のモジュールはデフォルトで読み込まれるようになりました。

    • mod_request
    • mod_macro
    • mod_watchdog
  • 新しいサブパッケージが追加され httpd-filesystemました. これには、ディレクトリーの適切なパーミッションを Apache HTTP Server 含む基本的なディレクトリーレイアウトが含まれます。
  • インスタンス化されたサービスサポートが導入され httpd@.service ました。詳細は httpd.service man ページを参照してください。
  • 自己署名 mod_ssl 鍵のペアを作成 %post script するために、新しい httpd-init.service ものが新たに置き換わります。
  • 自動証明書管理環境 (ACME) プロトコルを使用した TLS 証明書の自動プロビジョニングおよび更新が mod_md パッケージでサポートされるようになりました(証明書プロバイダーなど Let’s Encrypt)。
  • Apache HTTP Server これで、ハードウェアセキュリティートークンから TLS 証明書および秘密鍵を直接読み込むことができるようになり PKCS#11 ます。その結果、 mod_ssl 設定では、 PKCS#11 URL を使用して、TLS 秘密鍵と、オプションで SSLCertificateFile ディレクティブの TLS 証明書を識別できるように SSLCertificateKeyFile なりました。
  • /etc/httpd/conf/httpd.conf ファイルの新しい ListenFree ディレクティブがサポートされるようになりました。

    Listen ディレクティブと同様に、サーバーがリッスンする IP アドレス、ポート、または IP アドレスとポートの組み合わせに関する情報を ListenFree 提供します。ただし、を使用すると ListenFreeIP_FREEBIND ソケットオプションがデフォルトで有効になります。したがって httpd 、ローカル以外の IP アドレスまたは存在しない IP アドレスにバインドできます。これにより、基礎となるネットワークインターフェースや、指定した動的 IP アドレスをバインドしようとする時にアップにしなく httpd てもソケットを httpd リッスンできます。

    ListenFree ディレクティブは、現在 RHEL 8 でのみ利用可能であることに注意してください。

    ListenFree の詳細は、以下の表を参照してください。

    表1.1 ListenFree ディレクティブの構文、ステータス、およびモジュール

    構文状態モジュール

    ListenFree [IP-address:]portnumber [protocol]

    MPM

    event, worker, prefork, mpm_winnt, mpm_netware, mpmt_os2

その他の主な変更点は次の通りです。

  • 以下のモジュールが削除されました。

    • mod_file_cache
    • mod_nss
    • mod_perl
  • RHEL 8 の Apache HTTP Server が使用するデフォルトの DBM 認証データベースのデフォルトタイプが、SDBM から db5 に変更になりました。
  • mod_wsgi モジュールが Python 3 に更新され Apache HTTP Server ました。wsgi アプリケーションは Python 3 でのみサポートされ、Python 2 から移行する必要があります。
  • デフォルトで設定されるマルチプロセッシングモジュール (MPM) は、マルチプロセスフォークモデル(別名 prefork)から高パフォーマンスのマルチスレッドモデルに変更になり Apache HTTP Server ました event

    スレッドセーフではないサードパーティーのモジュールは、交換または削除する必要があります。設定した MPM を変更するには、 /etc/httpd/conf.modules.d/00-mpm.conf ファイルを編集します。詳細は httpd.service(8) man ページを参照してください。

  • suEXEC によりユーザーに許可される最小 UID および GID はそれぞれ 1000 および 500 です (以前は 100 および 100 でした)。
  • この /etc/sysconfig/httpd ファイルは、 httpd サービスの環境変数を設定するのにサポートされなくなりました。systemd サービスに httpd.service(8) man ページが追加されました。
  • httpd サービスを停止すると、デフォルトで「graceful stop」が使用されるようになりました。
  • mod_auth_kerb モジュールがモジュールに置き換えられました mod_auth_gssapi

1.3. 設定の更新 (機械翻訳)

Red Hat Enterprise Linux 7 で使用される Apache HTTP Server バージョンの設定ファイルを更新するには、以下のいずれかのオプションを選択します。

  • 環境変数の設定に使用する場合 /etc/sysconfig/httpd は、代わりに systemd のドロップインファイルを作成します。
  • サードパーティーのモジュールを使用する場合は、そのモジュールがスレッド MPM と互換性があることを確認してください。
  • suexec を使用する場合は、ユーザーおよびグループ ID が新たな最小値を満たしていることを確認します。

次のコマンドを使用して、可能なエラーの設定をチェックできます。

~]# apachectl configtest
Syntax OK

1.4. httpd サービスの実行 (機械翻訳)

本セクションでは、起動、停止、再起動、および現在のステータスの確認を行う方法を説明し Apache HTTP Serverます。httpd サービスを使用できるようにするには、 httpd パッケージがインストールされていることを確認します。

~]# yum install httpd

Red Hat Enterprise Linux 8 では、モジュールを介してインストールする Apache HTTP Server こともできます. この httpd モジュールは、Application ストリームで利用できます。

httpd モジュールをインストールするには、root で以下のコマンドを実行します。

~]# yum module install httpd

このコマンドにより mod_ssl モジュールもインストールされ、SSL/TLS サポートが提供されます。

1.4.1. サービスの開始 (機械翻訳)

httpd サービスを実行するには、以下のようにシェルプロンプトで以下を入力し rootます。

~]# systemctl start httpd.service

システムの起動時にサービスを自動的に起動させる場合は次のコマンドを使用します。

~]# systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
注記

安全なサーバー Apache HTTP Server として実行する場合は、暗号化したプライベート SSL キーを使用する場合は、マシンが起動した後にパスワードが必要になります。

1.4.2. サービスの停止 (機械翻訳)

実行中の httpd サービスを停止するには、以下のようにシェルプロンプトで以下を入力し rootます。

~]# systemctl stop httpd.service

システムの起動時にサービスが自動的に開始しないようにするには、以下を入力します。

~]# systemctl disable httpd.service
Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.

1.4.3. サービスの再開 (機械翻訳)

実行中の httpd サービスを再開するには、以下のいずれかの方法があります。

  1. サービスを完全に再起動するには、root で次のコマンドを入力します。

    ~]# systemctl restart httpd.service

    これにより、実行中の httpd サービスが停止し、すぐに再開されます。このコマンドは、PHP などの動的にロードされたモジュールをインストールまたは削除する場合に使用します。

  2. アクティブな要求に影響を与えずに設定をリロードするには、root で次のコマンドを入力します。

    ~]# systemctl reload httpd.service

    これにより、実行中の httpd サービスがその設定ファイルを再読み込みします。現在処理されているリクエストは、引き続き古い設定を使用します。

1.4.4. サービスステータスの確認 (機械翻訳)

httpd サービスが実行中であることを確認するには、シェルプロンプトで次のコマンドを実行します。

~]# systemctl is-active httpd.service
active

1.5. 設定ファイルの編集 (機械翻訳)

httpd サービスが開始されると、デフォルトでは一覧表示されている場所から設定を読み込み 表1.2「httpd サービス設定ファイル」ます。

表1.2 httpd サービス設定ファイル

パス説明

/etc/httpd/conf/httpd.conf

主要設定ファイルです。

/etc/httpd/conf.d/

メイン設定ファイルに含まれる設定ファイル用の補助ディレクトリー。

/etc/httpd/conf.modules.d/

Red Hat Enterprise Linux に同梱されているインストール済み動的モジュールを読み込む設定ファイル用の補助ディレクトリー。デフォルト設定では、これらの設定ファイルが最初に処理されます。

デフォルト設定はほとんどの状況に適していますが、他の設定オプションも使用できます。変更を有効にするには、最初に Web サーバーを再起動します。httpd サービスを再起動する詳細は、「サービスの再開 (機械翻訳)」 を参照してください。

設定のエラーの可能性を確認するには、シェルプロンプトで次のコマンドを実行します。

~]# apachectl configtest
Syntax OK

間違いからの復元を簡単にするには、編集する前に元のファイルをコピーします。

1.6. モジュールでの作業 (機械翻訳)

httpd サービスは、モジュールアプリケーションであるため、いくつかの Dynamic Shared Objects (DSO) と一緒に配布されます。これは、動的にロードされるか、必要に応じてランタイム時にアンロードされます。これらのモジュールは /usr/lib64/httpd/modules/ ディレクトリーにあります。

1.6.1. モジュールの読み込み (機械翻訳)

特定の DSO モジュールを読み込むには、 LoadModule ディレクティブを使用します。別のパッケージが提供するモジュールには、多くの場合、 /etc/httpd/conf.modules.d/ ディレクトリー内に独自の設定ファイルがあることに注意してください。

例1.1 mod_ssl DSO のロード

LoadModule ssl_module modules/mod_ssl.so

モジュールを読み込んでから、Web サーバーを再起動して設定を再読み込みします。httpd サービスを再起動する詳細は、「サービスの再開 (機械翻訳)」 を参照してください。

1.6.2. モジュールの作成 (機械翻訳)

新しい DSO モジュールを作成するには、 httpd-devel パッケージがインストールされていることを確認してください。これを行うには、rootで以下のコマンドを実行します。

~]# yum install httpd-devel

このパッケージには、モジュールをコンパイルするのに必要なインクルードファイル、ヘッダーファイル、および( APache eXtenSion apxs)ユーティリティーが含まれます。

一度記述すると、以下のコマンドでモジュールを作成できます。

~]# apxs -i -a -c module_name.c

ビルドが成功した場合は、とともに配布される他のモジュールと同じ方法でモジュールをロードでき Apache HTTP Serverます。

1.7. 仮想ホストの設定 (機械翻訳)

Apache HTTP Server’s 内蔵の仮想ホストにより、どの IP アドレス、ホスト名、またはポートを要求しているかに応じて、サーバーが異なる情報を提供できます。

名前ベースの仮想ホストを作成するには、サンプルの設定ファイルを /etc/httpd/conf.d/ ディレクトリー /usr/share/doc/httpd/httpd-vhosts.conf にコピーします。に従って、オプションをカスタマイズし 例1.2「仮想ホスト設定の例」ます。

例1.2 仮想ホスト設定の例

<VirtualHost *:80>
    ServerAdmin webmaster@penguin.example.com
    DocumentRoot "/www/docs/penguin.example.com"
    ServerName penguin.example.com
    ServerAlias www.penguin.example.com
    ErrorLog "/var/log/httpd/dummy-host.example.com-error_log"
    CustomLog "/var/log/httpd/dummy-host.example.com-access_log" common
</VirtualHost>

マシンに割り当てる ServerName 有効な DNS 名であることに留意してください。<VirtualHost> コンテナーは高度なカスタマイズが可能で、メインサーバー設定内で利用可能なほとんどのディレクティブを受け付けます。このコンテナー内でサポートされ ない ディレクティブには GroupUser およびに置き換わりました SuexecUserGroup

注記

仮想ホストがデフォルト以外のポートをリッスンするように設定するには、 /etc/httpd/conf/httpd.conf ファイルのグローバル設定セクションにある Listen ディレクティブを適宜更新してください。

新しく作成した仮想ホストをアクティブにするには、最初に Web サーバーを再起動します。httpd サービスを再起動する詳細は、「サービスの再開 (機械翻訳)」 を参照してください。

1.8. SSL サーバーの設定 (機械翻訳)

Secure Sockets LayerSSL)は、サーバーおよびクライアントが安全な通信を可能にする暗号化プロトコルです。TLSTransport Layer Security )と呼ばれる拡張および改善されたバージョンと共に、プライバシーとデータ整合性の両方が確保されます。SSL/TLS サポートを提供 mod_sslするために OpenSSL ツールキットを使用するモジュールとの Apache HTTP Server 組み合わせは、一般的に SSL サーバーと呼ばれます。

傍受可能なユーザーが読み取りや修正が可能な HTTP 接続とは異なり、HTTP を介した SSL/TLS(HTTPS と呼ばれています)を使用すると、送信されたコンテンツの検査や修正ができなくなります。このセクションでは、この Apache HTTP Server 設定でこのモジュールを有効にする方法と、秘密鍵および自己署名証明書を生成するプロセスについて説明します。

1.8.1. 証明書とセキュリティーの概要 (機械翻訳)

セキュアな通信は、鍵の使用に基づいています。従来の暗号または 対称暗号では、トランザクションの両端が互いの転送のデコードに使用できるキーと同じものです。一方、公開鍵または 非対称暗号では、秘密鍵(秘密を保持する 秘密鍵 と、通常は公開鍵と 公開鍵 )が共存します。公開鍵でエンコードしたデータは秘密鍵でしかデコードできませんが、秘密鍵でエンコードしたデータは公開鍵でしかデコードできません。

SSL を使用して安全な通信を提供するには、 認証局CA)が署名したデジタル証明書を SSL サーバーで使用する必要があります。証明書には、サーバーの各種属性(サーバーのホスト名、企業の名前、場所など)と、CA の秘密鍵を使用して生成された署名が一覧で表示されます。この署名により、特定の認証局が証明書に署名し、証明書がいかなる方法でも変更されていないことを確認できます。

1.8.2. Web サーバー用の証明書およびセキュリティー (機械翻訳)

Web ブラウザーが新しい SSL 接続を確立すると、Web サーバーが提供する証明書がチェックされます。証明書に信頼できる CA からの署名がない場合、または証明書に一覧表示されているホスト名が接続の確立に使用されるホスト名と一致しない場合は、証明書によりサーバーとの通信が拒否され、通常は適切なエラーメッセージが表示されます。

デフォルトでは、ほとんどの Web ブラウザーは、広く使用されている認証局のセットを信頼するように設定されます。このため、安全なサーバーをセットアップする際には、適切な CA を選択する必要があります. これにより、ターゲットユーザーは接続を信頼できるようになり、それ以外の場合はエラーメッセージが表示され、証明書を手動で受け入れる必要があります。証明書エラーを上書きするようにユーザーを強制することで、攻撃者は接続を傍受できるため、可能な限り信頼できる CA を使用する必要があります。詳細は表1.3「一般的な Web ブラウザーで使用される CA リストに関する情報」を参照してください。

表1.3 一般的な Web ブラウザーで使用される CA リストに関する情報

SSL サーバーを設定する場合は、証明書要求と秘密鍵を生成し、証明書要求、会社の ID の証明、および認証局への支払いを送信します。CA が証明書要求とユーザー ID を検証すると、サーバーで使用できる署名付き証明書が送信されます。または、CA 署名を含まない自己署名証明書を作成し、テスト目的でのみ使用してください。

1.9. mod_ssl モジュールの有効化 (機械翻訳)

TLS (SSL) サーバーを設定する予定がある場合は mod_ssl、同じポートを使用するように別のアプリケーションやモジュールを設定することは できません 。ポート 443 は、HTTPS のデフォルトポートです。

mod_ssl モジュールと OpenSSL ツールキットを使用して SSL サーバーを設定するには、 mod_ssl および openssl パッケージをインストールします。以下のコマンドを入力し rootます。

~]# yum install mod_ssl openssl

これにより、/etc/httpd/conf.d/ssl.confmod_ssl 設定ファイルが作成されます。これは、デフォルトで、メインの Apache HTTP Server 設定ファイルに含まれています。モジュールが読み込まれるようにするには、の説明に従って httpd サービスを再起動し 「サービスの再開 (機械翻訳)」ます。

重要

SSLv2 プロトコルおよび SSLv3 プロトコルのバージョンは、安全と見なされなくなったため、OpenSSL (および mod_ssl) から削除されました。

1.9.1. mod_ssl での TLS の異なるバージョンの有効化 (機械翻訳)

RHEL 8 のデフォルトの httpd インストールでは、 SSLProtocol ディレクティブがコメントアウトされています。したがって、システム全体の暗号化ポリシーに従い、TLS 1.2 および TLS 1.3 接続のみ httpd が許可されます。詳細は Using system-wide cryptographic policies を参照してください。

TLS プロトコルの特定のバージョンは、グローバルまたはサイトごとに有効または無効にできます。

  • プロトコルのバージョンをグローバルに指定するには、設定ファイルの SSL グローバルコンテキストセクションに SSLProtocol ディレクティブを追加して、別の 場所でそれを削除します。
  • あるサイトのプロトコルバージョンを指定するには、該当する VirtualHost セクションの SSL プロトコルサポート でデフォルトのエントリーを編集します。per-site VirtualHost セクションでプロトコルバージョンを指定しないと、サイトは global セクションの設定を継承します。

特定のプロトコルバージョンが有効になっていることを確認するには、管理者が SSL グローバルコンテキストセクション SSLProtocolのみ 指定するか、または すべて のサイトごとに VirtualHost セクション で指定する必要があります。

TLSv1.x の特定のバージョンの有効化

特定の TLSv1.x プロトコルバージョンのみを有効にするには、以下の手順に従います。

  1. root 権限で、/etc/httpd/conf.d/ssl.conf ファイルを開き、SSLProtocol ディレクティブの すべての インスタンスを検索します。デフォルトでは、ファイルには以下のようなセクションが含まれます。

    ~]# vi /etc/httpd/conf.d/ssl.conf
    #   List the protocol versions which clients are allowed to connect with.
    #   The OpenSSL system profile is used by default.  See
    #   update-crypto-policies(8) for more details.
    #SSLProtocol all -SSLv3
    #SSLProxyProtocol all -SSLv3
  2. たとえば、TLS プロトコルをバージョン 1.3 に設定するには、以下の SSLProtocol 行を編集します。

    SSLProtocol -all +TLSv1.3

    ファイルを保存して閉じます。

  3. 以下のように変更を確認します。

    ~]# grep SSLProtocol /etc/httpd/conf.d/ssl.conf
    SSLProtocol -all +TLSv1.3
  4. 以下のように Apache デーモンを再起動します。

    ~]# systemctl restart httpd

    すべてのセッションは中断されることに注意してください。

TLS プロトコルのステータスのテスト

どのバージョンの TLS が有効か無効かを確認するには、 openssl s_client -connect コマンドを使用します。コマンドの形式は以下のとおりです。

openssl s_client -connect hostname:port -protocol

port は、テストするポートで、protocol は、テストするプロトコルバージョンです。ローカルで稼働している SSL サーバーをテストする場合は、localhost をホスト名として使用します。

openssl s_client コマンドオプションは、man ページの s_client(1) に記載されています。

1.9.2. TLS 証明書のプロビジョニングと更新を自動化する (機械翻訳)

自動証明書管理環境 (ACME) プロトコルを使用した自動 TLS 証明書のプロビジョニングおよび更新は、mod_md パッケージでサポートされるようになりました (Let’s Encrypt などの証明書プロバイダーを使用するため)。

1.10. 既存の鍵と証明書の使用 (機械翻訳)

以前作成した鍵と証明書がある場合は、新しいものを生成するのではなく、これらのファイルを使用するように SSL サーバーを設定できます。これを実行できない状況は、次のいずれかになります。

  1. IP アドレスまたはドメイン名を変更しています。

    証明書は、特定の IP アドレスとドメイン名のペアに対して発行されます。いずれかの値が変更されると、証明書は無効になります。

  2. VeriSign からの証明書があり、サーバーソフトウェアを変更した。

    広く使用されている認証局である VeriSign は、特定のソフトウェア製品、IP アドレス、およびドメイン名に証明書を発行します。ソフトウェア製品を変更すると、証明書は無効になります。

上記のいずれの場合でも、新しい証明書を取得する必要があります。

既存の鍵と証明書を使用したい場合は、root で以下のコマンドを実行し、関連ファイルを /etc/pki/tls/private/ ディレクトリーおよび /etc/pki/tls/certs/ ディレクトリーに移動します。

~]# mv key_file.key /etc/pki/tls/private/hostname.key
~]# mv certificate.crt /etc/pki/tls/certs/hostname.crt

次に、以下の行を /etc/httpd/conf.d/ssl.conf 設定ファイルに追加します。

SSLCertificateFile /etc/pki/tls/certs/hostname.crt
SSLCertificateKeyFile /etc/pki/tls/private/hostname.key

更新した設定を読み込むには、「サービスの再開 (機械翻訳)」 で説明されているように、httpd サービスを再起動します。

1.11. コマンドラインを使用して HTTP および HTTPS 用にファイアウォールを設定 (機械翻訳)

Red Hat Enterprise Linux は、デフォルトで HTTP トラフィックおよび HTTPS トラフィックを許可しません。システムが Web サーバーとして機能できるようにするには、 firewalldサポートされるサービスを使用して、必要に応じ HTTP てファイアウォールを通過し HTTPS トラフィックを有効にします。

コマンドラインの HTTP 使用を有効にするには、以下のコマンドを実行し rootます。

~]# firewall-cmd --add-service http
 success

コマンドラインの HTTPS 使用を有効にするには、以下のコマンドを実行し rootます。

~]# firewall-cmd --add-service https
 success

この変更は、次回のシステム起動後も維持されないことに注意してください。ファイアウォールに永続的に変更する場合は、 --permanent オプションを追加してコマンドを繰り返します。

1.11.1. コマンドラインを使用して着信 HTTPS および HTTPS のネットワークアクセスを確認する (機械翻訳)

コマンドラインを使用して、ファイアウォールが許可するように設定されているサービスを確認するには、以下のコマンドを実行し rootます。

~]# firewall-cmd --list-all
public (default, active)
  interfaces: em1
  sources:
  services: dhcpv6-client ssh
output truncated

この例では、デフォルトのインストールから、ファイアウォールは有効になっています HTTPSHTTP 、通過は許可されていません。

HTTP および HTTP ファイアウォールサービスが有効になると、 services 行は以下のようになります。

services: dhcpv6-client http https ssh

1.12. 関連資料 (機械翻訳)

詳細は Apache HTTP Server、以下のリソースを参照してください。

1.12.1. インストールされているドキュメント (機械翻訳)

  • httpd(8) - コマンドラインオプションの全一覧を含む httpd サービスの man ページです。
  • httpd.service(8) :サービスのカスタマイズ方法と機能強化方法を説明する httpd.service ユニットファイルの man ページです。
  • httpd.conf(5) - httpd 設定ファイルの構造と場所を説明する httpd 設定の man ページです。
  • apachectl(8)Apache HTTP Server コントロールインターフェースの man ページです。

1.12.2. インストール可能なドキュメント (機械翻訳)

  • http://localhost/manual/ - ディレクティブと利用可能なモジュールの完全な説明が記載されて Apache HTTP Server いる公式ドキュメントです。本書にアクセスするには、 httpd-manual パッケージをインストールし、Web サーバーが実行中である必要があります。

    ドキュメントにアクセスする前に、以下のコマンドを実行し rootます。

    ~]# yum install httpd-manual
    ~]# apachectl graceful

1.12.3. オンラインのドキュメント (機械翻訳)

  • http://httpd.apache.org/ - すべてのディレクティブおよびデフォルトのモジュールに関するドキュメントを Apache HTTP Server 含む公式の Web サイト
  • http://www.openssl.org/ - その他のドキュメント、よくある質問、メーリングリストへのリンク、その他の便利なリソースを含む OpenSSL のホームページ。

第2章 Samba をサーバーとして使用 (機械翻訳)

Samba は、Red Hat Enterprise Linux に Server Message Block (SMB) プロトコルを実装します。SMB プロトコルは、ファイル共有や共有プリンターなど、サーバー上のリソースにアクセスするために使用されます。さらに、Samba は、Microsoft Windows で使用される分散コンピューティング環境リモートプロシージャーコール (DCE RPC) プロトコルを実装しています。

Samba は、以下のように実行できます。

  • Active Directory (AD) または NT4 ドメインメンバー
  • スタンドアロンサーバー
  • NT4 プライマリードメインコントローラー (PDC) またはバックアップドメインコントローラー (BDC)

    注記

    Red Hat は、NT4 ドメインをサポートする Windows バージョンの既存インストールでのみ PDC モードおよび BDC モードをサポートします。Windows 7 および Windows Server 2008 R2 以降の Microsoft オペレーティングシステムは NT4 ドメインをサポートしないため、Red Hat は、新しい Samba NT4 ドメインを設定しないことを推奨しています。

    Red Hat は、AD ドメインコントローラー (DC) として Samba を実行することをサポートしていません。

インストールモードに関係なく、オプションでディレクトリーやプリンターを共有することができます。これにより、Samba がファイルとプリントサーバーとして動作できるようになります。

前提条件

  • Red Hat Enterprise Linux 8 がサーバーにインストールされている。

2.1. Samba サービス (機械翻訳)

Samba は、以下のサービスを提供します。

smbd

このサービスは、SMB プロトコルを使用してファイル共有およびプリントサービスを提供します。さらに、サービスは、リソースのロックと、ユーザーの接続認証を行います。smb systemd サービスが smbd デーモンを開始および停止します。

smbd サービスを使用するには、 samba パッケージをインストールします。

nmbd

このサービスは、IPv4 プロトコル経由の NetBIOS を使用してホスト名と IP 解決を提供します。名前解決に加え、 nmbd サービスは SMB ネットワークを参照して、ドメイン、作業グループ、ホスト、ファイル共有、およびプリンターを検索できます。そのため、サービスは、この情報をブロードキャストクライアントに直接報告するか、ローカルブラウザーまたはマスターブラウザーに転送します。nmb systemd サービスが nmbd デーモンを開始および停止します。

最新の SMB ネットワークは、DNS を使用してクライアントと IP アドレスを解決することに注意してください。

nmbd サービスを使用するには、 samba パッケージをインストールします。

winbindd

このサービスは、Name Service Switch (NSS) のインターフェースを提供し、ローカルシステムの AD または NT4 ドメインユーザーおよびグループを使用します。これにより、たとえば、ドメインユーザーは、Samba サーバーでホストされるサービスまたは他のローカルサービスに認証できます。winbind systemd サービスが winbindd デーモンを開始および停止します。

Samba をドメインメンバーとして設定する場合は、 smbd サービスの前に起動する winbindd 必要があります。そうでない場合、ドメインユーザーおよびグループはローカルシステムでは使用できません。

winbindd サービスを使用するには、 samba-winbind パッケージをインストールします。

重要

Red Hat は、ドメインユーザーおよびグループをローカルシステムに提供する winbindd サービスで Samba をサーバーとして実行することのみをサポートします。Windows アクセス制御リスト (ACL) サポートや NT LAN Manager (NTLM) フォールバックなど、特定の制限により、SSSD はサポートされません。

2.2. testparm ユーティリティーを使用して smb.conf ファイルを検証する (機械翻訳)

testparm ユーティリティーは、 /etc/samba/smb.conf ファイル内の Samba 設定が正しいことを確認します。ユーティリティは、ID マッピングなどの無効なパラメーターや値を検出しますが、間違った設定も検出します。問題 testparm がない場合、Samba サービスは /etc/samba/smb.conf ファイルを正常に読み込みます。設定したサービスが利用可能であること、または期待通りに機能することを確認 testparm できないことに注意してください。

重要

このファイルを変更する testparm たびに、Red Hat は、これを使用して /etc/samba/smb.conf ファイルを検証することが推奨されます。

手順

  1. この testparm ユーティリティーを root ユーザーとして実行します。

    # testparm
    Load smb config files from /etc/samba/smb.conf
    rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
    Unknown parameter encountered: "log levell"
    Processing section "[example_share]"
    Loaded services file OK.
    ERROR: The idmap range for the domain * (tdb) overlaps with the range of DOMAIN (ad)!
    
    Server role: ROLE_DOMAIN_MEMBER
    
    Press enter to see a dump of your service definitions
    
    # Global parameters
    [global]
    	...
    
    [example_share]
    	...

    上記の出力例は、存在しないパラメーターと間違った ID マッピング設定を報告します。

  2. 設定内の間違ったパラメーター、値、またはその他のエラーを testparm 報告する場合は、問題を解決し、ユーティリティーを再度実行します。

2.3. Samba のセキュリティーサービス (機械翻訳)

/etc/samba/smb.conf ファイルの [global] セクションにある security パラメーターは、Samba がサービスに接続するユーザーを認証する方法を管理します。Samba をインストールするモードに応じて、パラメーターは以下の異なる値に設定する必要があります。

AD ドメインメンバーで、以下を設定します。 security = ads

このモードでは、Samba は Kerberos を使用して AD ユーザーを認証します。

Samba をドメインメンバーとして設定する方法はを参照してください 「ドメインメンバーサーバーとしての Samba の設定 (機械翻訳)」

スタンドアロンサーバーでの設定 security = user

このモードでは、Samba はローカルデータベースを使用して、接続ユーザーの認証を行います。

Samba をスタンドアロンサーバーとして設定する方法はを参照してください 「Samba をスタンドアロンサーバーとして設定する (機械翻訳)」

NT4 PDC または BDC で、以下を設定します。 security = user
このモードでは、Samba は、ユーザーをローカルまたは LDAP データベースに認証します。
NT4ドメインメンバーに security = domain を設定します。

このモードでは、Samba は NT4 PDC または BDC へのユーザーの接続を認証します。AD ドメインメンバーでこのモードを使用することはできません。

Samba をドメインメンバーとして設定する方法はを参照してください 「ドメインメンバーサーバーとしての Samba の設定 (機械翻訳)」

関連資料

  • smb.conf(5) man ページの security パラメーターの説明を参照してください。

2.4. Samba をスタンドアロンサーバーとして設定する (機械翻訳)

Samba をドメインのメンバーではないサーバーとしてセットアップできます。このインストールモードでは、Samba は中央 DC ではなくローカルデータベースにユーザーを認証します。さらに、ゲストアクセスを有効にして、ユーザーが認証なしで単一または複数のサービスに接続できるようにできます。

2.4.1. スタンドアロンサーバーのサーバー設定のセットアップ (機械翻訳)

このセクションでは、Samba スタンドアロンサーバーのサーバー設定方法を説明します。

手順
  1. samba パッケージをインストールします。

    # yum install samba
  2. /etc/samba/smb.conf ファイルを編集し、次のパラメーターを設定します。

    [global]
    	workgroup = Example-WG
    	netbios name = Server
    	security = user
    
    	log file = /var/log/samba/%m.log
    	log level = 1

    この設定により、 Example-WG 作業グループ Server 内に名前が付いたスタンドアロンサーバーが定義されます。また、この設定により、最小レベル(1)のログインが可能になり、ログファイルが /var/log/samba/ ディレクトリーに保存されます。Samba は、 log file パラメーター内の %m マクロを、接続クライアントの NetBIOS 名に拡張します。これにより、クライアントごとに個別のログファイルが有効になります。

  3. ファイルまたはプリンターの共有を構成します。以下を参照してください。

  4. /etc/samba/smb.conf ファイルを確認します。

    # testparm
  5. 認証が必要な共有を設定する場合は、ユーザーアカウントを作成します。「ローカルユーザーアカウントの作成および有効化 (機械翻訳)」 を参照してください。
  6. 必要なポートを開き、 firewall-cmd ユーティリティーを使用してファイアウォール設定を再ロードします。

    # firewall-cmd --permanent --add-port={139/tcp,445/tcp}
    # firewall-cmd --reload
  7. smb サービスを起動します。

    # systemctl start smb

    必要に応じて、システムの起動時に smb サービスが自動的に起動するようにします。

    # systemctl enable smb
関連資料

2.4.2. ローカルユーザーアカウントの作成および有効化 (機械翻訳)

共有への接続時にユーザーが認証できるようにするには、オペレーティングシステムと Samba データベースの両方で Samba ホストでアカウントを作成する必要があります。Samba は、ファイルシステムオブジェクトのアクセス制御リスト (ACL) を検証するオペレーティングシステムアカウント、および接続ユーザーを認証する Samba アカウントを必要とします。

passdb backend = tdbsam デフォルト設定を使用する場合は、Samba はユーザーアカウントを /var/lib/samba/private/passdb.tdb データベースに保存します。

このセクションの手順では、example という名前のローカル Samba ユーザーを作成する方法を説明します。

前提条件
  • Samba が、スタンドアロンサーバーとしてインストールされています。
手順
  1. オペレーティングシステムのアカウントを作成します。

    # useradd -M -s /sbin/nologin example

    このコマンドは、ホームディレクトリーを作成せずに example アカウントを追加します。アカウントが Samba への認証にのみ使用される場合は、シェルとして /sbin/nologin コマンドを割り当て、アカウントがローカルにログインできないようにします。

  2. 有効にするパスワードをオペレーティングシステムアカウントに設定します。

    # passwd example
    Enter new UNIX password: password
    Retype new UNIX password: password
    passwd: password updated successfully

    Samba は、認証にオペレーティングシステムアカウントに設定されたパスワードを使用しません。ただし、アカウントを有効にするにはパスワードを設定する必要があります。アカウントが無効になっている場合、Samba は、このユーザーが接続するとアクセスを拒否します。

  3. Samba データベースにユーザーを追加し、アカウントにパスワードを設定します。

    # smbpasswd -a example
    New SMB password: password
    Retype new SMB password: password
    Added user example.

    このアカウントを使用して Samba 共有に接続する場合に認証するには、このパスワードを使用します。

  4. Samba アカウントを有効にします。

    # smbpasswd -e example
    Enabled user example.

2.5. ドメインメンバーサーバーとしての Samba の設定 (機械翻訳)

AD または NT4 ドメインを実行している場合は、Samba を使用して Red Hat Enterprise Linux サーバーをメンバーとしてドメインに追加し、以下を取得します。

  • 他のドメインメンバー上のドメインリソースへのアクセス
  • 以下のようなローカルサービスに対するドメインユーザーの認証 sshd
  • ファイルおよびプリントサーバーとして機能するようにサーバー上でホストされているディレクトリーおよびプリンターを共有する

2.5.1. ドメインへの Samba の参加 (機械翻訳)

本セクションでは、Red Hat Enterprise Linux システムをドメインに参加させる方法を説明します。

手順
  1. 以下のパッケージをインストールします。

    # yum install realmd oddjob-mkhomedir oddjob samba-winbind-clients \
           samba-winbind samba-common-tools samba
  2. ドメインメンバー上でディレクトリーまたはプリンターを共有するには、 samba パッケージをインストールします。

    # yum install samba
  3. AD に参加する場合は、さらに Winbind Kerberos locator プラグインをインストールします。

    # yum install samba-winbind-krb5-locator

    このプラグインにより、Kerberos は、DNS サービスレコードを使用して、AD サイトに基づいたキー配布センター (KDC) を検索できます。

  4. 必要に応じて、バックアップの目的で、既存の /etc/samba/smb.conf Samba 設定ファイルの名前を変更します。

    # mv /etc/samba/smb.conf /etc/samba/smb.conf.old
  5. ドメインに参加します。たとえば、以下のようにドメインに参加するには、 ad.example.com以下を実行します。

    # realm join --client-software=winbind ad.example.com

    上記のコマンドを使用すると、 realm ユーティリティーは自動的に以下を行います。

    • ad.example.com ドメイン内のメンバーシップの /etc/samba/smb.conf ファイルを作成します。
    • ユーザーおよびグループ検索用の winbind モジュールを /etc/nsswitch.conf ファイルに追加します。
    • /etc/pam.d/ ディレクトリの Pluggable Authentication Module (PAM) 設定ファイルを更新します。
    • winbind サービスを起動し、システムの起動時にサービスを開始できるようにします。
  6. 必要に応じて、 /etc/samba/smb.conf ファイルに別の ID マッピングバックエンドまたはカスタマイズされた ID マッピング設定を設定します。詳細は「Samba ID マッピング (機械翻訳)」を参照してください。
  7. 必要に応じて、設定を確認します。「Samba がドメインメンバーとして正しく参加したことの確認 (機械翻訳)」 を参照してください。
  8. winbind サービスが実行中であることを確認します。

    # systemctl status winbind
    ...
       Active: active (running) since Tue 2018-11-06 19:10:40 CET; 15s ago
    重要

    Samba がドメインユーザーおよびグループ情報をクエリーできるようにするには、開始前に winbind サービスが実行されている必要があり smbます。

  9. ディレクトリーおよびプリンターを共有するように samba パッケージをインストールした場合は、 smb サービスを起動します。

    # systemctl start smb
  10. 必要に応じて、Active Directory へのローカルログインを認証する場合は、 winbind_krb5_localauth プラグインを有効にします。「MIT Kerberos のローカル認証プラグインの使用 (機械翻訳)」 を参照してください。
関連資料
  • realm ユーティリティーの詳細は、を参照してください。

    • realm(8) man ページ

2.5.2. Samba がドメインメンバーとして正しく参加したことの確認 (機械翻訳)

Red Hat Enterprise Linux をドメインに正しく追加したことを確認するには、このセクションで説明されているテストをドメインメンバーで実行します。

2.5.2.1. オペレーティングシステムがドメインユーザーアカウントおよびグループを取得できるかどうかの確認 (機械翻訳)

getent および chown ユーティリティーを使用して、オペレーティングシステムがドメインユーザーおよびグループを取得できることを確認します。

手順
  1. AD ドメインの administrator アカウントを照会するには、以下のコマンドを実行します。

    # getent passwd "AD\administrator"
    AD\administrator:*:10000:10000::/home/administrator@AD:/bin/bash
  2. AD ドメイン内の Domain Users グループのメンバーにクエリーを実行するには、以下のコマンドを実行します。

    # getent group "AD\Domain Users"
    AD\domain users:x:10000:user1,user2
  3. ファイルおよびディレクトリーにパーミッションを設定する際に、ドメインユーザーとグループを使用できることを確認します。たとえば、 /srv/samba/example.txt ファイルの所有者 AD\administrator とグループを次のように設定するには、 AD\Domain Users以下を実行します。

    # chown "AD\administrator":"AD\Domain Users" /srv/samba/example.txt

2.5.2.2. AD ドメインユーザーが Kerberos チケットを取得できるかどうかの確認 (機械翻訳)

AD 環境では、ユーザーは DC から Kerberos チケットを取得できます。

本セクションの手順では、 administrator ユーザーが Kerberos チケットを取得できるかどうかを検証する方法を説明します。

前提条件
  • Samba ドメインメンバーに krb5-workstation パッケージをインストールします。
手順
  1. AD ドメインメンバーで、 administrator@AD.EXAMPLE.COM プリンシパルのチケットを取得します。

    # kinit administrator@AD.EXAMPLE.COM
  2. キャッシュされた Kerberos チケットを表示します。

    # klist
    Ticket cache: KCM:0
    Default principal: administrator@AD.EXAMPLE.COM
    
    Valid starting       Expires              Service principal
    01.11.2018 10:00:00  01.11.2018 20:00:00  krbtgt/AD.EXAMPLE.COM@AD.EXAMPLE.COM
            renew until 08.11.2018 05:00:00

2.5.2.3. 利用可能なドメインの一覧表示 (機械翻訳)

wbinfo ユーティリティーを使用して、 winbindd サービスを介して利用可能なすべてのドメインを一覧表示します。

手順
# wbinfo --all-domains

Samba がドメインメンバーとして正常に参加した場合は、組み込みのローカルホスト名と、Samba が信頼される側のドメインを含むメンバーとなります。

例2.1 利用可能なドメインの表示

以下は、 wbinfo --all-domains コマンドの出力例です。

# wbinfo --all-domains
BUILTIN
SAMBA-SERVER
AD

2.5.3. MIT Kerberos のローカル認証プラグインの使用 (機械翻訳)

winbind サービスは、Active Directory ユーザーをドメインメンバーに提供します。特定の状況では、管理者は、ドメインメンバーで実行している SSH サーバーなどのローカルサービスにドメインユーザーが認証できるようにします。Kerberos を使用してドメインユーザーを認証する場合は、 winbind_krb5_localauth プラグインを有効にして、 winbind サービスを介して Kerberos プリンシパルを Active Directory アカウントに正しくマッピングします。

たとえば、Active Directory ユーザーの sAMAccountName 属性が小文字でログインしよう EXAMPLE とする場合、Kerberos は大文字でユーザー名を返します。このため、エントリーが認証と一致しません。

winbind_krb5_localauth プラグインを使用すると、アカウント名は正しくマッピングされます。これは GSSAPI 認証にのみ適用され、最初のチケット付与チケット (TGT) の取得には適用されないことに注意してください。

前提条件
  • Samba は、Active Directory のメンバーとして設定されます。
  • Red Hat Enterprise Linux は、Active Directory に対してログイン試行を認証します。
  • winbind サービスは実行しています。
手順

/etc/krb5.conf ファイルを編集し、以下のセクションを追加します。

[plugins]
localauth = {
     module = winbind:/usr/lib64/samba/krb5/winbind_krb5_localauth.so
     enable_only = winbind
}
関連資料
  • winbind_krb5_localauth(8) man ページを参照してください。

2.5.4. Samba ID マッピング (機械翻訳)

Windows ドメインでは、固有のセキュリティ識別子 (SID) でユーザーとグループが区別されます。ただし、Linux では、ユーザーおよびグループごとに一意の UID および GID が必要です。Samba をドメインメンバーとして実行する場合、 winbindd サービスは、ドメインユーザーおよびグループに関する情報をオペレーティングシステムに提供する必要があります。

winbindd サービスがユーザーおよびグループに一意の ID を Linux に提供できるようにするには、 /etc/samba/smb.conf ファイルに ID マッピングを設定する必要があります。

  • ローカルデータベース(デフォルトドメイン)
  • Samba サーバーがメンバーである AD または NT4 ドメイン
  • ユーザーがこの Samba サーバー上のリソースにアクセスできる必要がある各信頼されるドメイン

2.5.4.1. Samba ID 範囲の計画 (機械翻訳)

Linux UID および GID を AD に格納するか、Samba を設定して生成するかに関わらず、各ドメイン設定は一意の ID 範囲を必要とします. これは、他のドメインと重複してはならないものです。

警告

重複する ID 範囲を設定すると、Samba が正常に動作しません。

例2.2 一意の ID 範囲

以下は、デフォルト(*)およびドメインのオーバーラップしない ID マッピング範囲 AD-DOMを示してい TRUST-DOM ます。

[global]
...
idmap config * : backend = tdb
idmap config * : range = 10000-999999

idmap config AD-DOM:backend = rid
idmap config AD-DOM:range = 2000000-2999999

idmap config TRUST-DOM:backend = rid
idmap config TRUST-DOM:range = 4000000-4999999
重要

ドメインごとに割り当てることができる範囲はつだけです。そのため、ドメイン範囲の間には十分なスペースを残してください。これにより、後でドメインが大きくなる場合に範囲を拡張することができます。

後で別の範囲を割り当てると、これらのユーザーおよびグループが以前に作成したファイルとディレクトリーの所有権は失われます。

2.5.4.2. * デフォルトドメイン (機械翻訳)

ドメイン環境では、以下のそれぞれに ID マッピング設定を追加します。

  • Samba サーバーがメンバーとなっているドメイン
  • Samba サーバーにアクセスできる信頼されている各ドメイン

ただし、他のすべてのオブジェクトでは、Samba はデフォルトドメインから ID を割り当てます。これには以下が含まれます。

  • ローカルの Samba ユーザーおよびグループ
  • Samba 組み込みアカウントおよびグループ BUILTIN\Administrators
重要

Samba が正常に動作できるようにするには、このセクションの説明に従ってデフォルトのドメインを設定する必要があります。

割り当てられた ID を永続的に保存するには、デフォルトのドメインバックエンドが書き込み可能である必要があります。

デフォルトドメインでは、次のいずれかのバックエンドを使用できます。

tdb

デフォルトドメインが tdb バックエンドを使用するように設定する場合は、将来作成されるオブジェクト、および定義されたドメイン ID マッピング設定の一部ではないオブジェクトを含むのに十分な大きさの ID 範囲を設定します。

たとえば、 /etc/samba/smb.conf ファイルの [global] セクションで以下を設定します。

idmap config * : backend = tdb
idmap config * : range = 10000-999999

詳細は、を参照してください 「tdb ID マッピングバックエンドの使用 (機械翻訳)」

autorid

デフォルトドメインが autorid バックエンドを使用するように設定する場合は、ドメインへの ID マッピング設定の追加は任意です。

たとえば、 /etc/samba/smb.conf ファイルの [global] セクションで以下を設定します。

idmap config * : backend = autorid
idmap config * : range = 10000-999999

詳細は、を参照してください 「autorid ID マッピングバックエンドの使用 (機械翻訳)」

2.5.5. 異なる Samba ID マッピングバックエンド (機械翻訳)

Samba は、特定の設定に対して異なる ID マッピングバックエンドを提供します。最も頻繁に使用されるバックエンドは、次のとおりです。

バックエンドユースケース

tdb

* デフォルトドメインのみ

ad

AD ドメインのみ

rid

AD および NT4 ドメイン

autorid

AD、NT4、および * デフォルトドメイン

以下のセクションでは、利点、バックエンドの使用すべき推奨シナリオ、およびその設定方法を説明します。

2.5.5.1. tdb ID マッピングバックエンドの使用 (機械翻訳)

winbindd サービスは、デフォルトで書き込み可能 tdb ID マッピングバックエンドを使用して、セキュリティー識別子 (SID) 、UID、および GID マッピングテーブルを保存します。これには、ローカルユーザー、グループ、組み込みプリンシパルが含まれます。

このバックエンドは、 * デフォルトドメインでのみ使用してください。以下に例を示します。

idmap config * : backend = tdb
idmap config * : range = 10000-999999
関連資料

2.5.5.2. ad ID マッピングバックエンドの使用 (機械翻訳)

このセクションでは、 ad ID マッピングバックエンドを使用するように Samba AD メンバーを設定する方法を説明します。

ad ID マッピングバックエンドは、AD からアカウントおよびグループ情報を読み取るための読み取り専用 API を実装します。これには、以下の利点があります。

  • ユーザーおよびグループの設定は、すべて AD に集中して格納されます。
  • ユーザーおよびグループ ID は、このバックエンドを使用するすべての Samba サーバーで一貫性があります。
  • ID は、破損する可能性があるローカルデータベースに保存されないため、ファイルの所有権を失うことができません。
注記

ad ID マッピングバックエンドは、一方向の信頼を持つ Active Directory ドメインをサポートしません。一方向の信頼で Active Directory のドメインメンバーを設定する場合は、代わりに以下の ID マッピングバックエンドを使用 tdb ridautoridます。

ad バックエンドは、AD から以下の属性を読み込みます。

AD 属性名オブジェクト型マップ先

sAMAccountName

ユーザーとグループ

ユーザーまたはグループ名(オブジェクトによって異なる)

uidNumber

User

ユーザー ID (UID)

gidNumber

group

グループ ID (GID)

loginShell [a]

User

ユーザーのシェルへのパス

unixHomeDirectory [a]

User

ユーザーのホームディレクトリーへのパス

primaryGroupID [b]

User

プライマリーグループ ID

[a] Samba は、idmap config DOMAIN:unix_nss_info = yes を設定する場合に限り属性を読み込みます。
[b] Samba は、idmap config DOMAIN:unix_primary_group = yes を設定する場合に限り属性を読み込みます。
前提条件

ad ID マッピングバックエンドを使用するには、以下を行います。

  • ユーザーとグループは、AD で一意の ID を設定し、ID は /etc/samba/smb.conf ファイルで設定した範囲内にある必要があります。ID が範囲外にあるオブジェクトは、Samba サーバーでは利用できません。
  • ユーザーとグループには、必要な属性がすべて AD で設定されている必要があります。必要な属性がない場合、ユーザーまたはグループは Samba サーバーでは利用できません。必要な属性は設定により異なります。
手順
  1. /etc/samba/smb.conf ファイルの [global] セクションを編集します。

    1. デフォルトドメイン(*)が存在しない場合は、そのドメインに対する ID マッピング設定を追加します。以下に例を示します。

      idmap config * : backend = tdb
      idmap config * : range = 10000-999999
    2. AD ドメインの ad ID マッピングバックエンドを有効にします。

      idmap config DOMAIN : backend = ad
    3. AD ドメインのユーザーとグループに割り当てられる ID の範囲を設定します。以下に例を示します。

      idmap config DOMAIN : range = 2000000-2999999
      重要

      この範囲は、このサーバーの他のドメイン設定と重複してはなりません。さらに、この範囲は将来割り当てられるすべての ID を含めるのに十分な大きさに設定する必要があります。詳細は、を参照してください 「Samba ID 範囲の計画 (機械翻訳)」

    4. Samba が AD から属性を読み取る際に RFC 2307 スキーマを使用するように設定します。

      idmap config DOMAIN : schema_mode = rfc2307
    5. Samba が、対応する AD 属性からログインシェルおよびユーザーのホームディレクトリーへのパスを読み取りできるようにするには、以下を設定します。

      idmap config DOMAIN : unix_nss_info = yes

      または、すべてのユーザーに適用される、ドメイン全体の統一されたホームディレクトリーパスおよびログインシェルを設定できます。以下に例を示します。

      template shell = /bin/bash
      template homedir = /home/%U
    6. デフォルトでは、Samba は Linux 上のユーザーのプライマリーグループとしてユーザーオブジェクトの primaryGroupID 属性を使用します。または、代わりに、 gidNumber 属性に設定された値を使用するように Samba を設定できます。

      idmap config DOMAIN : unix_primary_group = yes
  2. /etc/samba/smb.conf ファイルを確認します。

    # testparm
  3. Samba 設定を再ロードします。

    # smbcontrol all reload-config
  4. 設定が期待どおりに機能することを確認します。「オペレーティングシステムがドメインユーザーアカウントおよびグループを取得できるかどうかの確認 (機械翻訳)」 を参照してください。
関連資料

2.5.5.3. rid ID マッピングバックエンドの使用 (機械翻訳)

このセクションでは、 rid ID マッピングバックエンドを使用するように Samba ドメインメンバーを設定する方法を説明します。

Samba は、Windows SID の相対識別子 (RID) を使用して、Red Hat Enterprise Linux で ID を生成できます。

注記

RID は SID の最後の部分です。たとえば、ユーザーの SID がの場合は S-1-5-21-5421822485-1151247151-421485315-30014、対応する RID に 30014 なります。

rid ID マッピングバックエンドは、AD ドメインおよび NT4 ドメインのアルゴリズムマッピングスキームに基づいてアカウントおよびグループ情報を計算するために、読み取り専用 API を実装します。バックエンドを設定する場合は、 idmap config DOMAIN : range パラメーターで RID の最小値と最大値を設定する必要があります。Samba は、このパラメーターで設定した RID 未満のユーザーやグループをマッピングすることはありません。

重要

読み取り専用のバックエンドとして、 BUILTIN グループなどの新しい ID を割り当てる rid ことはできません。したがって、 * デフォルトのドメインには、このバックエンドを使用しないでください。

rid バックエンドを使用する利点
  • 設定した範囲内の RID を持つすべてのドメインユーザーおよびグループは、自動的にドメインメンバーで利用可能となります。
  • ID、ホームディレクトリー、およびログインシェルを手動で割り当てる必要はありません。
rid バックエンドを使用する欠点
  • すべてのドメインユーザーは、同じログインシェルとホームディレクトリーを割り当てます。ただし、変数を使用できます。
  • ユーザーおよびグループ ID は、すべてが同じ ID 範囲設定で rid バックエンドを使用する場合のみ、Samba ドメインメンバー間で同じになります。
  • 個々のユーザーまたはグループをドメインメンバーで利用可能としないようにすることはできません。設定範囲外のユーザーとグループのみが除外されます。
  • ID の計算に winbindd サービスが使用する式に基づいて、異なるドメインのオブジェクトに同じ RID がある場合、複数ドメイン環境で ID が重複する可能性があります。
手順
  1. /etc/samba/smb.conf ファイルの [global] セクションを編集します。

    1. デフォルトドメイン(*)が存在しない場合は、そのドメインに対する ID マッピング設定を追加します。以下に例を示します。

      idmap config * : backend = tdb
      idmap config * : range = 10000-999999
    2. ドメインの rid ID マッピングバックエンドを有効にします。

      idmap config DOMAIN : backend = rid
    3. 将来割り当てられるすべての RID を含めるのに十分な大きさの範囲を設定します。以下に例を示します。

      idmap config DOMAIN : range = 2000000-2999999

      Samba は、このドメインの RID が範囲外のユーザーおよびグループを無視します。

      重要

      この範囲は、このサーバーの他のドメイン設定と重複してはなりません。詳細は、を参照してください 「Samba ID 範囲の計画 (機械翻訳)」

    4. すべてのマッピング済みユーザーに割り当てられるシェルおよびホームディレクトリーパスを設定します。以下に例を示します。

      template shell = /bin/bash
      template homedir = /home/%U
  2. /etc/samba/smb.conf ファイルを確認します。

    # testparm
  3. Samba 設定を再ロードします。

    # smbcontrol all reload-config

    設定が期待どおりに機能することを確認します。「オペレーティングシステムがドメインユーザーアカウントおよびグループを取得できるかどうかの確認 (機械翻訳)」 を参照してください。

関連資料

2.5.5.4. autorid ID マッピングバックエンドの使用 (機械翻訳)

このセクションでは、 autorid ID マッピングバックエンドを使用するように Samba ドメインメンバーを設定する方法を説明します。

autorid バックエンドは rid ID マッピングバックエンドと同様の動作をしますが、ドメインごとに異なる ID を自動的に割り当てることができます。これにより、以下の状況で autorid バックエンドを使用できます。

  • * デフォルトドメインのみ
  • * デフォルトのドメインおよび追加ドメインでは、追加ドメインごとに ID マッピング設定を作成する必要はありません。
  • 特定のドメインの場合のみ
注記

デフォルトドメインに使用 autorid する場合は、ドメインへの ID マッピング設定の追加は任意です。

このセクションの一部は、Samba Wiki に公開されている idmap config autorid を参考にしています。ライセンス: CC BY 4.0作成者と投稿者:Wiki ページの history タブを参照してください。

autorid バックエンドを使用する利点
  • 計算された UID と GID が設定された範囲内のすべてのドメインユーザーおよびグループは、自動的にドメインメンバーで利用可能となります。
  • ID、ホームディレクトリー、およびログインシェルを手動で割り当てる必要はありません。
  • 複数ドメイン環境で複数のオブジェクトが同じ RID を持つ場合でも、ID は重複しません。
drawbacks
  • ユーザーおよびグループ ID は、Samba ドメインメンバー間では同じではありません。
  • すべてのドメインユーザーは、同じログインシェルとホームディレクトリーを割り当てます。ただし、変数を使用できます。
  • 個々のユーザーまたはグループをドメインメンバーで利用可能としないようにすることはできません。計算された UID または GID が設定された範囲外のユーザーおよびグループのみが除外されます。
手順
  1. /etc/samba/smb.conf ファイルの [global] セクションを編集します。

    1. * デフォルトドメインの autorid ID マッピングバックエンドを有効にします。

      idmap config * : backend = autorid
    2. 既存および将来のすべてのオブジェクトに ID を割り当てるのに十分な大きさの範囲を設定します。以下に例を示します。

      idmap config * : range = 10000-999999

      Samba は、このドメインの計算された ID が範囲外のユーザーおよびグループを無視します。

      警告

      範囲を設定し、Samba がその範囲の使用を開始したら、範囲の上限のみを増やすことができます。この範囲にその他の変更を加えると新しい ID が割り当てられるため、ファイルの所有権が失われる可能性があります。

    3. 必要に応じて、範囲のサイズを設定します。以下に例を示します。

      idmap config * : rangesize = 200000

      Samba は、 idmap config * : range パラメーターで設定した範囲のすべての ID を取得するまで、この数の連続 ID を各ドメインのオブジェクトに割り当てます。

    4. すべてのマッピング済みユーザーに割り当てられるシェルおよびホームディレクトリーパスを設定します。以下に例を示します。

      template shell = /bin/bash
      template homedir = /home/%U
    5. 必要に応じて、ドメインに対して追加の ID マッピング設定を追加します。個々のドメインに利用可能な設定がない場合は、Samba は設定済みの * デフォルトドメインの autorid バックエンド設定を使用して ID を計算します。

      重要

      各ドメインに追加のバックエンドを設定する場合は、すべての ID マッピング設定の範囲が重複しないようにしてください。詳細は、を参照してください 「Samba ID 範囲の計画 (機械翻訳)」

  2. /etc/samba/smb.conf ファイルを確認します。

    # testparm
  3. Samba 設定を再ロードします。

    # smbcontrol all reload-config
  4. 設定が期待どおりに機能することを確認します。「オペレーティングシステムがドメインユーザーアカウントおよびグループを取得できるかどうかの確認 (機械翻訳)」 を参照してください。
関連資料
  • バックエンドの ID の計算方法は idmap_autorid(8) man ページの THE MAPPING FORMULAS セクションを参照してください。
  • idmap config rangesize パラメーターの使用方法は、 idmap_autorid(8) man ページの rangesize パラメーターの説明を参照してください。
  • 変数の代入の詳細は、 smb.conf(5) man ページの VARIABLE SUBSTITUTIONS セクションを参照してください。
  • 「testparm ユーティリティーを使用して smb.conf ファイルを検証する (機械翻訳)」

2.6. Samba サーバーでのファイル共有の設定 (機械翻訳)

Samba をファイルサーバーとして使用するには、スタンドアロンサーバーまたはドメインメンバー設定の /etc/samba/smb.conf ファイルに共有を追加します。

以下のいずれかを使用する共有を追加できます。

前提条件

Samba は、以下のいずれかのモードで設定されました。

2.6.1. POSIX ACL を使用する共有の設定 (機械翻訳)

Linux サービスとして、Samba は POSIX ACL を使用した共有をサポートします。これにより、以下のようなユーティリティーを使用して Samba サーバーのパーミッションをローカルに管理でき chmodます。共有が拡張属性に対応するファイルシステムに保存されている場合は、複数のユーザーおよびグループで ACL を定義できます。

注記

代わりに詳細な Windows ACL を使用する必要がある場合は、を参照してください 「Windows ACL を使用する共有のセットアップ (機械翻訳)」

このセクションの一部は、Samba Wiki に公開されている Setting up a Share Using POSIX ACLs を参考にしています。ライセンス: CC BY 4.0作成者と投稿者:Wiki ページの history タブを参照してください。

2.6.1.1. POSIX ACL を使用する共有の追加 (機械翻訳)

このセクションでは、 /srv/samba/example/ ディレクトリーのコンテンツを提供 example する共有名を作成し、POSIX ACL を使用する方法を説明します。

手順
  1. フォルダが存在しない場合は作成します。以下に例を示します。

    # mkdir -p /srv/samba/example/
  2. SELinux を enforcing モードで実行する場合は、ディレクトリーに samba_share_t コンテキストを設定します。

    # semanage fcontext -a -t samba_share_t "/srv/samba/example(/.*)?"
    # restorecon -Rv /srv/samba/example/
  3. ディレクトリーにファイルシステム ACL を設定します。「POSIX ACL を使用する共有の設定 (機械翻訳)」 を参照してください。
  4. /etc/samba/smb.conf ファイルに example 共有を追加します。たとえば、write-enabled 共有を追加するには、以下のコマンドを実行します。

    [example]
    	path = /srv/samba/example/
    	read only = no
    注記

    ファイルシステム ACL が設定されていなくても read only = no、Samba はディレクトリーを読み取り専用モードで共有します。

  5. /etc/samba/smb.conf ファイルを確認します。

    # testparm
  6. 必要なポートを開き、 firewall-cmd ユーティリティーを使用してファイアウォール設定を再ロードします。

    # firewall-cmd --permanent --add-service=samba
    # firewall-cmd --reload
  7. smb サービスを再起動します。

    # systemctl restart smb
  8. 必要に応じて、smb サービスが起動時に自動的に起動するようにします。

    # systemctl enable smb
関連資料

2.6.1.2. POSIX ACL を使用する共有への ACL の設定 (機械翻訳)

このセクションでは、POSIX ACL を使用する共有に ACL を設定する方法を説明します。

POSIX ACL を使用する共有サポート:

前提条件
2.6.1.2.1. 標準 Linux ACL の設定 (機械翻訳)

Linux の標準 ACL は、いずれかの所有者、グループ、および他のすべての未定義のユーザーに対するパーミッションの設定をサポートします。ACL の更新には chownchgrp、、および chmod ユーティリティーを使用できます。正確な制御が必要な場合は、より複雑な POSIX ACL を使用します. を参照してください 「拡張 ACL の設定 (機械翻訳)」

以下の手順では、 root ユーザーに /srv/samba/example/ ディレクトリーの所有者を設定し、 Domain Users グループに読み取りおよび書き込みパーミッションを与え、他のすべてのユーザーにアクセスを拒否します。

手順
# chown root:"Domain Users" /srv/samba/example/
# chmod 2770 /srv/samba/example/
注記

ディレクトリーで set-group-ID (SGID) ビットを有効にすると、すべての新規ファイルとサブディレクトリーのデフォルトグループが、ディレクトリーグループのものに自動的に設定されます。

関連資料
  • 権限の詳細は、man ページ chown(1) および chmod(1) man ページを参照してください。
2.6.1.2.2. 拡張 ACL の設定 (機械翻訳)

共有ディレクトリーが保存されているファイルシステムが拡張 ACL に対応している場合は、それらを使用して複雑なパーミッションを設定できます。拡張 ACL には、複数のユーザーおよびグループの権限を含めることができます。

拡張 POSIX ACL を使用すると、複数のユーザーおよびグループで複雑な ACL を設定できます。ただし、設定できるのは以下のパーミッションのみです。

  • アクセスなし
  • 読み取りアクセス
  • 書き込みアクセス
  • フルコントロール

たとえば、詳細な Windows パーミッションが必要な場合は、Windows ACL を使用する Create folder / append dataように共有を設定します。「Windows ACL を使用する共有のセットアップ (機械翻訳)」 を参照してください。

次の手順では、共有で拡張 ACL を有効にする方法を説明します。また、拡張 ACL の設定例も含まれています。

手順
  1. /etc/samba/smb.conf ファイルの共有のセクションで以下のパラメーターを有効にし、拡張 ACL の ACL 継承を有効にします。

    inherit acls = yes

    詳細は、man ページのパラメーターの説明を smb.conf(5参照してください。

  2. smb サービスを再起動します。

    # systemctl restart smb
  3. ディレクトリーに ACL を設定します。以下に例を示します。

    例2.3 拡張 ACL の設定

    以下の手順は、グループに読み取り、書き込み、および実行のパーミッションを設定し、その Domain Admins グループに対する読み取りと実行のパーミッションを設定し Domain Users/srv/samba/example/ ディレクトリーにある他のユーザーへのアクセスを拒否します。

    1. ユーザーアカウントのプライマリーグループへの自動監視パーミッションを無効にします。

      # setfacl -m group::--- /srv/samba/example/
      # setfacl -m default:group::--- /srv/samba/example/

      ディレクトリーのプライマリーグループは、動的 CREATOR GROUP プリンシパルに追加でマッピングされます。Samba 共有で拡張 POSIX ACL を使用する場合、このプリンシパルは自動的に追加され、削除することはできません。

    2. ディレクトリーにパーミッションを設定します。

      1. Domain Admins グループに読み取り、書き込み、および実行のパーミッションを与えます。

        # setfacl -m group:"DOMAIN\Domain Admins":rwx /srv/samba/example/
      2. グループに読み取りおよび実行の権限を Domain Users 付与します。

        # setfacl -m group:"DOMAIN\Domain Users":r-x /srv/samba/example/
      3. other ACL エントリーにパーミッションを設定し、他の ACL エントリーと一致しないユーザーへのアクセスを拒否します。

        # setfacl -R -m other::--- /srv/samba/example/

      この設定は、このディレクトリーにのみ適用されます。Windows では、これらの ACL は This folder only モードにマップされます。

    3. 前の手順で設定したパーミッションが、このディレクトリー内に作成された新規ファイルシステムオブジェクトから継承できるようにするには、以下を行います。

      # setfacl -m default:group:"DOMAIN\Domain Admins":rwx /srv/samba/example/
      # setfacl -m default:group:"DOMAIN\Domain Users":r-x /srv/samba/example/
      # setfacl -m default:other::--- /srv/samba/example/

      これらの設定では、プリンシパルの This folder only モードがに設定され This folder, subfolders, and filesます。

    Samba は、手順に設定したパーミッションを以下の Windows ACL にマッピングします。

    プリンシパルaccess適用対象

    Domain\Domain Admins

    フルコントロール

    フォルダ、サブフォルダ、およびファイル

    Domain\Domain Users

    読み取りと実行

    フォルダ、サブフォルダ、およびファイル

    Everyone [a]

    なし

    フォルダ、サブフォルダ、およびファイル

    owner (Unix User\owner) [b]

    フルコントロール

    このフォルダーのみ

    primary_group (Unix User\primary_group) [c]

    なし

    このフォルダーのみ

    CREATOR OWNER [d] [e]

    フルコントロール

    サブフォルダとファイルのみ

    CREATOR GROUP [e] [f]

    なし

    サブフォルダとファイルのみ

    [a] Samba は、 other ACL エントリーからこのプリンシパルの権限をマップします。
    [b] Samba は、ディレクトリーの所有者をこのエントリーにマッピングします。
    [c] Samba は、ディレクトリーのプライマリーグループをこのエントリーにマッピングします。
    [d] 新しいファイルシステムオブジェクトでは、作成者はこのプリンシパルの権限を自動的に継承します。
    [e] POSIX ACL を使用する共有でサポートされていない ACL から、これらのプリンシパルを設定または削除します。
    [f] 新しいファイルシステムオブジェクトでは、作成者のプライマリーグループはこのプリンシパルの権限を自動的に継承します。

2.6.1.3. POSIX ACL を使用する共有へのパーミッション設定 (機械翻訳)

必要に応じて、Samba 共有へのアクセスを制限または付与するために、 /etc/samba/smb.conf ファイル内の共有のセクションで特定のパラメーターを設定できます。

注記

共有ベースのパーミッションは、ユーザー、グループ、またはホストが共有にアクセスできるかどうかを管理します。この設定は、ファイルシステム ACL には影響しません。

共有ベースの設定を使用して、共有へのアクセスを制限します. たとえば、特定のホストからのアクセスを拒否します。

前提条件
2.6.1.3.1. ユーザーおよびグループベースの共有アクセスの設定 (機械翻訳)

ユーザーおよびグループベースのアクセス制御を使用すると、特定のユーザーおよびグループの共有へのアクセスを許可または拒否できます。

手順
  1. たとえば、アクセスが拒否されている user アカウントに対して Domain Users グループの全メンバーが共有にアクセスできるようにするには、共有の設定に以下のパラメーターを追加します。

    valid users = +DOMAIN\"Domain Users"
    invalid users = DOMAIN\user

    invalid users パラメーターの優先度は valid users パラメーターよりも高くなります。たとえば、 user アカウントが Domain Users グループのメンバーである場合、前の例を使用すると、このアカウントへのアクセスは拒否されます。

  2. Samba 設定を再ロードします。

    # smbcontrol all reload-config
関連資料
  • 詳細は、 smb.conf(5) man ページのパラメーターの説明を参照してください。
2.6.1.3.2. ホストベースの共有アクセスの設定 (機械翻訳)

ホストベースのアクセス制御を使用すると、クライアントのホスト名、IP アドレス、または IP 範囲に基づいて、共有へのアクセスを許可または拒否できます。

次の手順では、共有にアクセスする 127.0.0.1 IP アドレス、 192.0.2.0/24 IP 範囲、およびホストを有効にする方法と、 client1.example.com ホストへのアクセスを拒否する方法を説明します client2.example.com

手順
  1. /etc/samba/smb.conf ファイルの共有の設定に、以下のパラメーターを追加します。

    hosts allow = 127.0.0.1 192.0.2.0/24 client1.example.com
    hosts deny = client2.example.com

    hosts deny パラメーターの優先度は、これよりも高くなり hosts allowます。たとえば、 hosts allow パラメーターに一覧表示されている IP アドレスに client1.example.com 解決すると、このホストのアクセスが拒否されます。

  2. Samba 設定を再ロードします。

    # smbcontrol all reload-config
関連資料
  • 詳細は、 smb.conf(5) man ページのパラメーターの説明を参照してください。

2.6.2. Windows ACL を使用する共有のセットアップ (機械翻訳)

Samba は、共有およびファイルシステムオブジェクトの Windows ACL の設定をサポートします。これにより、以下のことが可能になります。

  • 詳細な Windows ACL の使用
  • Windows を使用した共有パーミッションおよびファイルシステム ACL の管理

または、POSIX ACL を使用するように共有を設定できます。詳細は「POSIX ACL を使用する共有の設定 (機械翻訳)」を参照してください。

このセクションの一部は、Samba Wiki に公開されている Setting up a Share Using Windows ACLs を参考にしています。ライセンス: CC BY 4.0作成者と投稿者:Wiki ページの history タブを参照してください。

2.6.2.1. SeDiskAuthenticationPrivilege 特権の付与 (機械翻訳)

SeDiskOperatorPrivilege 特権が付与されているユーザーとグループのみが、Windows ACL を使用する共有にパーミッションを設定できます。

手順
  1. たとえば、SeDiskOperatorPrivilege 特権を DOMAIN\Domain Admins グループに付与するには、以下のコマンドを実行します。

    # net rpc rights grant "DOMAIN\Domain Admins" SeDiskOperatorPrivilege \
           -U "DOMAIN\administrator"
    Enter DOMAIN\administrator's password:
    Successfully granted rights.
    注記

    ドメイン環境で、ドメイングループ SeDiskOperatorPrivilege に付与します。これにより、ユーザーのグループメンバーシップを更新することで特権を一元管理できます。

  2. SeDiskOperatorPrivilege 許可されたユーザーとグループをすべて表示するには、以下のコマンドを実行します。

    # net rpc rights list privileges SeDiskOperatorPrivilege \
           -U "DOMAIN\administrator"
    Enter administrator's password:
    SeDiskOperatorPrivilege:
      BUILTIN\Administrators
      DOMAIN\Domain Admins

2.6.2.2. Windows ACL サポートの有効化 (機械翻訳)

Windows ACL をサポートする共有を設定するには、Samba でこの機能を有効にする必要があります。

前提条件
  • ユーザー共有は、Samba サーバーで設定されます。
手順
  1. すべての共有に対してグローバルに有効にするには、次の設定を /etc/samba/smb.conf[global] セクションに追加します。

    vfs objects = acl_xattr
    map acl inherit = yes
    store dos attributes = yes

    または、共有のセクションに同じパラメーターを追加して、個々の共有に対して Windows ACL サポートを有効にすることもできます。

  2. smb サービスを再起動します。

    # systemctl restart smb

2.6.2.3. Windows ACL を使用する共有の追加 (機械翻訳)

このセクションでは example、named という名前の共有を作成し、 /srv/samba/example/ ディレクトリーのコンテンツを共有し、Windows ACL を使用する方法を説明します。

手順
  1. フォルダが存在しない場合は作成します。以下に例を示します。

    # mkdir -p /srv/samba/example/
  2. SELinux を enforcing モードで実行する場合は、ディレクトリーに samba_share_t コンテキストを設定します。

    # semanage fcontext -a -t samba_share_t "/srv/samba/example(/.*)?"
    # restorecon -Rv /srv/samba/example/
  3. /etc/samba/smb.conf ファイルに example 共有を追加します。たとえば、write-enabled 共有を追加するには、以下のコマンドを実行します。

    [example]
    	path = /srv/samba/example/
    	read only = no
    注記

    ファイルシステム ACL が設定されていなくても read only = no、Samba はディレクトリーを読み取り専用モードで共有します。

  4. すべての共有のセクションで Windows ACL サポートを有効にしていない場合は、この [global] セクションに以下のパラメーターを追加し [example] て、この機能を有効にしてください。

    vfs objects = acl_xattr
    map acl inherit = yes
    store dos attributes = yes
  5. /etc/samba/smb.conf ファイルを確認します。

    # testparm
  6. 必要なポートを開き、 firewall-cmd ユーティリティーを使用してファイアウォール設定を再ロードします。

    # firewall-cmd --permanent --add-service=samba
    # firewall-cmd --reload
  7. smb サービスを再起動します。

    # systemctl restart smb
関連資料

2.6.2.4. Windows ACL を使用する共有の共有パーミッションおよびファイルシステム ACL の管理 (機械翻訳)

Windows ACL を使用する Samba 共有上の共有パーミッションおよびファイルシステム ACL を管理するには、以下のような Windows アプリケーションを使用し Computer Managementます。詳細は、Windows のドキュメントを参照してください。または、 smbcacls ユーティリティーを使用して ACL を管理します。

注記

Windows からファイルシステムの権限を変更するには、 SeDiskOperatorPrivilege 特権が付与されているアカウントを使用する必要があります。

関連資料

2.6.3. smbcacls を使用した SMB 共有での ACL の管理 (機械翻訳)

この smbcacls ユーティリティーは、SMB 共有に保存されているファイルおよびディレクトリーの ACL を一覧表示、設定、および削除できます。を使用 smbcacls して、ファイルシステム ACL を管理できます。

  • 高度な Windows ACL または POSIX ACL を使用するローカルまたはリモートの Samba サーバー
  • Red Hat Enterprise Linux で、Windows でホストされている共有上の ACL をリモート管理

2.6.3.1. アクセス制御エントリー (機械翻訳)

ファイルシステムオブジェクトの各 ACL エントリーには、以下の形式の Access Control Entries (ACE) が含まれます。

security_principal:access_right/inheritance_information/permissions

例2.4 アクセス制御エントリー

AD\Domain Users グループに Windows に適用される Modify 権限が This folder, subfolders, and files ある場合は、ACL に以下の ACE が含まれます。

AD\Domain Users:ALLOWED/OI|CI/CHANGE

ACE には以下の部分が含まれます。

セキュリティープリンシパル
セキュリティープリンシパルとは、ACL 内のパーミッションが適用されるユーザー、グループ、または SID です。
access rights
オブジェクトへのアクセスを許可または拒否するかどうかを定義します。値には or を指定でき ALLOWED DENIEDます。
継承情報

以下の値が存在します。

表2.1 継承の設定

説明マップ先

OI

オブジェクト継承

このフォルダーとファイル

CI

コンテナーの継承

このフォルダーとサブフォルダー

IO

継承のみ

ACE が現在のファイルまたはディレクトリーに適用されない

ID

inherited

ACE が親ディレクトリーから継承されました

さらに、値は以下のように組み合わせることができます。

表2.2 継承設定の組み合わせ

値の組み合わせWindows Applies to 設定にマップ

OI|CI

フォルダ、サブフォルダ、およびファイル

OI|CI|IO

サブフォルダとファイルのみ

CI|IO

サブフォルダのみ

OI|IO

ファイルのみ

権限

この値は、Windows パーミッションまたは smbcacls エイリアスを表す進値のいずれかになります。

  • Windows のアクセス許可を表す進数値。

    次の表は、Windows の高度なアクセス許可とそれに対応する値を進法で表示します。

    表2.3 Windows パーミッションおよび対応する smbcacls 値の進法

    Windows パーミッション進値

    フルコントロール

    0x001F01FF

    スキャンフォルダー / ファイルの実行

    0x00100020

    リストフォルダ / 読み取りデータ

    0x00100001

    読み取り属性

    0x00100080

    拡張属性の読み取り

    0x00100008

    ファイルの作成/データの書き込み

    0x00100002

    フォルダーの作成/データの追加

    0x00100004

    書き込み属性

    0x00100100

    拡張属性の書き込み

    0x00100010

    サブフォルダとファイルを削除する

    0x00100040

    削除

    0x00110000

    読み取りパーミッション

    0x00120000

    権限の変更

    0x00140000

    所有権の取得

    0x00180000

    複数のパーミッションは、ビットワイズ OR 演算を使用して単一の進値として組み合わせることができます。詳細は「ACE マスクの計算 (機械翻訳)」を参照してください。

  • smbcacls エイリアス次の表は、利用可能なエイリアスを示しています。

    表2.4 既存の smbcacls エイリアスとそれに対応する Windows パーミッション

    smbcacls エイリアスWindows パーミッションにマッピング

    R

    Read

    READ

    読み取りと実行

    W

    特殊:

    • ファイルの作成/データの書き込み
    • フォルダーの作成/データの追加
    • 書き込み属性
    • 拡張属性の書き込み
    • 読み取りパーミッション

    D

    削除

    P

    権限の変更

    O

    所有権の取得

    X

    スキャン/実行

    CHANGE

    modify

    FULL

    フルコントロール

    注記

    パーミッションを設定する際に、文字のエイリアスを組み合わせることができます。たとえば、Windows のアクセス許可 Read とアクセス許可 RD を適用するように設定でき Deleteます。ただし、文字以外のエイリアスを複数組み合わせることも、エイリアスと進値を組み合わせることもできません。

2.6.3.2. smbcacls を使用した ACL の表示 (機械翻訳)

SMB 共有で ACL を表示するには、 smbcacls ユーティリティーを使用します。--add などの操作パラメーターを付けずに smbcacls を実行すると、ユーティリティーは、ファイルシステムオブジェクトの ACL を表示します。

手順

たとえば、 //server/example 共有のルートディレクトリーの ACL を一覧表示するには、以下を実行します。

# smbcacls //server/example / -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
REVISION:1
CONTROL:SR|PD|DI|DP
OWNER:AD\Administrators
GROUP:AD\Domain Users
ACL:AD\Administrator:ALLOWED/OI|CI/FULL
ACL:AD\Domain Users:ALLOWED/OI|CI/CHANGE
ACL:AD\Domain Guests:ALLOWED/OI|CI/0x00100021

コマンドの出力は以下のようになります。

  • REVISION:セキュリティー記述子の内部 Windows NT ACL リビジョン
  • CONTROL:セキュリティー記述子の制御
  • OWNER:セキュリティー記述子の所有者の名前または SID
  • GROUP:セキュリティー記述子のグループの名前または SID
  • ACL エントリー。詳細は「アクセス制御エントリー (機械翻訳)」を参照してください。

2.6.3.3. ACE マスクの計算 (機械翻訳)

ほとんどの場合、ACE を追加または更新する場合は、に記載されている smbcacls エイリアスを使用し 表2.4「既存の smbcacls エイリアスとそれに対応する Windows パーミッション」ます。

ただし、一覧にある Windows の高度なアクセス許可を設定する場合は 表2.3「Windows パーミッションおよび対応する smbcacls 値の進法」、ビット単位の OR 操作を使用して正しい値を計算する必要があります。次のシェルコマンドを使用して値を計算できます。

# echo $(printf '0x%X' $(( hex_value_1 | hex_value_2 | ... )))

例2.5 ACE マスクの計算

以下のパーミッションを設定します。

  • スキャンフォルダー / 実行ファイル (0x00100020)
  • list folder / read data (0x00100001)
  • 読み取り属性 (0x00100080)

以前のパーミッションの進値を計算するには、以下のコマンドを実行します。

# echo $(printf '0x%X' $(( 0x00100020 | 0x00100001 | 0x00100080 )))
0x1000A1

ACE を設定または更新する場合は、戻り値を使用します。

2.6.3.4. smbcacls を使用した ACL の追加、更新、および削除 (機械翻訳)

smbcacls ユーティリティーに渡すパラメーターに応じて、ファイルまたはディレクトリーから ACL を追加、更新、および削除できます。

ACL の追加

AD\Domain Users グループ CHANGE に対するパーミッションを付与する //server/example 共有のルートに ACL を追加するには、以下 This folder, subfolders, and files を行います。

# smbcacls //server/example / -U "DOMAIN\administrator \
       --add ACL:"AD\Domain Users":ALLOWED/OI|CI/CHANGE
ACL の更新

ACL の更新は、新しい ACL の追加と似ています。ACL を更新するには、既存のセキュリティープリンシパルで --modify パラメーターを使用して ACL を上書きします。ACL リスト smbcacls にセキュリティープリンシパルがある場合は、ユーティリティーがパーミッションを更新します。そうでない場合は、以下のコマンドは失敗し、エラーが発生します。

ACL for SID principal_name not found

たとえば、 AD\Domain Users グループの権限を更新して、 READ for と設定するには、 This folder, subfolders, and files以下を実行します。

# smbcacls //server/example / -U "DOMAIN\administrator \
       --modify ACL:"AD\Domain Users":ALLOWED/OI|CI/READ
ACL の削除

ACL を削除するには、正確な ACL を持つ --delete パラメーターを smbcacls ユーティリティーに渡します。以下に例を示します。

# smbcacls //server/example / -U "DOMAIN\administrator \
       --delete ACL:"AD\Domain Users":ALLOWED/OI|CI/READ

2.6.4. Samba サーバーでユーザーがディレクトリーを共有できるようにする (機械翻訳)

Samba サーバーでは、root 権限なしでユーザーがディレクトリーを共有できるように設定できます。

2.6.4.1. ユーザー共有機能の有効化 (機械翻訳)

ユーザーがディレクトリーを共有する前に、管理者は Samba でユーザー共有を有効にする必要があります。

たとえば、ローカル example グループのメンバーのみを有効にして、ユーザー共有を作成するには、以下を実行します。

手順
  1. ローカル example グループがない場合は、これを作成します。

    # groupadd example
  2. Samba 用のディレクトリーを準備して、ユーザー共有定義を保存し、そのパーミッションを適切に設定します。以下に例を示します。

    1. ディレクトリーを作成します。

      # mkdir -p /var/lib/samba/usershares/
    2. example グループへの書き込みパーミッションを設定します。

      # chgrp example /var/lib/samba/usershares/
      # chmod 1770 /var/lib/samba/usershares/
    3. ユーザーがこのディレクトリーの他のユーザーが保存したファイルの名前を変更したり、削除したりできないようにするように、固定ビットを設定します。
  3. /etc/samba/smb.conf ファイルを編集し、以下を [global] セクションに追加します。

    1. ユーザー共有定義を保存するよう設定したディレクトリーへのパスを設定します。以下に例を示します。

      usershare path = /var/lib/samba/usershares/
    2. Samba がこのサーバーに作成を許可するユーザー共有の数を設定します。以下に例を示します。

      usershare max shares = 100

      0 usershare max shares パラメーターにデフォルトを使用すると、ユーザー共有が無効になります。

    3. 必要に応じて、絶対ディレクトリーパスの一覧を設定します。たとえば、Samba が共有するディレクトリー /data およびディレクトリーのサブ /srv ディレクトリーのみの共有を許可するように設定するには、以下を設定します。

      usershare prefix allow list = /data /srv

    設定可能なその他のユーザー共有関連のパラメーターの一覧は、 smb.conf(5) man ページの USERSHARES セクションを参照してください。

  4. /etc/samba/smb.conf ファイルを確認します。

    # testparm
  5. Samba 設定を再ロードします。

    # smbcontrol all reload-config

これで、ユーザーはユーザー共有を作成できるようになりました。詳細は「ユーザー共有の追加 (機械翻訳)」を参照してください。

関連資料

2.6.4.2. ユーザー共有の追加 (機械翻訳)

Samba を適宜設定したら 「ユーザー共有機能の有効化 (機械翻訳)」、ユーザーは net usershare add コマンドを実行し、 root パーミッションなしで Samba サーバー上でディレクトリーを共有できます。

net usershare add コマンドのシノプシス:

net usershare add share_name path [[ comment ] | [ ACLs ]] [ guest_ok=y|n ]

重要

ユーザー共有の作成時に ACL を設定する場合は、ACL の前に comment パラメーターを指定する必要があります。空のコメントを設定するには、空の文字列を二重引用符で囲みます。

管理者が /etc/samba/smb.conf ファイルの [global] セクション usershare allow guests = yes で設定した場合にのみ、ユーザーはユーザー共有でゲストアクセスを有効にできることに注意してください。

例2.6 ユーザー共有の追加

ユーザーが Samba サーバー上の /srv/samba/ ディレクトリーを共有したい場合。共有には名前を付け example、コメントは設定せず、ゲストユーザーがアクセスできる必要があります。また、共有パーミッションは、 AD\Domain Users グループにフルアクセスを設定し、他のユーザーには読み取りパーミッションを設定する必要があります。この共有を追加するには、ユーザーとして実行します。

$ net usershare add example /srv/samba/ "" \
       "AD\Domain Users":F,Everyone:R guest_ok=yes

2.6.4.3. ユーザー共有の設定の更新 (機械翻訳)

ユーザー共有の設定を更新するには、同じ共有名と新しい設定で net usershare add コマンドを使用して共有を上書きします。「ユーザー共有の追加 (機械翻訳)」 を参照してください。

2.6.4.4. 既存のユーザー共有に関する情報の表示 (機械翻訳)

Samba サーバーで net usershare info コマンドを入力すると、ユーザー共有とその設定を表示できます。

前提条件
  • ユーザー共有は、Samba サーバーで設定されます。
手順
  1. すべてのユーザーが作成したユーザー共有をすべて表示するには、以下を実行します。

    $ net usershare info -l
    [share_1]
    path=/srv/samba/
    comment=
    usershare_acl=Everyone:R,host_name\user:F,
    guest_ok=y
    ...

    コマンドを実行するユーザーが作成した共有のみを一覧表示するには、-l パラメーターを省略します。

  2. 特定の共有に関する情報のみを表示する場合は、コマンドに共有名またはワイルドカードを渡します。たとえば、名前がで始まる共有に関する情報を表示するには、 share_以下を実行します。

    $ net usershare info -l share_*

2.6.4.5. ユーザー共有の一覧表示 (機械翻訳)

Samba サーバーに設定をせずに、利用可能なユーザー共有のみを一覧表示するには、 net usershare list コマンドを使用します。

前提条件
  • ユーザー共有は、Samba サーバーで設定されます。
手順
  1. いずれかのユーザーが作成した共有を一覧表示するには、以下のコマンドを実行します。

    $ net usershare list -l
    share_1
    share_2
    ...

    コマンドを実行するユーザーが作成した共有のみを一覧表示するには、-l パラメーターを省略します。

  2. 特定の共有のみを一覧表示するには、コマンドに共有名またはワイルドカードを渡します。たとえば、名前がで始まる共有のみを一覧表示するには、 share_以下を実行します。

    $ net usershare list -l share_*

2.6.4.6. ユーザー共有の削除 (機械翻訳)

ユーザー共有を削除するには、共有を作成したユーザーまたはユーザーとして net usershare delete コマンドを使用し root ます。

前提条件
  • ユーザー共有は、Samba サーバーで設定されます。
手順
$ net usershare delete share_name

2.6.5. 共有へのゲストアクセスの有効化 (機械翻訳)

特定の状況では、ユーザーが認証なしで接続できるディレクトリーを共有します。これを設定するには、共有でゲストアクセスを有効にします。

警告

認証を必要としない共有は、セキュリティーリスクとなる可能性があります。

共有でゲストアクセスが有効になっている場合、Samba はゲスト接続を guest account パラメーターに設定されたオペレーティングシステムアカウントにマッピングします。以下のいずれかの条件が満たされる場合、ゲストユーザーはこの共有のファイルにアクセスできます。

  • アカウントがファイルシステム ACL に一覧表示されている
  • other ユーザーに対する POSIX パーミッションにより許可

例2.7 ゲスト共有の権限

ゲストアカウントをマッピングするように Samba を設定した場合(デフォルト) nobodyは、以下の例の ACL になります。

  • ゲストユーザーによる読み取りの許可 file1.txt
  • ゲストユーザーによる読み取りと変更の許可 file2.txt
  • ゲストユーザーによる読み取りまたは変更の防止 file3.txt
-rw-r--r--. 1 root       root      1024 1. Sep 10:00 file1.txt
-rw-r-----. 1 nobody     root      1024 1. Sep 10:00 file2.txt
-rw-r-----. 1 root       root      1024 1. Sep 10:00 file3.txt
手順
  1. /etc/samba/smb.conf ファイルを編集します。

    1. これが、このサーバーに設定した最初のゲスト共有の場合は、以下を行います。

      1. 次の [global] セクション map to guest = Bad User で設定します。

        [global]
                ...
                map to guest = Bad User

        この設定により、Samba はユーザー名が存在しない限り、間違ったパスワードを使用するログイン試行を拒否します。指定したユーザー名が存在しず、共有でゲストアクセスが有効になっている場合、Samba は接続をゲストログインとして扱います。

      2. デフォルトでは、Samba はゲストアカウントを Red Hat Enterprise Linux 上の nobody アカウントにマッピングします。別のアカウントを設定することもできます。以下に例を示します。

        [global]
                ...
                guest account = user_name

        このパラメーターで設定したアカウントは、Samba サーバーにローカルに存在する必要があります。セキュリティー上の理由から、Red Hat は、有効なシェルが割り当てられていないアカウントの使用を推奨します。

    2. [example] 共有セクションに guest ok = yes 設定を追加します。

      [example]
              ...
              guest ok = yes
  2. /etc/samba/smb.conf ファイルを確認します。

    # testparm
  3. Samba 設定を再ロードします。

    # smbcontrol all reload-config
関連資料

2.7. プリントサーバーとしての Samba の設定 (機械翻訳)

Samba をプリントサーバーとして設定すると、ネットワーク上のクライアントは Samba を使用して印刷することができます。さらに、Windows クライアントが設定されていれば、Samba サーバーからドライバーをダウンロードすることもできます。

このセクションの一部は、Samba Wiki に公開されている Setting up Samba as a Print Server を参考にしています。ライセンス: CC BY 4.0作成者と投稿者:Wiki ページの history タブを参照してください。

2.7.1. 前提条件 (機械翻訳)

Samba は、以下のいずれかのモードで設定されました。

2.7.2. Samba spoolssd サービス (機械翻訳)

Samba spoolssd は、サービスに統合される smbd サービスです。Samba 設定 spoolssd で有効にすると、多数のジョブまたはプリンターを持つプリントサーバーのパフォーマンスが大幅に向上します。

指定しないと spoolssd、Samba は smbd プロセスをフォークし、各プリントジョブに対して printcap キャッシュを初期化します。多数のプリンターの場合、キャッシュが初期化されている間、 smbd サービスは数秒の間応答しなくなる可能性があります。この spoolssd サービスでは、印刷ジョブを処理している以前の smbd プロセスを、遅延なく開始できます。メイン spoolssd smbd プロセスは少量のメモリーを使用し、子プロセスをフォークして終了します。

次の手順では、 spoolssd サービスを有効にする方法を説明します。

手順
  1. /etc/samba/smb.conf ファイルの [global] セクションを編集します。

    1. 以下のパラメーターを追加します。

      rpc_server:spoolss = external
      rpc_daemon:spoolssd = fork
    2. 必要に応じて、以下のパラメーターを設定できます。

      パラメーターデフォルト説明

      spoolssd:prefork_min_children

      5

      子プロセスの最小数

      spoolssd:prefork_max_children

      25

      子プロセスの最大数

      spoolssd:prefork_spawn_rate

      5

      Samba は、新規接続が確立された場合に、このパラメーターに設定した新しい子プロセス数を spoolssd:prefork_max_children、設定した値まで引き上げます。

      spoolssd:prefork_max_allowed_clients

      100

      子プロセスが管理するクライアントの数

      spoolssd:prefork_child_min_life

      60

      子プロセスの最小有効期間(秒単位)。最小時間は 60 秒です。

  2. /etc/samba/smb.conf ファイルを確認します。

    # testparm
  3. smb サービスを再起動します。

    # systemctl restart smb

    サービスを再起動すると、Samba は smbd 子プロセスを自動的に開始します。

    # ps axf
    ...
    30903 smbd
    30912  \_ smbd
    30913      \_ smbd
    30914      \_ smbd
    30915      \_ smbd
    ...
関連資料

2.7.3. Samba でのプリントサーバーサポートの有効化 (機械翻訳)

このセクションでは、Samba でプリントサーバーのサポートを有効にする方法を説明します。

手順
  1. Samba サーバーで、CUPS を設定し、CUPS バックエンドにプリンターを追加します。CUPS でプリンターを設定する方法は、プリントサーバー上で CUPS Web コンソール(https://print_server_host_name:631/help)で提供されるドキュメントを参照してください。

    注記

    CUPS が Samba プリントサーバーにローカルにインストールされている場合にのみ、Samba は CUPS に印刷ジョブを転送できます。

  2. /etc/samba/smb.conf ファイルを編集します。

    1. spoolssd サービスを有効にする場合は、以下のパラメーターを [global] セクションに追加します。

      rpc_server:spoolss = external
      rpc_daemon:spoolssd = fork
    2. 印刷バックエンドを設定するには、以下の [printers] セクションを追加します。

      [printers]
              comment = All Printers
              path = /var/tmp/
              printable = yes
              create mask = 0600
      重要

      [printers] 共有名はハードコーディングされているため、変更できません。

  3. /etc/samba/smb.conf ファイルを確認します。

    # testparm
  4. 必要なポートを開き、 firewall-cmd ユーティリティーを使用してファイアウォール設定を再ロードします。

    # firewall-cmd --permanent --add-service=samba
    # firewall-cmd --reload
  5. smb サービスを再起動します。

    # systemctl restart smb

サービスを再起動すると、Samba は CUPS バックエンドで設定したすべてのプリンターを自動的に共有します。特定のプリンターのみを手動で共有する場合は、を参照してください 「特定のプリンターを手動で共有する (機械翻訳)」

関連資料

2.7.4. 特定のプリンターを手動で共有する (機械翻訳)

Samba をプリントサーバーとして設定している場合、デフォルトでは、Samba は CUPS バックエンドで設定したすべてのプリンターを共有します。次の手順では、特定のプリンターのみを共有する方法を説明します。

前提条件
  • Samba がプリントサーバーとして設定
手順
  1. /etc/samba/smb.conf ファイルを編集します。

    1. [global] セクションで、以下を設定して自動プリンター共有を無効にします。

      load printers = no
    2. 共有するプリンターごとにセクションを追加します。たとえば、CUPS バックエンド example で名前が指定されたプリンターを Samba Example-Printer で共有するには、以下のセクションを追加します。

      [Example-Printer]
              path = /var/tmp/
              printable = yes
              printer name = example

      各プリンターには、個別の spool ディレクトリーは必要ありません。[printers] セクションの設定と同じ spool ディレクトリーを、プリンターの path パラメーターに設定できます。

  2. /etc/samba/smb.conf ファイルを確認します。

    # testparm
  3. Samba 設定を再ロードします。

    # smbcontrol all reload-config
関連資料

2.7.5. Windows クライアント用の自動プリンタードライバーダウンロードの設定 (機械翻訳)

Windows クライアント用に Samba プリントサーバーを実行している場合は、ドライバーをアップロードして、プリンターを事前設定できます。ユーザーがプリンターに接続すると、Windows は自動的にドライバーをダウンロードしてクライアントにローカルにインストールします。ユーザーには、インストールに対するローカルの管理者権限は必要ありません。さらに、 Windows では、トレイの数などの事前設定されたドライバー設定が適用されます。

このセクションの一部は、Samba Wiki に公開されている Setting up Automatic Printer Driver Downloads for Windows Clients を参考にしています。ライセンス: CC BY 4.0作成者と投稿者:Wiki ページの history タブを参照してください。

前提条件
  • Samba がプリントサーバーとして設定

2.7.5.1. プリンタードライバーの基本情報 (機械翻訳)

このセクションでは、プリンタードライバーに関する一般的な情報を提供します。

サポートされるドライバーモデルのバージョン

Samba は、Windows 2000 以降、および Windows Server 2000 以降でサポートされているプリンタードライバーモデルバージョン 3 のみをサポートします。Samba は、Windows 8 および Windows Server 2012 で導入されたドライバーモデルバージョン 4 をサポートしません。ただし、これら以降の Windows バージョンはバージョン 3 のドライバーもサポートします。

パッケージ対応のドライバー

Samba は、パッケージ対応のドライバーをサポートしません。

アップロードするプリンタードライバーの準備

Samba プリントサーバーにドライバーをアップロードする前に、以下を行います。

  • ドライバーが圧縮形式で提供されている場合は、展開します。
  • ドライバーによっては、Windows ホストにドライバーをローカルにインストールするセットアップアプリケーションを起動する必要があります。特定の状況では、セットアップの実行中にインストーラーが個別ファイルをオペレーティングシステムの一時フォルダーに抽出します。ドライバーファイルを使用してアップロードするには、以下を行います。

    1. インストーラーを起動します。
    2. 一時フォルダーから新しい場所にファイルをコピーします。
    3. インストールをキャンセルします。

プリントサーバーへのアップロードをサポートするドライバーについては、プリンタの製造元にお問い合わせください。

32 ビットおよび 64 ビットのドライバーをクライアントに提供する

32 ビットと 64 ビットの両方の Windows クライアント用にプリンターのドライバーを提供するには、両方のアーキテクチャーで正確に同じ名前のドライバーをアップロードする必要があります。たとえば、32 ビットのドライバー名 Example PostScript および 64 ビットのドライバー名をアップロードする場合 Example PostScript (v1.0)、名前が一致しません。したがって、いずれかのドライバーをプリンターに割り当てることはできず、そのドライバーは両方のアーキテクチャーでは利用できません。

2.7.5.2. ドライバーのアップロードおよび事前設定の有効化 (機械翻訳)

プリンタードライバーをアップロードして事前設定するには、ユーザーまたはグループに SePrintOperatorPrivilege 特権が付与されている必要があります。printadmin グループにユーザーを追加する必要があります。Red Hat Enterprise Linux は、 samba パッケージのインストール時にこのグループを自動的に作成します。printadmin グループには、1000 より小さい利用可能な最も小さい動的システム GID が割り当てられます。

手順
  1. たとえば、SePrintOperatorPrivilege 特権を printadmin グループに付与するには、以下のコマンドを実行します。

    # net rpc rights grant "printadmin" SePrintOperatorPrivilege \
           -U "DOMAIN\administrator"
    Enter DOMAIN\administrator's password:
    Successfully granted rights.
    注記

    ドメイン環境で、ドメイングループ SePrintOperatorPrivilege に付与します。これにより、ユーザーのグループメンバーシップを更新することで特権を一元管理できます。

  2. SePrintOperatorPrivilege 許可されたユーザーとグループをすべて表示するには、以下のコマンドを実行します。

    # net rpc rights list privileges SePrintOperatorPrivilege \
           -U "DOMAIN\administrator"
    Enter administrator's password:
    SePrintOperatorPrivilege:
      BUILTIN\Administrators
      DOMAIN\printadmin

2.7.5.3. print$ 共有の設定 (機械翻訳)

Windows オペレーティングシステムは、プリントサーバーから名前が付いた共有 print$ からプリンタードライバーをダウンロードします。この共有名は Windows でハードコーディングされているため、変更できません。

以下の手順では、 /var/lib/samba/drivers/ ディレクトリーを共有する方法と print$、ローカル printadmin グループのメンバーがプリンタードライバーをアップロードできるようにする方法を説明します。

手順
  1. /etc/samba/smb.conf ファイルに [print$] セクションを追加します。

    [print$]
            path = /var/lib/samba/drivers/
            read only = no
            write list = @printadmin
            force group = @printadmin
            create mask = 0664
            directory mask = 2775

    以下の設定を使用します。

    printadmin グループのメンバーだけがプリンタードライバーを共有にアップロードできます。

    • 新規に作成されたファイルとディレクトリーのグループが設定され printadminます。
    • 新しいファイルの権限が設定され 664ます。
    • 新しいディレクトリーの権限が設定され 2775ます。
  2. 64 ビットドライバーのみをプリンターにアップロードするには、 /etc/samba/smb.conf ファイルの [global] セクションにこの設定を含めます。

    spoolss: architecture = Windows x64

    この設定がないと、32 ビットバージョン以上をアップロードしたドライバーのみが表示されます。

  3. /etc/samba/smb.conf ファイルを確認します。

    # testparm
  4. Samba 設定をリロードします。

    # smbcontrol all reload-config
  5. printadmin グループが存在しない場合は作成します。

    # groupadd printadmin
  6. printadmin グループに SePrintOperatorPrivilege 権限を付与します。

    # net rpc rights grant "printadmin" SePrintOperatorPrivilege \
           -U "DOMAIN\administrator"
    Enter DOMAIN\administrator's password:
    Successfully granted rights.
  7. SELinux を enforcing モードで実行する場合は、ディレクトリーに samba_share_t コンテキストを設定します。

    # semanage fcontext -a -t samba_share_t "/var/lib/samba/drivers(/.*)?"
    # restorecon -Rv /var/lib/samba/drivers/
  8. ディレクトリーにパーミッションを設定し /var/lib/samba/drivers/ ます。

    • POSIX ACL を使用する場合は、以下を設定します。

      # chgrp -R "printadmin" /var/lib/samba/drivers/
      # chmod -R 2775 /var/lib/samba/drivers/
    • Windows ACL を使用する場合は、以下を設定します。

      プリンシパルaccess適用先

      CREATOR OWNER

      フルコントロール

      サブフォルダとファイルのみ

      Authenticated Users

      読み取りと実行、フォルダの内容の一覧表示、読み取り

      フォルダ、サブフォルダ、およびファイル

      printadmin

      フルコントロール

      フォルダ、サブフォルダ、およびファイル

      Windows での ACL の設定に関する詳細は、Windows のドキュメントを参照してください。

関連資料

2.7.5.4. クライアントが Samba プリントサーバーを信頼できるようにする GPO の作成 (機械翻訳)

セキュリティー上の理由から、最近の Windows オペレーティングシステムでは、クライアントがパッケージに対応していないプリンタードライバーを信頼できないサーバーからダウンロードできないようにします。プリントサーバーが AD のメンバーである場合は、ドメイン内に、Samba サーバーを信頼するためのグループポリシーオブジェクト (GPO) を作成できます。

前提条件
  • Samba プリントサーバーは、AD ドメインのメンバーです。
  • GPO の作成に使用する Windows コンピューターに、Windows リモートサーバー管理ツール (RSAT) がインストールされている必要があります。詳細は、Windows のドキュメントを参照してください。
手順
  1. AD ドメイン Administrator ユーザーなど、グループポリシーの編集を許可するアカウントを使用して、Windows コンピューターにログインします。
  2. を開き Group Policy Management Consoleます。
  3. AD ドメインを右クリックし、選択し Create a GPO in this domain, and Link it hereます。

    samba create new GPO
  4. GPO の名前(例:)を入力 Legacy Printer Driver Policy します OK。新しい GPO がドメインエントリーに表示されます。
  5. 新しく作成した GPO を右クリックして、 Edit 開き Group Policy Management Editorます。
  6. に移動します。 コンピューターの設定ポリシー管理者のテンプレートprinters.

    samba select printer GPO group
  7. ウィンドウの右側にあるダブルクリックし Point and Print Restriction て、ポリシーを編集します。

    1. ポリシーを有効にし、以下のオプションを設定します。

      1. Samba プリントサーバーの完全修飾ドメイン名 (FQDN) を選択して、このオプションの横にあるフィールドに Users can only point and print to these servers 入力します。
      2. 下の両方のチェックボックスで Security Prompts、このチェックボックスをオンにし Do not show warning or elevation promptます。

        samba GPO point and print
    2. OK をクリックします。
  8. ダブルクリックし Package Point and Print - Approved servers てポリシーを編集します。

    1. ポリシーを有効にし、 Show ボタンをクリックします。
    2. Samba プリントサーバーの FQDN を入力します。

      samba GPO approved servers
    3. をクリックし Show Contents 、ポリシーのプロパティウィンドウとプロパティーウィンドウの両方を閉じます OK
  9. を閉じ Group Policy Management Editorます。
  10. を閉じ Group Policy Management Consoleます。

Windows ドメインメンバーがグループポリシーを適用したら、ユーザーがプリンターに接続すると、プリンタードライバーが Samba サーバーから自動的にダウンロードされます。

関連資料
  • グループポリシーの使い方の詳細については、Windows のドキュメントを参照してください。

2.7.5.5. ドライバーのアップロードとプリンターの事前設定 (機械翻訳)

Windows クライアントで Print Management アプリケーションを使用して、ドライバーをアップロードし、Samba プリントサーバーでホストされているプリンターを事前設定します。詳細については、Windows のドキュメントを参照してください。

2.8. Samba サーバーのパフォーマンスのチューニング (機械翻訳)

本章では、特定の状況で Samba のパフォーマンスを改善できる設定、およびパフォーマンス低下を及ぼす設定を説明します。

このセクションの一部は、Samba Wiki に公開されている Performance Tuning を参考にしています。ライセンス: CC BY 4.0作成者と投稿者:Wiki ページの history タブを参照してください。

前提条件

  • Samba がファイルまたはプリントサーバーとして設定

2.8.1. SMB プロトコルバージョンの設定 (機械翻訳)

新しい SMB バージョンは、それぞれ機能を追加し、プロトコルのパフォーマンスを改善します。最新の Windows および Windows Server オペレーティングシステムは、常に最新のプロトコルバージョンをサポートします。Samba が最新のプロトコルバージョンも使用している場合、Samba に接続する Windows クライアントはパフォーマンスの向上に役立ちます。Samba では、server max protocol のデフォルト値は、サポートされる最新の安定した SMB プロトコルバージョンに設定されます。

注記

常に最新の安定した SMB プロトコルバージョンを有効にするには、server max protocol パラメーターを設定しないでください。このパラメーターを手動で設定する場合は、SMB プロトコルの新しいバージョンごとに設定を変更し、最新のプロトコルバージョンを有効にする必要があります。

次の手順では、server max protocol パラメーターでデフォルト値を使用する方法を説明します。

手順
  1. /etc/samba/smb.conf ファイルの [global]セクションから、server max protocolパラメーターを削除します。
  2. Samba 設定をリロードします。

    # smbcontrol all reload-config

2.8.2. 多数のファイルを含むディレクトリーを使用した共有のチューニング (機械翻訳)

Linux は、大文字と小文字を区別したファイル名をサポートします。このため、Samba はファイルの検索またはアクセス時に、大文字と小文字のファイル名のディレクトリーをスキャンする必要があります。共有を設定して、新しいファイルを小文字または大文字のみで作成できるため、パフォーマンスが向上します。

前提条件
  • Samba がファイルサーバーとして設定
手順
  1. 共有上のすべてのファイルの名前を小文字に変更します。

    注記

    この手順の設定を使用すると、小文字以外の名前は表示されなくなります。

  2. 共有のセクションに以下のパラメーターを設定します。

    case sensitive = true
    default case = lower
    preserve case = no
    short preserve case = no

    パラメータの詳細は、manページの smb.conf(5) の説明を参照してください。

  3. /etc/samba/smb.conf ファイルを確認します。

    # testparm
  4. Samba 設定を再ロードします。

    # smbcontrol all reload-config

これらの設定を適用すると、この共有上に新たに作成されたすべてのファイルの名前が小文字になります。これらの設定により、Samba はディレクトリーの大文字と小文字をスキャンする必要がなくなり、パフォーマンスが向上します。

関連資料

Samba docs

2.8.3. パフォーマンス低下を及ぼす可能性のある設定 (機械翻訳)

Red Hat Enterprise Linux のカーネルは、デフォルトでネットワークパフォーマンスを高めるためにチューニングされています。たとえば、カーネルはバッファサイズに自動チューニングメカニズムを使用します。/etc/samba/smb.confファイルに socket options パラメーターを設定すると、このカーネル設定を上書きします。その結果、ほとんどの場合、このパラメーターを設定すると Samba ネットワークのパフォーマンスが低下します。

カーネルが最適化した設定を使用するには、/etc/samba/smb.conf[global] セクションから、socket options パラメーターを削除します。

2.9. よく使用される Samba コマンドラインユーティリティー (機械翻訳)

本章では、Samba サーバーでの作業時によく使用されるコマンドを説明します。

2.9.1. net ユーティリティーの使用 (機械翻訳)

この net ユーティリティーを使用すると、Samba サーバーで複数の管理タスクを実行できます。本セクションでは、 net ユーティリティーで最も頻繁に使用されるサブコマンドを説明します。

前提条件
  • samba-common-tools パッケージがインストールされている。

2.9.1.1. net ads join コマンドおよび net rpc join コマンドの使用 (機械翻訳)

net ユーティリティーの join サブコマンドを使用して、Samba を AD または NT4 ドメインに参加させることができます。ドメインに参加するには、 /etc/samba/smb.conf ファイルを手動で作成し、オプションで PAM などの追加設定を更新する必要があります。

重要

Red Hat は、ドメインへの参加に realm ユーティリティーを使用することを推奨しています。この realm ユーティリティーは、関連するすべての設定ファイルを自動的に更新します。詳細は「ドメインへの Samba の参加 (機械翻訳)」を参照してください。

手順
  1. 次の設定で /etc/samba/smb.conf ファイルを手動で作成します。

    • AD ドメインメンバーの場合:

      [global]
      workgroup = domain_name
      security = ads
      passdb backend = tdbsam
      realm = AD_REALM
    • NT4 ドメインメンバーの場合:

      [global]
      workgroup = domain_name
      security = user
      passdb backend = tdbsam
  2. * デフォルトドメインおよび参加するドメインの ID マッピング設定を、 /etc/samba/smb.conf ファイルの [ [global] セクションに追加します。詳細は「Samba ID マッピング (機械翻訳)」を参照してください。
  3. /etc/samba/smb.conf ファイルを確認します。

    # testparm
  4. ドメイン管理者としてドメインに参加します。

    • AD ドメインに参加するには、以下を行います。

      # net ads join -U "DOMAIN\administrator"
    • NT4 ドメインに参加するには、以下のコマンドを実行します。

      # net rpc join -U "DOMAIN\administrator"
  5. /etc/nsswitch.conf ファイルの、passwd および group データベースエントリーに、winbind ソースを追加します。

    passwd:     files winbind
    group:      files winbind
  6. winbind サービスを有効にして起動します。

    # systemctl enable winbind
    # systemctl start winbind
  7. 必要に応じて、 authselect ユーティリティーを使用して PAM を設定します。

    詳細は authselect(8) man ページを参照してください。

  8. 必要に応じて、AD 環境には、Kerberos クライアントを設定します。

    詳細は、Kerberos クライアントのドキュメントを参照してください。

関連資料

2.9.1.2. net rpc rights コマンドの使用 (機械翻訳)

Windows では、アカウントおよびグループに特権を割り当て、共有やプリンタードライバーのアップロードなどの特別な操作を実行できます。Samba サーバーでは、 net rpc rights コマンドを使用して特権を管理できます。

設定できる特権の一覧表示

利用可能な権限とその所有者を一覧表示するには、 net rpc rights list コマンドを使用します。以下に例を示します。

net rpc rights list -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
     SeMachineAccountPrivilege  Add machines to domain
      SeTakeOwnershipPrivilege  Take ownership of files or other objects
             SeBackupPrivilege  Back up files and directories
            SeRestorePrivilege  Restore files and directories
     SeRemoteShutdownPrivilege  Force shutdown from a remote system
      SePrintOperatorPrivilege  Manage printers
           SeAddUsersPrivilege  Add users and groups to the domain
       SeDiskOperatorPrivilege  Manage disk shares
           SeSecurityPrivilege  System security
権限の付与

アカウントまたはグループに特権を与えるには、 net rpc rights grant コマンドを使用します。

たとえば、 DOMAIN\printadmin グループに SePrintOperatorPrivilege 権限を付与します。

# net rpc rights grant "DOMAIN\printadmin" SePrintOperatorPrivilege \
       -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
Successfully granted rights.
権限の取消し

アカウントまたはグループから特権を取り消すには、 net rpc rights revoke コマンドを使用します。

たとえば、 DOMAIN\printadmin グループから SePrintOperatorPrivilege 権限をキャンセルするには、以下を実行します。

# net rpc rights remoke "DOMAIN\printadmin" SePrintOperatorPrivilege \
       -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
Successfully revoked rights.

2.9.1.3. net rpc share コマンドの使用 (機械翻訳)

net rpc share コマンドは、ローカルまたはリモートの Samba サーバー、または Windows サーバーの共有の一覧表示、追加、および削除を行う機能を提供します。

共有の一覧表示

SMB サーバー上の共有を一覧表示するには、 net rpc share list コマンドを使用します。必要に応じて、この -S server_name パラメーターをコマンドに渡して、リモートサーバーの共有を一覧表示します。以下に例を示します。

# net rpc share list -U "DOMAIN\administrator" -S server_name
Enter DOMAIN\administrator's password:
IPC$
share_1
share_2
...
注記

/etc/samba/smb.conf ファイルのセクションに browseable = no 設定した Samba サーバーでホストされている共有は出力に表示されません。

共有の追加

この net rpc share add コマンドにより、SMB サーバーに共有を追加できます。

たとえば、 C:\example\ ディレクトリーを共有するリモートの Windows サーバー example 上にある共有を追加するには、以下を実行します。

# net rpc share add example="C:\example" -U "DOMAIN\administrator" -S server_name
注記

Windows ディレクトリ名を指定する際には、パスの末尾にバックスラッシュを付ける必要があります。

コマンドを使用して Samba サーバーに共有を追加するには、以下のコマンドを実行します。

  • -U パラメーターで指定するユーザーには、宛先サーバーで付与されている SeDiskOperatorPrivilege 権限が必要です。
  • 共有セクションを /etc/samba/smb.conf ファイルに追加し、Samba を再ロードするスクリプトを記述する必要があります。スクリプトは、の [global] セクションにある add share command パラメーターで設定する必要があり /etc/samba/smb.confます。詳細は、 smb.conf(5) man ページの add share command 説明を参照してください。
共有の削除

この net rpc share delete コマンドにより、SMB サーバーから共有を削除できます。

たとえば、example という名前の共有をリモートの Windows サーバーから削除するには、以下を実行します。

# net rpc share delete example -U "DOMAIN\administrator" -S server_name

Samba サーバーから共有を削除するためにコマンドを使用するには、以下を実行します。

  • -U パラメーターで指定するユーザーには SeDiskOperatorPrivilege 特権が付与されている必要があります。
  • /etc/samba/smb.conf ファイルから共有のセクションを削除し、Samba を再ロードするスクリプトを記述する必要があります。スクリプトは、の [global] セクションにある delete share command パラメーターで設定する必要があり /etc/samba/smb.confます。詳細は、 smb.conf(5) man ページの delete share command 説明を参照してください。

2.9.1.4. net user コマンドの使用 (機械翻訳)

この net user コマンドにより、AD DC または NT4 PDC で以下の動作を行うことができます。

  • すべてのユーザーアカウントの一覧表示
  • ユーザーの追加
  • ユーザーの削除
注記

AD ドメインや NT4 ドメインなど ads の接続方法 rpc を指定する必要があるのは、ドメインユーザーアカウントを一覧表示する場合のみです。他のユーザー関連のサブコマンドは、接続メソッドを自動検出できます。

-U user_name パラメーターをコマンドに渡して、要求された動作を実行できるユーザーを指定します。

ドメインユーザーアカウントの一覧表示

AD ドメイン内のユーザーをすべて表示するには、以下のコマンドを実行します。

# net ads user -U "DOMAIN\administrator"

NT4 ドメインのユーザーをすべて表示するには、以下のコマンドを実行します。

# net rpc user -U "DOMAIN\administrator"
ドメインへのユーザーアカウントの追加

Samba ドメインメンバーでは、 net user add コマンドを使用してユーザーアカウントをドメインに追加できます。

たとえば、 user アカウントをドメインに追加します。

  1. アカウントを追加します。

    # net user add user password -U "DOMAIN\administrator"
    User user added
  2. 必要に応じて、Remote Procedure Call (RPC) シェルを使用して、AD DC または NT4 PDC のアカウントを有効にします。以下に例を示します。

    # net rpc shell -U DOMAIN\administrator -S DC_or_PDC_name
    Talking to domain DOMAIN (S-1-5-21-1424831554-512457234-5642315751)
    
    net rpc> user edit disabled user: no
    Set user's disabled flag from [yes] to [no]
    
    net rpc> exit
ドメインからのユーザーアカウントの削除

Samba ドメインメンバーでは、 net user delete コマンドを使用してドメインからユーザーアカウントを削除できます。

たとえば、ドメインから user アカウントを削除するには、以下を実行します。

# net user delete user -U "DOMAIN\administrator"
User user deleted

2.9.1.5. net usershare コマンドの使用 (機械翻訳)

Samba サーバーでは、root 権限なしでユーザーがディレクトリーを共有できるように設定できます。

2.9.1.5.1. ユーザー共有機能の有効化 (機械翻訳)

ユーザーがディレクトリーを共有する前に、管理者は Samba でユーザー共有を有効にする必要があります。

たとえば、ローカル example グループのメンバーのみを有効にして、ユーザー共有を作成するには、以下を実行します。

手順
  1. ローカル example グループがない場合は、これを作成します。

    # groupadd example
  2. Samba 用のディレクトリーを準備して、ユーザー共有定義を保存し、そのパーミッションを適切に設定します。以下に例を示します。

    1. ディレクトリーを作成します。

      # mkdir -p /var/lib/samba/usershares/
    2. example グループへの書き込みパーミッションを設定します。

      # chgrp example /var/lib/samba/usershares/
      # chmod 1770 /var/lib/samba/usershares/
    3. ユーザーがこのディレクトリーの他のユーザーが保存したファイルの名前を変更したり、削除したりできないようにするように、固定ビットを設定します。
  3. /etc/samba/smb.conf ファイルを編集し、以下を [global] セクションに追加します。

    1. ユーザー共有定義を保存するよう設定したディレクトリーへのパスを設定します。以下に例を示します。

      usershare path = /var/lib/samba/usershares/
    2. Samba がこのサーバーに作成を許可するユーザー共有の数を設定します。以下に例を示します。

      usershare max shares = 100

      0 usershare max shares パラメーターにデフォルトを使用すると、ユーザー共有が無効になります。

    3. 必要に応じて、絶対ディレクトリーパスの一覧を設定します。たとえば、Samba が共有するディレクトリー /data およびディレクトリーのサブ /srv ディレクトリーのみの共有を許可するように設定するには、以下を設定します。

      usershare prefix allow list = /data /srv

    設定可能なその他のユーザー共有関連のパラメーターの一覧は、 smb.conf(5) man ページの USERSHARES セクションを参照してください。

  4. /etc/samba/smb.conf ファイルを確認します。

    # testparm
  5. Samba 設定を再ロードします。

    # smbcontrol all reload-config

これで、ユーザーはユーザー共有を作成できるようになりました。詳細は「ユーザー共有の追加 (機械翻訳)」を参照してください。

関連資料
2.9.1.5.2. ユーザー共有の追加 (機械翻訳)

Samba を適宜設定したら 「ユーザー共有機能の有効化 (機械翻訳)」、ユーザーは net usershare add コマンドを実行し、 root パーミッションなしで Samba サーバー上でディレクトリーを共有できます。

net usershare add コマンドのシノプシス:

net usershare add share_name path [[ comment ] | [ ACLs ]] [ guest_ok=y|n ]

重要

ユーザー共有の作成時に ACL を設定する場合は、ACL の前に comment パラメーターを指定する必要があります。空のコメントを設定するには、空の文字列を二重引用符で囲みます。

管理者が /etc/samba/smb.conf ファイルの [global] セクション usershare allow guests = yes で設定した場合にのみ、ユーザーはユーザー共有でゲストアクセスを有効にできることに注意してください。

例2.8 ユーザー共有の追加

ユーザーが Samba サーバー上の /srv/samba/ ディレクトリーを共有したい場合。共有には名前を付け example、コメントは設定せず、ゲストユーザーがアクセスできる必要があります。また、共有パーミッションは、 AD\Domain Users グループにフルアクセスを設定し、他のユーザーには読み取りパーミッションを設定する必要があります。この共有を追加するには、ユーザーとして実行します。

$ net usershare add example /srv/samba/ "" \
       "AD\Domain Users":F,Everyone:R guest_ok=yes
2.9.1.5.3. ユーザー共有の設定の更新 (機械翻訳)

ユーザー共有の設定を更新するには、同じ共有名と新しい設定で net usershare add コマンドを使用して共有を上書きします。「ユーザー共有の追加 (機械翻訳)」 を参照してください。

2.9.1.5.4. 既存のユーザー共有に関する情報の表示 (機械翻訳)

Samba サーバーで net usershare info コマンドを入力すると、ユーザー共有とその設定を表示できます。

前提条件
  • ユーザー共有は、Samba サーバーで設定されます。
手順
  1. すべてのユーザーが作成したユーザー共有をすべて表示するには、以下を実行します。

    $ net usershare info -l
    [share_1]
    path=/srv/samba/
    comment=
    usershare_acl=Everyone:R,host_name\user:F,
    guest_ok=y
    ...

    コマンドを実行するユーザーが作成した共有のみを一覧表示するには、-l パラメーターを省略します。

  2. 特定の共有に関する情報のみを表示する場合は、コマンドに共有名またはワイルドカードを渡します。たとえば、名前がで始まる共有に関する情報を表示するには、 share_以下を実行します。

    $ net usershare info -l share_*
2.9.1.5.5. ユーザー共有の一覧表示 (機械翻訳)

Samba サーバーに設定をせずに、利用可能なユーザー共有のみを一覧表示するには、 net usershare list コマンドを使用します。

前提条件
  • ユーザー共有は、Samba サーバーで設定されます。
手順
  1. いずれかのユーザーが作成した共有を一覧表示するには、以下のコマンドを実行します。

    $ net usershare list -l
    share_1
    share_2
    ...

    コマンドを実行するユーザーが作成した共有のみを一覧表示するには、-l パラメーターを省略します。

  2. 特定の共有のみを一覧表示するには、コマンドに共有名またはワイルドカードを渡します。たとえば、名前がで始まる共有のみを一覧表示するには、 share_以下を実行します。

    $ net usershare list -l share_*
2.9.1.5.6. ユーザー共有の削除 (機械翻訳)

ユーザー共有を削除するには、共有を作成したユーザーまたはユーザーとして net usershare delete コマンドを使用し root ます。

前提条件
  • ユーザー共有は、Samba サーバーで設定されます。
手順
$ net usershare delete share_name

2.9.2. rpcclient ユーティリティーの使用 (機械翻訳)

この rpcclient ユーティリティを使用すると、ローカルまたはリモートの SMB サーバーで、クライアント側の Microsoft Remote Procedure Call(MS-RPC)機能を手動で実行できます。ただし、ほとんどの機能は Samba が提供する個別のユーティリティーに統合されます。MS-PRC 機能のテストに rpcclient のみ使用します。

前提条件
  • samba-client パッケージがインストールされている。

たとえば、この rpcclient ユーティリティーを使用して以下を行うことができます。

  • プリンター Spool Subsystem (SPOOLSS) を管理します。

    例2.9 プリンターへのドライバーの割り当て

    # rpcclient server_name -U "DOMAIN\administrator" \
           -c 'setdriver "printer_name" "driver_name"'
    Enter DOMAIN\administrators password:
    Successfully set printer_name to driver driver_name.
  • SMB サーバーに関する情報を取得します。

    例2.10 すべてのファイル共有と共有プリンターの一覧表示

    # rpcclient server_name -U "DOMAIN\administrator" -c 'netshareenum'
    Enter DOMAIN\administrators password:
    netname: Example_Share
    	remark:
    	path:   C:\srv\samba\example_share\
    	password:
    netname: Example_Printer
    	remark:
    	path:   C:\var\spool\samba\
    	password:
  • Security Account Manager Remote (SAMR) プロトコルを使用して操作を実行します。

    例2.11 SMB サーバー上のユーザーの一覧表示

    # rpcclient server_name -U "DOMAIN\administrator" -c 'enumdomusers'
    Enter DOMAIN\administrators password:
    user:[user1] rid:[0x3e8]
    user:[user2] rid:[0x3e9]

    スタンドアロンサーバーまたはドメインメンバーに対してコマンドを実行すると、ローカルデータベースのユーザーの一覧が表示されます。AD DC または NT4 PDC に対してコマンドを実行すると、ドメインユーザーの一覧が表示されます。

関連資料

サポートされるサブコマンドの一覧は、 rpcclient(1) man ページの COMMANDS セクションを参照してください。

2.9.3. samba-regedit アプリケーションの使用 (機械翻訳)

プリンター設定など、特定の設定は、Samba サーバーのレジストリに保存されます。ncurses ベースの samba-regedit アプリケーションを使用して、Samba サーバーのレジストリーを編集できます。

samba regedit

前提条件
  • samba-client パッケージがインストールされている。
手順

アプリケーションを起動するには、以下を入力します。

# samba-regedit

以下のキーを使用します。

  • カーソルを上下にスクロールします。レジストリツリーと値間を移動します。
  • Enter:キーを開くか、値を編集します。
  • tab:Value ペイン Key とペインを切り替えます。
  • Ctrl+C:アプリケーションを閉じます。

2.9.4. smbcacls ユーティリティーの使用 (機械翻訳)

この smbcacls ユーティリティーは、SMB 共有に保存されているファイルおよびディレクトリーの ACL を一覧表示、設定、および削除できます。を使用 smbcacls して、ファイルシステム ACL を管理できます。

  • 高度な Windows ACL または POSIX ACL を使用するローカルまたはリモートの Samba サーバー
  • Red Hat Enterprise Linux で、Windows でホストされている共有上の ACL をリモート管理

2.9.4.1. アクセス制御エントリー (機械翻訳)

ファイルシステムオブジェクトの各 ACL エントリーには、以下の形式の Access Control Entries (ACE) が含まれます。

security_principal:access_right/inheritance_information/permissions

例2.12 アクセス制御エントリー

AD\Domain Users グループに Windows に適用される Modify 権限が This folder, subfolders, and files ある場合は、ACL に以下の ACE が含まれます。

AD\Domain Users:ALLOWED/OI|CI/CHANGE

ACE には以下の部分が含まれます。

セキュリティープリンシパル
セキュリティープリンシパルとは、ACL 内のパーミッションが適用されるユーザー、グループ、または SID です。
access rights
オブジェクトへのアクセスを許可または拒否するかどうかを定義します。値には or を指定でき ALLOWED DENIEDます。
継承情報

以下の値が存在します。

表2.5 継承の設定

説明マップ先

OI

オブジェクト継承

このフォルダーとファイル

CI

コンテナーの継承

このフォルダーとサブフォルダー

IO

継承のみ

ACE が現在のファイルまたはディレクトリーに適用されない

ID

inherited

ACE が親ディレクトリーから継承されました

さらに、値は以下のように組み合わせることができます。

表2.6 継承設定の組み合わせ

値の組み合わせWindows Applies to 設定にマップ

OI|CI

フォルダ、サブフォルダ、およびファイル

OI|CI|IO

サブフォルダとファイルのみ

CI|IO

サブフォルダのみ

OI|IO

ファイルのみ

権限

この値は、Windows パーミッションまたは smbcacls エイリアスを表す進値のいずれかになります。

  • Windows のアクセス許可を表す進数値。

    次の表は、Windows の高度なアクセス許可とそれに対応する値を進法で表示します。

    表2.7 Windows パーミッションおよび対応する smbcacls 値の進法

    Windows パーミッション進値

    フルコントロール

    0x001F01FF

    スキャンフォルダー / ファイルの実行

    0x00100020

    リストフォルダ / 読み取りデータ

    0x00100001

    読み取り属性

    0x00100080

    拡張属性の読み取り

    0x00100008

    ファイルの作成/データの書き込み

    0x00100002

    フォルダーの作成/データの追加

    0x00100004

    書き込み属性

    0x00100100

    拡張属性の書き込み

    0x00100010

    サブフォルダとファイルを削除する

    0x00100040

    削除

    0x00110000

    読み取りパーミッション

    0x00120000

    権限の変更

    0x00140000

    所有権の取得

    0x00180000

    複数のパーミッションは、ビットワイズ OR 演算を使用して単一の進値として組み合わせることができます。詳細は「ACE マスクの計算 (機械翻訳)」を参照してください。

  • smbcacls エイリアス次の表は、利用可能なエイリアスを示しています。

    表2.8 既存の smbcacls エイリアスとそれに対応する Windows パーミッション

    smbcacls エイリアスWindows パーミッションにマッピング

    R

    Read

    READ

    読み取りと実行

    W

    特殊:

    • ファイルの作成/データの書き込み
    • フォルダーの作成/データの追加
    • 書き込み属性
    • 拡張属性の書き込み
    • 読み取りパーミッション

    D

    削除

    P

    権限の変更

    O

    所有権の取得

    X

    スキャン/実行

    CHANGE

    modify

    FULL

    フルコントロール

    注記

    パーミッションを設定する際に、文字のエイリアスを組み合わせることができます。たとえば、Windows のアクセス許可 Read とアクセス許可 RD を適用するように設定でき Deleteます。ただし、文字以外のエイリアスを複数組み合わせることも、エイリアスと進値を組み合わせることもできません。

2.9.4.2. smbcacls を使用した ACL の表示 (機械翻訳)

SMB 共有で ACL を表示するには、 smbcacls ユーティリティーを使用します。--add などの操作パラメーターを付けずに smbcacls を実行すると、ユーティリティーは、ファイルシステムオブジェクトの ACL を表示します。

手順

たとえば、 //server/example 共有のルートディレクトリーの ACL を一覧表示するには、以下を実行します。

# smbcacls //server/example / -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
REVISION:1
CONTROL:SR|PD|DI|DP
OWNER:AD\Administrators
GROUP:AD\Domain Users
ACL:AD\Administrator:ALLOWED/OI|CI/FULL
ACL:AD\Domain Users:ALLOWED/OI|CI/CHANGE
ACL:AD\Domain Guests:ALLOWED/OI|CI/0x00100021

コマンドの出力は以下のようになります。

  • REVISION:セキュリティー記述子の内部 Windows NT ACL リビジョン
  • CONTROL:セキュリティー記述子の制御
  • OWNER:セキュリティー記述子の所有者の名前または SID
  • GROUP:セキュリティー記述子のグループの名前または SID
  • ACL エントリー。詳細は「アクセス制御エントリー (機械翻訳)」を参照してください。

2.9.4.3. ACE マスクの計算 (機械翻訳)

ほとんどの場合、ACE を追加または更新する場合は、に記載されている smbcacls エイリアスを使用し 表2.4「既存の smbcacls エイリアスとそれに対応する Windows パーミッション」ます。

ただし、一覧にある Windows の高度なアクセス許可を設定する場合は 表2.3「Windows パーミッションおよび対応する smbcacls 値の進法」、ビット単位の OR 操作を使用して正しい値を計算する必要があります。次のシェルコマンドを使用して値を計算できます。

# echo $(printf '0x%X' $(( hex_value_1 | hex_value_2 | ... )))

例2.13 ACE マスクの計算

以下のパーミッションを設定します。

  • スキャンフォルダー / 実行ファイル (0x00100020)
  • list folder / read data (0x00100001)
  • 読み取り属性 (0x00100080)

以前のパーミッションの進値を計算するには、以下のコマンドを実行します。

# echo $(printf '0x%X' $(( 0x00100020 | 0x00100001 | 0x00100080 )))
0x1000A1

ACE を設定または更新する場合は、戻り値を使用します。

2.9.4.4. smbcacls を使用した ACL の追加、更新、および削除 (機械翻訳)

smbcacls ユーティリティーに渡すパラメーターに応じて、ファイルまたはディレクトリーから ACL を追加、更新、および削除できます。

ACL の追加

AD\Domain Users グループ CHANGE に対するパーミッションを付与する //server/example 共有のルートに ACL を追加するには、以下 This folder, subfolders, and files を行います。

# smbcacls //server/example / -U "DOMAIN\administrator \
       --add ACL:"AD\Domain Users":ALLOWED/OI|CI/CHANGE
ACL の更新

ACL の更新は、新しい ACL の追加と似ています。ACL を更新するには、既存のセキュリティープリンシパルで --modify パラメーターを使用して ACL を上書きします。ACL リスト smbcacls にセキュリティープリンシパルがある場合は、ユーティリティーがパーミッションを更新します。そうでない場合は、以下のコマンドは失敗し、エラーが発生します。

ACL for SID principal_name not found

たとえば、 AD\Domain Users グループの権限を更新して、 READ for と設定するには、 This folder, subfolders, and files以下を実行します。

# smbcacls //server/example / -U "DOMAIN\administrator \
       --modify ACL:"AD\Domain Users":ALLOWED/OI|CI/READ
ACL の削除

ACL を削除するには、正確な ACL を持つ --delete パラメーターを smbcacls ユーティリティーに渡します。以下に例を示します。

# smbcacls //server/example / -U "DOMAIN\administrator \
       --delete ACL:"AD\Domain Users":ALLOWED/OI|CI/READ

2.9.5. smbclient ユーティリティーの使用 (機械翻訳)

smbclient ユーティリティーを使用すると、コマンドラインの FTP クライアントと同様に、SMB サーバー上のファイル共有にアクセスできます。たとえば、共有との間でファイルのアップロードやダウンロードができます。

2.9.5.1. 前提条件 (機械翻訳)

  • samba-client パッケージがインストールされている。

2.9.5.2. smbclient インタラクティブモードの動作 (機械翻訳)

たとえば、 DOMAIN\user アカウントを server 使用してホストされる example 共有に認証するには、以下を実行します。

# smbclient -U "DOMAIN\user" //server/example
Enter domain\user's password:
Try "help" to get a list of possible commands.
smb: \>

共有に正常に smbclient 接続すると、ユーティリティーがインタラクティブモードに入り、以下のプロンプトが表示されます。

smb: \>

インタラクティブシェルで利用可能なコマンドをすべて表示するには、以下のコマンドを実行します。

smb: \> help

特定のコマンドのヘルプを表示するには、以下のコマンドを実行します。

smb: \> help command_name
関連資料
  • インタラクティブシェルで利用可能なコマンドの詳細および説明は、 smbclient(1) man ページを参照してください。

2.9.5.3. インタラクティブモードでの smbclient の使用 (機械翻訳)

-c パラメーターを指定 smbclient せずに使用すると、ユーティリティーはインタラクティブモードに入ります。以下の手順は、SMB 共有に接続し、サブディレクトリーからファイルをダウンロードする方法を示しています。

手順
  1. 共有に接続します。

    # smbclient -U "DOMAIN\user_name" //server_name/share_name
  2. ディレクトリーに移動し /example/ ます。

    smb: \> cd /example/
  3. ディレクトリのファイルを一覧表示します。

    smb: \example\> ls
      .                    D         0  Thu Nov 1 10:00:00 2018
      ..                   D         0  Thu Nov 1 10:00:00 2018
      example.txt          N   1048576  Thu Nov 1 10:00:00 2018
    
             9950208 blocks of size 1024. 8247144 blocks available
  4. example.txt ファイルをダウンロードします。

    smb: \example\> get example.txt
    getting file \directory\subdirectory\example.txt of size 1048576 as example.txt (511975,0 KiloBytes/sec) (average 170666,7 KiloBytes/sec)
  5. 共有から切断します。

    smb: \example\> exit

2.9.5.4. スクリプトモードでの smbclient の使用 (機械翻訳)

この -c パラメーターを渡すと smbclient、リモート SMB 共有でコマンドを自動的に実行できます。これにより、スクリプト smbclient 内で使用できます。

以下の手順は、SMB 共有に接続し、サブディレクトリーからファイルをダウンロードする方法を示しています。

手順
# smbclient -U DOMAIN\user_name //server_name/share_name \
       -c "cd /example/ ; get example.txt ; exit"

2.9.6. smbcontrol ユーティリティーの使用 (機械翻訳)

この smbcontrol ユーティリティを使用すると smbd nmbd winbindd、これらのサービスにコマンドメッセージを送信できます。これらの制御メッセージは、たとえば、設定を再ロードするようサービスに指示します。

本セクションの手順では、 reload-config メッセージタイプを all 宛先に送信して smbd nmbdwinbindd サービスの設定をリロードする方法を説明します。

前提条件
  • samba-common-tools パッケージがインストールされている。
手順
# smbcontrol all reload-config
関連資料

詳細および利用可能なコマンドメッセージタイプの一覧は、 smbcontrol(1) man ページを参照してください。

2.9.7. smbpasswd ユーティリティーの使用 (機械翻訳)

この smbpasswd ユーティリティーは、ローカルの Samba データベースのユーザーアカウントとパスワードを管理します。

前提条件
  • samba-common-tools パッケージがインストールされている。
手順
  1. ユーザーとしてコマンドを実行する場合は、コマンドを実行するユーザーの Samba パスワードを smbpasswd 変更します。以下に例を示します。

    [user@server ~]$ smbpasswd
    New SMB password: password
    Retype new SMB password: password
  2. root ユーザー smbpasswd として実行する場合は、以下のようなユーティリティーを使用できます。

    • 新規ユーザーを作成します。

      [root@server ~]# smbpasswd -a user_name
      New SMB password: password
      Retype new SMB password: password
      Added user user_name.
      注記

      Samba データベースにユーザーを追加する前に、ローカルオペレーティングシステムでアカウントを作成する必要があります。システム管理の設定および管理ガイドの Adding a new user セクションを参照してください。

    • Samba ユーザーを有効にします。

      [root@server ~]# smbpasswd -e user_name
      Enabled user user_name.
    • Samba ユーザーを無効にします。

      [root@server ~]# smbpasswd -x user_name
      Disabled user ser_name
    • ユーザーを削除します。

      [root@server ~]# smbpasswd -x user_name
      Deleted user user_name.
関連資料

詳細は smbpasswd(8) man ページを参照してください。

2.9.8. smbstatus ユーティリティーの使用 (機械翻訳)

この smbstatus ユーティリティーは以下を報告します。

  • Samba サーバーへの各 smbd デーモンの PID ごとの接続。このレポートには、ユーザー名、プライマリーグループ、SMB プロトコルのバージョン、暗号化、および署名情報が含まれます。
  • Samba 共有ごとの接続。このレポートには、 smbd デーモンの PID、接続マシンの IP、接続の確立時のタイムスタンプ、暗号化、および署名情報が含まれます。
  • ロックされたファイルの一覧。レポートエントリーには、オプティカルロック (oplock) タイプなど、詳細が含まれます。
前提条件
  • samba パッケージがインストールされている。
  • smbd サービスは実行しています。
手順
# smbstatus

Samba version 4.7.1
PID  Username              Group                Machine                            Protocol Version  Encryption  Signing
-----------------------------------------------------------------------------------------------------------------------------
963  DOMAIN\administrator  DOMAIN\domain users  client-pc  (ipv4:192.0.2.1:57786)  SMB3_02           -           AES-128-CMAC

Service  pid  Machine    Connected at                  Encryption  Signing:
-------------------------------------------------------------------------------
example  969  192.0.2.1  Thu Nov  1 10:00:00 2018 CEST  -           AES-128-CMAC

Locked files:
Pid  Uid    DenyMode   Access    R/W     Oplock      SharePath           Name      Time
------------------------------------------------------------------------------------------------------------
969  10000  DENY_WRITE 0x120089  RDONLY  LEASE(RWH)  /srv/samba/example  file.txt  Thu Nov  1 10:00:00 2018
関連資料

詳細は smbstatus(1) man ページを参照してください。

2.9.9. smbtar ユーティリティーの使用 (機械翻訳)

この smbtar ユーティリティは、SMB 共有またはそのサブディレクトリーのコンテンツをバックアップし、コンテンツを tar アーカイブに保存します。または、テープデバイスにコンテンツを書き込むこともできます。

本セクションの手順では、 //server/example/ 共有の demo ディレクトリーのコンテンツをバックアップし、 /root/example.tar アーカイブに保存する方法を説明します。

前提条件
  • samba-client パッケージがインストールされている。
手順
# smbtar -s server -x example -u user_name -p password -t /root/example.tar
関連資料

詳細は smbtar(1) man ページを参照してください。

2.9.10. testparm ユーティリティーの使用 (機械翻訳)

testparm ユーティリティーは、 /etc/samba/smb.conf ファイル内の Samba 設定が正しいことを確認します。ユーティリティは、ID マッピングなどの無効なパラメーターや値を検出しますが、間違った設定も検出します。問題 testparm がない場合、Samba サービスは /etc/samba/smb.conf ファイルを正常に読み込みます。設定したサービスが利用可能であること、または期待通りに機能することを確認 testparm できないことに注意してください。

重要

このファイルを変更する testparm たびに、Red Hat は、これを使用して /etc/samba/smb.conf ファイルを検証することが推奨されます。

手順
  1. この testparm ユーティリティーを root ユーザーとして実行します。

    # testparm
    Load smb config files from /etc/samba/smb.conf
    rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
    Unknown parameter encountered: "log levell"
    Processing section "[example_share]"
    Loaded services file OK.
    ERROR: The idmap range for the domain * (tdb) overlaps with the range of DOMAIN (ad)!
    
    Server role: ROLE_DOMAIN_MEMBER
    
    Press enter to see a dump of your service definitions
    
    # Global parameters
    [global]
    	...
    
    [example_share]
    	...

    上記の出力例は、存在しないパラメーターと間違った ID マッピング設定を報告します。

  2. 設定内の間違ったパラメーター、値、またはその他のエラーを testparm 報告する場合は、問題を解決し、ユーティリティーを再度実行します。

2.9.11. wbinfo ユーティリティーの使用 (機械翻訳)

この wbinfo ユーティリティーは、 winbindd サービスで作成および使用された情報を照会して取得します。

前提条件
  • samba-winbind-clients パッケージがインストールされている。
手順

たとえば wbinfo、次のような場合に使用できます。

  • ドメインユーザーの一覧表示:

    # wbinfo -u
    AD\administrator
    AD\guest
    ...
  • ドメイングループの一覧表示:

    # wbinfo -g
    AD\domain computers
    AD\domain admins
    AD\domain users
    ...
  • ユーザーの SID を表示します。

    # wbinfo --name-to-sid="AD\administrator"
    S-1-5-21-1762709870-351891212-3141221786-500 SID_USER (1)
  • ドメインおよび信頼の情報を表示します。

    # wbinfo --trusted-domains --verbose
    Domain Name   DNS Domain            Trust Type  Transitive  In   Out
    BUILTIN                             None        Yes         Yes  Yes
    server                              None        Yes         Yes  Yes
    DOMAIN1       domain1.example.com   None        Yes         Yes  Yes
    DOMAIN2       domain2.example.com   External    No          Yes  Yes
関連資料

詳細は wbinfo(1) man ページを参照してください。

第3章 NFS 共有のエクスポート (機械翻訳)

システム管理者は、NFS サーバーを使用してネットワーク上のシステムのディレクトリーを共有できます。

3.1. NFS の概要 (機械翻訳)

このセクションでは、NFS サービスの基本概念を説明します。

ネットワークファイルシステム (NFS) を利用すると、リモートのホストはネットワーク経由でファイルシステムをマウントし、そのファイルシステムをローカルにマウントしているファイルシステムと同じように操作できるようになります。また、リソースを、ネットワークの中央サーバーに統合できるようになります。

NFS サーバーは、 /etc/exports 設定ファイルを参照して、クライアントがエクスポートしたファイルシステムにアクセスできるかどうかを確認します。アクセスが可能なことが確認されると、そのユーザーは、ファイルおよびディレクトリーへの全操作を行えるようになります。

3.2. サポートされている NFS バージョン (機械翻訳)

このセクションでは、Red Hat Enterprise Linux でサポートされている NFS のバージョンとその機能をリストで紹介します。

現在、Red Hat Enterprise Linux 8 は以下の NFS のメジャーバージョンをサポートしています。

  • NFS バージョン 3 (NFSv3) は安全な非同期書き込みをサポートしており、以前の NFSv2 よりもエラー処理において安定しています。 64 ビットのファイルサイズとオフセットもサポートしているため、クライアントは 2 GB を超えるファイルデータにアクセスできます。
  • NFS バージョン 4 (NFSv4) はファイアウォールおよびインターネットを介して動作し、 rpcbind サービスを必要としないため、アクセス制御リスト (ACL) をサポートし、ステートフルな操作を利用します。

NFS バージョン 2 (NFSv2) は、Red Hat のサポート対象外になりました。

デフォルトの NFS バージョン

Red Hat Enterprise Linux 8 のデフォルトの NFS バージョンは 4.2 です。NFS クライアントは、デフォルトで NFSv4.2 を使用してマウントを試行し、サーバーが NFSv4.2 をサポートしていない場合は NFSv4.1 にフォールバックします。マウントは後で NFSv4.0 にフォールバックし、その後 NFSv3 にフォールバックします。

マイナー NFS バージョンの機能

以下は Red Hat Enterprise Linux 8 における NFSv4.2 の機能です。

サーバー側コピー
NFS クライアントが、 copy_file_range() システムコールを使用してネットワークリソースを無駄にすることなく、データを効率的にコピーできるようにします。
スパースファイル
ファイルに 1 つ以上のホールを持たせることができます。NFSv4.2 の lseek() 操作は対応して seek_hole() おり seek_data()、これによりアプリケーションはスパースファイルの穴の場所をマップできます。
スペースの予約
ストレージサーバーが空き領域を予約することを許可します。NFSv4.2 は、領域を予約する allocate() 操作、領域を予約解除する deallocate() 操作、およびファイル内の領域を事前割り当てまたは割り当て解除する fallocate() 操作をサポートします。
ラベル付き NFS
データアクセス権を強制し、NFS ファイルシステム上の個々のファイルに対して、クライアントとサーバー間の SELinux ラベルを有効にします。
レイアウトの機能強化
一部の Parallel NFS (pNFS) サーバーがより良いパフォーマンス統計を収集できるようにする layoutstats() 操作を提供します。

NFSv4.1 の機能は次のとおりです。

  • ネットワークのパフォーマンスとセキュリティーを強化し、pNFS のクライアント側サポートも含みます。
  • コールバックに個別の TCP 接続を必要としなくなりました。 これにより、NAT やファイアウォールが干渉した場合など、クライアントと通信できない場合でも NFS サーバーは委任を許可できます。
  • 応答が失われて、操作が 2 回送信された場合に特定の操作が不正確な結果を返すことがあるという以前の問題を防ぐために、1 回限りのセマンティクスを提供します (リブート操作を除く)。

3.3. NFSv3 と NFSv4 の TCP と UDP プロトコル (機械翻訳)

NFSv4 は、IP ネットワークで TCP (Transmission Control Protocol) の実行が必要です。

NFSv3 は、Red Hat Enterprise Linux の以前のバージョンで User Datagram Protocol (UDP) を使用することもできます。Red Hat Enterprise Linux 8 では、NFS over UDP はサポートされなくなりました。デフォルトでは、UDP は、NFS サーバーで無効になります。

3.4. NFS が必要とするサービス (機械翻訳)

このセクションでは、NFS サーバーの実行または NFS 共有のマウントに必要なシステムサービスをリストで紹介します。Red Hat Enterprise Linux はこれらのサービスを自動的に開始します。

Red Hat Enterprise Linux では、NFS ファイル共有を提供するのに、カーネルレベルのサポートとサービスのプロセスの組み合わせを使用します。NFS のすべてのバージョンは、クライアントとサーバー間の Remote Procedure Call (RPC) に依存します。NFS ファイルシステムの共有やマウントには、実装されている NFS のバージョンに応じて次のようなサービスが連携して動作することになります。

nfsd
共有 NFS ファイルシステムに対する要求を処理する NFS サーバー。
rpcbind
ローカルの RPC サービスからポート予約を受け取ると、これらのポートは対応するリモートの RPC サービスによりアクセス可能であることが公開されます。{0>rpcbind<0} サービスは、RPC サービスの要求に応答し、要求された RPC サービスへの接続のセットアップを行います。rpcbind サービスは RPC サービスの要求に応答し、要求された RPC サービスへの接続を設定します。{0>rpc-statd<0} サービスは、{0>nfs-server<0} サービスにより自動的に起動されるため、ユーザー設定を必要としません。 このプロセスは NFSv4 では使用されません。
rpc.mountd
このプロセスは、NFS サーバーが NFSv3 クライアントからの MOUNT 要求を処理するために使用されます。要求されている NFS 共有が現在 NFS サーバーによりエクスポートされているか、またその共有へのクライアントのアクセスが許可されているかをチェックします。マウント要求が許可されている場合、 nfs-mountd サービスは Success ステータスで応答し、この NFS 共有の File-Handle を NFS クライアントに戻します。
rpc.nfsd
このプロセスでは、サーバーが公開している明示的な NFS のバージョンとプロトコルを定義できます。NFS クライアントが接続するたびにサーバースレッドを提供するなど、NFS クライアントの動的な要求に対応するため、Linux カーネルと連携して動作します。このプロセスは、 nfs-server サービスに対応します。
lockd
これはクライアントとサーバーの両方で実行されるカーネルスレッドです。Network Lock Manager (NLM) プロトコルを実装し、NFSv3 のクライアントがサーバー上でファイルのロックを行えるようにします。NFS サーバーが実行中で、NFS ファイルシステムがマウントされていれば、このプロセスは常に自動的に起動します。
rpc.statd
このプロセスは、Network Status Monitor (NSM) RPC プロトコルを実装します。rpc-statd サービスはサービスにより自動的に起動するため nfs-server 、ユーザー設定は必要ありません。{0>rpc-statd<0} サービスは、{0>nfs-server<0} サービスにより自動的に起動されるため、ユーザー設定を必要としません。 このプロセスは NFSv4 では使用されません。
rpc.rquotad
このプロセスは、リモートユーザーのユーザークォータ情報を提供します。rpc-rquotad サービスはサービスにより自動的に起動するため nfs-server 、ユーザー設定は必要ありません。
rpc.idmapd

このプロセスは、NFSv4 クライアントとサーバーのアップコールを提供 user@domainします。NFSv4 で機能 idmapd するには、 /etc/idmapd.conf ファイルを設定する必要があります。最低でも、NFSv4 マッピングドメインを定義する Domain パラメーターを指定する必要があります。NFSv4 マッピングドメインが DNS ドメイン名と同じであると、このパラメーターをスキップできます。クライアントとサーバーが ID マッピングの NFSv4 マッピングドメインに合意しないと、適切に動作しません。

nfs-idmapd サービスにより開始さ rpc.idmapdれる NFSv4 サーバーのみが使用されます。NFSv4 クライアントはキーリングベースの nfsidmap ユーティリティーを使用します。問題が発生した場合は nfsidmap、クライアントは使用にフォールバックし rpc.idmapdます。

NFSv4 を使用する RPC サービス

マウントとロックのプロトコルは NFSv4 プロトコルに組み込まれています。サーバーは、よく知られた TCP ポート 2049 もリッスンします。そのため、NFSv4 は、 rpc-statd サービス lockdとやり取りする必要 rpcbindはありません。この nfs-mountd サービスは、エクスポートを設定するために NFS サーバー上で必要ですが、過剰な操作には関与しません。

関連資料

3.5. NFS ホスト名の形式 (機械翻訳)

このセクションでは、NFS 共有をマウントまたはエクスポートするときにホストの指定に使用するさまざまな形式を説明します。

次の形式でホストを指定できます。

単独マシン

次のいずれかになります。

  • 完全修飾ドメイン名 (これはサーバーにより解決されます)
  • ホスト名 (これはサーバーにより解決されます)
  • IP アドレス
ワイルドカードで指定された一連のマシン

文字列一致を指定するには、 * または ? 文字を使用します。

ワイルドカードは IP アドレスと一緒に使用しないでください。完全修飾ドメイン名でワイルドカードを指定する場合は、ワイルドカードにドット(.)は含まれません。たとえば、include は *.example.com 含まれます one.example.com が、含めません one.two.example.com

IP ネットワーク

以下のいずれかの形式が有効です。

  • a.b.c.d/za.b.c.d はネットワークで、 z はネットマスクのビット数です 192.168.0.0/24. たとえば、です。
  • a.b.c.d/netmaska.b.c.d はネットワークで、 netmask はネットマスクです. たとえば、です 192.168.100.8/255.255.255.0
Netgroup
@group-name 形式 group-name は、です。

3.6. NFS サーバーの設定 (機械翻訳)

このセクションでは、NFS サーバーでエクスポートを構成する 2 つの方法の構文とオプションを説明します。

  • /etc/exports 設定ファイルを手動で編集する
  • コマンドラインでの exportfs ユーティリティーの使用

3.6.1. /etc/exports 設定ファイル (機械翻訳)

この /etc/exports ファイルは、リモートホストにどのファイルシステムをエクスポートするかを制御し、オプションを指定します。以下の構文ルールに従います。

  • 空白行は無視する。
  • コメントを追加するには、ハッシュ記号(#)で行を開始します。
  • 長い行は、バックスラッシュ(\)でラップできます。
  • エクスポートするファイルシステムは、それぞれ 1 行で指定する。
  • 許可するホストの一覧は、エクスポートするファイルシステムの後に空白文字を追加し、その後に追加する。
  • 各ホストのオプションは、ホスト識別子の直後に括弧を追加し、その中に指定する。 ホストと最初の括弧の間には空白を入れない。
エクスポートエントリー

エクスポートするファイルシステムのエントリーは、以下のように指定します。

export host(options)

各ホストにそれぞれオプションを付けて、複数のホストを 1 行で指定することもできます。この場合は、以下のように、各ホスト名の後に、そのホストに対するオプションを括弧を付けて追加します。 ホストは空白文字で区切ります。

export host1(options1) host2(options2) host3(options3)

この構造では、次のようになります。

export
エクスポートするディレクトリー
host
エクスポートを共有するホストまたはネットワーク
options
ホストに使用されるオプション

例3.1 簡潔な /etc/exports ファイル

最も単純な形式では、エクスポートされたディレクトリーと、そのディレクトリーへのアクセスを許可されているホスト /etc/exports だけを指定しています。

/exported/directory bob.example.com

ここでは bob.example.com 、NFS サーバー /exported/directory/ からマウントできます。この例ではオプションが指定されていないため、NFS はデフォルトのオプションを使用します。

重要

/etc/exports ファイルの形式は、特に空白文字の使用に関する非常に正確です。ホストとエクスポートされるファイルシステムの間、そしてホスト同士の間には、必ず空白文字を挿入してください。また、それ以外の場所 (コメント行を除く) には、絶対に空白文字を追加しないでください。

たとえば、以下の 2 つの行は意味が異なります。

/home bob.example.com(rw)
/home bob.example.com (rw)

最初の行では、ユーザーは /home ディレクトリーへの bob.example.com 読み取りおよび書き込みアクセスだけが許可されています。次の行では、ユーザーはディレクトリー bob.example.com を読み取り専用(デフォルト)でマウントでき、残りの環境は読み取り/書き込みでマウントできます。

デフォルトのオプション

エクスポートエントリーのデフォルトオプションは次のとおりです。

ro
エクスポートするファイルシステムは読み込み専用です。リモートホストは、このファイルシステムで共有されているデータを変更できません。このファイルシステムで変更 (読み込み、書き込み) を可能にするには、rw オプションを指定します。
sync
NFS サーバーは、以前の要求で発生した変更がディスクに書き込まれるまで、要求に応答しません。代わりに非同期書き込みを有効にするには、オプションを指定し asyncます。
wdelay
NFS サーバーは、別の書き込み要求が差し迫っていると判断すると、ディスクへの書き込みを遅らせます。これにより、複数の書き込みコマンドが同じディスクにアクセスする回数を減らすことができるため、書き込みのオーバーヘッドが低下し、パフォーマンスが向上します。これを無効にするには、デフォルトの sync no_wdelay オプションが指定されている場合に限り利用できるオプションを指定します。
root_squash

これにより、(ローカルとは対照的に)リモートで接続している root ユーザーが root 権限を持つことを防ぎます. 代わりに、NFS サーバーはユーザー ID を割り当て nfsnobodyます。代わりに、そのユーザーには、NFS サーバーにより、ユーザー ID {0>nfsnobody<0} が割り当てられます。root squashing を無効にするには、 no_root_squash オプションを指定します。

すべてのリモートユーザー(root を含む)を squash にするには、 all_squash オプションを使用します。特定のホストからリモートユーザーに NFS サーバーが割り当てるユーザーおよびグループ ID を指定するには、以下のようにそれぞれ anonuid and anongid オプションを使用します。

export host(anonuid=uid,anongid=gid)

ここで uidgid は、それぞれユーザー ID 番号とグループ ID 番号です。anonuid および anongid オプションを使用すると、リモート NFS ユーザーが共有する特別なユーザーおよびグループアカウントを作成できます。

デフォルトでは、アクセス制御リスト (ACL) は、Red Hat Enterprise Linux では、NFS によりサポートされています。この機能を無効にするには、ファイルシステムをエクスポートする際に no_acl オプションを指定します。

デフォルトオプションと上書きオプション

エクスポートするファイルシステムのデフォルトはすべて、明示的に上書きする必要があります。たとえば、この rw オプションを指定しないと、エクスポートされるファイルシステムは読み取り専用として共有されます。以下は、デフォルトのオプションを上書き /etc/exports するサンプル行です。

/another/exported/directory 192.168.0.3(rw,async)

この例では、 /another/exported/directory/ 読み取りおよび書き込みをマウント 192.168.0.3 でき、ディスクへの書き込みはすべて非同期になります。

3.6.2. exportfs ユーティリティー (機械翻訳)

この exportfs ユーティリティーを使用すると、root ユーザーは NFS サービスを再起動せずにディレクトリーを選択してエクスポートまたはアンエクスポートできます。適切なオプションを指定すると、 exportfs ユーティリティーはエクスポートされたファイルシステムを書き込み /var/lib/nfs/xtabます。nfs-mountd サービスは xtab ファイルシステムへのアクセス権限を決定する際にファイルを参照するため、エクスポートされるファイルシステムの一覧への変更は直ちに有効になります。

一般的な exportfs オプション

以下は、利用可能な一般的なオプションの一覧です exportfs

-r
一覧表示され /etc/exports ているすべてのディレクトリーが、新しいエクスポート一覧を構築することでエクスポートされ /etc/lib/nfs/xtabます。このオプションにより、エクスポート一覧が変更で効果的にリフレッシュされ /etc/exportsます。
-a
渡された他のオプションに応じて、すべてのディレクトリーがエクスポートまたはエクスポート解除され exportfsます。他のオプションを指定しないと、で指定したファイルシステムをすべて exportfs エクスポートし /etc/exportsます。
-o file-systems
一覧にない、エクスポートするディレクトリーを指定し /etc/exportsます。エクスポート file-systems する追加のファイルシステムに置き換えます。これらのファイルシステムは、指定した形式と同じ形式にする必要があり /etc/exportsます。このオプションは、多くの場合は、エクスポート用ファイルシステムの一覧に永続的に追加する前に、エクスポートされるファイルシステムをテストするために使用されます。
-i
無視し、コマンドラインから提供されたオプション /etc/exportsのみが、エクスポートしたファイルシステムの定義に使用されます。
-u
すべての共有ディレクトリーをエクスポートしません。このコマンドは、すべての NFS サービスを維持しながら、NFS ファイル共有を exportfs -ua 一時停止します。NFS 共有を再度有効にするには、を使用し exportfs -rます。
-v
詳細操作. exportfs コマンドの実行時に、エクスポートまたはエクスポートされていないファイルシステムが詳細に表示されます。

exportfs ユーティリティーにオプションが渡されていない場合は、現在エクスポートされているファイルシステムの一覧が表示されます。

関連資料

  • ホスト名を指定するためのその他の方法は、「NFS ホスト名の形式 (機械翻訳)」 を参照してください。
  • エクスポートオプションの完全なリストは、 exports(5) man ページを参照してください。
  • exportfs ユーティリティーの詳細は、 exportfs(8) man ページを参照してください。

3.7. NFS および rpcbind (機械翻訳)

このセクションでは、NFSv3 で必要とされる rpcbind サービスの目的を説明します。

rpcbind サービスは、RPC (Remote Procedure Call) サービスをリッスンするポートにマッピングします。RPC プロセスは起動 rpcbind 時に通知し、リッスンしているポートと、処理することが予想される RPC プログラム番号を登録します。その後、クライアントシステムが特定の RPC プログラム番号でサーバー rpcbind 上で通信します。rpcbind サービスはクライアントを適切なポート番号にリダイレクトし、要求されたサービスと通信できるようにします。

RPC ベースのサービスは、着信クライアントの要求とのすべての接続を行うため、これらのサービスを開始 rpcbind する前に利用できる rpcbind 必要があります。

RPC ベースのすべてのサービス rpcbind に影響を与えるアクセス制御ルール。あるいは、NFS RPC デーモンごとにアクセス制御ルールを指定することもできます。

関連資料

  • アクセス制御ルールの正確な構文は、man ページ rpc.mountd(8) および rpc.statd(8) man ページを参照してください。

3.8. NFS のインストール (機械翻訳)

この手順では、NFS 共有のマウントまたはエクスポートに必要なすべてのパッケージをインストールします。

手順

  • nfs-utils パッケージをインストールします。

    # yum install nfs-utils

3.9. NFS サーバーの起動 (機械翻訳)

この手順では、NFS 共有をエクスポートするために必要な NFS サーバーの起動方法を説明します。

前提条件

  • NFSv2 または NFSv3 接続をサポートするサーバーでは、 rpcbind サービスが実行中である必要があります。アクティブであることを確認するに rpcbind は、以下のコマンドを使用します。

    $ systemctl status rpcbind

    サービスが停止している場合は、起動して有効にします。

    $ systemctl enable --now rpcbind

手順

  • NFS サーバーを起動し、ブート時に自動的に起動するようにするには、次のコマンドを使用します。

    # systemctl enable --now nfs-server

関連資料

3.10. NFS と rpcbind のトラブルシューティング (機械翻訳)

この rpcbind サービスは、RPC サービスと、その通信に使用するポート番号との間の調整を行うため、トラブルシューティングを行う rpcbind 際に現在の RPC サービスの状態を確認すると便利です。この rpcinfo ユーティリティーは、各 RPC ベースのサービスにポート番号、RPC プログラム番号、バージョン番号、および IP プロトコルタイプ(TCP または UDP)を表示します。

手順

  1. 適切な RPC ベースの NFS サービスが有効になっていることを確認するには rpcbind、次のコマンドを使用します。

    # rpcinfo -p

    例3.2 rpcinfo -p コマンドの出力

    以下に上記コマンドの出力例を示します。

       program vers proto   port  service
        100000    4   tcp    111  portmapper
        100000    3   tcp    111  portmapper
        100000    2   tcp    111  portmapper
        100000    4   udp    111  portmapper
        100000    3   udp    111  portmapper
        100000    2   udp    111  portmapper
        100005    1   udp  20048  mountd
        100005    1   tcp  20048  mountd
        100005    2   udp  20048  mountd
        100005    2   tcp  20048  mountd
        100005    3   udp  20048  mountd
        100005    3   tcp  20048  mountd
        100024    1   udp  37769  status
        100024    1   tcp  49349  status
        100003    3   tcp   2049  nfs
        100003    4   tcp   2049  nfs
        100227    3   tcp   2049  nfs_acl
        100021    1   udp  56691  nlockmgr
        100021    3   udp  56691  nlockmgr
        100021    4   udp  56691  nlockmgr
        100021    1   tcp  46193  nlockmgr
        100021    3   tcp  46193  nlockmgr
        100021    4   tcp  46193  nlockmgr

    いずれかの NFS サービスが正しく起動しないと、 rpcbind そのサービスのクライアントから正しいポートに RPC 要求をマッピングできなくなります。

  2. 多くの場合、 rpcinfo 出力に NFS がない場合、NFS を再起動すると、サービスは適切に登録され、動作を開始 rpcbind します。

    # systemctl restart nfs-server

関連資料

3.11. ファイアウォールの内側で動作するように NFS サーバーの設定 (機械翻訳)

NFS は、RPC rpcbind サービスにポートを動的に割り当てるサービスを必要とします。これは RPC サービスのポートを動的に割り当て、ファイアウォールルールの設定で問題が発生する可能性があります。 この手順では、ファイアウォールの内側で機能するように NFS サーバーを設定する方法を説明します。

手順

  1. クライアントがファイアウォールの内側で NFS 共有にアクセスできるようにするには、RPC サービスを実行するポートを /etc/nfs.conf ファイルの [mountd] セクションで設定します。

    [mountd]
    
    port=port-number

    -p port-number オプションが rpc.mount コマンドラインに追加され rpc.mount -p port-numberます。

  2. NFSv4.0 コールバックがファイアウォールを通過できるようにするには、サーバーのクライアントポートへの接続を設定し、 /proc/sys/fs/nfs/nfs_callback_tcpport 許可します。

    この手順は、NFSv4.1 以降では必要なく、NFSv4 環境で mountd statd lockd は他のポートも必要でもありません。

  3. RPC サービスで使用するポートを指定するには nlockmgr/etc/modprobe.d/lockd.conf ファイルの nlm_tcpport および nlm_udpport オプションのポート番号を設定します。
  4. NFS サーバーを再起動します。

    #  systemctl restart nfs-server

    NFS が起動しない場合は、チェックしてください /var/log/messages。一般的に、すでに使用されているポート番号を指定した場合、NFS は起動しません。

  5. 変更が反映されたことを確認します。

    # rpcinfo -p

関連資料

3.12. ファイアウォールからの RPC クォータのエクスポート (機械翻訳)

ディスククォータを使用するファイルシステムをエクスポートする場合は、クォータ RPC (Remote Procedure Call) サービスを使用して、NFS クライアントにディスククォータデータを提供できます。

手順

  1. rpc-rquotad サービスを有効にして起動します。

    # systemctl enable --now rpc-rquotad
    注記

    有効にすると、nfs-server rpc-rquotad サービスが起動した後にサービスが自動的に起動します。

  2. ファイアウォールの内側で、クォータ RPC サービスにアクセスできるようにするには、TCP (UDP が可能な場合は UDP) ポート 875 を開く必要があります。デフォルトのポート番号は、 /etc/services ファイル内で定義されています。

    /etc/sysconfig/rpc-rquotad ファイルの RPCRQUOTADOPTS 変数にデフォルトのポート番号を追加 -p port-number すると、そのポート番号を上書きできます。

  3. デフォルトで、リモートホストはクォータのみを読み取ることができます。クライアントがクォータを設定できるようにする場合は、この -S オプションを /etc/sysconfig/rpc-rquotad ファイルの RPCRQUOTADOPTS 変数に追加します。
  4. /etc/sysconfig/rpc-rquotad ファイル rpc-rquotad の変更を有効にするには、再起動します。

    # systemctl restart rpc-rquotad

3.13. RDMA で NFS の有効化 (NFSoRDMA) (機械翻訳)

Red Hat Enterprise Linux 8 では、RDMA に対応するハードウェアが存在すると、RDMA (remote direct memory access) サービスが自動的に有効になります。

手順

  1. rdma および rdma-core パッケージをインストールします。

    # yum install rdma rdma-core
  2. NFSoRDMA サーバー モジュールの自動ロードを有効にするには、 /etc/rdma/rdma.conf 設定ファイルの新しい行に SVCRDMA_LOAD=yes オプションを追加します。

    /etc/nfs.conf ファイルの [nfsd] セクションにある rdma=20049 オプションは、NFSoRDMA サービスがクライアントをリッスンするポート番号を指定します。RFC 5667 標準は、RDMA で NFSv4 サービスを提供する 20049 際に、サーバーがポートをリッスンする必要があることを指定します。

    この /etc/rdma/rdma.conf ファイルには、NFSoRDMA クライアントモジュールのロードを rdma サービスに要求する XPRTRDMA_LOAD=yes オプションがデフォルトで設定される行が含ま ます。

  3. nfs-server サービスを再起動します。

    # systemctl restart nfs-server

関連資料

3.14. NFSv4 専用サーバーの設定 (機械翻訳)

NFS サーバー管理者は、NFSv4 のみをサポートするように NFS サーバーを設定できます。 これにより、システム上で開いているポートの数と実行中のサービスの数が最小限に抑えられます。

3.14.1. NFSv4 専用サーバーの利点と欠点 (機械翻訳)

このセクションでは、NFSv4 のみをサポートするように NFS サーバーを設定する利点と欠点を説明します。

デフォルトでは、NFS サーバーは Red Hat Enterprise Linux 8 の NFSv2、NFSv3、および NFSv4 接続をサポートします。ただし、NFS バージョン 4.0 以降のみをサポートするように NFS を設定することもできます。これにより、NFSv4 はサービスをネットワークでリッスンする必要がないため、システム上で開いているポート数と実行中の rpcbind サービス数を最小限に抑えることができます。

NFS サーバーが NFSv4 専用として設定されていると、NFSv2 または NFSv3 を使用して共有をマウントしようとするクライアントは、次のようなエラーでマウントに失敗します。

Requested NFS version or transport protocol is not supported.

必要に応じて、NFSv4 専用のケースでは不要な、、 RPCBIND MOUNTおよび NSM プロトコル呼び出しのリッスンを無効にすることもできます。

これらの追加オプションを無効にすると、次のような影響があります。

  • NFSv2 または NFSv3 を使用してサーバーから共有をマウントしようとするクライアントが応答しなくなります。
  • NFS サーバー自体が NFSv2 および NFSv3 ファイルシステムをマウントできなくなります。

3.14.2. NFS および rpcbind (機械翻訳)

このセクションでは、NFSv3 で必要とされる rpcbind サービスの目的を説明します。

rpcbind サービスは、RPC (Remote Procedure Call) サービスをリッスンするポートにマッピングします。RPC プロセスは起動 rpcbind 時に通知し、リッスンしているポートと、処理することが予想される RPC プログラム番号を登録します。その後、クライアントシステムが特定の RPC プログラム番号でサーバー rpcbind 上で通信します。rpcbind サービスはクライアントを適切なポート番号にリダイレクトし、要求されたサービスと通信できるようにします。

RPC ベースのサービスは、着信クライアントの要求とのすべての接続を行うため、これらのサービスを開始 rpcbind する前に利用できる rpcbind 必要があります。

RPC ベースのすべてのサービス rpcbind に影響を与えるアクセス制御ルール。あるいは、NFS RPC デーモンごとにアクセス制御ルールを指定することもできます。

関連資料
  • アクセス制御ルールの正確な構文は、man ページ rpc.mountd(8) および rpc.statd(8) man ページを参照してください。

3.14.3. NFSv4 のみをサポートするように NFS サーバーの設定 (機械翻訳)

この手順では、NFS サーバーを NFS バージョン 4.0 以降のみをサポートするように設定する方法を説明します。

手順
  1. /etc/nfs.conf 設定ファイルの [nfsd] セクションに以下の行を追加して、NFSv2 および NFSv3 を無効にします。

    [nfsd]
    
    vers2=no
    vers3=no
  2. 必要に応じて、NFSv4 専用のケースでは不要な、、 RPCBIND MOUNTおよび NSM プロトコル呼び出しのリッスンを無効にします。これは NFSv4 専用の場合は不要です。 関連するサービスを無効にします。

    # systemctl mask --now rpc-statd.service rpcbind.service rpcbind.socket
  3. NFS サーバーを再起動します。

    # systemctl restart nfs-server

変更は、NFS サーバーを起動または再起動するとすぐに反映されます。

3.14.4. NFSv4 専用の設定の確認 (機械翻訳)

この手順では、 netstat ユーティリティーを使用して、NFS サーバーが NFSv4 専用モードで設定されていることを確認する方法を説明します。

手順
  • この netstat ユーティリティーを使用して、TCP および UDP プロトコルでリッスンしているサービスを一覧表示します。

    # netstat --listening --tcp --udp

    例3.3 NFSv4 専用サーバーの出力

    以下は、NFSv4 専用サーバーでの netstat 出力例であり RPCBIND MOUNT、リッスンして NSM います。以下 nfs は、NFS サービスのリッスンのみになります。

    # netstat --listening --tcp --udp
    
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State
    tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:nfs             0.0.0.0:*               LISTEN
    tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
    tcp6       0      0 [::]:nfs                [::]:*                  LISTEN
    udp        0      0 localhost.locald:bootpc 0.0.0.0:*

    例3.4 NFSv4 専用サーバーを設定する前の出力

    これに対して、NFSv4 専用サーバーを設定する前の netstat 出力には、 sunrpc および mountd サービスが含まれます。

    # netstat --listening --tcp --udp
    
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address State
    tcp        0      0 0.0.0.0:ssh             0.0.0.0:*       LISTEN
    tcp        0      0 0.0.0.0:40189           0.0.0.0:*       LISTEN
    tcp        0      0 0.0.0.0:46813           0.0.0.0:*       LISTEN
    tcp        0      0 0.0.0.0:nfs             0.0.0.0:*       LISTEN
    tcp        0      0 0.0.0.0:sunrpc          0.0.0.0:*       LISTEN
    tcp        0      0 0.0.0.0:mountd          0.0.0.0:*       LISTEN
    tcp6       0      0 [::]:ssh                [::]:*          LISTEN
    tcp6       0      0 [::]:51227              [::]:*          LISTEN
    tcp6       0      0 [::]:nfs                [::]:*          LISTEN
    tcp6       0      0 [::]:sunrpc             [::]:*          LISTEN
    tcp6       0      0 [::]:mountd             [::]:*          LISTEN
    tcp6       0      0 [::]:45043              [::]:*          LISTEN
    udp        0      0 localhost:1018          0.0.0.0:*
    udp        0      0 localhost.locald:bootpc 0.0.0.0:*
    udp        0      0 0.0.0.0:mountd          0.0.0.0:*
    udp        0      0 0.0.0.0:46672           0.0.0.0:*
    udp        0      0 0.0.0.0:sunrpc          0.0.0.0:*
    udp        0      0 0.0.0.0:33494           0.0.0.0:*
    udp6       0      0 [::]:33734              [::]:*
    udp6       0      0 [::]:mountd             [::]:*
    udp6       0      0 [::]:sunrpc             [::]:*
    udp6       0      0 [::]:40243              [::]:*

第4章 Red Hat Enterprise Linux 8 上のデータベースサーバー (機械翻訳)

4.1. データベースおよびデータベースサーバーの概要 (機械翻訳)

データベースは、データの集合体です。データベースのデータは保存され、電子的にアクセスできます。

通常、データベース内のデータの編成は、以下をサポートするように設計されています。

  • 現実のさまざまな側面のモデル化
  • 属性に従ってデータのクエリーとフィルタリングを行う

Red Hat Enterprise Linux 8 は、以下のデータベースサーバーを提供します。

  • MariaDB 10.3
  • MySQL 8.0
  • PostgeSQL 10
  • PostgreSQL 9.6

4.2. Red Hat Enterprise Linux 8 での MariaDB の使用 (機械翻訳)

4.2.1. Red Hat Enterprise Linux 8 の MariaDB の使用 (機械翻訳)

MariaDB サーバーは、MySQL テクノロジーに基づいたオープンソースの高速で堅牢なデータベースサーバーです。

MariaDB は、データを構造化情報に変換し、データにアクセスする SQL インターフェイスを提供するリレーショナルデータベースです。複数のストレージエンジンとプラグイン、および地理情報システム (GIS) および JavaScript オブジェクト通知 (JSON) 機能が含まれます。

本セクションでは、 MariaDB サーバーを Red Hat Enterprise Linux 7 のデフォルトバージョンである MariaDB 5.5から Red Hat Enterprise Linux 8 のデフォルトバージョンである MariaDB 10.3に移行する Installing MariaDB 方法を説明し Migrating to MariaDB 10.3ます。移行の前提条件として、データバックアップの実行があり Backing up MariaDB dataます。

4.2.2. MariaDB のインストール (機械翻訳)

MariaDBをインストールするには、以下の手順に従います。

  1. AppStream リポジトリーで利用可能 mariadbmariadb-server パッケージが、必要なサーバーにインストールされていることを確認します。

    ~]# yum install mariadb mariadb-server
  2. mariadb サービスを起動します。

    ~]# systemctl start mariadb.service
  3. システムの起動時に mariadb サービスが起動するようにします。

    ~]# systemctl enable mariadb.service
注記

RPM パッケージが競合しているため、 MariaDB および MySQL データベースサーバーを Red Hat Enterprise Linux 8.0 で並行してインストールすることはできません。Red Hat Enterprise Linux 6 および Red Hat Enterprise Linux 7 の Red Hat Software Collections では、コンポーネントの並列インストールが可能です。Red Hat Enterprise Linux 8 では、コンテナーで異なるバージョンのデータベースサーバーを使用できます。

4.2.2.1. MariaDB のインストールセキュリティーの改善 (機械翻訳)

次の mysql_secure_installation コマンドを実行して、 MariaDB のインストール時にセキュリティーを向上させることができます。

~]# mysql_secure_installation

このコマンドは完全な対話式スクリプトを起動し、プロセスの各ステップのプロンプトを表示します。

このスクリプトは、以下の方法でセキュリティーを強化します。

  • root アカウントのパスワードの設定
  • 匿名ユーザーの削除
  • リモート(ローカルホスト外)の root ログインの拒否

4.2.3. MariaDB の設定 (機械翻訳)

4.2.3.1. ネットワーク用の MariaDB サーバーの設定 (機械翻訳)

MariaDB サーバーをネットワーク用に設定するには、 /etc/my.cnf.d/mariadb-server.cnf ファイルの [mysqld] セクションを使用します. ここでは、以下の設定ディレクティブを設定できます。

  • bind-address

    bind-address は、サーバーがリッスンするアドレスです。

    使用できるオプションは、ホスト名、IPv4 アドレス、または IPv6 アドレスです。

  • skip-networking +fna 指定可能な値は以下のとおりです。

    0 - すべてのクライアントをリッスンする

    1 - ローカルクライアントのみをリッスンする

  • port

    MariaDB が TCP/IP 接続をリッスンするポート。

4.2.4. MariaDB データのバックアップ (機械翻訳)

4.2.4.1. MariaDB バックアップのタイプ (機械翻訳)

MariaDB データベースからデータをバックアップするには、主に以下の方法があります。

  • 論理バックアップ
  • 物理バックアップ

論理バックアップ は、データの復元に必要な SQL ステートメントで構成されています。この種類のバックアップは、プレーンテキストファイルの情報とレコードをエクスポートします。

物理バックアップでの論理バックアップの主な利点は、移植性と柔軟性です。データは、物理バックアップではできないその他のハードウェア構成、MariaDB バージョン、または Database Management System (DBMS) に復元できます。

論理バックアップは、実行中の mariadb.service 場合に実行できます。論理バックアップには、ログおよび設定ファイルは含まれません。

物理バックアップ は、コンテンツを保存するファイルとディレクトリーのコピーで構成されます。

物理バックアップには、論理バックアップと比較して、以下の利点があります。

  • 出力はよりコンパクトです。
  • バックアップのサイズは小さくなります。
  • バックアップと復元は高速です。
  • バックアップには、ログファイルと設定ファイルが含まれます。

物理的なバックアップは、実行していないとき、またはデータベース内のすべてのテーブル mariadb.service がロックされて、バックアップ中に変更されないようにする必要があります。

4.2.4.2. MariaDB バックアップメソッド (機械翻訳)

以下の方法のいずれかを使用して、 MariaDB データベースからデータをバックアップします。

4.2.4.3. mysqldump を使用した論理バックアップ (機械翻訳)

mysqldump クライアントはバックアップユーティリティで、バックアップや別のデータベースサーバーへの転送のために、データベースまたはデータベースの集合をダンプできます。出力は、 mysqldump 通常、表の作成、表の移入、または表の作成と移入を可能にする SQL 文で構成されます。または mysqldump 、CSV またはその他のデリミタ付きテキスト形式、および XML を含む他の形式でファイルを生成することもできます。

論理バックアップの詳細については mysqldump、を参照してください MariaDB Documentation

mysqldump バックアップを実行するには、以下のいずれかのオプションを使用できます。

  • 選択したデータベースをバックアップする
  • あるデータベースのテーブルのサブセットをバックアップする
  • 複数のデータベースをバックアップする
  • 全データベースをバックアップする
4.2.4.3.1. mysqldump バックアップでよく使用されるコマンド (機械翻訳)
  • データベース全体をバックアップするには、次のコマンドを実行します。

    ~]# mysqldump [options] db_name > backup-file.sql
  • あるデータベースのテーブルのサブセットをバックアップするには、コマンドの最後に選択したテーブルの一覧を追加します。

    ~]# mysqldump [options] db_name [tbl_name …​]
  • ダンプファイルをサーバーに再度読み込むには、以下のコマンドを実行します。

    ~]# mysql db_name < backup-file.sql

    または

    ~]# mysql -e "source /path-to-backup/backup-file.sql" db_name
  • ある MariaDB サーバーから別の MariaDB サーバーにデータをコピーして、データベースにデータを設定するには、次のコマンドを実行します。

    ~]# mysqldump --opt db_name | mysql --host=remote_host -C db_name
  • 一度に複数のデータベースをダンプするには、以下のコマンドを実行します。

    ~]# mysqldump [options] --databases db_name1 [db_name2 …​] > my_databases.sql
  • すべてのデータベースをダンプするには、以下のコマンドを実行します。

    ~]# mysqldump [options]--all-databases > all_databases.sql
  • mysqldump がサポートするオプションの一覧を表示するには、以下のコマンドを実行します。

    ~]$ mysqldump --help

4.2.4.4. Mariabackup ツールを使用した物理的なオンラインバックアップ (機械翻訳)

Mariabackup Percona XtraBackup テクノロジーに基づいたツールです. InnoDB テーブル、ARIA テーブル、および MyISAM テーブルの物理的なオンラインバックアップを実行できます。

MariabackupAppStream リポジトリーの mariadb-backup パッケージで提供されるは、 MariaDB サーバーのフルバックアップ機能をサポートします。

インストールするには Mariabackup、以下のコマンドを実行し rootます。

~]# yum install mariadb-backup

設定するには Mariabackup、(たとえば /etc/my.cnf.d/mariabackup.cnf)作成する設定ファイルの [mysqld] セクション [xtrabackup] またはセクションに以下の行を追加して、ユーザー名とパスワードを *.cnf 設定します。

[xtrabackup]
user=myuser
password=mypassword
重要

Mariabackup 設定ファイルの [mariadb] セクションにあるオプションを読み取りません。デフォルト以外のデータディレクトリーが MariaDB サーバーで指定されている場合は、データディレクトリーを見つけることができるように、設定ファイルの [mysqld] セクション [xtrabackup] またはセクションにこのディレクトリーを指定する必要 Mariabackup があります。

このようなデータディレクトリーを指定するには、 MariaDB 設定ファイルの [mysqld] セクション [xtrabackup] またはセクションに次の行を含めます。

datadir=/var/mycustomdatadir
注記

バックアップを使用するには RELOAD LOCK TABLES、ユーザー、および REPLICATION CLIENT 特権が Mariabackup 必要です。

を使用してデータベースのバックアップを作成するには Mariabackup、以下のコマンドを実行します。

~]$ mariabackup --backup --target-dir <backup_directory> --user <backup_user> --password <backup_passwd>

この target-dir オプションは、バックアップファイルが保存されるディレクトリーを定義します。

フルバックアップを実行する場合は、ターゲットディレクトリーが空であるか、存在しない必要があることに注意してください。

バックアップの実行に関する詳細は Mariabackup、を参照してください Full Backup and Restore with Mariabackup

4.2.4.5. ファイルシステムのバックアップ (機械翻訳)

ファイルシステムのバックアップを実行するには、別の場所にデータファイルをコピーします。データファイルのコピー時に mariadb サービスが実行されていないことを確認します。

MariaDB データファイルのファイルシステムのバックアップを作成するには、 root ユーザーに変更して、以下の手順に従ってください。

  1. mariadb サービスを停止します。

    ~]# systemctl stop mariadb.service
  2. データファイルを必要な場所にコピーします。

    ~]# cp -r /var/lib/mysql /backup-location
  3. mariadb サービスを起動します。

    ~]# systemctl start mariadb.service

4.2.4.6. バックアップソリューションとしてのレプリケーション (機械翻訳)

複製は、マスターサーバー用の代替バックアップソリューションです。マスターサーバーがスレーブサーバーに複製される場合、マスターに影響を与えずに、バックアップをスレーブで実行できます。

警告

レプリケーションは十分なバックアップソリューションではありません。複製は、ハードウェア障害からマスターサーバーを保護しますが、データの損失からの保護は保証しません。

バックアップソリューションとしてのレプリケーションの詳細は、を参照してください MariaDB Documentation

4.2.5. MariaDB 10.3 への移行 (機械翻訳)

Red Hat Enterprise Linux 7 には、MySQL データベースファミリーからのサーバーのデフォルトの実装として MariaDB 5.5 が含まれています。MariaDB データベースサーバーの以降のバージョンは、Red Hat Enterprise Linux 6 および Red Hat Enterprise Linux 7 の Software Collections として使用できます。Red Hat Enterprise Linux 8 は、 MariaDB 10.3 および MySQL 8.0を提供します。

4.2.5.1. RHEL 7 と RHEL 8 バージョンの MariaDB の主な違い (機械翻訳)

MariaDB 5.5 と MariaDB 10.3 の主な変更点は、以下のとおりです。

  • 同期マルチマスタークラスターであるMariaDB Galera Cluster は、10.1 以降の MariaDB の標準部分です。
  • …​ ストレージエンジンはデフォルトで有効ではなくなり、プラグインを特別に有効にする必要があります。
  • BlackHole ストレージエンジンはデフォルトで有効ではなくなり、プラグインは特別に有効にする必要があります。
  • InnoDB は、 MariaDB 10.1 以前のバージョンで使用されていた XtraDB ではなく、デフォルトのストレージエンジンとして使用されます。

    詳細は Why does MariaDB 10.2 use InnoDB instead of XtraDB?を参照してください。

  • 新しい mariadb-connector-c パッケージは、MySQL および MariaDB に共通のクライアントライブラリーを提供します。このライブラリーは、データベースサーバー MySQL および MariaDB のすべてのバージョンで使用できます。その結果、ユーザーは、Red Hat Enterprise Linux 8 に同梱されている MySQL サーバーおよび MariaDB サーバーにアプリケーションのビルドを接続できるようになります。

MariaDB 5.5 から MariaDB 10.3に移行するには、の説明に従って複数の設定を変更する必要があり 「設定変更 (機械翻訳)」ます。

4.2.5.2. 設定変更 (機械翻訳)

MariaDB 5.5 から MariaDB 10.3 への移行として推奨されるパスは、最初に MariaDB 10.0 にアップグレードしてから、任意のバージョンを連続的にアップグレードすることです。

MariaDB 5.5 から MariaDB 10.0への移行時の設定の変更に関する詳細は、Red Hat Software Collections Migrating to MariaDB 10.0 のドキュメントを参照してください。

これらのドキュメントでは、 MariaDB の連続したバージョンと必要な設定変更への移行について説明します。

注記

MariaDB 5.5 から MariaDB 10.3 に直接移行することもできますが、上記の移行ドキュメントで説明した違いに必要なすべての設定変更を実行する必要があります。

4.2.5.3. mysql_upgrade ツールを使用したインプレースアップグレード (機械翻訳)

データベースファイルを Red Hat Enterprise Linux 8 に移行するには、Red Hat Enterprise Linux 7 の MariaDB のユーザーは、この mysql_upgrade ツールを使用してインプレースアップグレードを実行する必要があります。

インプレースアップグレードを実行するには、Red Hat Enterprise Linux 8 システムのデータ /var/lib/mysql/ ディレクトリーにバイナリーデータファイルをコピーして、 mysql_upgrade ツールを使用する必要があります。

この方法を使用して、以下からデータを移行できます。

  • Red Hat Enterprise Linux 7 バージョンの MariaDB 5.5
  • Red Hat Software Collections のバージョン

    • MariaDB 5.5 (サポート対象外)
    • MariaDB 10.0 (サポート対象外)
    • MariaDB 10.1
    • MariaDB 10.2

MariaDB 10.2 へは、連続的にアップグレードすることが推奨されます。に記載されている各移行の章を参照してください Release Notes for Red Hat Software Collections

注記

Red Hat Enterprise Linux 7 バージョンの MariaDBからアップグレードする場合は、ソースデータが /var/lib/mysql/ ディレクトリーに保存されます。Red Hat Software Collections バージョンの MariaDBの場合、ソースデータディレクトリーは /var/opt/rh/<collection_name>/lib/mysql/ (データディレクトリーを使用する mariadb55場合を除き /opt/rh/mariadb55/root/var/lib/mysql/ )です。

重要

アップグレードを実行する前に、の説明に従って、 MariaDB データベースに保存されているすべてのデータをバックアップし 「MariaDB データのバックアップ (機械翻訳)」ます。

インプレースアップグレードを実行するには、 root ユーザーに移動し、以下の手順を使用します。

  1. mariadb-server パッケージが Red Hat Enterprise Linux 8 システムにインストールされていることを確認します。

    ~]# yum install mariadb-server
  2. データをコピーする際に、mariadb デーモンがソースおよびターゲットシステムで実行していないことを確認します。

    ~]# systemctl stop mariadb.service
  3. ソースの場所から Red Hat Enterprise Linux 8 ターゲットシステムの /var/lib/mysql/ ディレクトリーにデータをコピーします。
  4. ターゲットシステム上のコピーしたファイルに、適切なパーミッションと SELinux コンテキストを設定します。

    ~]# restorecon -vr /var/lib/mysql
  5. ターゲットシステムで MariaDB サーバーを起動します。

    ~]# systemctl start mariadb.service
  6. 次の mysql_upgrade コマンドを実行して、内部テーブルを確認し、修復します。

    ~]# systemctl mysql_upgrade
  7. アップグレードが完了したら、 /etc/my.cnf.d/ ディレクトリ内のすべての設定ファイルに MariaDB 10.3の有効なオプションのみが含まれていることを確認してください。
重要

インプレースアップグレードに関連するリスクと既知の問題があります。たとえば、一部のクエリーが機能しない場合や、アップグレード前とは異なる順序で実行される場合があります。これらのリスクと問題、およびインプレースアップグレードに関する一般的な情報については、を参照してください MariaDB 10.3 Release Notes

4.3. Red Hat Enterprise Linux 8 で PostgreSQL の使用 (機械翻訳)

4.3.1. Red Hat Enterprise Linux 8 における PostgreSQL の使用 (機械翻訳)

PostgreSQL サーバーは、SQL 言語に基づいた、堅牢で拡張性の高いオープンソースのデータベースサーバーです。オブジェクトリレーショナルデータベースシステムを提供し、大規模なデータセットと多数の同時接続ユーザーを管理できます。このため、PostgreSQL サーバーをクラスターで使用して、大量のデータを管理できます。

PostgreSQL サーバーには、データの整合性の確保、耐障害性のある環境の構築、またはアプリケーションの構築を行うための機能が含まれています。これにより、データベースを再コンパイルしなくても、ユーザー独自のデータタイプ、カスタム関数、または異なるプログラミング言語のコードを使用してデータベースを拡張できます。

本セクションでは、 PostgreSQL のインストール Installing PostgreSQL 方法と、Red Hat Enterprise Linux 7 のデフォルトバージョン PostgreSQL 9.2 から Red Hat Enterprise Linux 8 のデフォルトバージョン PostgreSQL 10.0 への移行方法を説明し Migrating to PostgreSQL 10.0ます。移行の前提条件として、データバックアップの実行があります。

4.3.2. PostgreSQL のインストール (機械翻訳)

RHEL 8 では、 PostgreSQL サーバーは10 および 9.6 - ストリームにより提供されます。本セクションは、デフォルトのストリームから PostgreSQL 10 を使用することを前提としています。ストリームの変更についてはを参照してください Using Application Stream

注記

設計上、同じモジュールの複数のバージョン (ストリーム) を並行してインストールすることはできません。たとえば、 postgresql モジュールから利用可能なストリームのいずれか 10(デフォルト)または 9.6 のみを選択する必要があります。Red Hat Enterprise Linux 6 および Red Hat Enterprise Linux 7 の Red Hat Software Collections では、コンポーネントの並列インストールが可能です。Red Hat Enterprise Linux 8 では、コンテナーで異なるバージョンのデータベースサーバーを使用できます。

PostgreSQL をインストールするには、以下の手順に従います。

  1. Application Stream リポジトリーで利用可能な postgresql-server パッケージが、必要なサーバーにインストールされていることを確認します。

    ~]# yum install postgresql-server
  2. データディレクトリーを初期化します。

    postgresql-setup --initdb
  3. postgresql サービスを起動します。

    ~]# systemctl start postgresql.service
  4. システムの起動時に postgresql サービスが起動するようにします。

    ~]# systemctl enable postgresql.service

4.3.3. PostgreSQL の設定 (機械翻訳)

PostgreSQL 設定を変更するには、 /var/lib/pgsql/data/postgresql.conf ファイルを使用します。その後、 postgresql サービスを再起動して、変更を有効にします。

systemctl restart postgresql.service

PostgreSQL 設定を変更する /var/lib/pgsql/data/postgresql.confその他のファイルも存在します。

  • postgresql.auto.conf
  • pg_ident.conf
  • pg_hba.conf

この postgresql.auto.conf ファイルは、同様に PostgreSQL の基本設定を保持し /var/lib/pgsql/data/postgresql.confます。ただし、このファイルはサーバーコントロールの下にあります。これはクエリにより編集され ALTER SYSTEM 、手動で編集することはできません。

この pg_ident.conf ファイルは、外部認証メカニズムから postgresql ユーザー ID にユーザー ID をマッピングするために使用されます。

この pg_hba.conf ファイルは、 PostgreSQL データベースに対する詳細なユーザー権限を設定するために使用されます。

4.3.3.1. データベースクラスターの初期化 (機械翻訳)

PostgreSQL データベースでは、すべてのデータはデータベースクラスターと呼ばれる単一ディレクトリーに保存されます。データを保存する場所は選択できますが、Red Hat はデフォルトの /var/lib/pgsql/data ディレクトリーにデータを格納することを推奨しています。

このデータディレクトリーを初期化するには、以下のコマンドを実行します。

postgresql-setup --initdb

4.3.4. PostgreSQL データのバックアップ (機械翻訳)

PostgreSQL データをバックアップするには、以下のいずれかの方法を使用します。

  • SQL dump
  • ファイルシステムレベルのバックアップ
  • Ccontinuous archive

4.3.4.1. SQL ダンプを使用した PostgreSQL データのバックアップ (機械翻訳)

4.3.4.1.1. SQL ダンプの実行 (機械翻訳)

SQL ダンプの方法は、SQL コマンドでファイルを生成することに基づいています。このファイルがデータベースサーバーにアップロードされると、ダンプ時と同じ状態でデータベースが再作成されます。SQL ダンプは、 PostgreSQL クライアントアプリケーションである pg_dump ユーティリティーにより保証されます。pg_dump コマンドの基本的な使用方法は、結果を標準出力に書き込むことです。

pg_dump dbname > dumpfile

結果として得られる SQL ファイルは、テキストフォーマットでも、その他の異なるフォーマットでも構いません. これにより、並列処理や、オブジェクト復元の詳細な制御が可能になります。

SQL ダンプは、データベースにアクセスできる任意のリモートホストから実行できます。この pg_dump ユーティリティは特別な権限では動作しませんが、バックアップするすべてのテーブルに対する読み取りアクセス権が必要です。データベース全体をバックアップするには、データベーススーパーユーザーとして実行する必要があります。

どのデータベースサーバーに接続するかを指定するには pg_dump 、以下のコマンドラインオプションを使用します。

  • ホストを定義する -h オプションです。

    デフォルトのホストは、ローカルホストか、 PGHOST 環境変数で指定されるホストのいずれかになります。

  • ポートを定義する -p オプションです。

    デフォルトのポートは、 PGPORT 環境変数またはコンパイル済みデフォルトで示されます。

注記

つのデータベースのみを pg_dump ダンプします。これらの情報はクラスター全体に存在するため、ロールまたはバイナリーに関する情報はダンプされません。

特定のクラスターで各データベースをバックアップし、ロールやバイナリー定義などのクラスター全体のデータを保持するには、以下の pg_dumpall コマンドを使用します。

pg_dumpall > dumpfile
4.3.4.1.2. SQL ダンプからのデータベースの復元 (機械翻訳)

SQL ダンプからデータベースを復元するには、以下のコマンドを実行します。

  1. 新規のデータベースを作成します (dbname) :

    createdb dbname
  2. オブジェクトを所有しているか、またはダンプされたデータベース内のオブジェクトに対する権限を付与されたすべてのユーザーが、すでに存在していることを確認してください。

    このようなユーザーが存在しない場合、復元は元の所有権とパーミッションを持つオブジェクトの再作成に失敗します。

  3. psql ユーティリティーを実行して、 pg_dump ユーティリティーが作成したテキストファイルダンプを復元します。

    psql dbname < dumpfile

ここで dumpfile 、は pg_dump コマンドの出力です。

テキスト以外のファイルダンプを復元する場合は、 pg_restore ユーティリティーを使用します。

pg_restore non-plain-text-file
4.3.4.1.2.1. 別のサーバーでのデータベースの復元 (機械翻訳)

あるサーバーから別のサーバーにデータベース pg_dump を直接ダンプする psql ことができます。

あるサーバーから別のサーバーにデータベースをダンプするには、以下のコマンドを実行します。

pg_dump -h host1 dbname | psql -h host2 dbname
4.3.4.1.2.2. 復元時の SQL エラーの処理 (機械翻訳)

デフォルトでは、SQL エラーが発生すると実行が psql 継続されます。そのため、データベースは部分的にのみ復元されます。

このデフォルトの動作を変更する場合は、以下のいずれかの方法を使用します。

  • SQL エラーが発生 psql する場合は、 ON_ERROR_STOP 変数を設定して、終了ステータスが 3 になるようにします。

    psql --set ON_ERROR_STOP=on dbname < dumpfile
  • 以下のいずれかのオプションを使用して復元が完全に完了またはキャンセルされるように、ダンプ全体を単一 psql のトランザクションとして復元することを指定します。

    psql -1

    または

    psql --single-transaction

    このアプローチを使用する場合は、マイナーエラーであっても、すでに多くの時間にわたって実行された復元操作をキャンセルできることに注意してください。

4.3.4.1.3. SQL ダンプの長所と短所 (機械翻訳)

SQL ダンプには、他の PostgreSQL バックアップ方法と比較して、以下の利点があります。

  • SQL ダンプは、サーバーのバージョン固有ではない唯一の PostgreSQL バックアップ方法です。pg_dump ユーティリティーの出力は、PostgreSQL の後続のバージョンに再読み込みできます。これは、ファイルシステムレベルのバックアップ、または継続的なアーカイブにはできません。
  • SQL ダンプは、32 ビットから 64 ビットサーバーへのデータベース転送など、別のマシンアーキテクチャーにデータベースを転送する際に動作する唯一の方法です。
  • SQL ダンプは、内部的に一貫したダンプを提供します。ダンプは、pg_dump が実行を開始したときにデータベースのスナップショットを表します。
  • この pg_dump ユーティリティーは、実行中に、データベースに対するその他の操作をブロックしません。

SQL ダンプの欠点は、ファイルシステムレベルのバックアップよりも時間がかかることです。

4.3.4.1.4. 関連資料 (機械翻訳)

SQL ダンプの詳細は、を参照してください PostgreSQL 10 Documentation

4.3.4.2. ファイルシステムレベルのバックアップを使用した PostgreSQL データのバックアップ (機械翻訳)

4.3.4.2.1. ファイルシステムレベルのバックアップの実行 (機械翻訳)

ファイルシステムレベルのバックアップを実行するには、 PostgreSQL がデータベースのデータを保存するために使用するファイルを別の場所にコピーする必要があります。

  1. の説明に従って、データベースクラスターの場所を選択し、このクラスターを初期化し 「データベースクラスターの初期化 (機械翻訳)」ます。
  2. postgresql サービスを停止します。

    ~]# systemctl stop postgresql.service
  3. 任意の方法を使用してファイルシステムのバックアップを作成します. 以下に例を示します。

    tar -cf backup.tar /var/lib/pgsql/data
  4. postgresql サービスを開始します。

    ~]# systemctl start postgresql.service
4.3.4.2.2. ファイルシステムレベルのバックアップの利点と欠点 (機械翻訳)

ファイルシステムレベルのバックアップには、他の PostgreSQL バックアップ方法と比較して、以下の利点があります。

  • 通常、ファイルシステムレベルのバックアップは、SQL ダンプよりも高速です。

ファイルシステムレベルのバックアップには、他の PostgreSQL バックアップ方法と比較して、以下の欠点があります。

  • バックアップはアーキテクチャー固有で、Red Hat Enterprise Linux 7 固有のものです。アップグレードに失敗した場合に限り Red Hat Enterprise Linux 7 に戻るバックアップとして使用できますが、 PostgreSQL 10.0では使用できません。
  • データベースサーバーは、データのバックアップおよびデータの復元前にシャットダウンする必要があります。
  • 特定のファイルまたは表のバックアップおよび復元は不可能です。ファイルシステムのバックアップは、データベースクラスター全体の完全なバックアップおよび復元でのみ機能します。
4.3.4.2.3. ファイルシステムレベルのバックアップの代替アプローチ (機械翻訳)

ファイルシステムバックアップの代替アプローチには、以下が含まれます。

  • データディレクトリーの一貫したスナップショット
  • maven ユーティリティー
4.3.4.2.4. 関連資料 (機械翻訳)

ファイルシステムレベルのバックアップに関する詳細は、を参照してください PostgreSQL 10 Documentation

4.3.4.3. 継続的なアーカイブによる PostgreSQL データのバックアップ (機械翻訳)

4.3.4.3.1. 継続的なアーカイブの概要 (機械翻訳)

postgresql は、データベースのデータファイルに加えたすべての変更を、 pg_wal/ クラスターのデータディレクトリーにある書き込み先ログ (Wal) ファイルに記録します。このログは主にクラッシュ復旧向けです。クラッシュ後に、最後のチェックポイント以降に作成されたログエントリーを使用して、データベースの整合性を回復できます。

継続的なアーカイブ方法(別名)は online backup、Wal ファイルとファイルシステムレベルのバックアップを組み合わせます。データベースの復元が必要な場合は、ファイルシステムのバックアップからデータベースを復元し、バックアップされた Wal ファイルからログを再生して、システムを現在の状態にすることができます。

このバックアップ方法では、少なくともバックアップの開始時刻まで拡張するアーカイブされた Wal ファイルの連続的なシーケンスが必要です。

継続的なアーカイブバックアップ方法を使用する場合は、最初のベースバックアップを開始する前に、Wal ファイルをアーカイブする手順を設定してテストしてください。

注記

継続的なアーカイブバックアップソリューションの一環として pg_dump 、使用および pg_dumpall ダンプを行うことはできません。このダンプは、ファイルシステムレベルのバックアップではなく、論理バックアップを生成します。したがって、Wal 再生で使用する情報が十分ではありません。

4.3.4.3.2. 継続的なアーカイブバックアップの実行 (機械翻訳)

継続的なアーカイブ方法を使用してデータベースのバックアップと復元を実行するには、次の手順を実行します。

4.3.4.3.2.1. 基本バックアップの作成 (機械翻訳)

ベースバックアップを実行するには、 pg_basebackup ツールを使用し tar ます。

ベースバックアップを使用するには、ファイルシステムのバックアップ中およびバックアップ後に生成された Wal セグメントファイルをすべて保持する必要があります。基本的なバックアッププロセスでは、Wal アーカイブ領域に格納され、ファイルシステムバックアップに必要な最初の Wal セグメントファイルの名前が付けられるバックアップ履歴ファイルが作成されます。バックアップ中に使用されるファイルシステムバックアップと Wal セグメントファイル(バックアップ履歴ファイルで指定)を安全にアーカイブすると、ファイルシステムのバックアップを回復する必要がなくなったため、アーカイブされた Wal セグメントのうち、名前が数値より少ないものをすべて削除できます。ただし、データを確実に復元できるように、複数のバックアップセットを維持することを検討してください。

バックアップ履歴ファイルは、作成するラベル文字列、開始時刻と終了時刻 pg_basebackup、およびバックアップの Wal セグメントを含む小さなテキストファイルです。ラベル文字列を使用して関連するダンプファイルを特定した場合は、どのダンプファイルを復元するかを知るためにアーカイブされた履歴ファイルで十分です。

継続的なアーカイブ方法では、アーカイブされた Wal ファイルをすべて最後のベースバックアップに戻す必要があります。したがって、基本バックアップの理想的な頻度は以下に依存します。

  • アーカイブされた Wal ファイルで利用可能なストレージボリューム。
  • 復元が必要な場合に、データ復元の最大可能時間。

    最後のバックアップから長時間にわたって、システムがより多くの Wal セグメントを再生し、復元にかかる時間が長くなります。

ベースバックアップの作成についての詳細は、を参照してください PostgreSQL 10 Documentation

4.3.4.3.2.2. 継続的なアーカイブバックアップを使用したデータベースの復元 (機械翻訳)

継続的なバックアップを使用してデータベースを復元するには、以下を行います。

  1. サーバーを停止します。

    ~]# systemctl stop postgresql.service
  2. 必要なデータを一時的な場所にコピーします。

    クラスターデータディレクトリー全体および任意のバイナリーをコピーすることが推奨されます。既存データベースのコピーを格納するには、システムに十分な空き領域が必要になります。

    十分な容量がない場合は、クラスターの pg_wal ディレクトリーの内容を保存します。

  3. クラスターデータディレクトリーと、使用しているすべてのバイナリーのルートディレクトリーに、既存のファイルとサブディレクトリーをすべて削除します。
  4. ファイルシステムのバックアップからデータベースファイルを復元します。

    以下の点を確認してください。

    • ファイルが正しい所有権で復元される(データベースシステムユーザーではなく root
    • ファイルが正しいパーミッションで復元されます。
    • pg_tblspc/ サブディレクトリー内のシンボリックリンクが正しく復元された
  5. pg_wal/ サブディレクトリに存在するファイルをすべて削除します。

    これらのファイルはファイルシステムのバックアップから作成されるため、廃止されます。アーカイブしていない場合は pg_wal/、適切な権限で再作成します。

  6. ステップ 2 で保存したアーカイブされていない Wal セグメントファイルを、そのようなファイルがある pg_wal/ 場合はコピーします。
  7. クラスターデータディレクトリーに recovery.conf recovery コマンドファイルを作成します。
  8. サーバーを起動します。

    ~]# systemctl start postgresql.service

    サーバーが復旧モードに入り、必要なアーカイブされた Wal ファイルの読み取りに進みます。

    外部エラーのために復旧が終了した場合は、サーバーを再起動するだけで復元が続行されます。リカバリプロセスが完了すると、サーバーが通常のデータベース操作 recovery.conf を開始 recovery.done すると、後で誤って復旧モードを再入力しないようにサーバー名が変更されます。

  9. データベースの内容を確認し、データベースが必要な状態に復元されていることを確認します。

    データベースが必要な状態に復旧していない場合は、手順 1 に戻ります。データベースが必要な状態に復元されている場合は、 pg_hba.conf ファイルを通常の状態に復元して接続できます。

継続バックアップを使用した復元の詳細は、を参照してください PostgreSQL 10 Documentation

4.3.4.3.3. 継続的なアーカイブの利点と欠点 (機械翻訳)

他の PostgreSQL バックアップ方法と比較して、継続的なアーカイブには以下の利点があります。

  • バックアップの内部矛盾はログ再生により修正されるため、継続的なバックアップ方法では、完全に一貫性のないファイルシステムバックアップを使用できます。ファイルシステムのスナップショットが必要ない、 tar または同様のアーカイブツールで十分です。
  • ログ再生用の Wal ファイルのシーケンスが無期限に長くなる可能性があるため、Wal ファイルのアーカイブを続行することで、継続的なバックアップを実行できます。これは特に大規模データベースの場合に有用です。
  • 継続的なバックアップは、ポイントインタイム復元をサポートします。Wal エントリーを最後に再生する必要はありません。再生はいつでも停止でき、ベースバックアップが取られてからいつでもデータベースをその状態に復元できます。
  • 一連の Wal ファイルが同じベースバックアップファイルでロードされた別のマシンで継続的に利用可能になる場合は、任意の時点で、ほぼ現在のデータベースコピーを持つ他のマシンを復元できます。

他の PostgreSQL バックアップ方法と比較して、継続的なアーカイブには以下の欠点があります。

  • 継続的なバックアップ方式では、サブセットではなく、データベースクラスター全体の復元のみがサポートされます。
  • 継続的なバックアップには大規模なアーカイブストレージが必要です。
4.3.4.3.4. 関連資料 (機械翻訳)

継続的なアーカイブ方法の詳細は、を参照してください PostgreSQL 10 Documentation

4.3.5. PostgreSQL 10.0 への移行 (機械翻訳)

Red Hat Enterprise Linux 7 には、 PostgreSQL サーバーのデフォルトバージョンとして PostgreSQL 9.2 が含まれています。また、Red Hat Enterprise Linux 6 および Red Hat Enterprise Linux 7 では、複数のバージョンの PostgreSQL が Software Collections として提供されています。Red Hat Enterprise Linux 8 は、 PostgreSQL 10.0 および PostgreSQL 9.6を提供します。

本セクションでは、Red Hat Enterprise Linux 7 システムバージョンの Postgreql 9.2 から、デフォルトのストリームで提供される Red Hat Enterprise Linux 8 バージョンの PostgreSQL 10への移行を想定しています。

Red Hat Enterprise Linux 7 の PostgreSQL のユーザーは、Red Hat Enterprise Linux 8 にデータベースファイルの移行パスを使用できます。

高速アップグレード方式を使用するのが、ダンプおよび復元プロセスよりも高速です。

ba * クロスアーキテクチャーアップグレード * plpython または plpython2 拡張機能を使用するシステム

+ Red Hat Enterprise Linux 8 Application ストリームリポジトリーにはパッケージのみが含まれ、 postgresql-plpython3 パッケージは含まれません postgresql-plpython2

  • Red Hat Software Collections バージョンの PostgreSQLからの移行では、高速アップグレードはサポートされません。

PostgreSQL 9.2 から PostgreSQL 10.0 への移行の前提条件として、PostgreSQLデータベースをバックアップし ます

データベースのダンプと、SQL ファイルのバックアップの実行は、ダンプおよびリストアプロセスに必要な作業です。ただし、高速アップグレードを実行する場合は、これも推奨されます。

4.3.5.1. pg_upgrade ツールを使用した高速アップグレード (機械翻訳)

高速アップグレードの場合は、バイナリデータファイルを /var/lib/pgsql/data/ ディレクトリーにコピーし、 pg_upgrade ツールを使用する必要があります。この方法は、Red Hat Enterprise Linux 7 バージョンの PostgreSQL 9.2からデータを移行するのに使用できます。デフォルトでは、すべてのデータは Red Hat Enterprise Linux 7 および Red Hat Enterprise Linux 8 システムの両方の /var/lib/pgsql/data/ ディレクトリーに保存されます。Red Hat Software Collections バージョンの PostgreSQLから移行するには、を使用し Dump and restore upgradeます。

重要

アップグレードを実行する前に、 PostgreSQL データベースに保存されているすべてのデータをバックアップします。

高速アップグレードを実行するには、以下の手順に従ってください。

  1. RHEL 8 システムで、 postgresql-server および postgresql-upgrade パッケージをインストールします。

    ~]# yum install postgresql-server postgresql-upgrade

    必要に応じて、RHEL 7 で PostgreSQL サーバーモジュールを使用している場合は、RHEL 8 システムに、 PostgreSQL 9.2(パッケージとしてインストール)および PostgreSQL 10postgresql-upgrade パッケージとしてインストール)に対して、これらのモジュールもインストールし postgresql-server ます。サードパーティーの PostgreSQL サーバーモジュールをコンパイルする必要がある場合は、 postgresql-devel および postgresql-upgrade-devel パッケージに対して構築します。

  2. 以下の項目を確認してください。

    • 基本設定:RHEL 8 システムで、サーバーがデフォルトの /var/lib/pgsql/data ディレクトリーを使用し、データベースが正しく初期化され、有効になっているかどうかを確認します。また、データファイルは、そのファイルに記載されているパスと同じパスに格納する必要があり /usr/lib/systemd/system/postgresql.service ます。
    • postgresql サーバー:システムは、複数の PostgreSQL サーバーを実行できます。すべてのサーバーのデータディレクトリが独立して処理されていることを確認します。
    • postgresql サーバーモジュール:{RHE} 7 で使用した PostgreSQL サーバーモジュールも RHEL 8 システムにインストールされていることを確認してください。プラグインはディレクトリー( /usr/lib/pgsql/ 32 ビットシステムの /usr/lib64/pgsql/ ディレクトリー)にインストールされます。
  3. データのコピー時に、ソースおよびターゲットシステムのいずれかで postgresql サービスが実行されていないことを確認します。

    ~]# systemctl stop postgresql.service
  4. ソースから RHEL 8 システムの /var/lib/pgsql/data/ ディレクトリーにデータベースファイルをコピーします。
  5. PostgreSQL ユーザーとして以下のコマンドを実行して、アップグレードプロセスを実行します。

    ~]$ /bin/postgresql-setup --upgrade

    これにより、バックグラウンドで pg_upgrade プロセスが起動します。

    失敗した場合 postgresql-setup は、情報エラーメッセージを表示します。

  6. 以前の設定を新しいクラスター /var/lib/pgsql/data-old にコピーします。

    高速アップグレードでは、新しいデータスタックで以前の設定が再利用されず、設定が最初から生成されることに注意してください。古い設定と新しい設定を手動で組み合わせる場合は、データディレクトリーで *.conf ファイルを使用します。

  7. 新しい PostgreSQL 10 サーバーを起動します。

    ~]# systemctl start postgresql.service
  8. PostgreSQL ホームディレクトリーにある analyze_new_cluster.sh スクリプトを実行します。

    su postgres -c '~/analyze_new_cluster.sh'
  9. システムの起動時に PostgreSQL 10 サーバーを自動的に起動するには、以下のコマンドを実行します。

    ~]# systemctl enable postgresql.service

4.3.5.2. ダンプおよび復元のアップグレード (機械翻訳)

ダンプおよびリストアのアップグレードを使用する場合は、すべてのデータベースの内容を SQL ファイルのダンプファイルにダンプする必要があります。

ダンプおよびリストアのアップグレードは高速アップグレード方法よりも遅く、生成された SQL ファイルを手動で修正する必要がある場合があります。

この方法を使用して、以下からデータを移行できます。

  • Red Hat Enterprise Linux7 バージョンの PostgreSQL 9.2
  • Red Hat Software Collections のバージョン

    • postgresql 9.2 (サポート対象外)
    • postgresql 9.4 (サポート対象外)
    • PostgreSQL 9.6
    • PostgreSQL 10

Red Hat Enterprise Linux 7 および Red Hat Enterprise Linux 8 システムでは、 PostgreSQL データはデフォルトで /var/lib/pgsql/data/ ディレクトリーに保存されます。Red Hat Software Collections バージョンの PostgreSQLの場合、デフォルトのデータディレクトリーは /var/opt/rh/collection_name/lib/pgsql/data/ (この /opt/rh/postgresql92/root/var/lib/pgsql/data/ ディレクトリーを使用する postgresql92場合を除き)です。

ダンプおよび復元のアップグレードを実行するには、ユーザーをに変更し root、以下の手順を使用して、Red Hat Enterprise Linux 7 システムバージョンの PostgreSQL 9.2 から Red Hat Enterprise Linux 8 のデフォルトバージョンの PostgreSQL 10に移行します。

  1. RHEL 7 システムで、 PostgreSQL 9.2 サーバーを起動します。

    ~]# systemctl start postgresql.service
  2. RHEL 7 システムで、すべてのデータベースの内容を pgdump_file.sql ファイルにダンプします。

    su - postgres -c "pg_dumpall > ~/pgdump_file.sql"
  3. データベースが正しくダンプされていることを確認してください。

    su - postgres -c 'less "$HOME/pgdump_file.sql"'

    その結果、ダンプされた sql ファイルへのパスが表示され /var/lib/pgsql/pgdump_file.sqlます。

  4. RHEL 8 システムで、 postgresql-server パッケージをインストールします。

    ~]# yum install postgresql-server

    必要に応じて、RHEL 7 で PostgreSQL サーバーモジュールを使用している場合は、RHEL 8 システムにもインストールします。サードパーティーの PostgreSQL サーバーモジュールをコンパイルする必要がある場合は、 postgresql-devel パッケージに対して構築します。

  5. RHEL 8 システムで、 PostgreSQL 10.0 サーバーのデータディレクトリーを初期化します。

    ~]# postgresql-setup --initdb
  6. RHEL 8 システムで、 PostgreSQL ホームディレクトリー pgdump_file.sql にコピーして、ファイルが正しくコピーされたことを確認します。

    su - postgres -c 'test -e "$HOME/pgdump_file.sql" && echo exists'
  7. RHEL 7 システムから設定ファイルをコピーします。

    su - postgres -c 'ls -1 $PGDATA/*.conf'

    コピーされる設定ファイルは次のとおりです。

    • /var/lib/pgsql/data/pg_hba.conf
    • /var/lib/pgsql/data/pg_ident.conf
    • /var/lib/pgsql/data/postgresql.conf
  8. RHEL 8 システムで、新しい PostgreSQL 10 サーバーを起動します。

    ~]# systemctl start postgresql.service
  9. RHEL 8 システムで、ダンプされた sql ファイルからデータをインポートします。

    su - postgres -c 'psql -f ~/pgdump_file.sql postgres'
注記

Red Hat Software Collections バージョンの PostgreSQLからアップグレードする場合は、追加するコマンドを調整します. scl enable collection_name. たとえば、 rh-postgresql96 Software Collection からデータをダンプするには、以下のコマンドを使用します。

su - postgres -c 'scl enable rh-postgresql96 "pg_dumpall > ~/pgdump_file.sql"'

第5章 印刷の設定 (機械翻訳)

Red Hat Enterprise Linux 8 での印刷は、Common Unix Printing System (CUPS) に基づいています。

本書は、CUPS サーバーとして動作できるようにマシンを設定する方法を説明します。

5.1. cups サービスのアクティブ化 (機械翻訳)

このセクションでは、システムで cups サービスをアクティブにする方法を説明します。

前提条件

  • Appstream リポジトリーで利用可能な cups パッケージがシステムにインストールされている必要があります。

    ~]# yum install cups

手順

  1. cups サービスを起動します。

    ~]# systemctl start cups
  2. システムの起動時に cups サービスが自動的に開始するように設定します。

    ~]# systemctl enable cups
  3. 必要に応じて、 cups サービスのステータスを確認します。

    ~]$ systemctl status cups

5.3. CUPS Web UI へのアクセスおよび設定 (機械翻訳)

本セクションでは、このインターフェースを介して印刷を管理できるように、アクセス方法 CUPS web UI と、その設定方法を説明します。

以下にアクセスするには、 CUPS web UI以下のコマンドを実行します。

  1. CUPS サーバーが、 /etc/cups/cupsd.conf ファイルを設定してネットワークから接続をリッスンできるよう Port 631 にします。

    #Listen localhost:631
    Port 631
  2. マシンに以下の内容を追加して、CUPS サーバーへのアクセスを許可し /etc/cups/cupsd.conf ます。

    <Location />
    Allow from <your_ip_address>
    Order allow,deny
    </Location>
    注記

    システム <your_ip_address> の実際の IP アドレスに置き換えます。

  3. cups.service を再起動します。

    ~]# systemctl restart cups
  4. ブラウザーを開き、に移動し http://<IP_address_of_the_CUPS_server>:631/ます。
cups ui intro

メニュー以外のすべての Administration メニューが利用可能になりました。

Administration メニューをクリックすると、 Forbidden メッセージが表示され ます。

forbidden message

Administration メニューにアクセスするには、にある手順に従い 「CUPS Web UI への管理アクセスの取得 (機械翻訳)」ます。

5.3.1. CUPS Web UI への管理アクセスの取得 (機械翻訳)

このセクションでは、管理アクセスを取得する方法を説明し CUPS web UIます。

手順
  1. Administation メニューにアクセスできるようにするには CUPS web UI/etc/cups/cupsd.conf ファイルに以下を含めます。

    <Location /admin>
    Allow from <your_ip_address>
    Order allow,deny
    </Location>
    注記

    システム <your_ip_address> の実際の IP アドレスに置き換えます。

  2. にある設定ファイルにアクセスできるようにするには CUPS web UI/etc/cups/cupsd.conf ファイルに以下を含めます。

    <Location /admin/conf>
    AuthType Default
    Require user @SYSTEM
    Allow from <your_ip_address>
    Order allow,deny
    </Location>
    注記

    システム <your_ip_address> の実際の IP アドレスに置き換えます。

  3. にあるログファイルにアクセスできるようにするには CUPS web UI/etc/cups/cupsd.conf ファイルに以下を含めます。

    <Location /admin/log>
    AuthType Default
    Require user @SYSTEM
    Allow from <your_ip_address>
    Order allow,deny
    </Location>
    注記

    システム <your_ip_address> の実際の IP アドレスに置き換えます。

  4. で認証された要求の暗号化の使用を指定するには CUPS web UI/etc/cups/cupsd.conf ファイル DefaultEncryption に含めます。

    DefaultEncryption IfRequested

    この設定により、 Administration メニューにアクセスする際に、プリンターの追加を許可されているユーザーのユーザー名を入力するための認証ウィンドウが表示されます。ただし、設定方法は他にもあり DefaultEncryptionます。詳細は cupsd.conf man ページを参照してください。

  5. cups サービスを再起動します。

    ~]# systemctl restart cups
    警告

    cups サービスを再起動しないと、変更は適用さ /etc/cups/cupsd.conf れません。したがって、管理アクセスを取得することはできません CUPS web UI

関連資料

/etc/cups/cupsd.conf ファイルを使用して CUPS サーバーを設定する方法は cupsd.conf man ページをご覧ください。

5.4. CUPS Web UI でのプリンターの追加 (機械翻訳)

本セクションは、を使用して新規プリンターを追加する方法を説明し CUPS web user interfaceます。

前提条件

の説明に従い、管理アクセスを取得 CUPS web UI した 「CUPS Web UI への管理アクセスの取得 (機械翻訳)」

手順

  1. の説明 CUPS web UI 通りに起動します。 「CUPS Web UI へのアクセスおよび設定 (機械翻訳)」
  2. 移動 Adding Printers and ClassesAdd printer

    add printer in cups ui 1
    add printer in cups ui 2
  3. ユーザー名とパスワードによる認証:

    add printer in cups ui auth n
    重要

    使用する新しいプリンターを追加するには CUPS web UI、以下のいずれかのユーザーとして認証する必要があります。

    • superuser
    • sudo コマンドにより提供された管理アクセス権を持つユーザー(内部に一覧表示されているユーザー /etc/sudoers
    • グループ内の printadmin グループに所属するすべてのユーザー /etc/group
  4. ローカルプリンターが接続されているか、CUPS が利用可能なネットワークプリンターを検出する場合は、プリンターを選択します。ローカルプリンターもネットワークプリンターも利用できない場合は、 APP Socket/HPJT direct Other Network Printersなどからプリンターのタイプを選択し、プリンターの IP アドレスを入力してクリックし Continueます。

    add printer in cups ui 4 new
  5. 上記の ように APP Socket/HPJT Direct を 選択した場合は、プリンターの IP アドレスを入力してクリックし Continueます。

    add printer in cups ui 5 new
  6. 名前、説明、場所など、新しいプリンターに関する詳細情報を追加できます。ネットワーク上で共有するプリンターを設定するには、以下の Share This Printer ようにします。

    add printer in cups ui 6 new
  7. プリンタの製造元を選択してクリックし Continueます。

    add printer in cups ui 7 new

    または、 Browse…​ 下をクリックして、プリンターのドライバーとして使用する Postscript プリンター記述 (PPD) ファイルを提供することもできます。

  8. プリンターのモデルを選択してクリックし Add Printerます。

    add printer in cups ui 8 new
  9. プリンタを追加すると、次のウィンドウでデフォルトの印刷オプションを設定できます。

    cups web ui set defaults n2

クリックすると Set Default Options、新しいプリンターが正常に追加されたことを確認するメッセージが表示されます。

add printer in cups ui final confirm

5.5. CUPS Web UI でのプリンターの設定 (機械翻訳)

本セクションでは、新規プリンターの設定方法と、それを使用してプリンターの設定を維持する方法を説明し CUPS web UIます。

前提条件

の説明に従い、管理アクセスを取得 CUPS web UI した 「CUPS Web UI への管理アクセスの取得 (機械翻訳)」

手順

  1. Printers メニューをクリックすると、構成可能なプリンターが表示されます。

    conf printer cups 1
  2. 設定するプリンターを選択します。

    conf printer cups 2
  3. 利用可能なメニューのいずれかを使用して、選択したタスクを実行します。

    • メンテナンス作業 Maintenance については、に進みます。

      conf printer cups 3
    • 管理タスクを実行する Administration には、に進みます。

      conf printer cups 4
    • またはボタンをクリックして、完了した印刷ジョブまたはアクティブなすべての印刷ジョブを確認することも Show Completed Jobs Show All Jobs できます。

5.6. CUPS Web UI を使用したテストページの印刷 (機械翻訳)

本セクションでは、テストページを印刷して、プリンターが適切に機能することを確認する方法を説明します。

以下の条件のいずれかを満たす場合は、テストページをプリントできます。

  • プリンタがセットアップされている。
  • プリンターの設定が変更されました。

前提条件

の説明に従い、管理アクセスを取得 CUPS web UI した 「CUPS Web UI への管理アクセスの取得 (機械翻訳)」

手順

  • Printers メニューに移動し、 Maintenance → をクリックし Print Test Pageます。

    printing test page cups web ui

5.7. CUPS Web UI を使用した印刷オプションの設定 (機械翻訳)

このセクションでは、メディアサイズや種類、印刷品質、カラーモードなどの一般的な印刷オプションを設定する方法を説明し CUPS web UIます。

前提条件

の説明に従い、管理アクセスを取得 CUPS web UI した 「CUPS Web UI への管理アクセスの取得 (機械翻訳)」

手順

  1. Administration メニューに移動し、 Maintenance → をクリックし Set Default Optionsます。

    cups web ui set defaults n1
  2. 印刷オプションを設定します。

    cups web ui set defaults n2

5.8. CUPS ログでの作業 (機械翻訳)

5.8.1. CUPS ログの種類 (機械翻訳)

Cups は、

  • エラーログ - エラーメッセージ、警告、およびデバッグメッセージを格納します。
  • Access log - CUPS クライアントおよび Web UI がアクセスされた回数についてのメッセージを保存します。
  • ページログ - 各プリントジョブで印刷される総ページ数に関するメッセージを格納します。

Red Hat Enterprise Linux 8 では、つのタイプはすべて、他のプログラムのログとともに systemd-journald に集中的に記録されます。

警告

Red Hat Enterprise Linux 8 では、Red Hat Enterprise Linux 7 で使用されていた /var/log/cups ディレクトリー内の特定のファイルにログが保存されなくなりました。

5.8.2. CUPS ログへのアクセス (機械翻訳)

本セクションでは、以下にアクセスする方法を説明します。

  • すべての CUPS ログ
  • 特定の印刷ジョブの Cups ログ
  • cups ログ(特定の時間枠内)

5.8.2.1. すべての CUPS ログへのアクセス (機械翻訳)

手順
  • systemd-journald から CUPS ログをフィルタリングします。
$ journalctl -u cups

5.8.2.2. 特定の印刷ジョブの CUPS ログへのアクセス (機械翻訳)

手順
  • 特定の印刷ジョブのログをフィルターします。
$ journalctl -u cups JID=N

ここで N 、は、印刷ジョブの数です。

5.8.2.3. 特定の時間枠による CUPS ログへのアクセス (機械翻訳)

手順
  • 指定した時間内にログをフィルターします。
$ journalctl -u cups --since=YYYY-MM-DD --until=YYYY-MM-DD

ここで、 YYYY は年、 MM は月、 DD は日です。

5.8.3. CUPS ログの場所の設定 (機械翻訳)

このセクションでは、CUPS ログの場所を設定する方法を説明します。

Red Hat Enterprise Linux 8 では、CUPS ログはデフォルトで systemd-journald にログインし /etc/cups/cups-files.conf ます。

ErrorLog syslog
重要

Red Hat では、CUPS ログのデフォルトの場所を維持することを推奨しています。

別の場所にログを送信する場合は、以下のように /etc/cups/cups-files.conf ファイルの設定を変更する必要があります。

ErrorLog <your_required_location>
警告

CUPS ログのデフォルトの場所を変更すると、予期しない動作や SELinux の問題が発生する場合があります。

context:configure-printing

コンテキスト:deploying-different-types-of-servers

法律上の通知

Copyright © 2019 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.