システム管理者のガイド
RHEL 7 の導入、設定、および管理
概要
パート I. システムの基本設定
ここでは、キーボードの設定、日付と時刻の設定、ユーザーとグループの管理、権限の取得など、インストール後の基本的なタスクおよび基本的なシステム管理タスクを取り上げます。
第1章 はじめに
本章では、Red Hat Enterprise Linux 7 のインストール直後に実行する必要のある基本的なタスクを説明します。
これらのアイテムには、通常はインストールプロセス中に実行済みとなるタスクが含まれている可能性がありますが、システムの登録など、実行する必要がないものもあることに注意してください。本章の各セクションではこのようなタスクを扱い、インストール中に必要な方法と、別セクションにある関連ドキュメントへのリンクを紹介します。
Red Hat Enterprise Linux 7 のインストールに関する詳細は Red Hat Enterprise Linux 7 インストールガイド を参照してください。
本章では、実行すべきコマンドをいくつか紹介します。root
権限が必要なコマンドには #
がついており、一般ユーザーが実行できるコマンドには $
がついています。
インストール後の一般的なタスクの詳細は、インストールガイドの Red Hat Enterprise Linux 7 インストール後 を参照してください。
インストール後のタスクはすべてコマンドラインから実行できますが、一部のコマンドは Web コンソール から実行することもできます。
Web コンソールの概要および使用できるタスク
Web コンソール はシステム管理ツールで、Web ブラウザーを通して監視サーバーおよび管理サーバーのユーザーインターフェイスを提供します。
Web コンソール は、以下のタスクを実行できます。
- ハードウェア、インターネット接続、パフォーマンスの特徴など、基本的なシステム機能の監視
- システムログファイルのコンテンツの分析
- インターフェイス、ネットワークログ、パケットサイズなど、基本的なネットワーキング機能の設定
- ユーザーアカウントの管理
- システムサービスの監視および設定
- 診断レポートの作成
- カーネルダンプ設定の設定
- SELinux の設定
- システムサブスクリプションの管理
- ターミナルへのアクセス
Web コンソール のインストールおよび使用の詳細は RHEL 7 の Web コンソールを使用したシステムの管理 を参照してください。
1.1. 環境の基本設定
環境の基本設定には以下が含まれます。
- 日付と時刻
- システムロケール
- キーボードのレイアウト
通常、これらのアイテムの設定は、インストールプロセスに含まれます。
詳細は、インストール方法に応じた適切な資料を参照してください。
Anaconda インストーラーを使用してインストールする場合は、以下を参照してください。
Red Hat Enterprise Linux 7 インストールガイドの 日付と時刻、言語サポート、および キーボードの設定。
キックスタートファイルを使用してインストールする場合は、以下を参照してください。
Red Hat Enterprise Linux 7 インストールガイドの キックスタートのコマンドとオプション
インストール後に、環境の基本的な特徴を再設定する必要がある場合は、このセクションの指示に従います。
1.1.1. 日付と時刻の設定について
正確な時間を維持することは、様々な理由で重要です。Red Hat Enterprise Linux 7 では、NTP
プロトコルにより、時間の正確さが確保されます。ユーザー領域のデーモンは、カーネルで実行しているシステムクロックを更新します。システムクロックは、さまざまなクロックソースを使用して時間を維持します。
Red Hat Enterprise Linux 7 は以下のデーモンを使用して、NTP
を実装します。
chronyd
デフォルトでは、
chronyd
デーモンを使用します。これは chrony パッケージから利用できます。chronyd
でNTP
を設定および使用する方法は、18章chrony スイートを使用した NTP 設定 を参照してください。ntpd
ntpd
デーモンは、ntp パッケージから利用できます。ntpd
を使用したNTP
の設定および使用に関する詳細は 19章ntpd を使用した NTP 設定 を参照してください。
デフォルトの chronyd
ではなく ntpd
を使用する場合は、chronyd
を無効にし、19章ntpd を使用した NTP 設定 に従って ntpd
をインストールして有効にし、設定する必要があります。
システムの現在日時の表示
システムの現在日時を表示するには、以下のいずれかのコマンドを使用します。
~]$ date
~]$ timedatectl
timedatectl
コマンドを使用すると、より詳細な出力が得られます。出力には、ユニバーサル時間、現在使用しているタイムゾーン、Network Time Protocol (NTP) 設定ステータスなどの情報が含まれます。
日付と時刻の設定に関する詳細は、3章日付と時刻の設定 を参照してください。
1.1.2. システムロケールの設定について
システム全体にわたるロケール設定は /etc/locale.conf
ファイルに保存され、システム起動の初期段階で systemd
デーモンにより読み込まれます。/etc/locale.conf
に設定したロケール設定は、個別のプログラムやユーザーが上書きしない限り、すべてのサービスやユーザーに継承されます。
システムロケールを処理する基本的なタスク
利用可能なシステムロケール設定のリスト表示
~]$
localectl list-locales
システムロケール設定の現行ステータスの表示
~]$
localectl status
デフォルトのシステムロケール設定または変更
~]# localectl set-locale LANG=locale
システムロケールの設定に関する詳細は、2章システムロケールおよびキーボード設定 を参照してください。
1.1.3. キーボードレイアウトの設定
キーボードレイアウト設定では、テキストコンソールとグラフィカルユーザーインターフェイスで使用するレイアウトを管理します。
キーボードレイアウトを処理する基本的なタスクには、以下が含まれます。
利用可能なキーマップのリスト表示
~]$
localectl list-keymaps
キーマップ設定の現行ステータスの表示
~]$
localectl status
デフォルトのシステムキーマップの設定または変更
~]# localectl set-keymap
キーボードレイアウトの設定に関する詳細は、2章システムロケールおよびキーボード設定 を参照してください。
1.2. ネットワークアクセスの設定および検査
通常、ネットワークアクセスはインストールプロセス中に設定されます。しかし、インストールプロセスでは、一部の共通インストールパスでネットワークインターフェイスの設定を求めるプロンプトは表示されません。その結果、インストール後にネットワークアクセスが設定されていない可能性があります。その場合は、インストール後にネットワークアクセスを設定します。
インストール中のネットワークアクセスの設定に関するクイックスタートは 「インストールプロセス時のネットワークアクセスの設定」 を参照してください。インストール後にネットワークアクセスを設定するには、Red Hat Enterprise Linux 7 ネットワークガイド で説明されている nmcli コマンドラインユーティリティーか、Red Hat Enterprise Linux 7 ネットワークガイド で説明されている テキスト形式のユーザーインターフェイスユーティリティー nmtui のいずれかを使用できます。
nmcli および nmtui ユーティリティーは、1 つ以上の新しいネットワーク接続を追加するだけでなく、既存接続の変更および調査も可能にします。nmcli を使用してネットワーク接続を作成し、管理する場合は「nmcli を使用したインストールプロセス後のネットワーク接続管理」を参照してください。nmtui を使用してネットワーク接続を作成し、管理する場合は 「nmtui を使用したインストールプロセス後のネットワーク接続管理」 を参照してください。
1.2.1. インストールプロセス時のネットワークアクセスの設定
インストールプロセス時のネットワークアクセスの設定方法
- Anaconda インストールプログラムにおけるグラフィカルユーザーインターフェイスのインストール概要画面に表示される メニュー
- Anaconda インストールプログラムのテキストモードの オプション
- キックスタートファイル
インストール完了後に初めてシステムを起動すると、インストール中に設定したネットワークインターフェイスが自動的にアクティブになります。
インストールプロセス中のネットワークアクセスの設定に関する詳細は Red Hat Enterprise Linux 7 インストールガイド を参照してください。
1.2.2. nmcli を使用したインストールプロセス後のネットワーク接続管理
nmcli ユーティリティーを使用してネットワーク接続を管理するには、root
として以下のコマンドを実行します。
接続を新規作成するには、以下を実行します。
~]# nmcli con add type type of the connection "con-name" connection name ifname ifname interface-name the name of the interface ipv4 address ipv4 address gw4 address gateway address
既存の接続を修正するには、以下を実行します。
~]# nmcli con mod "con-name"
すべての接続を表示するには、以下を実行します。
~]# nmcli con show
アクティブな接続を表示するには、以下を実行します。
~]# nmcli con show --active
特定の接続の設定をすべて表示するには、以下を実行します。
~]# nmcli con show "con-name"
nmcli コマンドラインユーティリティーに関する詳細は Red Hat Enterprise Linux 7 ネットワークガイドの Red Hat Enterprise Linux 7 ネットワークガイド を参照してください。
1.2.3. nmtui を使用したインストールプロセス後のネットワーク接続管理
NetworkManager テキストユーザーインターフェイス (TUI) のユーティリティー (nmtui) は、NetworkManager を制御してネットワークを設定するテキストインターフェイスを提供します。
テキスト形式のインターフェイスツールである nmtui のインストールおよび使用に関する詳細は Red Hat Enterprise Linux 7 ネットワークガイド を参照してください。
1.2.4. Web コンソールでのネットワークの管理
Web コンソール の メニューでは、以下が可能です。
- 最近送受信したパケットの表示
- 利用可能なネットワークインターフェイスの最も重要な特徴の表示
- ネットワーキングログのコンテンツの表示
- ネットワークインターフェイスの様々なタイプ (ボンディング、チーム、ブリッジ、VLAN) の追加
図1.1 Web コンソールでのネットワークの管理
1.3. システム登録およびサブスクリプション管理の基本
1.3.1. Red Hat サブスクリプションの概要、およびサブスクリプションを使用できるタスク
Red Hat Enterprise Linux 7 オペレーティングシステムと、そこにインストールされている製品は、サブスクリプションでカバーされています。
Red Hat コンテンツ配信ネットワーク (CDN) サブスクリプションを使用して、以下を追跡します。
- 登録したシステム
- 登録したシステムにインストールされている製品
- インストールされている製品に割り当てられているサブスクリプション
1.3.2. インストール時のシステム登録
本セクションでは、インストールプロセス中に行う Red Hat Enterprise Linux 7 の登録について簡単な概要を説明します。インストールしてもオペレーティングシステムが登録されていない場合は、本セクションを読むことで、インストール中に設定しなかった項目を確認できます。詳細は Red Hat Enterprise Linux 7 インストールガイド を参照してください。
基本的に、インストール中にシステムを登録する方法は 2 つあります。
- 通常、登録は、初期設定の設定プロセスで行います。詳細は Red Hat Enterprise Linux 7 インストールガイド を参照してください。
- または、インストール後のスクリプトでサブスクリプションマネージャー を実行して行います。この場合は、インストールの完了と同時 (システムが最初の再起動を実施する前) に、自動登録を実行します。これを行うには、キックスタートファイルの %post セクションを変更します。インストール後のスクリプトとしてサブスクリプションマネージャーを実行する場合は Red Hat Enterprise Linux 7 インストールガイド を参照してください。
1.3.3. インストール後のシステムの登録
インストールプロセス中にシステムの登録をしなかった場合は、以下の手順に従ってインストール後に登録できます。この手順で紹介するコマンドはすべて root
で実行する必要があります。
システムの登録およびサブスクリプションの割り当て
システムを登録します。
~]# subscription-manager register
コマンドを実行すると、Red Hat カスタマーポータルのユーザー名とパスワードの入力を求めるプロンプトが表示されます。
必要なサブスクリプションのプール ID を確認します。
~]# subscription-manager list --available
このコマンドは、使用している Red Hat アカウントで利用可能なサブスクリプションをすべて表示します。サブスクリプションごとに、プール ID を含むさまざまな情報が表示されます。
pool_id を、確認したプール ID に置き換えて、適切なサブスクリプションをシステムに割り当てます。
~]# subscription-manager attach --pool=pool_id
システムの登録および Red Hat コンテンツ配信ネットワークサブスクリプションの割り当て方法は、7章システム登録およびサブスクリプション管理 を参照してください。
1.3.4. システムの EUS コンテンツへの登録
延長更新サポート (EUS) コンテンツにアクセスするには、以下のようにシステムを登録します。
EUS エンタイトルメントが利用可能であることを確認します。
~]# subscription-manager list --available --matches="*Extended Update Support"
+-------------------------------------------+ Available Subscriptions +-------------------------------------------+ Subscription Name: Extended Update Support Provides: Red Hat Enterprise Linux High Availability for x86_64 - Extended Update Support Red Hat Enterprise Linux Resilient Storage for x86_64 - Extended Update Support Red Hat Enterprise Linux for x86_64 - Extended Update Support Red Hat EUCJP Support (for RHEL Server) - Extended Update Support RHEL for SAP - Extended Update Support Red Hat Enterprise Linux Load Balancer (for RHEL Server) - Extended Update Support Red Hat Enterprise Linux Scalable File System (for RHEL Server) - Extended Update Support Red Hat CodeReady Linux Builder for x86_64 - Extended Update Support RHEL for SAP HANA - Extended Update Support Red Hat Enterprise Linux High Performance Networking (for RHEL Server) - Extended Update Support Oracle Java (for RHEL Server) - Extended Update Support Red Hat S-JIS Support (for RHEL Server) - Extended Update Support SKU: RH00030 Contract: 12069074 Pool ID: 8a99f9ac7238188b01723d9c8a8a06a9 Provides Management: No Available: 8 Suggested: 0 Service Level: Layered Service Type: L1-L3 Subscription Type: Instance Based Starts: 05/22/2020 Ends: 05/21/2021 System Type: Physical
プール ID を使用して該当サブスクリプションを割り当てます。
~]# subscription-manager attach --pool 8a99f9ac7238188b01723d9c8a8a06a9
システムに有効なデフォルトのリポジトリーを EUS バリアントに置き換えます。
~]# subscription-manager repos --disable \*
使用中の RHEL リビジョンの EUS コンテンツセットを表すリポジトリーを有効にします。
~]# subscription-manager repos --enable rhel-7-server-eus-rpms
エンドシステムで必要な、サポート対象のリリースを選択します。
~]# subscription-manager release --set 7.6
現在サポートされている EUS リリースについては、Extended Update Support Add-on を参照してください。
1.3.5. システムを E4S コンテンツに登録する
以下の手順では、システムを登録して E4S コンテンツを使用する方法を説明します。
以下のコマンドを使用してシステムを登録します。
~]# subscription-manager register
E4S エンタイトルメントが利用可能であることを確認します。
~]# subscription-manager list --available --matches="*Update Services for SAP Solutions*"
+-------------------------------------------+ Available Subscriptions +-------------------------------------------+ Subscription Name: Red Hat Enterprise Linux for SAP Solutions, Standard (Physical or Virtual Nodes) Provides: dotNET on RHEL Beta (for RHEL Server) Red Hat CodeReady Linux Builder for x86_64 Red Hat Enterprise Linux for SAP HANA for x86_64 Red Hat Ansible Engine RHEL for SAP HANA - Update Services for SAP Solutions Red Hat Enterprise Linux Scalable File System (for RHEL Server) - Extended Update Support RHEL for SAP HANA - Extended Update Support Red Hat Enterprise Linux Atomic Host Beta Red Hat Beta Red Hat EUCJP Support (for RHEL Server) - Extended Update Support Red Hat Enterprise Linux High Availability for x86_64 Red Hat Enterprise Linux Load Balancer (for RHEL Server) - Extended Update Support dotNET on RHEL (for RHEL Server) Red Hat CodeReady Linux Builder for x86_64 - Extended Update Support Red Hat Enterprise Linux High Availability - Update Services for SAP Solutions Red Hat Enterprise Linux Resilient Storage for x86_64 - Extended Update Support Red Hat Enterprise Linux High Availability for x86_64 - Extended Update Support Oracle Java (for RHEL Server) Red Hat Enterprise Linux Server - Update Services for SAP Solutions Red Hat Software Collections (for RHEL Server) Red Hat Enterprise Linux Scalable File System (for RHEL Server) Red Hat Enterprise Linux High Performance Networking (for RHEL Server) - Extended Update Support RHEL for SAP - Update Services for SAP Solutions Oracle Java (for RHEL Server) - Extended Update Support Red Hat Enterprise Linux Atomic Host Red Hat Developer Tools (for RHEL Server) Red Hat Software Collections Beta (for RHEL Server) Red Hat Enterprise Linux Server Red Hat Enterprise Linux for SAP Applications for x86_64 Red Hat Developer Tools Beta (for RHEL Server) Red Hat Enterprise Linux for x86_64 Red Hat Enterprise Linux for x86_64 - Extended Update Support RHEL for SAP - Extended Update Support Red Hat Developer Toolset (for RHEL Server) Red Hat S-JIS Support (for RHEL Server) - Extended Update Support SKU: RH00764 Contract: 11977725 Pool ID: 8a85f99c6c4825eb016c4a30d3493064 Provides Management: Yes Available: 18 Suggested: 0 Service Level: Standard Service Type: L1-L3 Subscription Type: Instance Based Starts: 03/29/2020 Ends: 12/31/2021 System Type: Physical
プール ID を使用して該当サブスクリプションを割り当てます。
~]# subscription-manager attach --pool=#################
システムに有効なデフォルトのリポジトリーを EUS バリアントに置き換えます。
~]# subscription-manager repos --disable="*"
使用中の RHEL リビジョンの E4S コンテンツセットを表すリポジトリーを有効にします。
~]# subscription-manager --enable=rhel-7-server-e4s-rpms
リポジトリーキャッシュをクリアし、システムのロックを、有効なリリース (SAP アプリケーションをサポートする E4S) にリリースします。
~]# yum clean all && subscription-manager release --set=7.7
1.4. ソフトウェアのインストール
本セクションでは、Red Hat Enterprise Linux 7 システムにソフトウェアをインストールする際の基本的な内容を紹介します。「ソフトウェアインストールの前提条件」 では、ソフトウェアをインストールできるようにするために実行すべき前提条件を説明します。「ソフトウェアパッケージングとソフトウェアリポジトリーのシステム」 では、ソフトウェアパッケージングとソフトウェアリポジトリーに関する基本情報を説明します。また、「サブスクリプションマネージャーおよび yum を使用したソフトウェアインストールの基本タスクの管理」 では、ソフトウェアのインストールに関連する基本的なタスクの実行方法を説明します。
1.4.1. ソフトウェアインストールの前提条件
Red Hat コンテンツ配信ネットワークのサブスクリプションサービスは、Red Hat のソフトウェアインベントリーを処理するメカニズムを提供し、ソフトウェアを追加でインストールしたり、インストール済みのパッケージを更新したりできるようにします。「システム登録およびサブスクリプション管理の基本」 に従って、システムの登録とサブスクリプションの割り当てを完了したら、ソフトウェアのインストールを開始できます。
1.4.2. ソフトウェアパッケージングとソフトウェアリポジトリーのシステム
Red Hat Enterprise Linux システムにあるすべてのソフトウェアは、RPM パッケージに分類されます。RPM パッケージは、特定のリポジトリーに置かれています。Red Hat コンテンツ配信ネットワークにシステムをサブスクライブすると、/etc/yum.repos.d/
ディレクトリーにリポジトリーファイルが作成されます。
パッケージ操作を管理するには、yum
ユーティリティーを使用します。
- パッケージに関する情報の検索
- パッケージのインストール
- パッケージの更新
- パッケージの削除
- 現在利用可能なリポジトリーのリストの確認
- リポジトリーの追加または削除
- リポジトリーの有効化または無効化
ソフトウェアのインストールに関連する基本的なタスクの詳細は 「サブスクリプションマネージャーおよび yum を使用したソフトウェアインストールの基本タスクの管理」 を参照してください。ソフトウェアリポジトリーの管理に関する詳細は 「ソフトウェアリポジトリーの管理」 を参照してください。yum
ユーティリティーの使用に関する詳細は、9章Yum を参照してください。
1.4.3. サブスクリプションマネージャーおよび yum を使用したソフトウェアインストールの基本タスクの管理
以下は、オペレーティングシステムのインストール後に必要になる可能性がある最も基本的なソフトウェアインストールタスクです。
利用可能なリポジトリーをすべて表示します。
~]# subscription-manager repos --list
現在有効になっているリポジトリーをすべて表示します。
~]$
yum repolist
リポジトリーを有効または無効にします。
~]# subscription-manager repos --enable repository
~]# subscription-manager repos --disable repository
特定の文字列に一致するパッケージを検索します。
~]$
yum search
stringパッケージをインストールします。
~]# yum install package_name
パッケージおよびその依存関係をすべて更新します。
~]# yum update
パッケージを更新します。
~]# yum update package_name
パッケージおよびそれに依存しているパッケージをすべてアンインストールします。
~]# yum remove package_name
インストール済みで利用可能なパッケージの情報をすべて表示します。
~]$
yum list all
インストール済みパッケージの情報をすべて表示します。
~]$
yum list installed
1.5. 起動時の systemd サービスの開始
systemd は、Linux オペレーティングシステム用のシステムおよびサービスのマネージャーで、systemd ユニットの概念が使用されています。systemd に関する詳細は 「systemd の概要」 を参照してください。
本セクションでは、システムの起動時にサービスを有効または無効にする方法を説明します。また、Web コンソール を使用してサービスを管理する方法も説明します。
1.5.1. サービスの有効化/無効化
インストールプロセス時に、システムの起動時に有効または無効にするサービスを設定できます。インストール済みのオペレーティングシステムでサービスを有効または無効にすることもできます。
インストールプロセスで、システムの起動時に有効または無効にするサービスのリストを作成する場合は、キックスタートファイルの services
オプションを使用します。
services [--disabled=list] [--enabled=list]
無効にするサービスのリストは、有効にするサービスのリストの前に処理されます。したがって、同じサービスが両方のリストに記載されていると、そのサービスは有効になります。サービスのリストはコンマ区切りのフォーマットで指定する必要があります。サービスのリストには空白文字を使用しないでください。詳細は Red Hat Enterprise Linux 7 インストールガイド を参照してください。
インストール後に、オペレーティングシステムのサービスを有効または無効にするには、以下を実行します。
~]# systemctl enableservice_name
~]# systemctl disableservice_name
詳細は、「システムサービスの管理」 を参照してください。
1.5.2. Web コンソールでのサービスの管理
systemd のターゲット、サービス、ソケット、タイマー、およびパスを管理するには、Web コンソール で を選択します。ここでステータス確認、開始または停止、もしくは有効化または無効化を設定できます。
図1.2 Web コンソールでのサービスの管理
1.5.3. systemd サービス関連情報
systemd に関する詳細は 10章systemd によるサービス管理 を参照してください。
1.6. ファイアーウォール、SELinux、および SSH ログインを使用したシステムセキュリティーの強化
コンピューターセキュリティーとは、盗難やダメージからハードウェア、ソフトウェア、または情報を保護したり、提供するサービスの中断や誤りからコンピューターシステムを保護したりすることです。したがって、コンピューターセキュリティーの保護は、機密データやビジネストランザクションを扱う企業だけではなく、すべてのお客様に欠かせないタスクになります。
コンピューターのセキュリティーには、多種多様の機能およびツールがあります。本セクションでは、オペレーティングシステムのインストール後に設定が必要な基本的なセキュリティー機能のみを説明します。Red Hat Enterprise Linux 7 のセキュリティー保護に関する詳細は Red Hat Enterprise Linux 7 セキュリティーガイド を参照してください。
1.6.1. ファイアウォールが有効で実行しているのを確認
1.6.1.1. ファイアウォールの概要およびシステムセキュリティーの強化方法
ファイアウォールは、デフォルトのセキュリティールールに基づいてネットワークトラフィックの送受信の監視および制御を行うネットワークセキュリティーシステムです。ファイアウォールは、通常、信頼できる安全な内部ネットワークと、その他の外部ネットワークとの間に壁を作ります。
Red Hat Enterprise Linux 7 では、firewalld
サービスがファイアーウォールを提供します。このサービスは、Red Hat Enterprise Linux のインストール時に自動的に有効になりますが、キックスタートの設定などでこのサービスを明示的に無効にした場合は、「ファイアウォールサービスの再有効化」 に従って、再度有効にすることができます。Kickstart ファイルにおけるファイアーウォールの設定オプションの概要は Red Hat Enterprise Linux 7 インストールガイド を参照してください。
1.6.1.2. ファイアウォールサービスの再有効化
インストール後に firewalld
サービスが無効になっている場合は、再度有効にすることを Red Hat は推奨します。
一般ユーザー権限で、firewalld
の現在のステータスを表示します。
~]$ systemctl status firewalld
firewalld
が無効で未実行の場合は、root
ユーザーに切り替えて、そのステータスを変更します。
~]# systemctl start firewalld
~]# systemctl enable firewalld
firewalld
に関するインストール後の手順は Red Hat Enterprise Linux 7 セキュリティーガイド を参照してください。ファイアーウォールの設定および使用に関する詳細は Red Hat Enterprise Linux 7 セキュリティーガイド を参照してください。
1.6.2. SELinux の適切な状態の確認
1.6.2.1. SELinux の概要およびシステムセキュリティーの強化方法
Security Enhanced Linux (SELinux) は、どのプロセスがどのファイル、ディレクトリー、ポートにアクセスできるのかを指定するシステムセキュリティーの追加レイヤーです。
SELinux のステータス
SELinux のステータスには、以下の 2 つがあります。
- 有効
- 無効
SELinux が無効の場合は、Discretionary Access Control (DAC) ルールだけが使用されます。
SELinux モード
SELinux が有効な場合は、以下のいずれのモードで実行できます。
- Enforcing
- Permissive
Enforcing モードは、SELinux のポリシーが強制されることを意味します。SELinux は、SELinux ポリシールールに基づいてアクセスを拒否し、特別に許可された対話だけを有効にします。Enforcing モードは、インストール後のデフォルトモードで、最も安全な SELinux モードです。
Permissive モードは、SELinux のポリシーが強制されていないことを意味します。SELinux はアクセスを拒否しませんが、Enforcing モードでは拒否されたであろうアクションの拒否がログに記録されません。Permissive モードは、インストール時のデフォルトのモードです。Permissive モードは、問題のトラブルシューティング時に AVC (アクセスベクターキャッシュ) へのアクセスを拒否する必要がある場合など、特定のケースで役立ちます。
Red Hat Enterprise Linux 7 の SELinux に関する詳細は Red Hat Enterprise Linux 7 SELinux ユーザーおよび管理者のガイド を参照してください。
1.6.2.2. SELinux の状態の確認
デフォルトでは、SELinux は、インストール時には Permissive モードで動作し、インストールが完了すると Enforcing モードで動作します。
ただし、SELinux を明示的に Permissive モードに設定している場合や、インストール済みのオペレーティングシステムで無効になっている場合もあります。これは、たとえば、キックスタート設定で設定できます。キックスタートファイルにおける SELinux 設定オプションの概要は Red Hat Enterprise Linux 7 インストールガイド を参照してください。
Red Hat は、Enforcing モードでシステムを使用することを推奨します。
現在の SELinux モードを表示し、必要に応じてモードを設定するには、以下を実行します。
SELinux の状態の確認
現在有効な SELinux モードを表示します。
~]$
getenforce
必要に応じて SELinux モードを切り替えます。
切り替えは、一時的または永続的を選択できます。一時的な切り替えでは、システムを再起動すると設定が元に戻りますが、永続的に切り替えると、システムの再起動後もその設定が持続します。
一時的に Enforcing モードまたは Permissive モードのいずれかに切り替えるには、以下を実行します。
~]# setenforce Enforcing
~]# setenforce Permissive
SELinux モードを永続的に設定するには、
/etc/selinux/config
設定ファイルで SELINUX 変数を変更します。たとえば、SELinux を Enforcing モードに切り替えるには、以下のように設定します。
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing
1.6.2.3. Web コンソールでの SELinux の管理
Web コンソール で、 オプションを使用して SELinux の Enforcing ポリシーを有効または無効にします。
デフォルトでは、Web コンソール の SELinux の Enforcing ポリシーが有効になっており、SELinux が Enforcing モードで動作します。このモードを無効にして、SELinux を Permissive モードに切り替えることができます。このように、/etc/sysconfig/selinux ファイルのデフォルト設定から変更した内容は、次回システムを起動すると自動的に元に戻ります。
図1.3 Web コンソールでの SELinux の管理
1.6.3. SSH ベースの認証の使用
1.6.3.1. SSH ベースの認証の概要およびシステムセキュリティーの強化方法
別のコンピューターとの通信の安全性を確保したい場合は、SSH ベースの認証を使用できます。
SSH (Secure Shell) は、クライアントとサーバーとの間の通信を容易にし、SSH を実行するホストシステムにユーザーがリモートでログインできるようにするプロトコルです。SSH は接続を暗号化します。クライアントは、暗号化した認証情報をサーバーへ送信します。セッション中に送受信したすべてのデータは暗号化されて転送されます。
SSH は、パスワードなしでユーザーが認証できるようにします。SSH で、公開鍵/秘密鍵のスキームを使用してこれを行います。
SSH の保護手段に関する詳細は 「主な特長」 を参照してください。
1.6.3.2. SSH 接続の確立
SSH 接続を使用できるようにするには、公開鍵と秘密鍵からなる鍵ペアを作成します。
鍵ファイルを作成してサーバーへコピー
公開鍵と秘密鍵を生成するには、以下を実行します。
~]$
ssh-keygen
この鍵はともに
~/.ssh/
ディレクトリーに保存されます。-
~/.ssh/id_rsa.pub
: 公開鍵 ~/.ssh/id_rsa
: 秘密鍵公開鍵が秘密である必要はありません。秘密鍵の確認に使用されます。秘密鍵は秘密となります。秘密鍵を、鍵の生成プロセスで指定するパスフレーズで保護するように選択できます。パスフレーズにより認証はさらに安全となりますが、これを設定するとパスワードが毎回必要になります。パスワードを毎回入力するのを回避するには、
ssh-agent
コマンドを利用します。これにより、パスフレーズを入力するのはセッション開始時の 1 回のみとなります。ssh-agent
設定に関する詳細は 「鍵ベース認証の使用」 を参照してください。
-
最近変更した公開鍵を、ログインするリモートマシンにコピーします。
~]# ssh-copy-id USER@hostname
その結果、パスワードを入力することなく、安全な方法でシステムにログインできるようになります。
1.6.3.3. SSH root ログインの無効化
デフォルトで有効になっている root
ユーザーの SSH アクセスを無効にすることで、システムセキュリティーを高めることができます。
このトピックに関する詳細は Red Hat Enterprise Linux 7 セキュリティーガイド を参照してください。
SSH root ログインの無効化
/etc/ssh/sshd_config
ファイルにアクセスします。~]# vi /etc/ssh/sshd_config
#PermitRootLogin yes
と書かれた行を以下のように変更します。PermitRootLogin no
sshd
サービスを再起動します。~]# systemctl restart sshd
1.7. ユーザーアカウント管理の基礎
Red Hat Enterprise Linux 7 は、マルチユーザー向けのオペレーティングシステムです。つまり、1 台のマシンにインストールされた 1 つのシステムに、複数のユーザーが別々のコンピューターからアクセスできます。各ユーザーは自身のアカウントで操作します。このような方法でユーザーアカウントを管理することは、Red Hat Enterprise Linux のシステム管理の中心的要素になります。
通常のアカウントおよびシステムアカウント
通常のアカウントは特定システムのユーザー用に作成されます。このようなアカウントは、通常のシステム管理中に追加、削除、および修正できます。
システムアカウントは、システムで特定のアプリケーション識別子を表します。このようなアカウントは通常、ソフトウェアのインストール時にのみ追加または操作され、後で変更することはありません。
システムアカウントは、システムでローカルに利用できると想定されています。アカウントがリモートで設定され、提供されている (LDAP の設定など) と、システムが破損したり、サービスが開始できない場合があります。
システムアカウント用に、1000 番未満のユーザー ID が予約されています。通常のアカウントには、1000 から始まる ID を使用できます。ただし、5000 以降の ID を割り当てることが推奨されます。詳細は、「ユーザーとグループの概要」 を参照してください。ID 割り当てのガイドラインは /etc/login.defs
ファイルで参照できます。
# Min/max values for automatic uid selection in useradd # UID_MIN 1000 UID_MAX 60000 # System accounts SYS_UID_MIN 201 SYS_UID_MAX 999
グループの概要およびその使用目的
グループとは、複数のユーザーアカウントを共通目的 (特定のファイルにアクセス権を与えるなど) で統合するエンティティーです。
1.7.1. ユーザーアカウントとグループを管理する最も基本的なコマンドラインツール
ユーザーアカウントとグループを管理する最も基本的なタスク、および適切なコマンドラインツールは、以下のとおりです。
ユーザー ID およびグループ ID を表示します。
~]$
id
ユーザーアカウントを新規作成します。
~]# useradd [options] user_name
username に属するユーザーアカウントに、新しいパスワードを割り当てます。
~]# passwd user_name
グループにユーザーを追加します。
~]# usermod -a -G group_name user_name
ユーザーおよびグループの管理方法は 4章ユーザーとグループの管理 を参照してください。
ユーザーおよびグループの管理に GUI (グラフィカルユーザーインターフェイス) を使用する場合は 「グラフィカル環境でのユーザーの管理」 を参照してください。
1.7.2. Web コンソールでのユーザーアカウントの管理
Web コンソール でアカウントを管理するには、 メニューを選択します。
図1.4 Web コンソールでのユーザーアカウントの管理
1.8. kdump メカニズムを使用したクラッシュカーネルのダンプ
本セクションは、kdump と呼ばれるカーネルクラッシュダンプメカニズムの概要を説明します。「kdump の概要と使用できるタスク」 では、kdump で使用されるものを簡単に説明します。
kdump
サービスの有効化はインストールプロセスで行われ、デフォルトではインストール時に kdump が有効になります。本セクションでは、「インストールプロセス中の kdump の有効化および実行」 で、インストール時に kdump を有効にする方法を説明し、「インストールプロセス後に kdump のインストールと有効化」 で、インストール後に無効の kdump
サービスを手動で有効にする方法を説明します。
Web コンソール を使用して kdump を設定できます。詳細は、「Web コンソールでの kdump の設定」 を参照してください。
1.8.1. kdump の概要と使用できるタスク
システムがクラッシュした場合は、kdump と呼ばれるカーネルクラッシュダンプのメカニズムを利用できます。これにより、システムのメモリー内容を保存し、後で分析することができるようになります。kdump では、kexec システムコールにより、別のカーネルのコンテキストから Linux カーネルを起動し、BIOS を迂回して、通常は失われてしまう 1 番目のカーネルメモリーの内容を維持するメカニズムを採用しています。
カーネルクラッシュが発生すると、kdump は kexec を使用して 2 番目のカーネル (キャプチャーカーネル) で起動します。この 2 番目のカーネルはシステムメモリーの予約部分にあり、1 番目のカーネルからはアクセスできません。2 番目のカーネルが起動すると、クラッシュしたカーネルメモリーの内容 (クラッシュダンプ) をキャプチャーして保存します。
1.8.2. インストールプロセス中の kdump の有効化および実行
インストール中の kdump の有効化および実行は、Anaconda インストーラー、またはキックスタートファイルの %addon com_redhat_kdump
コマンドのいずれかを使用して行います。
詳細は、インストール方法に応じた適切な資料を参照してください。
Anaconda インストーラーを使用してインストールする場合は、以下を参照してください。
Red Hat Enterprise Linux 7 インストールガイドの Anaconda を使用したインストール
キックスタートファイルを使用してインストールする場合は、以下を参照してください。
Red Hat Enterprise Linux 7 インストールガイドの キックスタートのコマンドとオプション
1.8.3. インストールプロセス後に kdump のインストールと有効化
kdump がインストールされているのを確認し、設定するには、以下を行います。
kdump がインストールされたかどうかの確認、および kdump の設定
システムに kdump がインストールされているかどうかを確認するには、以下のコマンドを実行します。
~]$
rpm -q kexec-tools
kdump がインストールされていない場合は、
root
で以下のコマンドを実行すればインストールできます。~]# yum install kexec-tools
kdump を設定するには、以下を行います。
コマンドラインまたはグラフィカルユーザーインターフェイスのいずれかを使用します。
両方のオプションの詳細は Red Hat Enterprise Linux 7 カーネルクラッシュダンプガイド を参照してください。
グラフィカル設定ツールをインストールする必要がある場合は、以下を実行します。
~]# yum install system-config-kdump
1.8.4. Web コンソールでの kdump の設定
Web コンソール で、 を選択して以下を確認します。
- kdump ステータス
- kdump に予約されているメモリー量
- クラッシュダンプファイルの場所
図1.5 Web コンソールでの kdump の設定
1.8.5. kdump 関連情報
kdump に関する詳細は Red Hat Enterprise Linux 7 カーネルクラッシュダンプガイド を参照してください。
1.9. ReaR を使用したシステムレスキューの実行およびシステムバックアップの作成
ソフトウェアやハードウェアの不具合でオペレーティングシステムが破損した場合は、システムを元に戻すためのメカニズムが必要です。システムの復旧にも、バックアップが役に立ちます。Red Hat は、この両方のニーズを満たすために、ReaR (Relax-and-Recover) ツールの使用を推奨します。
1.9.1. ReaR の概要および使用できるタスク
ReaR は、完全なレスキューシステムの作成を実現する障害復旧およびシステム移行ユーティリティーです。デフォルトでは、このレスキューシステムは、ストレージのレイアウトとブートローダーのみを復元し、実際のユーザーおよびシステムファイルは復元しません。
バックアップソフトウェアを使用すると、障害復旧向けに ReaR を統合できます。
ReaR を使用すると、以下のタスクを実行できます。
- 新規ハードウェア上でレスキューシステムを起動する
- オリジナルのストレージレイアウトを複製する
- ユーザーおよびシステムファイルを復元する
1.9.2. ReaR のインストールおよび設定のクイックスタート
ReaR をインストールするには、root
ユーザーになり、以下のコマンドを実行します。
~]# yum install rear
/etc/rear/local.conf
ファイルの設定を使用して、ReaR を設定します。
詳細は、「基本的な ReaR の使用方法」 を参照してください。
1.9.3. ReaR を使用したレスキューシステム作成のクイックスタート
- レスキューシステムを作成するには、
root
ユーザーになり、以下のコマンドを実行します。
~]# rear mkrescue
ReaR を使用したレスキューシステムの作成方法は 「レスキューシステムの作成」 を参照してください。
1.9.4. バックアップソフトウェアを使用して ReaR を設定するクイックスタート
ReaR には、NETFS と呼ばれる、完全に統合されたビルトインまたは内部のバックアップメソッドが含まれます。
ReaR が内部のバックアップメソッドを使用するように設定するには、/etc/rear/local.conf
ファイルに以下の行を追加します。
BACKUP=NETFS BACKUP_URL=backup location
/etc/rear/local.conf
に以下の行を追加すると、新規バックアップの作成時にこれまでのバックアップアーカイブを維持しておくように ReaR を設定できます。
NETFS_KEEP_OLD_BACKUP_COPY=y
増分バックアップ (実行するたびに変更されたファイルのみがバックアップされる) を設定する場合は、以下の行を /etc/rear/local.conf
に追加します。
BACKUP_TYPE=incremental
ReaR NETFS の内部バックアップメソッドの使用方法は 「ビルトインバックアップの場合」 を参照してください。
サポート対象の外部バックアップメソッドおよびサポート対象外のバックアップメソッドの詳細は 「サポート対象のバックアップメソッド」 および 「サポート対象外のバックアップメソッド」 を参照してください。
1.10. 問題のトラブルシューティングにおけるログファイルの使用
問題をトラブルシューティングする際に、オペレーティングシステムに関するさまざまな情報とメッセージが含まれるログファイルを利用できます。Red Hat Enterprise Linux 7 におけるロギングシステムは、ビルトインの syslog プロトコルに基づいています。特定のプログラムがこのシステムを使用してイベントを記録し、ログファイルに分類します。 これは、オペレーティングシステムの監査およびさまざまな問題のトラブルシューティングに役立ちます。
ログファイルの詳細は、23章ログファイルの表示と管理 を参照してください。
1.10.1. syslog メッセージを処理するサービス
syslog メッセージは、2 つのサービスで処理されます。
-
systemd-journald
デーモン: カーネル、システムの起動プロセスの初期段階、デーモンを開始して実行する際の標準出力およびエラー、syslog からのメッセージを収集し、それらのメッセージをさらに処理するためにrsyslog
サービスに転送します。 -
rsyslog
サービスは、タイプおよび優先順で syslog のメッセージを分類し、/var/log
ディレクトリー内のファイルに書き込みます。 ここでは、ログが永続的に保存されます。
1.10.2. syslog メッセージを保存するサブディレクトリー
syslog メッセージは、そこに含まれるメッセージやログの種類に応じて、/var/log
ディレクトリー配下のさまざまなサブディレクトリーに保存されます。
-
var/log/messages
- 以下に挙げるものを除いたすべての syslog メッセージ -
var/log/secure
- セキュリティーおよび認証に関連するメッセージおよびエラー -
var/log/maillog
- メールサーバーに関連するメッセージおよびエラー -
var/log/cron
- 定期的に実行されるタスクに関連するログファイル -
var/log/boot.log
- システムの起動に関連するログファイル
1.11. Red Hat サポートへのアクセス
Red Hat サポートを利用する場合は、Red Hat カスタマーポータル にアクセスしてください。カスタマーポータルでは、サブスクリプションで利用可能なものをすべて提供します。
このセクションでは、以下について説明します。
- Red Hat のサポートを利用する場合は 「Red Hat カスタマーポータルで利用できる Red Hat サポート」 を参照してください。
- SOS レポート を使用した問題のトラブルシューティングは 「SOS レポートを使用した問題のトラブルシューティング」 を参照してください。
1.11.1. Red Hat カスタマーポータルで利用できる Red Hat サポート
Red Hat カスタマーポータル を使用すると、以下のことができます。
- 新しいサポートケースの作成
- Red Hat 専門スタッフとのライブチャットを開始する
- 電話または電子メールで Red Hat 専門スタッフに問い合わせる
Red Hat カスタマーポータルには、https://access.redhat.com からアクセスしてください。
Red Hat カスタマーポータルサービスでは、以下の方法で Red Hat サポートをご利用いただけます。
- Web ブラウザー
- Red Hat Support Tool
1.11.1.1. Red Hat Support Tool の概要および利用できるタスク
Red Hat Support Tool は、サブスクリプションベースの Red Hat アクセスサービスにテキストコンソールインターフェイスを提供するコマンドラインベースのツールです。このツールは、redhat-support-tool パッケージに含まれています。
Red Hat Support Tool を利用すると、以下のようなサポート関連のタスクを実行できるようになります。
- サポートケースの作成または更新
- Red Hat ナレッジベースソリューションでの検索
- Python および Java のエラーの分析
インタラクティブモードでツールを起動するには、以下のコマンドを入力します。
~]$ redhat-support-tool
Welcome to the Red Hat Support Tool.
Command (? for help):
インタラクティブモードで
を入力すると、利用可能なコマンドが表示されます。Command (? for help): ?
Red Hat Support Tool のインストールおよび利用に関する詳細は、8章Red Hat Support Tool を使用したサポートへのアクセス および Red Hat ナレッジベースの記事 Red Hat Access の Red Hat Support Tool を参照してください。
1.11.2. SOS レポートを使用した問題のトラブルシューティング
SOS レポート は設定の詳細、システム情報、および診断情報を Red Hat Enterprise Linux システムから収集します。サポートケースを作成する際にその SOS レポートを添付してください。
SOS レポート は、sos パッケージで提供されています。 これは、Red Hat Enterprise Linux 7 のデフォルトの最小インストールでは提供されません。
sos パッケージをインストールするには、以下のコマンドを実行します。
~]# yum install sos
SOS レポート を生成するには、以下のコマンドを実行します。
~]# sosreport
サポートケースに SOS レポート を添付する方法は、Red Hat ナレッジベースの記事 How can I attach a file to a Red Hat support case? を参照してください。SOS レポート を添付すると、サポートケース番号の入力を促すプロンプトが表示されます。
SOS レポート の詳細は、Red Hat ナレッジベースの記事 Red Hat Enterprise Linux 4.6 以降における sosreport のロールと取得方法 を参照してください。
第2章 システムロケールおよびキーボード設定
システムロケール では、システムサービスおよびユーザーインターフェイスの言語設定を指定します。キーボードレイアウト の設定では、テキストコンソールおよびグラフィカルユーザーインターフェイスで使用するレイアウトを管理します。
これらの設定は、/etc/locale.conf
設定ファイルを修正するか localectl ユーティリティーを使用して行います。グラフィカルユーザーインターフェイスを使用して設定することもできます。詳細は Red Hat Enterprise Linux 7 インストールガイド を参照してください。
2.1. システムロケールの設定
システム全体にわたるロケール設定は /etc/locale.conf
ファイルに保存され、システム起動の初期段階で systemd
デーモンにより読み込まれます。/etc/locale.conf
に設定したロケール設定は、個別のプログラムやユーザーが上書きしない限り、すべてのサービスやユーザーに継承されます。
/etc/locale.conf
の基本的なファイル形式は、改行で区切られた変数割り当てのリストです。たとえば、ロケールがドイツ語でメッセージが英語の場合、/etc/locale.conf
は以下のようになります。
LANG=de_DE.UTF-8 LC_MESSAGES=C
ここでは LC_MESSAGES オプションを使用して、標準エラー出力に書き出される診断メッセージ用ロケールを決定します。/etc/locale.conf
でさらにロケール設定を指定するには、いくつかのオプションが使用でき、関連性の高いものが 表2.1「/etc/locale.conf で設定可能なオプション」 にまとめられています。これらのオプションの詳細は、man ページの locale(7)
を参照してください。/etc/locale.conf
には、すべてのオプションを可能にする LC_ALL オプションは設定しないように注意してください。
オプション | 詳細 |
---|---|
LANG | システムロケールのデフォルト値になります。 |
LC_COLLATE | ローカルのアルファベット文字列を比較する機能の動作を変更します。 |
LC_CTYPE | 文字処理、分類機能、マルチバイト文字機能の動作を変更します。 |
LC_NUMERIC | 数値が通常出力される方法を設定します (小数点を表すコンマなど)。 |
LC_TIME | 現在の時間表記を、24 時間表記または 12 時間表記に変更します。 |
LC_MESSAGES | 標準エラー出力に書き出される診断メッセージに使用されるロケールを決定します。 |
2.1.1. 現行ステータスの表示
localectl
コマンドを使用すると、システムロケールおよびキーボードレイアウト設定へのクエリーまたは変更が可能になります。現在の設定を表示するには、status
オプションを使用します。
localectl
status
例2.1 現行ステータスの表示
上記のコマンドを実行すると、ロケールの現行設定と、コンソールおよび X11 ウィンドウシステムに設定されているキーボードレイアウトが出力されます。
~]$ localectl status System Locale: LANG=en_US.UTF-8 VC Keymap: us X11 Layout: n/a
2.1.2. 利用可能なロケールのリスト表示
ご使用のシステムで利用可能なロケールをリスト表示するには、以下を入力します。
localectl
list-locales
例2.2 ロケールのリスト表示
特定の英語ロケールを選択するとき、そのロケールがシステムで利用可能であるかどうかわからないとします。以下のコマンドを使用すると、英語ロケールのリストを表示することで確認できます。
~]$ localectl list-locales | grep en_
en_AG
en_AG.utf8
en_AU
en_AU.iso88591
en_AU.utf8
en_BW
en_BW.iso88591
en_BW.utf8
output truncated
2.1.3. ロケールの設定
デフォルトのシステムロケールを設定するには、root
で以下のコマンドを使用します。
localectl
set-locale
LANG
=locale
locale を、localectl
list-locales
コマンドで見つかったロケール名に置き換えます。上記の構文は、表2.1「/etc/locale.conf で設定可能なオプション」 のパラメーター設定にも使用できます。
例2.3 デフォルトロケールの変更
たとえば、イギリス英語をデフォルトのロケールに設定する場合は、最初に list-locales
を使用して、このロケールの名前を見つけます。次に、root
で以下の形式のコマンドを入力します。
~]# localectl set-locale LANG=en_GB.utf8
2.1.4. キックスタートを使用したインストール時にシステムロケールの設定を永続化
Red Hat キックスタートインストールを使用して Red Hat Enterprise Linux をインストールすると、オペレーティングシステムをアップグレードした後にシステムロケールの設定が永続化されないことがあります。
キックスタートファイルの %packages
セクションに --instLang
オプションが含まれる場合は、_install_langs
RPM マクロはこのインストールの特定の値に設定され、インストールしたロケールのセットが調整されます。ただし、この設定は今回のインストールにのみ影響し、その後のアップグレードには影響しません。アップグレードの際に glibc パッケージを再インストールすると、インストール中にユーザーがリクエストしたロケールではなく、ロケール全体がアップグレードされます。
これを回避するには、永続化させるロケールを選択します。次のような方法があります。
- キックスタートインストールを開始する前であれば、キックスタートインストール中に RPM マクロの設定 の手順に従ってキックスタートファイルを修正し、RPM マクロをグローバルに設定する指示を追加します。
- システムをすでにインストールしている場合は、システム全体に RPM マクロの設定 の手順に従って、RPM マクロをシステム全体に設定します。
キックスタートインストール中に RPM マクロの設定
キックスタートファイルの
%post
セクションを変更します。LANG=en_US echo "%_install_langs $LANG" > /etc/rpm/macros.language-conf yum-config-manager --setopt=override_install_langs=$LANG --save
キックスタートファイルの
%packages
セクションを変更します。%packages yum-utils* %end
システム全体に RPM マクロの設定
以下の設定を追加した RPM 設定ファイルを
/etc/rpm/macros.language-conf
に作成します。%_install_langs LANG
LANG は、
instLang
オプションの値です。以下を使用して、
/etc/yum.conf
ファイルを更新します。override_install_langs=LANG
2.2. キーボードレイアウトの変更
キーボードレイアウト設定では、ユーザーはテキストコンソールとグラフィカルユーザーインターフェイスで使用するレイアウトを管理できます。
2.2.1. 現行設定の表示
上記の説明にあるように、現行のキーボードレイアウト設定は、以下のコマンドで確認できます。
localectl
status
例2.4 キーボード設定の表示
以下の出力では、仮想コンソールおよび X11 ウィンドウシステム用に設定されているキーボードレイアウトが表示されています。
~]$ localectl status System Locale: LANG=en_US.utf8 VC Keymap: us X11 Layout: us
2.2.2. 利用可能なキーマップのリスト表示
システムに設定可能なキーボードレイアウトのリストを表示するには、以下を入力します。
localectl
list-keymaps
例2.5 特定のキーマップの検索
grep
を使用すると、上記のコマンド出力から特定のキーマップ名を探すことができます。現在設定されているロケールと互換性のあるキーマップが複数存在する場合も少なくありません。たとえば、利用可能な Czech キーボードレイアウトを見つけるには、以下のコマンドを実行します。
~]$localectl
list-keymaps
|grep
cz
cz cz-cp1250 cz-lat2 cz-lat2-prog cz-qwerty cz-us-qwertz sunt5-cz-us sunt5-us-cz
2.2.3. キーマップの設定
システムでデフォルトのキーボードレイアウトを設定するには、root
で以下のコマンドを使用します。
localectl
set-keymap
map
map を、localectl
list-keymaps
コマンドの出力から取得したキーマップの名前に置き換えます。--no-convert
オプションが渡されない限り、選択した設定は、最も一致する X11 キーボードマッピングに変換してから X11 ウィンドウシステムのデフォルトのキーボードマッピングにも適用されます。これは逆の方法でも適用できます。root
で以下のコマンドを実行すると、両方のキーマップを指定できます。
localectl
set-x11-keymap
map
このコンソールレイアウトを X11 レイアウトに設定しない場合は、--no-convert
オプションを使用します。
localectl
--no-convert
set-x11-keymap
map
このオプションを使用すると、X11 キーマップではこれまでのコンソールレイアウト設定が引き続き使用されます。
例2.6 X11 キーマップの個別設定
グラフィカルインターフェイスでは German キーボードレイアウトを使用し、コンソール操作では引き続き US キーマップを使用します。これを実行するには、root
で次のコマンドを実行します。
~]# localectl --no-convert set-x11-keymap de
ステータスで、設定が正常に行われたかを確認できます。
~]$ localectl status System Locale: LANG=de_DE.UTF-8 VC Keymap: us X11 Layout: de
キーボードレイアウト (map) の他に、以下の 3 つのオプションが指定できます。
localectl
set-x11-keymap
map model variant options
model はキーボードのモデル名、variant はキーボードのバリアント、そして options はオプションコンポーネントに置き換えます。このコマンドを使用すると、キーボードの動作を強化できます。これらのオプションは、デフォルトでは設定されていません。X11 モデル、X11 バリアント、および X11 オプションの詳細は、man ページの kbd(4)
を参照してください。
2.3. 関連情報
Red Hat Enterprise Linux でキーボードレイアウトを設定する方法は、以下を参照してください。
インストールされているドキュメント
-
localectl
(1):localectl
コマンドラインユーティリティーの man ページには、このツールを使用してシステムロケールとキーボードレイアウトを設定する方法が説明されています。 -
loadkeys
(1):loadkeys
コマンドの man ページには、このツールを使用して仮想コンソールでキーボードレイアウトを変更する方法が説明されています。
関連項目
-
6章権限の取得 では、
su
およびsudo
コマンドを使用して管理者権限を取得する方法を説明しています。 -
10章systemd によるサービス管理 では、
systemd
の詳細情報と、systemctl
コマンドを使用してシステムサービスを管理する方法が説明されています。
第3章 日付と時刻の設定
最新のオペレーティングシステムは、以下の 2 つのタイプのクロックを区別します。
- リアルタイムクロック (RTC) は、一般に ハードウェアクロック と呼ばれ、通常、システムボード上の集積回路で、オペレーティングシステムの状態からは完全に独立しており、コンピューターがシャットダウンしても稼働します。
- システムクロック は ソフトウェアクロック とも呼ばれ、カーネルが維持し、その初期値はリアルタイムクロックに基づいています。システムが起動するとシステムクロックは初期化され、リアルタイムクロックからは完全に独立したものになります。
システム時間は常に 協定世界時 (UTC) で維持され、必要に応じてアプリケーション内でローカル時間に変換されます。ローカルタイム は、夏時間 (DST) を考慮に入れた現行タイムゾーンの実際の時刻です。リアルタイムクロックは UTC またはローカルタイムのいずれかを使用できます。これは推奨オプションです。
Red Hat Enterprise Linux 7 は、システムの日付と時刻に関する情報を設定および表示するのに使用できる 3 つのコマンドラインツールを提供します。
-
timedatectl
ユーティリティー (Red Hat Enterprise Linux 7 の新機能で、systemd
に含まれる)。 -
従来の
date
コマンド -
ハードウェアクロックにアクセスするための
hwclock
ユーティリティー
3.1. timedatectl
コマンドの使用
timedatectl ユーティリティーは、systemd
システムおよびサービスマネージャーの一部として配布されており、システムクロック設定を確認および変更できます。このツールを使用すると、現在の日付および時間の変更、タイムゾーンの設定、リモートサーバーとシステムクロックとの自動同期の有効化が可能になります。
カスタマイズした形式で現在の日付と時間を表示する方法は 「date コマンドの使用」 も参照してください。
3.1.1. システムの現在日時の表示
現在の日時をシステムおよびハードウェアクロック設定の詳細情報と共に表示するには、timedatectl
コマンドをオプションなしで実行します。
timedatectl
これで、ローカル時間、ユニバーサル時間、現在使用しているタイムゾーン、ネットワーク時刻プロトコル (NTP
) 設定、DST に関する追加情報が表示されます。
例3.1 システムの現在日時の表示
以下の例は、システムクロックとリモートサーバーの同期に NTP
を使用しないシステムで timedatectl
コマンドを実行したときの出力です。
~]$ timedatectl Local time: Mon 2016-09-16 19:30:24 CEST Universal time: Mon 2016-09-16 17:30:24 UTC Timezone: Europe/Prague (CEST, +0200) NTP enabled: no NTP synchronized: no RTC in local TZ: no DST active: yes Last DST change: DST began at Sun 2016-03-31 01:59:59 CET Sun 2016-03-31 03:00:00 CEST Next DST change: DST ends (the clock jumps one hour backwards) at Sun 2016-10-27 02:59:59 CEST Sun 2016-10-27 02:00:00 CET
timedatectl
は、chrony
または ntpd
のステータスへの変更を即座に認識しません。これらのツールの設定またはステータスを変更した場合は、以下のコマンドを実行します。
~]# systemctl restart systemd-timedated.service
3.1.2. システムの現在時刻の変更
システムの現在時刻を変更するには、root
でシェルプロンプトに以下を入力します。
timedatectl
set-time
HH:MM:SS
HH は時間、MM は分、SS は秒 (すべて 2 桁) の数字に置き換えます。
このコマンドは、システム時間とハードウェアクロックの両方を更新します。結果は、date --set
および hwclock --systohc
コマンドの両方を使用する場合と同様になります。
NTP
サービスが有効になっていると、このコマンドは失敗します。このサービスを一時的に無効にする方法は 「システムクロックのリモートサーバーとの同期」 を参照してください。
例3.2 システムの現在時刻の変更
システムの現在時刻を午後 11 時 26 分に変更するには、root
で以下のコマンドを実行します。
~]# timedatectl set-time 23:26:00
デフォルトでは、システムは UTC を使用するように設定されています。ローカルタイムでクロックを維持するようにシステムを設定するには、root
権限で、set-local-rtc
オプションとともに timedatectl
コマンドを実行します。
timedatectl
set-local-rtc
boolean
ローカルタイムでクロックを維持するようにシステムを設定するには、boolean を yes
(または y
、true
、t
、または 1
) に置き換えます。UTC を使用するようにシステムを設定するには、boolean を no
(または n
、false
、f
、または 0
) に置き換えます。デフォルトオプションは no
です。
3.1.3. システムの現在日の変更
システムの現在の日付を変更するには、root
でシェルプロンプトに以下を入力します。
timedatectl
set-time
YYYY-MM-DD
YYYY は 4 桁の年に、MM と DD は 2 桁の月と日に置き換えます。
時間を指定せずに日付を変更すると、時間は 00:00:00 に設定されることに注意してください。
例3.3 システムの現在日の変更
システムの現在日を 2017 年 6 月 2 日に変更し、現在時刻は変更しない (午後 11:26) 場合は、root
で以下のコマンドを実行します。
~]# timedatectl set-time "2017-06-02 23:26:00"
3.1.4. タイムゾーンの変更
利用可能なタイムゾーンのリストを表示するには、シェルプロンプトで以下を入力します。
timedatectl
list-timezones
現在使用中のタイムゾーンを変更するには、root
で以下を入力します。
timedatectl set-timezone time_zone
time_zone を、timedatectl list-timezones
コマンドで表示される値に置き換えます。
例3.4 タイムゾーンの変更
現在の場所に最も適したタイムゾーンを特定するには、timedatectl
コマンドに list-timezones
オプションを付けて実行します。たとえば、ヨーロッパのタイムゾーンのリストを表示するには、以下のコマンドを実行します。
~]# timedatectl list-timezones | grep Europe
Europe/Amsterdam
Europe/Andorra
Europe/Athens
Europe/Belgrade
Europe/Berlin
Europe/Bratislava
…
タイムゾーンを Europe/Prague
に変更するには、root
で以下を入力します。
~]# timedatectl set-timezone Europe/Prague
3.1.5. システムクロックのリモートサーバーとの同期
上記の説明にある手動での調整の他に、timedatectl
コマンドで NTP
プロトコルを使用して、システムクロックを自動でリモートサーバーのグループと同期させる方法もあります。NTP を有効にすると、chronyd
サービスまたは ntpd
サービスのうち、インストールされている方が有効になります。
NTP
サービスは、以下のコマンドを使用して有効または無効にできます。
timedatectl
set-ntp
boolean
システムでシステムクロックをリモートの NTP
サーバーと同期させるには、boolean を yes
に置き換えます (デフォルトのオプション)。この機能を無効にするには、boolean を no
に置き換えます。
例3.5 システムクロックのリモートサーバーとの同期
システムクロックとリモートサーバーの自動同期を有効にするには、以下を入力します。
~]# timedatectl set-ntp yes
このコマンドは、NTP
サービスがインストールされていないと失敗します。詳細は、「chrony のインストール」 を参照してください。
3.2. date コマンドの使用
date
ユーティリティーはすべての Linux システムで利用可能で、システムの現在日時の表示および設定を可能にします。システムクロックに関する詳細情報をカスタマイズされた形式で表示するために、スクリプト内で使用されることがよくあります。
タイムゾーンの変更、またはシステムクロックとリモートサーバーの自動同期を有効にする方法は 「timedatectl
コマンドの使用」 を参照してください。
3.2.1. システムの現在日時の表示
現在の日時を表示するには、date
コマンドをオプションを付けずに実行します。
date
このコマンドを実行すると、曜日、日付、ローカルタイム、タイムゾーンの省略形、年が表示されます。
date
コマンドは、デフォルトではローカルタイムを表示します。UTC の時間を表示するには、コマンドラインオプション --utc
または -u
を指定してコマンドを実行します。
date
--utc
また、+"format"
オプションをコマンドラインに指定することで、表示される情報のフォーマットをカスタマイズすることもできます。
date +"format"
例3.6「システムの現在日時の表示」 を参考にして、フォーマットを、サポートされる 1 つまたは複数のコントロールシーケンスに置き換えます。よく使用されるフォーマットオプションのリストは 表3.1「よく使われるコントロールシーケンス」 を参照してください。これらのオプションの完全なリストは、man ページの date
(1) を参照してください。
コントロールシーケンス | 詳細 |
---|---|
|
HH フォーマットでの時間 (例: |
|
MM フォーマットでの分 (例: |
|
SS フォーマットでの秒 (例: |
|
DD フォーマットでの日 (例: |
|
MM フォーマットでの月 (例: |
|
YYYY フォーマットでの年 (例: |
|
タイムゾーンの省略形 (例: |
|
非省略形の YYYY-MM-DD フォーマットでの日付 (例: |
|
非省略形の HH:MM:SS フォーマットでの時間 (例: 17:30:24)。このオプションは、 |
例3.6 システムの現在日時の表示
現在日とローカル時間を表示するには、シェルプロンプトで以下を入力します。
~]$ date
Mon Sep 16 17:30:24 CEST 2016
UTC で現在日時を表示するには、シェルプロンプトで以下を入力します。
~]$ date --utc
Mon Sep 16 15:30:34 UTC 2016
date
コマンドの出力をカスタマイズするには、以下を入力します。
~]$ date +"%Y-%m-%d %H:%M" 2016-09-16 17:30
3.2.2. システムの現在時刻の変更
システムの現在時刻を変更するには、root
で date
コマンドに --set
オプションまたは -s
オプションを指定して実行します。
date
--set
HH:MM:SS
HH は時間、MM は分、SS は秒 (すべて 2 桁) の数字に置き換えます。
date
コマンドは、デフォルトでは、システムクロックをローカルタイムに設定します。システムクロックを UTC で設定するには、コマンドラインオプション --utc
または -u
を指定してコマンドを実行します。
date
--set
HH:MM:SS--utc
例3.7 システムの現在時刻の変更
システムの現在時刻を午後 11 時 26 分に変更するには、root
で以下のコマンドを実行します。
~]# date --set 23:26:00
3.2.3. システムの現在日の変更
現在の日付を変更するには、root
で --set
または -s
を指定して date
コマンドを実行します。
date
--set
YYYY-MM-DD
YYYY は 4 桁の年に、MM と DD は 2 桁の月と日に置き換えます。
時間を指定せずに日付を変更すると、時間は 00:00:00 に設定されることに注意してください。
例3.8 システムの現在日の変更
システムの現在日を 2017 年 6 月 2 日に変更し、現在時刻は変更しない (午後 11:26) 場合は、root
で以下のコマンドを実行します。
~]# date --set "2017-06-02 23:26:00"
3.3. hwclock
コマンドの使用
hwclock
は、ハードウェアクロックにアクセスするためのユーティリティーです。これは、リアルタイムクロック (RTC) とも呼ばれています。ハードウェアクロックは使用中のオペレーティングシステムから独立しており、マシンがシャットダウンしても作動します。このユーティリティーは、ハードウェアクロックからの時間を表示するために使用されます。また、hwclock
には、ハードウェアクロック内のシステム上のドリフトを補正する機能も含まれています。
ハードウェアクロックタイムは、年、月、日、時間、分、秒の値を保存します。ローカルタイムや協定世界時 (UTC) の時刻を保存したり、夏時間 (DST) を設定したりすることはできません。
hwclock
ユーティリティーは、/etc/adjtime
ファイルにその設定を保存します。このファイルは、時刻を手動で設定したり、ハードウェアクロックをシステム時間に同期したりするなどの初回の変更時に作成されます。
Red Hat Enterprise Linux バージョン 6 から 7 の間の hwclock
の動作の変更については、Red Hat Enterprise Linux 7 移行計画ガイド を参照してください。
3.3.1. システムの現在日時の表示
root
ユーザーで、オプションを付けずに hwclock
を実行すると、標準出力にローカルタイムの日時が返されます。
hwclock
hwclock
コマンドで --utc
オプションまたは --localtime
オプションを指定しても、ハードウェアクロック時間が UTC またはローカルタイムで表示される訳ではないことに注意してください。これらのオプションは、ハードウェアクロックのいずれかの設定を変更するために使用されます。この時間は常にローカル時間で表示されます。したがって、hwclock --utc
または hwclock --local
コマンドを実行しても、/etc/adjtime
保存された設定が変更されるわけではありません。このコマンドは、/etc/adjtime
に保存されている設定が正しくないことを把握していて設定を変更したくない場合に便利です。一方、このコマンドを誤った方法で使用すると、誤解を招く情報を受け取る可能性があります。詳細は、hwclock
(8) man ページを参照してください。
例3.9 システムの現在日時の表示
ハードウェアクロックからシステムの現在の日付およびローカルタイムを表示するには、root
で以下を実行します。
~]# hwclock Tue 15 Apr 2017 04:23:46 PM CEST -0.329272 seconds
CEST は 中央ヨーロッパ夏時間 (Central European Summer Time) の省略形です。
タイムゾーンの変更方法は 「タイムゾーンの変更」 を参照してください。
3.3.2. 日付と時刻の設定
ハードウェアクロックは、日付と時刻を表示するほかに、手動で特定の時刻に設定することができます。
ハードウェアクロックの日時を変更する場合は、コマンドに --set
および --date
オプションを追加します。
hwclock --set --date "dd mmm yyyy HH:MM"
dd は日 (2 桁)、mmm は月の省略形 (3 文字) に、yyyy は年 (4 桁)、HH は時間 (2 桁)、MM は分 (2 桁) に置き換えます。
同時に、--utc
または --localtime
オプションをそれぞれ追加して、UTC またはローカルタイムのいずれかで時刻を維持するようにハードウェアクロックを設定することもできます。この場合、UTC
または LOCAL
は /etc/adjtime
ファイルに記録されます。
例3.10 ハードウェアクロックの特定の日時への設定
たとえば、日時を 2016 年 10 月 21 日 21:17 に設定し、UTC のハードウェアクロックを維持する場合は、root
で以下のコマンドを実行します。
~]# hwclock --set --date "21 Oct 2016 21:17" --utc
3.3.3. 日付と時刻の同期
ハードウェアクロックとシステムの現在時刻の同期を両方向で実行できます。
以下のコマンドを使用して、ハードウェアクロックを、システムの現在時刻に設定できます。
hwclock --systohc
NTP を使用すると、ハードウェアクロックは 11 分ごとにシステムクロックに自動的に同期されるため、このコマンドは、システムのブート時に、妥当な初期のシステム時間を取得するためにのみ役立つことに注意してください。
または、以下のコマンドを使用してハードウェアクロックからシステム時間を設定できます。
hwclock --hctosys
ハードウェアクロックとシステム時間を同期する場合は、--utc
または --localtime
を追加してローカルタイムまたは UTC でハードウェアクロックを保持するかどうかを指定できます。--set
の使用と同様に、UTC
または LOCAL
は /etc/adjtime
ファイルに記録されます。
hwclock --systohc --utc
コマンドは timedatectl set-local-rtc false
に機能的に類似しており、hwclock --systohc --local
コマンドは timedatectl set-local-rtc true
の代替コマンドになります。
例3.11 システムタイムへのハードウェアクロックの同期
ハードウェアクロックをシステムの現在時刻に設定し、ハードウェアクロックをローカルタイムで維持するには、root
で以下のコマンドを実行します。
~]# hwclock --systohc --localtime
タイムゾーンおよび DST の切り替えに関する問題を避けるには、ハードウェアクロックを UTC で維持することを推奨します。例3.11「システムタイムへのハードウェアクロックの同期」 は、Windows システムとのマルチブートの場合などに役立ちます。この場合、デフォルトでハードウェアクロックがローカルタイムで実行されることが想定され、その他のシステムもすべてローカルタイムを使用して対応する必要があります。同様に仮想マシンでも必要になる場合があります。ホストが提供する仮想ハードウェアクロックがローカルタイムで実行中の場合は、ゲストシステムもローカルタイムを使用するように設定する必要があります。
3.4. 関連情報
Red Hat Enterprise Linux 7 でキーボードレイアウトを設定する方法は、以下を参照してください。
インストールされているドキュメント
-
timedatectl
(1):timedatectl
コマンドラインユーティリティーの man ページでは、このツールを使用して、システムクロックおよびその設定をクエリーして変更する方法が説明されています。 -
date
(1):date
コマンドの man ページでは、サポートされるオプションの完全なリストが提供されます。 -
hwclock
(8):hwclock
コマンドの man ページでは、サポートされるオプションの完全なリストが提供されます。
関連項目
- 2章システムロケールおよびキーボード設定 では、キーボードレイアウトの設定方法を説明しています。
-
6章権限の取得 では、
su
およびsudo
コマンドを使用して管理者権限を取得する方法を説明しています。 -
10章systemd によるサービス管理 では、systemd の詳細情報と、
systemctl
コマンドを使用してシステムサービスを管理する方法が説明されています。
第4章 ユーザーとグループの管理
ユーザーとグループの制御は、Red Hat Enterprise Linux システム管理の中核となる要素です。本章では、グラフィカルユーザーインターフェイスおよびコマンドラインを使用してユーザーとグループを追加、管理、削除する方法を説明し、グループディレクトリーの作成などの高度なトピックを扱います。
4.1. ユーザーとグループの概要
ユーザーは、人 (物理的なユーザーに結び付けられたアカウント)、または使用する特定のアプリケーションに対して存在するアカウントのいずれかを指し、グループは、共通の目的でユーザーをまとめた組織の論理的表現です。グループ内のユーザーは、そのグループが所有するファイルの読み取り、書き込み、実行を行う権限を共有します。
各ユーザーは、ユーザー ID (UID) と呼ばれる一意の数値 ID に関連付けられています。同様に、各グループは グループ ID (GID) に関連付けられています。ファイルを作成するユーザーは、そのファイルの所有者であり、グループ所有者でもあります。ファイルには、所有者、グループ、その他に対して読み取り、書き込み、実行のパーミッションが別々に割り当てられます。ファイル所有者の変更ができるのは root
のみです。アクセスパーミッションは、root
ユーザーとファイル所有者の両方が変更できます。
さらに、Red Hat Enterprise Linux はファイルとディレクトリーに対する アクセス制御リスト (ACL) をサポートします。これにより、所有者以外の特定のユーザーにパーミッションを設定できます。この機能の詳細は 5章アクセス制御リスト を参照してください。
予備のユーザーとグループ ID
Red Hat Enterprise Linux は、1000 以下のユーザー ID とグループ ID を、システムユーザーとグループ用に予約しています。ユーザー管理 には、デフォルトではシステムユーザーが表示されません。予約されているユーザー ID およびグループ ID の詳細は、setup パッケージに記載されています。このドキュメントを表示するには、以下のコマンドを実行します。
cat /usr/share/doc/setup*/uidgid
予約に使用される ID の範囲は今後広がる可能性があるため、ID には 5,000 以降の番号を割り当てることが推奨されます。新規ユーザーに割り当てる ID を 5,000 から始まるようにするには、/etc/login.defs
ファイルのディレクティブ UID_MIN
および GID_MIN
を変更します。
[file contents truncated] UID_MIN 5000 [file contents truncated] GID_MIN 5000 [file contents truncated]
UID_MIN
ディレクティブおよび GID_MIN
ディレクティブを変更する前に作成したユーザーの UID は、デフォルトの 1,000 から開始します。
新規ユーザーおよびグループの ID を 5,000 から始まるようにした場合でも、システムが予約する ID が 1000 より上にならないようにすることが推奨されます。こうすることで、1000 を上限とするシステムとの競合を避けることができます。
4.1.1. ユーザープライベートグループ
Red Hat Enterprise Linux では、UPG (ユーザープライベートグループ) スキームが使用されているため、UNIX グループを簡単に管理できます。ユーザープライベートグループは、新規ユーザーがシステムに追加されるたびに作成されます。ユーザープライベートグループは作成したユーザーと同じ名前となり、そのユーザーがそのユーザープライベートグループの唯一のメンバーになります。
ユーザープライベートグループを使用すると、新規に作成したファイルやディレクトリーに対して確実にデフォルトのパーミッションを設定できます。作成したユーザーと、そのユーザーのグループ の両方がファイルやディレクトリーを修正できるようになります。
新規に作成するファイルまたはディレクトリーに適用される権限を決める設定は umask と呼ばれ、/etc/bashrc
ファイルで設定します。従来の UNIX ベースのシステムでは、umask
は 022
に設定されており、ファイルまたはディレクトリーを作成したユーザーしか変更できませんでした。このスキームでは、作成者のグループのメンバーなど、他のユーザーは変更できませんでした。ただし、UPG スキームでは、すべてのユーザーがそれぞれプライベートグループを持つため、このグループ保護は必須ではなくなりました。詳細は、「umask
を使用した、新規ファイルのデフォルト権限の設定」 を参照してください。
グループのリストは、/etc/group
設定ファイルに保存されます。
4.1.2. シャドウパスワード
マルチユーザー環境では、shadow-utils パッケージで提供される シャドウパスワード を使用することが非常に重要です。これを使用することで、システムの認証ファイルのセキュリティーを強化できます。このため、インストールプログラムでは、デフォルト設定でシャドウパスワードを有効にしています。
以下は、UNIX ベースシステムでパスワードを格納する従来の方法と比べた場合のシャドウパスワードの利点です。
-
シャドウパスワードは、暗号化されたパスワードハッシュを、あらゆるユーザーが読み取り可能な
/etc/passwd
ファイルから、root
ユーザーのみが読み取り可能な/etc/shadow
に移動して、システムセキュリティーを向上させます。 - シャドウパスワードは、パスワードエージングに関する情報を保存します。
-
シャドウパスワードを使用すると、
/etc/login.defs
ファイルで設定したセキュリティーポリシーの実施が可能になります。
shadow-utils パッケージが提供するほとんどのユーティリティーは、シャドウパスワードが有効かどうかに関わらず適切に動作します。ただし、パスワードエージングの情報は /etc/shadow
ファイルにのみ格納されているため、シャドウパスワードを有効にしないと、以下のユーティリティーとコマンドは動作しません。
-
パスワードエージングパラメーターを設定する
chage
ユーティリティー詳細は、Red Hat Enterprise Linux 7 セキュリティーガイドの Password Security セクションをご覧ください。 -
/etc/group
ファイルを管理するgpasswd
ユーティリティー -
-e, --expiredate
オプションまたは-f (--inactive)
オプションを使用したusermod
コマンド -
-e, --expiredate
オプションまたは-f, --inactive
オプションを使用したuseradd
コマンド
4.2. グラフィカル環境でのユーザーの管理
Users ユーティリティーは、グラフィカルユーザーインターフェイスで、ローカルユーザーを表示、編集、追加、削除できます。
4.2.1. ユーザー設定ツールの使用
Super キーを押してアクティビティーの概要に入り、Users
と入力して Enter を押します。ユーザー 設定ツールが表示されます。Super キーはキーボードや他のハードウェアによって外見が異なりますが、通常はスペースバーの左側にある Windows キーまたは Command キーになります。また、画面の右上にある自分のユーザー名をクリックし、設定メニューから ユーザー ユーティリティーを開くこともできます。
ユーザーアカウントに変更を加えるには、最初に root
で認証するよう求められます。ユーザーを追加および削除するには、 ボタンと ボタンをそれぞれクリックします。管理グループ wheel
にユーザーを追加するには、アカウントの種類を Standard
から Administrator
に変更します。ユーザーの言語設定を編集するには、言語を選択します (ドロップダウンメニューが表示されます)。
図4.1 ユーザー設定ツール
新しいユーザーを作成しても、パスワードを設定するまでアカウントは無効になります。Password (パスワード) ドロップダウンメニュー (図4.2「パスワードメニュー」 を参照) には、管理者がすぐにパスワードを設定できるオプションが含まれます。最初のログイン時にユーザーがパスワードを選択するか、ログインパスワードなしでゲストアカウントを作成します。また、このメニューからアカウントを無効または有効にすることもできます。
図4.2 パスワードメニュー
4.3. コマンドラインツールの使用
「グラフィカル環境でのユーザーの管理」 で説明されている Users 設定ツール (ユーザーの基本的な管理用) のほかに、表4.1「ユーザーとグループを管理するためのコマンドラインユーティリティー」 に挙げられているユーザーとグループの管理コマンドラインツールを使用できます。
ユーティリティー | 詳細 |
---|---|
| ユーザー ID およびグループ ID を表示します。 |
| ユーザーアカウントを追加、修正、削除する標準ユーティリティーです。 |
| グループを追加、修正、削除する標準ユーティリティーです。 |
|
ユーティリティーは、主に、 |
| パスワード、グループ、関連シャドウファイルを検証するユーティリティーです。 |
| 通常のパスワードをシャドウパスワードに変換する、またはシャドウパスワードから通常のパスワードに変換するユーティリティーです。 |
| pwconv、pwunconv と同様、このユーティリティーは、グループアカウントのシャドウ化された情報を変換するのに使用できます。 |
4.3.1. 新規ユーザーの追加
システムにユーザーを追加するには、root
で次のコマンドを実行します。
useradd
options username
ここで、options は 表4.2「一般的な useradd コマンドラインオプション」 で説明されているコマンドラインオプションです。
デフォルトでは、useradd
コマンドは、ロックされたユーザーアカウントを作成します。アカウントをアンロックするには、root
で次のコマンドを実行して、パスワードを割り当てます。
passwd
username
オプションで、パスワードエージングポリシーを設定できます。詳細は、Red Hat Enterprise Linux 7 セキュリティーガイド の Password Security セクションをご覧ください。
オプション | |
---|---|
| comment にはどの文字列でも使用できます。このオプションは、通常、ユーザーの氏名を指定するのに使用されます。 |
|
デフォルトの |
| YYYY-MM-DD の形式でアカウントを無効にする日付です。 |
|
パスワードが失効してからアカウントが無効になるまでの日数です。 |
| ユーザーのデフォルト (プライマリー) グループ用のグループ名またはグループ番号です。グループは、ここで指定するよりも前に作成されている必要があります。 |
| ユーザーがメンバーとなる追加 (補助、デフォルト以外のもの) のグループ名またはグループ番号のリストで、コンマで区切ります。グループは、ここで指定する前に作成しておく必要があります。 |
| ホームディレクトリーがない場合は、これを作成します。 |
| ホームディレクトリーを作成しません。 |
| ユーザー用のユーザープライベートグループを作成しません。 |
|
|
| UID が 1000 未満でホームディレクトリーがないシステムアカウントを作成します。 |
|
ユーザーのログインシェルです。デフォルトは |
| ユーザーのユーザー ID です。一意の番号で 999 より大きい数でなければなりません。 |
Red Hat Enterprise Linux 7 では、システムユーザーおよび通常のユーザーのデフォルトの ID 範囲が変更になりました。以前はシステムユーザーに UID 1 ~ 499 が使用され、それよりも上の値が通常のユーザーに使用されていました。変更後は、システムユーザーのデフォルト範囲が 1 ~ 999 になりました。この変更により、既存のユーザーの UID と GID に 500 ~ 999 を使用している場合に Red Hat Enterprise Linux 7 に移行すると、問題が発生する場合があります。UID と GID のデフォルトの範囲は /etc/login.defs
ファイルで変更できます。
プロセスの説明
以下の手順は、シャドウパスワードが有効なシステムで useradd juan
コマンドを実行したときに発生する内容を解説したものです。
juan
用の新しい行が/etc/passwd
に作成されます。juan:x:1001:1001::/home/juan:/bin/bash
この行には以下の特徴があります。
-
ユーザー名
juan
で始まります。 -
パスワードフィールドには
x
が表示されます。これは、システムがシャドウパスワードを使用していることを示しています。 - 999 より大きい UID が作成されます。Red Hat Enterprise Linux 7 では、1000 未満の UID は、システムが使用するために予約されています。1000 未満の UID をユーザーに割り当てないでください。
- 999 より大きい GID が作成されます。Red Hat Enterprise Linux 7 では、1000 未満の GID は、システムが使用するために予約されています。1000 未満の GID はユーザーに割り当てないでください。
- オプションの GECOS 情報は空白のままになっています。GECOS フィールドは、氏名や電話番号などユーザーの追加情報を提供するために使用されます。
-
juan
のホームディレクトリーが、/home/juan/
に設定されます。 -
デフォルトシェルは
/bin/bash
に設定されます。
-
ユーザー名
juan
用の新しい行が/etc/shadow
に作成されます。juan:!!:14798:0:99999:7:::
この行には以下の特徴があります。
-
ユーザー名
juan
で始まります。 /etc/shadow
ファイルのパスワードフィールドには 2 つの感嘆符 (!!
) が表示され、アカウントがロックされていることを示しています。注記暗号化したパスワードを、
-p
フラグを使用して渡す場合は、そのユーザー用に、/etc/shadow
ファイルに新しい行が追加されます。- パスワードは有効期限なしで設定されています。
-
ユーザー名
juan
という名前のグループ用に、新しい行が/etc/group
に作成されます。juan:x:1001:
ユーザーと同じ名前のグループは、ユーザープライベートグループ と呼ばれます。ユーザープライベートグループの詳細は「ユーザープライベートグループ」を参照してください。
/etc/group
に作成した行には、以下の特徴があります。-
グループ名
juan
で始まります。 -
パスワードフィールドには
x
が表示されます。これは、システムがシャドウグループパスワードを使用していることを示しています。 -
GID は、
/etc/passwd
で設定されているjuan
のプライマリーグループに記載されているものと一致します。
-
グループ名
juan
という名前のグループ用の新しい行が/etc/gshadow
に作成されました。juan:!::
この行には以下の特徴があります。
-
グループ名
juan
で始まります。 -
/etc/gshadow
ファイルのパスワードフィールドには 1 つの感嘆符 (!
) が表示され、グループがロックされていることを示しています。 - その他のフィールドはすべて空白です。
-
グループ名
/home
ディレクトリーに、ユーザーjuan
のディレクトリーが作成されます。~]# ls -ld /home/juan drwx------. 4 juan juan 4096 Mar 3 18:23 /home/juan
このディレクトリーは、ユーザー
juan
およびグループjuan
が所有します。このディレクトリーの 読み取り、書き込み、および 実行 の権限は、juan
ユーザーにのみ割り当てられます。その他のパーミッションは拒否されます。(デフォルトユーザー設定を含む)
/etc/skel/
ディレクトリーが、新しい/home/juan/
ディレクトリーにコピーされます。~]# ls -la /home/juan total 28 drwx------. 4 juan juan 4096 Mar 3 18:23 . drwxr-xr-x. 5 root root 4096 Mar 3 18:23 .. -rw-r--r--. 1 juan juan 18 Jun 22 2010 .bash_logout -rw-r--r--. 1 juan juan 176 Jun 22 2010 .bash_profile -rw-r--r--. 1 juan juan 124 Jun 22 2010 .bashrc drwxr-xr-x. 4 juan juan 4096 Nov 23 15:09 .mozilla
この時点では、juan
という名前のロックされたアカウントがシステムに存在します。このアカウントをアクティブにするには、管理者が passwd
コマンドを使用して、このアカウントにパスワードを割り当てる必要があります。オプションでパスワードエージングのガイドラインを設定することもできます (詳細は Red Hat Enterprise Linux 7 セキュリティーガイド の パスワードセキュリティー を参照)。
4.3.2. 新規グループの追加
システムに新しいグループを追加するには、root
で次のコマンドを実行します。
groupadd options group_name
ここで、options は 表4.3「一般的な groupadd コマンドラインオプション」 で説明されているコマンドラインオプションです。
オプション | 説明 |
---|---|
|
|
| グループのグループ ID です。一意の番号で 999 より大きい数でなければなりません。 |
|
|
| GID が重複するグループの作成を許可します。 |
| 新規グループ用にこの暗号化されたパスワードを使用します。 |
| GID が 1000 未満のシステムグループを作成します。 |
4.3.3. 既存グループへの既存ユーザーの追加
usermod
ユーティリティーを使用して、既存のユーザーを既存のグループに追加します。
usermod
のさまざまなオプションは、ユーザーのプライマリーグループと補助グループにさまざまな影響を与えます。
ユーザーのプライマリーグループを上書きするには、root
で以下のコマンドを実行します。
~]# usermod -g group_name user_name
ユーザーの補助グループを上書きするには、root
で以下のコマンドを実行します。
~]# usermod -G group_name1,group_name2,... user_name
この場合、ユーザーの補助グループは、すべて新しいグループに置き換えられます。
ユーザーの補助グループにグループを追加するには、root
で以下のコマンドのいずれかを実行します。
~]# usermod -aG group_name1,group_name2,... user_name
~]# usermod --append -G group_name1,group_name2,... user_name
この場合は、新しいグループが、ユーザーの現在の補助グループに追加されます。
4.3.4. グループディレクトリーの作成
システム管理者は、通常、主要なプロジェクトに対してそれぞれグループを作成し、そのプロジェクトのファイルにアクセスする必要がある場合に、そのユーザーをグループに割り当てる傾向があります。こうした従来型のスキームの場合は、誰かがファイルを作成すると、そのユーザーが属するプライマリーグループにそのファイルが関連付けられるため、ファイル管理は困難になります。このため、1 人のユーザーが複数のプロジェクトに関わっている場合に、正しいファイルを正しいグループに関連付けることは難しくなります。一方、UPG スキームを使用すると、グループは setgid ビットセットを持つディレクトリーに作成されたファイルに自動的に割り当てられます。setgid ビットにより、共通のディレクトリーを共有するグループプロジェクトを非常に簡単に管理できます。ユーザーがディレクトリー内で作成するすべてのファイルは、ディレクトリーを所有するグループが所有するためです。
たとえば、あるグループが /opt/myproject/
ディレクトリーのファイルを作業する必要があるとします。グループの中には、このディレクトリーのコンテンツの修正を信頼して任せられる人もいますが、全員ではありません。
root
で以下のコマンドを実行して、/opt/myproject/
ディレクトリーを作成します。mkdir /opt/myproject
myproject
グループをシステムに追加します。groupadd myproject
/opt/myproject/
ディレクトリーのコンテンツを、myproject
グループに関連付けます。chown root:myproject /opt/myproject
グループのユーザーがそのディレクトリーにファイルを作成し、setgid ビットを設定できるようにします。
chmod 2775 /opt/myproject
この設定により、ユーザーがファイルを作成するたびに、管理者がファイルのパーミッションを変更しなくても、
myproject
グループの全メンバーが/opt/myproject/
ディレクトリーにファイルを作成および編集できます。パーミッションが正しく設定されていることを確認するには、以下のコマンドを実行します。~]# ls -ld /opt/myproject drwxrwsr-x. 3 root myproject 4096 Mar 3 18:31 /opt/myproject
myproject
グループにユーザーを追加します。usermod -aG myproject username
4.3.5. umask
を使用した、新規ファイルのデフォルト権限の設定
プロセスがファイルを作成すると、そのファイルにはデフォルト権限 (-rw-rw-r--
など) が設定されます。こうした初期権限は、ファイルモード作成マスク (ファイル権限マスク または umask とも呼ばれる) で部分的に定義されます。たとえば、bash の umask は、デフォルトで 0022
となるなど、すべてのプロセスにそれぞれの umask が設定されています。プロセスの umask は変更できます。
umask を設定するもの
umask は、標準のファイル権限に対応するビットで設定されています。たとえば、umask 0137
の場合、その数字は次のような意味になります。
-
0
= 意味なし。必ず0
になります (umask は特別なビットに影響しません)。 -
1
= オーナーの権限。実行ビットが設定されます。 -
3
= グループの権限。実行ビットおよび書き込みビットが設定されます。 -
7
= その他のユーザーの権限。実行ビット、書き込みビット、読み取りビットが設定されます。
umask では 2 進法、8 進法、またはシンボリック表示が使用できます。たとえば、8 進法の 0137
はシンボリック表示では u=rw-,g=r--,o=---
となります。シンボリック表示は 8 進法表示とは異なり、禁止権限ではなく、許可された権限を示します。
umask の仕組み
umask は、ファイルに パーミッションを付与するのを禁止する ようにします。
- umask に設定しているビットは、ファイルには設定されません。
- umask に設定していないビットは、他の要素にもよりますが、ファイルに設定されます。
以下の図は、umask 0137
が新しいファイルの作成にどのように影響するかを示しています。
図4.3 ファイルの作成時に umask を適用
セキュリティー上の理由から、レギュラーファイルにはデフォルトで実行権限が設定されていません。したがって、umask がいかなる権限も禁止しない 0000
であっても、新しいレギュラーファイルは実行権限を持ちません。ただし、ディレクトリーは実行権限を持つ状態で作成できます。
[john@server tmp]$ umask 0000 [john@server tmp]$ touch file [john@server tmp]$ mkdir directory [john@server tmp]$ ls -lh . total 0 drwxrwxrwx. 2 john john 40 Nov 2 13:17 directory -rw-rw-rw-. 1 john john 0 Nov 2 13:17 file
4.3.5.1. シェルで umask の管理
bash
、ksh
、zsh
、tcsh
などのよく使用されるシェルでは、umask は、umask
シェルの builtin
を使用して管理されます。シェルから起動したプロセスは、その umask を継承します。
現在のマスクの表示
現在の umask を 8 進法で表示するには、以下のコマンドを実行します。
~]$ umask
0022
現在の umask をシンボリック表示で表示するには、以下のコマンドを実行します。
~]$ umask -S
u=rwx,g=rx,o=rx
umask を使用したシェルにおけるマスクの設定
8 進法を使用して、現行シェルセッションに umask を設定するには、以下のコマンドを実行します。
~]$ umask octal_mask
octal_mask を、0
から 7
の 4 桁以下の数値に置き換えます。3 桁以下の数値を指定すると、頭に 0 が付いた 4 桁の数値として権限が設定されます。たとえば、入力したコマンドが umask 7
であれば、そのコマンドの数値は 0007
として解釈されます。
例4.1 8 進法を使用した umask の設定
新しいファイルで、オーナーとグループに書き込み権限と実行権限を持たせず、その他のユーザーにはいかなる権限も持たせないようにするには、以下を実行します。
~]$ umask 0337
もしくは、簡潔に次のコマンドを実行します。
~]$ umask 337
シンボリック表記法を使用して、現行シェルセッションの umask を設定するには、以下のコマンドを実行します。
~]$ umask -S symbolic_mask
例4.2 シンボリック表示を使用した umask の設定
シンボリック表記法を使用して umask 0337
を設定するには、次のコマンドを実行します。
~]$ umask -S u=r,g=r,o=
デフォルトシェルの umask での作業
シェルには、通常、デフォルトの umask が設定されている設定ファイルがあります。bash
の場合は /etc/bashrc
です。デフォルトの bash
の umask を表示するには、以下のコマンドを実行します。
~]$ grep -i -B 1 umask /etc/bashrc
出力では、umask の設定が、umask
コマンドまたは UMASK
変数のいずれかを使用して行われていることが示されます。以下の例では、umask コマンドを使用して、umask
が 022
に設定されています。
~]$ grep -i -B 1 umask /etc/bashrc # By default, we want umask to get set. This sets it for non-login shell. -- if [ $UID -gt 199 ] && [ “id -gn” = “id -un” ]; then umask 002 else umask 022
bash
のデフォルト umask を変更するには、/etc/bashrc
で umask
コマンドの呼び出し、または UMASK
変数の割り当てを変更します。この例では、デフォルトの umask を 0227
に変更します。
if [ $UID -gt 199 ] && [ “id -gn” = “id -un” ]; then
umask 002
else
umask 227
特定ユーザーのデフォルトシェルの umask での作業
デフォルトでは、新規ユーザーのデフォルトの bash
の umask は、/etc/bashrc
に定義したものに設定されます。
特定ユーザーの bash
umask を変更するには、そのユーザーの $HOME/.bashrc
ファイルで、umask
コマンドの呼び出しを追加します。たとえば、ユーザー john
の bash
の umask を 0227
に変更するには、次のコマンドを実行します。
john@server ~]$ echo 'umask 227' >> /home/john/.bashrc
新しく作成されたホームディレクトリーのデフォルト権限設定
作成したユーザーホームディレクトリーの権限を変更するには、/etc/login.defs
ファイルで UMASK
変数を変更します。
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK 077
4.4. 関連情報
Red Hat Enterprise Linux でユーザーとグループを管理する方法は、下記の資料を参照してください。
インストールされているドキュメント
ユーザーおよびグループの管理に使用する各種ユーティリティーの詳細情報は、以下の man ページを参照してください。
-
useradd
(8):useradd
コマンドの man ページでは、新しいユーザーを作成する方法が説明されています。 -
userdel
(8):userdel
コマンドの man ページでは、ユーザーを削除する方法が説明されています。 -
usermod
(8):usermod
コマンドの man ページでは、ユーザーを変更する方法が説明されています。 -
groupadd
(8):groupadd
コマンドの man ページでは、新しいグループを作成する方法が説明されています。 -
groupdel
(8):groupdel
コマンドの man ページでは、グループを削除する方法が説明されています。 -
groupmod
(8):groupmod
コマンドの man ページでは、グループのメンバーシップを修正する方法が説明されています。 -
gpasswd
(1):gpasswd
コマンドの man ページでは、/etc/group
ファイルを管理する方法が説明されています。 -
grpck
(8):grpck
コマンドの man ページでは、/etc/group
ファイルの統合を確認する方法が説明されています。 -
pwck
(8):pwck
コマンドの man ページでは、/etc/passwd
ファイルおよび/etc/shadow
ファイルの統合を確認する方法が説明されています。 -
pwconv
(8):pwconv
、pwunconv
、grpconv
、およびgrpunconv
の各コマンドの man ページでは、パスワードおよびグループ用にシャドウ情報を変換する方法が説明されています。 -
id
(1):id
コマンドの man ページでは、ユーザー ID およびグループ ID を表示する方法が説明されています。 -
umask
(2):umask
コマンドの man ページでは、ファイルモード作成マスクの使用方法が説明されています。
関連する設定ファイルの詳細は、以下をご覧ください。
-
group
(5):/etc/group
ファイルの man ページでは、システムグループを定義する方法が説明されています。 -
passwd
(5):/etc/passwd
ファイルの man ページでは、このファイルを使用して、ユーザー情報を定義する方法が説明されています。 -
shadow
(5):/etc/shadow
ファイルの man ページでは、システムでパスワードおよびアカウントの有効期限情報を設定する方法が説明されています。
オンラインドキュメント
- Red Hat Enterprise Linux 7 セキュリティーガイド: Red Hat Enterprise Linux 7 の セキュリティーガイド では、パスワードのエージングとユーザーアカウントのロックを有効にして、パスワードとワークステーションのセキュリティーを高める追加情報を提供しています。
関連項目
-
6章権限の取得 では、
su
およびsudo
コマンドを使用して管理者権限を取得する方法を説明しています。
第5章 アクセス制御リスト
ファイルとディレクトリーには、ファイルの所有者、そのファイルに関連したグループ、およびシステムを使用する他のすべてのユーザーの権限セットが設定されます。しかし、これらの権限には制限があります。たとえば、ユーザーごとに異なる権限を設定することはできません。そのため アクセス制御リスト (ACL) が実装されています。
Red Hat Enterprise Linux カーネルは、ext3 ファイルシステムと NFS でエクスポートしたファイルシステムに対して ACL サポートを提供します。ACL は、Samba 経由でアクセスする ext3 ファイルシステムでも認識されます。
ACL の実装には、カーネルでのサポートと acl
パッケージが必要になります。このパッケージには、ACL 情報の追加、修正、削除および、取得のためのユーティリティーが同梱されています。
cp
コマンドと mv
コマンドは、ファイルとディレクトリーに関連するすべての ACL のコピーまたは移動を実行します。
5.1. ファイルシステムのマウント
ファイルやディレクトリー用に ACL を使用する前に、そのファイルまたはディレクトリーのパーティションを ACL サポートでマウントする必要があります。ローカルの ext3 ファイルシステムの場合は、以下のコマンドでマウントできます。
mount -t ext3 -o acl device-name partition
以下に例を示します。
mount -t ext3 -o acl /dev/VolGroup00/LogVol02 /work
もしくは、パーティションが /etc/fstab
ファイルにリストされている場合は、パーティションのエントリーに acl
オプションを含むことができます。
LABEL=/work /work ext3 acl 1 2
Samba 経由で ext3 ファイルシステムにアクセスし、そのアクセスに対して ACL が有効になっている場合は、ACL が認識されます。これは、--with-acl-support
オプションでコンパイルされているためです。Samba 共有のアクセス時またはマウント時に特別なフラグは必要ありません。
5.1.1. NFS
デフォルトでは、NFS サーバーでエクスポートされているファイルシステムが ACL をサポートし、NFS クライアントが ACL を読み込める場合は、クライアントシステムで ACL が使用されています。
サーバーを設定する際に NFS 共有上の ACL を無効にするには、/etc/exports
ファイルに no_acl
オプションを追加します。クライアントに NFS 共有をマウントする際に ACL を無効にするには、コマンドライン経由、または /etc/fstab
ファイルに no_acl
オプションを追加してマウントします。
5.2. アクセス ACL の設定
ACL には、アクセス ACL と デフォルト ACL と 2 つのタイプがあります。アクセス ACL は、特定のファイルまたはディレクトリーに対するアクセス制御リストです。デフォルト ACL は、ディレクトリーにのみ適用されます。ディレクトリー内のファイルにアクセス ACL が設定されていない場合は、そのディレクトリーにデフォルト ACL のルールが適用されます。デフォルト ACL は任意です。
ACL は以下のように設定できます。
- 各ユーザー
- 各グループ
- 実効権マスクを使用して
- ファイルのユーザーグループに属さないユーザーに対して
setfacl
ユーティリティーは、ファイルとディレクトリー用の ACL を設定します。-m
オプションを使用すると、ファイルまたはディレクトリーの ACL を追加または修正できます。
# setfacl -m rules files
ルール (rules) は、以下の形式で指定する必要があります。複数のルールをコンマで区切って同じコマンドに指定することもできます。
u:uid:perms
- ユーザーにアクセス ACL を設定します。ユーザー名または UID を指定できます。システムで有効な任意のユーザーを指定できます。
g:gid:perms
- グループにアクセス ACL を設定します。グループ名または GID を指定できます。システムで有効な任意のグループを指定できます。
m:perms
- 実効権マスクを設定します。このマスクは、所有グループの全権限と、ユーザーおよびグループの全エントリーを結合したものです。
o:perms
- ファイルのグループに属さないユーザーにアクセス ACL を設定します。
権限 (perms) は、読み取り、書き込み、および実行を表す r
、w
、および x
の文字の組み合わせで表示されます。
ファイルまたはディレクトリーにすでに ACL が設定されている状態で、setfacl
コマンドを使用した場合は、設定するルールが既存の ACL に追加されるか、既存のルールが修正されます。
例5.1 読み取りと書き込みの権限付与
たとえば、ユーザー andrius に読み取りと書き込みの権限を付与するには以下を実行します。
# setfacl -m u:andrius:rw /project/somefile
ユーザー、グループ、またはその他のユーザーからすべての権限を削除するには、-x
オプションにいずれの権限も指定せずにコマンドを実行します。
# setfacl -x rules files
例5.2 すべての権限の削除
たとえば、UID 500 のユーザーからすべての権限を削除するには以下を実行します。
# setfacl -x u:500 /project/somefile
5.3. デフォルト ACL の設定
デフォルト ACL を設定するには、d:
をルールの前に追加してから、ファイル名ではなくディレクトリー名を指定します。
例5.3 デフォルト ACL の設定
たとえば、/share/
ディレクトリーにデフォルト ACL を設定し、ユーザーグループに属さないユーザーの読み取りと実行を設定するには、以下のコマンドを実行します (これにより、個別ファイルのアクセス ACL が上書きされます)。
# setfacl -m d:o:rx /share
5.4. ACL の取り込み
ファイルまたはディレクトリーに設定されている ACL を確認するには、getfacl
コマンドを使用します。以下の例では、getfacl
でファイルの既存 ACL を確認します。
例5.4 ACL の取り込み
# getfacl home/john/picture.png
上記のコマンドは、次のような出力を返します。
# file: home/john/picture.png # owner: john # group: john user::rw- group::r-- other::r--
ディレクトリーにデフォルト ACL が指定されている場合は、以下のようにデフォルト ACL も表示されます。たとえば、getfacl home/sales/
を実行すると以下のような出力になります。
# file: home/sales/ # owner: john # group: john user::rw- user:barryg:r-- group::r-- mask::r-- other::r-- default:user::rwx default:user:john:rwx default:group::r-x default:mask::rwx default:other::r-x
5.5. ACL が設定されているファイルシステムのアーカイブ作成
デフォルトでは、dump
コマンドによるバックアップ操作時に ACL が保存されます。tar
コマンドで、ファイルまたはファイルシステムのアーカイブを作成する場合は、--acls
オプションを付けて ACL を保存します。同様に、cp
コマンドで、ACL が設定されているファイルをコピーする場合は、--preserve=mode
オプションを付けて ACL もコピーされるようにします。さらに、cp
の -a
オプション (-dR --preserve=all
と同等) も、バックアップ時にタイムスタンプ、SELinux コンテキストなどの情報と一緒に ACL を保存します。dump
、tar
、または cp
の詳細は、それぞれの man
ページを参照してください。
star
ユーティリティーは、ファイルのアーカイブ生成に使用される点で tar
ユーティリティーと似ています。しかし、一部のオプションは異なります。最も一般的に使用されるオプションのリストは 表5.1「star
のコマンドラインオプション」 を参照してください。すべての利用可能なオプションは、man star
を参照してください。このユーティリティーを使用するには star
パッケージが必要になります。
オプション | 説明 |
---|---|
| アーカイブファイルを作成します。 |
|
ファイルを抽出しません。 |
| アーカイブ内のファイルを入れ替えます。パスとファイル名が同じファイルが置き換えられ、アーカイブファイルの末尾に書き込まれます。 |
| アーカイブファイルのコンテンツを表示します。 |
| アーカイブファイルを更新します。アーカイブにファイルが存在しない場合や、アーカイブ内にある同名のファイルよりも新しい場合は、そのファイルがアーカイブの末尾に書き込まれます。このオプションは、アーカイブがファイルか、バックスペース可能な非ブロックテープの場合にのみ機能します。 |
|
アーカイブからファイルを抽出します。 |
| 最も重要なオプションを表示します。 |
| 最も重要ではないオプションを表示します。 |
| アーカイブからファイルを抽出する際に、ファイル名から先頭のスラッシュを削除します。デフォルトでは、ファイルの抽出時に先頭のスラッシュが削除されます。 |
| 作成時または抽出時に、ファイルとディレクトリーに関連付けられているすべての ACL をアーカイブするか、復元します。 |
5.6. 旧システムとの互換性
指定したファイルシステムのいずかのファイルに ACL が設定されている場合、そのファイルシステムは ext_attr
属性を持ちます。この属性は、以下のコマンドを使用すると確認できます。
# tune2fs -l filesystem-device
ext_attr
属性を持つファイルシステムは古いカーネルでマウントできますが、それらのカーネルは設定されている ACL を強制しません。
バージョン 1.22 以降の e2fsprogs
パッケージ (Red Hat Enterprise Linux 2.1 および 4 のバージョンも含む) に含まれている e2fsck
ユーティリティーのバージョンは、ext_attr
属性を使用してファイルシステムを確認できます。古いバージョンではこの確認が拒否されます。
5.7. ACL 参照情報
詳細情報は以下の man ページを参照してください。
-
man acl
: ACL の説明 -
man getfacl
: ファイルアクセス制御リストの取得方法 -
man setfacl
: ファイルアクセス制御リストの設定方法 -
man star
:star
ユーティリティーとそのオプションの詳細説明
第6章 権限の取得
システム管理者は (時にはユーザーも)、管理者アクセスでタスクを実行する必要があります。システムに root
ユーザーでアクセスすることは危険を伴う可能性があり、システムおよびデータの著しい破損につながる場合もあります。本章では、su
や sudo
といった setuid
プログラムを使用して管理者権限を取得する方法を説明します。これらのプログラムを使用すると、高レベルの制御およびシステムセキュリティーを維持しつつ、通常は root
ユーザーしかできないタスクを特定のユーザーが実行できます。
管理者制御や潜在的な危険、特権アクセスの不適切な使用によるデータ破損を回避する方法は Red Hat Enterprise Linux 7 セキュリティーガイドを参照してください。
6.1. su ユーティリティーを使用した管理アクセスの設定
ユーザーは、su
を実行すると root
パスワードを求められます。認証されると root
シェルプロンプトが表示されます。
su
コマンドでログインすると、そのユーザーは root ユーザーとなり
、システムへの絶対管理アクセスを持つことになります。このアクセスが有効になっている場合は、SELinux によって課される制限が適用されることに注意してください。また、ユーザーが root
になったら、パスワードを求められることなく、su
コマンドを使用してシステム上の他のユーザーに変更を加えることができます。
このプログラムは非常に強力なので、組織内の管理者はこのコマンドにアクセスできるユーザーを制限してください。
簡単な制限方法は、wheel と呼ばれる特別な管理グループにユーザーを追加することです。これを実行するには、root
で以下のコマンドを実行します。
~]# usermod -a -G wheel username
このコマンドで、username を、wheel
グループに追加するユーザー名に置き換えます。
また、Users 設定ツールを使用して以下のようにグループのメンバーを修正することもできます。この手順を実行するには、管理者権限が必要なことに注意してください。
-
Super キーを押してアクティビティーの概要に入り、
Users
と入力して Enter を押します。ユーザー 設定ツールが表示されます。Super キーはキーボードまたはその他のハードウェアに応じて様々なキーで表示されますが、多くの場合、Windows または Command キーとして通常は Spacebar の左側に表示されます。 - 変更を有効にするには、 ボタンをクリックし、有効な管理者パスワードを入力します。
- 左側の列でユーザーアイコンをクリックし、右側のペインでユーザーのプロパティーを表示します。
-
アカウントの種類を
Standard
からAdministrator
に変更します。これにより、ユーザーがwheel
グループに追加されます。
Users ツールの詳細は 「グラフィカル環境でのユーザーの管理」 を参照してください。
wheel
グループにユーザーを追加したら、この追加した特定のユーザーにのみ su
コマンドの使用を許可することが推奨されます。それには、su の PAM (プラグ可能な認証モジュール)
設定ファイル (/etc/pam.d/su
) を編集する必要があります。このファイルをテキストエディターで開き、以下の行の #
文字を削除してコメント設定を解除します。
#auth required pam_wheel.so use_uid
この変更で、wheel
の管理グループメンバーのみが、su
コマンドを使用して別のユーザーに切り換えることができるようになります。
6.2. sudo ユーティリティーを使用した管理アクセスを設定
ユーザーに管理アクセスを付与する別のアプローチとして sudo
コマンドを利用できます。信頼されるユーザーが、管理コマンドの前に sudo
を付けると、このユーザー自身の パスワードが要求されます。ユーザーが認証され、コマンドが許可されると、管理コマンドは root
権限で実行されます。
sudo
コマンドの基本的なフォーマットは、以下のとおりです。
sudo
command
上記の例の command の部分を、通常は root
ユーザーのみが使用する mount
といったコマンドに置き換えます。
sudo
コマンドでは、ハイレベルの柔軟性が可能になります。たとえば、/etc/sudoers
設定ファイルに記載されているユーザーのみが sudo
コマンドを使うことができ、root シェルではなく、そのユーザーの
シェルでコマンドが実行されます。これは、Red Hat Enterprise Linux 7 セキュリティーガイド に示されるように、root
シェルを完全に無効にできることを意味します。
sudo
コマンドを使用した正常な認証のログはすべて /var/log/messages
ファイルに記録され、このコマンドを実行したユーザー名で実行されたコマンドは /var/log/secure
ファイルに記録されます。新たなログが必要な場合は、以下の行を /etc/pam.d/system-auth
ファイルに追加して、pam_tty_audit
モジュールで特定ユーザーの TTY 監査を有効にします。
session required pam_tty_audit.so disable=pattern enable=pattern
pattern で表示されるのはコンマで区切ったユーザーのリストで、オプションでグロブを使用できます。たとえば、以下の設定は、root
ユーザーの TTY 監査を有効にし、その他のユーザーについては無効にします。
session required pam_tty_audit.so disable=* enable=root
TTY の監査システムの pam_tty_audit
PAM モジュールを設定すると、TTY 入力のみが記録されます。つまり、監査されるユーザーがログインすると、pam_tty_audit
には、/var/log/audit/audit.log
ファイルに記録されるキーストロークと同じ内容が記録されます。詳細は、man ページの pam_tty_audit(8) を参照してください。
sudo
コマンドのもう一つの利点は、各ユーザーのニーズに応じて特定のコマンドへのアクセスを管理者が許可できることです。
管理者が sudo
設定ファイルである /etc/sudoers
を編集する場合は、visudo
コマンドを使用することが推奨されます。
他のユーザーに完全な管理権限を付与する場合は、visudo
と入力し、ユーザー権限の指定セクションに以下の行を追加します。
juan ALL=(ALL) ALL
この例では、ユーザーの juan
は、sudo
を使用すればどのホストからでもどのコマンドを実行できることを示しています。
以下の例では、sudo
を設定する際に可能な粒度を示しています。
%users localhost=/usr/sbin/shutdown -h now
この例が示しているのは、コンソールからであれば、 users
システムグループのどのユーザーでも、/sbin/shutdown -h now
コマンドを実行できるということです。
sudoers
の man ページには、このファイルのオプションの詳細なリストが記載されています。
/etc/sudoers
ファイルで NOPASSWD
オプションを指定して、パスワードを指定する必要がない sudo ユーザーを設定することもできます。
user_name ALL=(ALL) NOPASSWD: ALL
ただし、このようなユーザーであっても、sudo
は PAM (Pluggable Authentication Module) アカウント管理モジュールを実行します。これにより、認証フェーズ外で PAM モジュールに課せられた制限を確認できるようになります。これにより、PAM モジュールが正しく動作するようになります。たとえば、pam_time
モジュールの場合、時間ベースのアカウント制限は失敗しません。
PAM ベースのすべてのアクセス制御ルールで、sudo
を、許可されるサービスのリストに常に含めるようにしてください。そうしないと、ユーザーが sudo
にアクセスしようとしたときに permission denied エラーメッセージが表示されますが、現行のアクセス制御ルールに基づいてアクセスが禁止されます。
詳細は、Red Hat ナレッジベースの記事 After patching to Red Hat Enterprise Linux 7.6 sudo gives a permission denied error. を参照してください。
sudo
コマンドの使用時には、潜在的なリスクがいくつか存在することを覚えておく必要があります。このリスクは、上記のように visudo
を使用して /etc/sudoers
設定ファイルを編集することで回避できます。/etc/sudoers
ファイルをデフォルトの状態にしておくと、wheel
グループのユーザー全員に無制限の root
アクセスを与えることになります。
sudo
は、デフォルトで 5 分間、パスワードを保存します。この間はコマンドを続けて使用しても、ユーザーはパスワードを要求されません。このため、ユーザーがログイン状態のままワークステーションを離れたりロックしない状態にしておくと、攻撃者に悪用されかねません。この動作は、以下の行を/etc/sudoers
ファイルに追加することで変更できます。Defaults timestamp_timeout=value
value には、指定するタイムアウトの分数を入れます。value を 0 にすると
sudo
は毎回パスワードを要求します。sudo 使用者のアカウントが侵害されると、攻撃者は
sudo
を使用して管理権限のある新たなシェルを開くことができます。sudo /bin/bash
この方法や同様の方法で
root
として新たなシェルを開くと、/etc/sudoers
ファイルで指定されたタイムアウト時間を無視し、新たに開かれたセッションが閉じられるまで攻撃者にsudo
パスワード入力を要求することがないため、理論上は時間の制限なく攻撃者に管理アクセスを与えることになります。
6.3. 関連情報
ユーザーに管理者権限を与えるプログラムは潜在的なセキュリティーリスクでありますが、セキュリティーの説明は本ガイドの対象外となります。セキュリティーや管理者アクセスに関する情報は、以下に挙げる資料を参照してください。
インストールされているドキュメント
-
su
(1):su
の man ページには、このコマンドで利用可能なオプションの情報があります。 -
sudo
(8):sudo
の man ページには、このコマンドの動作のカスタマイズで利用可能なオプションのリストがあります。 -
pam
(8): この man ページでは、Linux 向け Pluggable Authentication Modules (PAM) の使用方法が説明されています。
オンラインドキュメント
-
Red Hat Enterprise Linux 7 セキュリティーガイド: Red Hat Enterprise Linux 7 の セキュリティーガイド では、
setuid
プログラムに関する潜在的なセキュリティー問題の詳細と、そのリスクを低減するテクニックを紹介します。
関連項目
- 4章ユーザーとグループの管理 では、グラフィカルユーザーインターフェイスとコマンドラインを使用したシステムユーザーとグループの管理方法を説明します。
パート II. サブスクリプションおよびサポート
Red Hat Enterprise Linux システムのソフトウェアへの更新を受け取るには、Red Hat Content Delivery Network (CDN)、および有効で適切なリポジトリーをサブスクライブしている必要があります。ここでは、システムを Red Hat Content Delivery Network にサブスクライブする方法を説明します。
Red Hat は カスタマーポータル からサポートを提供していますが、このサポートには、Red Hat Support Tool を使用してコマンドラインから直接アクセスできます。ここでは、そのコマンドラインツールの使用方法を説明します。
第7章 システム登録およびサブスクリプション管理
サブスクリプションサービスは、Red Hat ソフトウェアインベントリーを処理するメカニズムを提供し、yum パッケージマネージャーを使用して追加のソフトウェアをインストールしたり、インストールされているプログラムを新規バージョンに更新したりすることを可能にします。Red Hat Enterprise Linux 7 で、システムを登録し、サブスクリプションを割り当てる方法としては Red Hat サブスクリプション管理 の使用が推奨されます。
7.1. システム登録およびサブスクリプションの割り当て
Red Hat Subscription Management を使用してシステムを登録し、1 つ以上のサブスクリプションを割り当てる手順を完了してください。subscription-manager
コマンドはすべて root
で実行することに注意してください。
以下のコマンドを実行してシステムを登録します。ユーザー名とパスワードを入力するように求められます。ユーザー名とパスワードは、Red Hat カスタマーポータルのログイン認証情報と同じであることに注意してください。
subscription-manager register
必要なサブスクリプションのプール ID を確認します。これを行うには、シェルプロンプトで以下のコマンドを入力し、システムで利用できるサブスクリプションのリストを表示します。
subscription-manager list --available
このコマンドは、利用可能な各サブスクリプションの名前、固有 ID、有効期限、およびそのサブスクリプションに関連するその他の詳細情報を表示します。全アーキテクチャー向けのサブスクリプションをリスト表示するには、
--all
オプションを追加します。プール ID は、Pool ID
で始まる行にリスト表示されます。以下のコマンドを実行して、該当するサブスクリプションをシステムに割り当てます。
subscription-manager attach --pool=pool_id
pool_id を、直前のステップで確認したプール ID に置き換えます。
システムに割り当てているサブスクリプションのリストを随時確認するには、以下を実行します。
subscription-manager list --consumed
Red Hat Subscription Management を使用してシステムを登録し、サブスクリプションに関連付ける方法は、Red Hat Subscription-Manager を使用して Red Hat カスタマーポータルにシステムを登録してサブスクライブする を参照してください。サブスクリプションに関する包括的な情報は Red Hat Subscription Management のガイドを参照してください。
7.2. ソフトウェアリポジトリーの管理
Red Hat コンテンツ配信ネットワークにシステムをサブスクライブすると、/etc/yum.repos.d/
ディレクトリーにリポジトリーファイルが作成されます。これを確認するには、yum を使用して有効にしたリポジトリーのリストを表示します。
yum repolist
Red Hat Subscription Management を使用すると、Red Hat が提供するソフトウェアリポジトリーを手動で有効にしたり、無効にしたりすることもできます。利用可能なリポジトリーのリストを表示するには、以下のコマンドを実行します。
subscription-manager repos --list
リポジトリー名は、使用している Red Hat Enterprise Linux のバージョンによって異なり、以下のフォーマットに基づいています。
rhel-version-variant-rpms rhel-version-variant-debug-rpms rhel-version-variant-source-rpms
ここで、version は Red Hat Enterprise Linux システムのバージョン (6
または 7
) を示し、variant は Red Hat Enterprise Linux システムのバリアント (server
または workstation
) を示します。以下は例になります。
rhel-7-server-rpms rhel-7-server-debug-rpms rhel-7-server-source-rpms
リポジトリーを有効にするには、以下のコマンドを入力します。
subscription-manager repos --enable repository
repository を、有効にするリポジトリーの名前に置き換えます。
同様に、リポジトリーを無効にするには以下のコマンドを使用します。
subscription-manager repos --disable repository
「Yum と Yum リポジトリーの設定」 では、yum を使用したソフトウェアリポジトリー管理の詳細情報を説明します。
リポジトリーの更新を自動的にダウンロードするには、yum-cron
サービスを使用できます。詳細は、「yum-cron を使用したパッケージデータベースの自動更新および更新のダウンロード」 を参照してください。
7.3. サブスクリプションの削除
特定のサブスクリプションを削除するには、以下の手順を行います。
すでに割り当てられているサブスクリプションの情報をリスト表示し、削除する必要があるサブスクリプションのシリアル番号を確認します。
subscription-manager list --consumed
シリアル番号は、
serial
に記載されている番号です。たとえば、以下の例では744993814251016831
になります。SKU: ES0113909 Contract: 01234567 Account: 1234567 Serial: 744993814251016831 Pool ID: 8a85f9894bba16dc014bccdd905a5e23 Active: False Quantity Used: 1 Service Level: SELF-SUPPORT Service Type: L1-L3 Status Details: Subscription Type: Standard Starts: 02/27/2015 Ends: 02/27/2016 System Type: Virtual
以下のコマンドを実行して、選択したサブスクリプションを削除します。
subscription-manager remove --serial=serial_number
serial_number を、直前のステップで確認したシリアル番号に置き換えます。
システムに割り当てられているすべてのサブスクリプションを削除するには、以下のコマンドを実行します。
subscription-manager remove --all
7.4. 関連情報
Red Hat Subscription Management を使用してシステムを登録し、サブスクリプションに関連付ける方法は、以下の資料を参照してください。
インストールされているドキュメント
-
subscription-manager
(8): Red Hat Subscription Management の man ページは、サポートされているオプションおよびコマンドの完全リストを提供します。
関連書籍
- Red Hat Subscription Management の一連のガイド: これらのガイドには、Red Hat Subscription Management の使用方法に関する詳細情報が記載されています。
- インストールガイド: 初期設定プロセス中に登録する詳細な手順は、初期設定 の章を参照してください。
関連項目
第8章 Red Hat Support Tool を使用したサポートへのアクセス
redhat-support-tool パッケージの Red Hat Support Tool はインタラクティブシェルおよび単一実行プログラムとして機能します。SSH
または任意のターミナルで実行できます。また、コマンドラインから Red Hat ナレッジベースを検索したり、コマンドラインでソリューションを直接コピーしたり、サポートケースを作成または更新したり、分析のために Red Hat にファイルを送信したりできます。
8.1. Red Hat Support Tool のインストール
Red Hat Support Tool はデフォルトで Red Hat Enterprise Linux にインストールされます。必要な場合は、確実にインストールするために root
で以下のコマンドを入力します。
~]# yum install redhat-support-tool
8.2. コマンドラインを使用した Red Hat Support Tool の登録
コマンドラインを使用して Red Hat Support Tool をカスタマーポータルに登録するには、以下のコマンドを実行します。
~]# redhat-support-tool config user username
username は、Red Hat カスタマーポータルアカウントのユーザー名に置き換えます。
~]# redhat-support-tool config password
Please enter the password for username:
8.3. インタラクティブシェルモードでの Red Hat Support Tool の使用
インタラクティブモードでツールを起動するには、以下のコマンドを入力します。
~]$ redhat-support-tool
Welcome to the Red Hat Support Tool.
Command (? for help):
ツールは、非特権ユーザーまたは root
で実行できます。非特権ユーザーの場合は使用できるコマンドが少なくなります、
?
文字を入力するとコマンドのリストを表示できます。プログラムまたはメニューの選択は、q
または e
の文字を入力して終了できます。ナレッジベースまたはサポートケースを初めて検索する場合は、Red Hat カスタマーポータルのユーザー名とパスワードを入力するよう求められます。また、インタラクティブモードで Red Hat カスタマーポータルアカウントのユーザー名とパスワードを設定し、オプションで設定ファイルに保存することもできます。
8.4. Red Hat Support Tool の設定
インタラクティブモードの場合は、コマンド config --help
を入力して設定オプションのリストを表示できます。
~]# redhat-support-tool Welcome to the Red Hat Support Tool. Command (? for help): config --help Usage: config [options] config.option <new option value> Use the 'config' command to set or get configuration file values. Options: -h, --help show this help message and exit -g, --global Save configuration option in /etc/redhat-support-tool.conf. -u, --unset Unset configuration option. The configuration file options which can be set are: user : The Red Hat Customer Portal user. password : The Red Hat Customer Portal password. debug : CRITICAL, ERROR, WARNING, INFO, or DEBUG url : The support services URL. Default=https://api.access.redhat.com proxy_url : A proxy server URL. proxy_user: A proxy server user. proxy_password: A password for the proxy server user. ssl_ca : Path to certificate authorities to trust during communication. kern_debug_dir: Path to the directory where kernel debug symbols should be downloaded and cached. Default=/var/lib/redhat-support-tool/debugkernels Examples: - config user - config user my-rhn-username - config --unset user
インタラクティブモードでの Red Hat Support Tool の登録
インタラクティブモードを使用して Red Hat Support Tool をカスタマーポータルに登録するには、以下のコマンドを実行します。
以下のコマンドを入力してツールを起動します。
~]# redhat-support-tool
Red Hat カスタマーポータルのユーザー名を入力します。
Command (? for help):
config user username
ユーザー名をグローバル設定ファイルに保存するには、
-g
オプションを追加します。Red Hat カスタマーポータルのパスワードを入力します。
Command (? for help):
config password
Please enter the password for username:
8.4.1. 設定ファイルへの設定の保存
Red Hat Support Tool は、(他の方法が設定されていない場合に) ~/.redhat-support-tool/redhat-support-tool.conf
設定ファイルを使用して現在のユーザーのホームディレクトリーに値とオプションをローカルで保存します。必要に応じて、パスワードをこのファイルに保存することが推奨されます。この場合、パスワードは特定のユーザーのみが確認できます。ツールが起動すると、グローバル設定ファイル /etc/redhat-support-tool.conf
とローカル設定ファイルから値が読み取られます。ローカルに保存された値とオプションは、グローバルに保存された設定よりも優先されます。
グローバルな /etc/redhat-support-tool.conf 設定ファイルにパスワードを保存することは 推奨されません
。パスワードは base64
でエンコードされているだけなので簡単にデコードできます。また、ファイルは誰でも読み取り可能です。
値とオプションをグローバル設定ファイルに保存するには、以下のように -g, --global
オプションを追加します。
Command (? for help): config setting -g value
-g, --global
オプションを使用して設定をグローバルで保存できるようにするには、Red Hat Support Tool を root
で実行する必要があります。これは、通常のユーザーには /etc/redhat-support-tool.conf
への書き込みに必要なパーミッションがないためです。
値またはオプションをローカル設定ファイルから削除するには、以下のように -u, --unset
オプションを追加します。
Command (? for help): config setting -u value
これにより、ツールからパラメーターが削除および設定解除され、(利用可能な場合は) グローバル設定ファイルにある同等の設定が使用されます。
非特権ユーザーとして実行している場合は、グローバル設定ファイルに保存される値は -u, --unset
オプションで削除できません。しかし、-g, --global
オプションと -u, --unset
オプションを同時に使用して、ツールの現在の実行中のインスタンスから、設定を解除することができます。root
で実行している場合は、-g, --global
と -u, --unset
オプションを同時に使用してグローバル設定ファイルから値とオプションを削除できます。
8.5. インタラクティブモードでのサポートケースの作成および更新
インタラクティブモードでの新しいサポートケースの作成
インタラクティブモードで新しいサポートケースを作成するには、以下の手順を実行します。
以下のコマンドを入力してツールを起動します。
~]# redhat-support-tool
opencase
コマンドを入力します。Command (? for help):
opencase
- 画面に表示されたプロンプトに従って製品とバージョンを選択します。
- ケースの要約を入力します。
- ケースの説明を入力し、完了したら空の行で Ctrl+D を押します。
- ケースの重大度を選択します。
- オプションで、サポートケースを作成する前に、この問題のソリューションが存在するかどうかを確認することを選択します。
サポートケースを作成することを確定します。
Support case 0123456789 has successfully been opened
- オプションで、SOS レポートを添付することを選択します。
- オプションで、ファイルを添付することを選択します。
インタラクティブモードでの既存のサポートケースの表示および更新
インタラクティブモードで既存のサポートケースを表示および更新するには、以下の手順を実行します。
以下のコマンドを入力してツールを起動します。
~]# redhat-support-tool
getcase
コマンドを入力します。Command (? for help):
getcase case-number
case-number は、表示および更新するケースの番号です。
- 画面に表示されたプロンプトに従ってケースを表示し、コメントを変更または追加して、添付ファイルを取得または追加します。
インタラクティブモードでの既存のサポートケースの変更
インタラクティブモードで既存のサポートケースの属性を変更するには、以下の手順を実行します。
以下のコマンドを入力してツールを起動します。
~]# redhat-support-tool
modifycase
コマンドを入力します。Command (? for help):
modifycase case-number
case-number は、表示および更新するケースの番号です。
変更の選択リストが表示されます。
Type the number of the attribute to modify or 'e' to return to the previous menu. 1 Modify Type 2 Modify Severity 3 Modify Status 4 Modify Alternative-ID 5 Modify Product 6 Modify Version End of options.
画面に表示されたプロンプトに従って 1 つまたは複数のオプションを変更します。
たとえば、ステータスを変更する場合は、
3
と入力します。Selection: 3 1 Waiting on Customer 2 Waiting on Red Hat 3 Closed Please select a status (or 'q' to exit):
8.6. コマンドラインでのサポートケースの表示
コマンドラインでケースの内容を表示すると、コマンドラインからソリューションを素早く簡単に適用できます。
コマンドラインで既存のサポートケースを表示するには、以下のようにコマンドを入力します。
~]# redhat-support-tool getcase case-number
case-number は、ダウンロードするケースの番号です。
8.7. 関連情報
Red Hat ナレッジベースの記事 Red Hat Support Tool には、追加情報、例、および動画チュートリアルが含まれます。
パート III. ソフトウェアのインストールおよび管理
Red Hat Enterprise Linux システムのソフトウェアすべては RPM パッケージとして分割されており、インストール、アップグレード、削除が可能です。ここで、Yum を使用して Red Hat Enterprise Linux でパッケージを管理する方法を説明します。
第9章 Yum
yum は、Red Hat のパッケージマネージャーです。yum を使用すれば、利用可能なパッケージ情報に関するクエリー、リポジトリーからのパッケージのフェッチ、パッケージのインストールおよびアンインストール、さらには利用可能な最新バージョンへのシステム全体の更新が可能です。yum は、パッケージの更新、インストール、削除を行っている時に、依存関係の自動解決を行います。そのため、利用可能なすべての依存パッケージを自動的に決定、フェッチ、インストールできます。
yum は、新たに追加されたリポジトリー、または パッケージソース で設定でき、その機能を強化または拡張するプラグインを多数提供します。また、Yum は RPM が実行可能な同じタスクの多くを行うことができます。さらに、多数のコマンドラインオプションも似ています。Yum を使用することで、1 つのマシンまたはマシンのグループ上でのパッケージ管理を簡単かつシンプルに行うことができます。
以下のセクションでは、ご使用のシステムが、 Red Hat Enterprise Linux 7 インストールガイド の従ってインストール中に Red Hat サブスクリプション管理で登録されたことを前提としています。システムがサブスクライブされていない場合は、7章システム登録およびサブスクリプション管理 を参照してください。
Yum は、GPG (Gnu Privacy Guard (別名 GnuPG)) の署名付きパッケージの GPG 署名認証をすべてのパッケージリポジトリー (パッケージソース) または個々のリポジトリーで有効にすることで、セキュアなパッケージ管理を実現します。署名認証が有効になっていると、Yum は正しいキーで GPG 署名されていないパッケージのそのリポジトリーへのインストールを拒否します。つまり、使用中のシステムにダウンロードしてインストールする RPM パッケージが Red Hat などの信頼されたソースからのものであり、ダウンロード中に変更されていないことを保証します。Yum の署名認証を有効にする方法は 「Yum と Yum リポジトリーの設定」 を参照してください。
Yum を使用すると、他のマシンへダウンロードし、インストールするための RPM パッケージのリポジトリーを簡単に設定することもできます。可能な場合は、yum は複数パッケージとメタデータの 並行ダウンロード を使用してダウンロードのスピードを高めます。
システム管理タスクの実行には Yum が最速の方法であることが多いため、これを使用することが推奨されます。また、Yum は、PackageKit グラフィカルパッケージ管理ツールが提供する以上の機能を提供します。
yum を使用して、システムにパッケージをインストール、更新、削除するにはスーパーユーザー権限が必要です。本章のすべての例では、su
または sudo
コマンドを使用することでスーパーユーザー権限をすでに持っていると仮定しています。
9.1. パッケージの確認と更新
Yum を使用すると、使用中のシステムに適用される更新があるかどうかをチェックできます。更新が必要なパッケージをリスト表示して一度に更新したり、パッケージを個別に選択して更新したりできます。
9.1.1. 更新の確認
使用しているシステムに利用可能な更新があるインストール済みのパッケージを確認するには、以下のコマンドを実行します。
yum
check-update
例9.1 yum check-update コマンドの出力例
yum
check-update
の出力は以下のようになります。
~]# yum check-update Loaded plugins: product-id, search-disabled-repos, subscription-manager dracut.x86_64 033-360.el7_2 rhel-7-server-rpms dracut-config-rescue.x86_64 033-360.el7_2 rhel-7-server-rpms kernel.x86_64 3.10.0-327.el7 rhel-7-server-rpms rpm.x86_64 4.11.3-17.el7 rhel-7-server-rpms rpm-libs.x86_64 4.11.3-17.el7 rhel-7-server-rpms rpm-python.x86_64 4.11.3-17.el7 rhel-7-server-rpms yum.noarch 3.4.3-132.el7 rhel-7-server-rpms
上記の出力に表示されているパッケージには利用可能な更新があります。リストの最初のパッケージは dracut です。出力例の各行は複数の項目で設定されます。dracut の場合は、以下の設定になっています。
-
dracut
: パッケージ名 -
x86_64
: パッケージがビルドされた CPU アーキテクチャー -
033
: インストールする更新パッケージのバージョン -
360.el7
: 更新パッケージのリリース -
_2
: ビルドバージョン (z-stream 更新として追加) -
rhel-7-server-rpms
: 更新済みのパッケージがあるリポジトリー
また上記の出力はすべて、yum
コマンドを使用してカーネル (yum パッケージ)、Yum および RPM (yum および rpm パッケージ)、さらにはその依存関係 (rpm-libs、rpm-python パッケージ) をすべて更新できることも示しています。
9.1.2. パッケージの更新
一度に更新するパッケージ数を 1 つ、複数、または全てのパッケージから選択できます。更新するパッケージの依存関係、またはパッケージに利用可能な更新がある場合は、併せて更新されます。
単一パッケージの更新
1 つのパッケージを更新するには、root
で以下のコマンドを実行します。
yum update package_name
例9.2 rpm パッケージの更新
rpm パッケージを更新するには、以下を入力します。
~]# yum update rpm Loaded plugins: langpacks, product-id, subscription-manager Updating Red Hat repositories. INFO:rhsm-app.repolib:repos updated: 0 Setting up Update Process Resolving Dependencies --> Running transaction check ---> Package rpm.x86_64 0:4.11.1-3.el7 will be updated --> Processing Dependency: rpm = 4.11.1-3.el7 for package: rpm-libs-4.11.1-3.el7.x86_64 --> Processing Dependency: rpm = 4.11.1-3.el7 for package: rpm-python-4.11.1-3.el7.x86_64 --> Processing Dependency: rpm = 4.11.1-3.el7 for package: rpm-build-4.11.1-3.el7.x86_64 ---> Package rpm.x86_64 0:4.11.2-2.el7 will be an update --> Running transaction check ... --> Finished Dependency Resolution Dependencies Resolved ============================================================================= Package Arch Version Repository Size ============================================================================= Updating: rpm x86_64 4.11.2-2.el7 rhel 1.1 M Updating for dependencies: rpm-build x86_64 4.11.2-2.el7 rhel 139 k rpm-build-libs x86_64 4.11.2-2.el7 rhel 98 k rpm-libs x86_64 4.11.2-2.el7 rhel 261 k rpm-python x86_64 4.11.2-2.el7 rhel 74 k Transaction Summary ============================================================================= Upgrade 1 Package (+4 Dependent packages) Total size: 1.7 M Is this ok [y/d/N]:
この出力で重要となる項目がいくつかあります。
-
Loaded plugins: langpacks, product-id, subscription-manager
: yum は、どの Yum プラグインがインストールされ有効であるかを常に通知します。Yum プラグインに関する一般的情報は 「yum のプラグイン」 を参照してください。また、個別のプラグインに関する説明は 「yum プラグインの使用方法」 を参照してください。 -
rpm.x86_64
: 新しい rpm パッケージとその依存関係をダウンロードしてインストールできます。これらの各パッケージに対してトランザクションチェックが行われます。 yum を使用すると、更新情報を表示し、更新を確認できます。yum は、デフォルトで対話的に動作します。
yum
コマンドが実行する予定のトランザクションがすでに分かっている場合は、-y
オプションを使用して、yum が質問する質問 (この場合は非対話的に実行) に対して、自動的にyes
と回答できます。オプションを使用して、yum が尋ねるすべての質問に自動的に yes と回答するように設定できます (この場合は非対話的に実行されます)。ただし、yum によりシステムに行われる変更を常に調べる必要があります。これを行うには、ダウンロードプロンプトでd
オプションを選択します。これにより、選択されたパッケージのバックグラウンドでのダウンロードが開始します。トランザクションが正しく行われなかった場合は、「トランザクション履歴の活用」 にあるように
yum history
コマンドを使用して Yum のトランザクション履歴を表示できます。
yum update コマンドまたは yum install
コマンドを使用しているかどうかに関係なく、Yum は常に新しいのカーネルを インストール
します。
一方、RPM を使用する場合は、rpm -u kernel
コマンド (現在のカーネルを 置き換える) ではなく、rpm -i kernel
コマンド (新しいカーネルをインストール) を使用することが重要です。
同様に、パッケージグループを更新できます。root
で次のコマンドを入力します。
yum group update group_name
group_name を、更新するパッケージグループの名前に置き換えます。パッケージグループの詳細は「パッケージグループでの作業」 を参照してください。
Yum は、obsoletes
設定オプションを有効にして 更新
する upgrade
コマンドも提供します (「[main] オプションの設定」 を参照)。obsoletes
は /etc/yum.conf
で on になっており、これによりこの 2 つのコマンドが同等のものになっています。
すべてのパッケージとそれらの依存関係の更新
パッケージとその依存関係をすべて更新するには、引数なしで yum update
コマンドを実行します。
yum update
セキュリティー関連パッケージの更新
パッケージでセキュリティー更新が利用可能な場合は、そのパッケージのみを最新のバージョンに更新できます。root
で次のコマンドを入力します。
yum update --security
また、最新のセキュリティー更新を含むバージョンにのみパッケージを更新することもできます。root
で次のコマンドを入力します。
yum update-minimal --security
たとえば、以下の例を考えてみます。
- kernel-3.10.0-1 パッケージがシステムにインストールされている。
- kernel-3.10.0-2 パッケージがセキュリティー更新としてリリースされている。
- kernel-3.10.0-3 パッケージがバグ修正の更新としてリリースされている。
この場合、yum update-minimal --security
だとパッケージが kernel-3.10.0-2 に更新され、yum update --security
だとパッケージが kernel-3.10.0-3 に更新されます。
パッケージの自動更新
パッケージのデータベースを更新し、更新を自動的にダウンロードするには、yum-cron
サービスを使用できます。詳細は、「yum-cron を使用したパッケージデータベースの自動更新および更新のダウンロード」 を参照してください。
9.1.3. ISO と Yum を使用してシステムをオフラインでアップグレード
インターネットまたは Red Hat Network から切断されたシステムの場合は、yum update
コマンドと Red Hat Enterprise Linux インストール ISO イメージを使用すると、システムを最新のマイナーバージョンに簡単かつ素早くアップグレードできます。以下の手順はアップグレードプロセスを示しています。
ISO イメージをマウントするターゲットディレクトリーを作成します。このディレクトリーは、マウント時に自動的に作成されません。
root
で以下のコマンドを実行します。mkdir mount_dir
mount_dir は、マウントディレクトリーへのパスに置き換えます。通常は、ユーザーが
/media
ディレクトリー内のサブディレクトリーとして作成します。以前に作成されたターゲットディレクトリーに Red Hat Enterprise Linux 7 インストール ISO イメージをマウントします。
root
で以下のコマンドを実行します。mount -o loop iso_name mount_dir
iso_name を ISO イメージへのパスと置き換え、mount_dir をターゲットディレクトリーへのパスと置き換えます。ブロックデバイスとしてファイルをマウントするには、
-o
loop
オプションが必要です。media.repo
ファイルをマウントディレクトリーから/etc/yum.repos.d/
ディレクトリーにコピーします。正常に機能するために、このディレクトリーの設定ファイルの拡張子は .repo である必要があります。cp
mount_dir/media.repo
/etc/yum.repos.d/new.repo
これにより、yum リポジトリーの設定ファイルが作成されます。new.repo をファイル名と置き換えます (例: rhel7.repo)。
Red Hat Enterprise Linux インストール ISO を参照するよう新しい設定ファイルを編集します。以下の行を
/etc/yum.repos.d/new.repo
ファイルに追加します。baseurl=file:///mount_dir
mount_dir をマウントポイントへのパスと置き換えます。
前の手順で作成された
/etc/yum.repos.d/new.repo
を含むすべての yum リポジトリーを更新します。root
で以下のコマンドを実行します。yum
update
これにより、システムはマウントされた ISO イメージで提供されたバージョンにアップグレードされます。
アップグレードに成功したら、ISO イメージをアンマウントできます。
root
で以下のコマンドを実行します。umount mount_dir
ここで、mount_dir はマウントディレクトリーへのパスです。また、最初の手順で作成されたマウントディレクトリーを削除することもできます。
root
で以下のコマンドを実行します。rmdir mount_dir
以前に作成された設定ファイルを別のインストールまたは更新に使用しない場合は、その設定ファイルを削除できます。
root
で以下のコマンドを実行します。rm
/etc/yum.repos.d/new.repo
例9.3 Red Hat Enterprise Linux 7.0 から 7.1 へのアップグレード
インターネットにアクセスせずに ISO イメージ (例: rhel-server-7.1-x86_64-dvd.iso
) を使用してシステムを新しいバージョンにアップグレードする必要がある場合は、/media/rhel7/
などのマウント用ターゲットディレクトリーを作成します。root
で ISO イメージがあるディレクトリーに移動し、以下のコマンドを入力します。
~]# mount -o looprhel-server-7.1-x86_64-dvd.iso
/media/rhel7/
次に、マウントディレクトリーから media.repo
ファイルをコピーして、イメージ用の yum リポジトリーをセットアップします。
~]# cp/media/rhel7/media.repo
/etc/yum.repos.d/rhel7.repo
yum にマウントポイントをリポジトリーとして認識させるために、前の手順でコピーした /etc/yum.repos.d/rhel7.repo
に以下の行を追加します。
baseurl=file:///media/rhel7/
この時点で、yum リポジトリーを更新すると、rhel-server-7.1-x86_64-dvd.iso
により提供されたバージョンにシステムがアップグレードされます。root
で以下のコマンドを実行します。
~]# yum update
システムが正常にアップグレードされたら、イメージをアンマウントし、ターゲットディレクトリーと設定ファイルを削除できます。
~]# umount /media/rhel7/
~]# rmdir /media/rhel7/
~]# rm
/etc/yum.repos.d/rhel7.repo
9.2. パッケージでの作業
Yum では、パッケージの検索、パッケージについての情報の表示、パッケージのインストールおよび削除など、ソフトウェアパッケージの完全な操作が可能です。
9.2.1. パッケージの検索
以下のコマンドを使用することで、すべての RPM のパッケージ名、詳細、サマリーを検索できます。
yum
search
term…
term を、検索するパッケージ名に置き換えます。
例9.4 特定の文字列に一致するパッケージの検索
vim や gvim、または emacs に一致するパッケージをリスト表示するには、以下を入力します。
~]$ yum search vim gvim emacs Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager ============================= N/S matched: vim ============================== vim-X11.x86_64 : The VIM version of the vi editor for the X Window System vim-common.x86_64 : The common files needed by any version of the VIM editor [output truncated] ============================ N/S matched: emacs ============================= emacs.x86_64 : GNU Emacs text editor emacs-auctex.noarch : Enhanced TeX modes for Emacs [output truncated] Name and summary matches mostly, use "search all" for everything. Warning: No matches found for: gvim
yum search
コマンドは、パッケージ名は分からないものの、関連用語を知っている場合にパッケージを検索する際に役立ちます。デフォルトでは、yum search
はパッケージ名とサマリーが一致したものを返すため、検索には時間がかかりません。yum search all
コマンドを使用して、より詳細な検索を行いますが、検索は遅くなります。
結果のフィルタリング
yum の list コマンドでは、1 つ以上の glob 表現 を引数として追加することで、結果をフィルタリングできます。glob 表現は、1 つ以上のワイルドカード文字 *
(任意の文字サブセットに拡張) と ?
(任意の 1 文字に拡張) を含む通常の文字列です。
yum
コマンドに glob 表現を引数として渡す場合には、glob 表現をエスケープするように注意してください。これを行わないと、bash シェルはこの表現を パス名のデプロイメント と解釈してしまい、glob と適合する現在のディレクトリー内の全ファイルを yum
に渡すおそれがあります。確実に glob 表現を yum
に渡すには、以下のいずれかの方法で行います。
- ワイルドカード文字の前にバックスラッシュ記号を入力して、ワイルドカード文字をエスケープする
- glob 表現全体を二重引用符または単一引用符でくくる
以下のセクションの例では、上記の両方の使用例を説明します。
9.2.2. パッケージのリスト表示
すべてのインストール済み および 利用可能なパッケージに関する情報をリスト表示するには、シェルプロンプトで以下を入力します。
yum
list
all
glob 表現に一致するインストール済み および 利用可能なパッケージをリスト表示するには、以下のコマンドを使用します。
yum list glob_expression…
例9.5 ABRT 関連パッケージのリスト
各種の ABRT アドオンとプラグインを持つパッケージは abrt-addon- か abrt-plugin- で始まります。これらのパッケージをリスト表示するには、シェルプロンプトで以下を入力します。ワイルドカード文字の前にバックスラッシュ文字を置くことでエスケープしていることに注意してください。
~]$ yum list abrt-addon\* abrt-plugin\* Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager Installed Packages abrt-addon-ccpp.x86_64 2.1.11-35.el7 @rhel-7-server-rpms abrt-addon-kerneloops.x86_64 2.1.11-35.el7 @rhel-7-server-rpms abrt-addon-pstoreoops.x86_64 2.1.11-35.el7 @rhel-7-server-rpms abrt-addon-python.x86_64 2.1.11-35.el7 @rhel-7-server-rpms abrt-addon-vmcore.x86_64 2.1.11-35.el7 @rhel-7-server-rpms abrt-addon-xorg.x86_64 2.1.11-35.el7 @rhel-7-server-rpms
installed
キーワードを使用して、システムにインストールされているパッケージをリスト表示するには、以下のコマンドを実行します。出力の右端の列には、パッケージを取得したリポジトリーが表示されます。
yum list installed glob_expression…
例9.6 インストール済み krb パッケージのリスト表示
以下の例では、krb で始まり、その後に正確に 1 文字とハイフンが続くインストール済みパッケージをリスト表示する方法を示しています。この方法では数字でバージョンが見分けられるので、特定コンポーネントの全バージョンをリスト表示したい場合に便利です。glob 表現全体を引用符で囲むことで適切な処理が確実になります。
~]$ yum list installed "krb?-*" Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager Installed Packages krb5-libs.x86_64 1.13.2-10.el7 @rhel-7-server-rpms
有効なすべてのリポジトリーでインストール可能なパッケージをリスト表示するには、以下の形式のコマンドを使用します。
yum list available glob_expression…
例9.7 利用可能な gstreamer プラグインのリスト表示
たとえば、gstreamer とその後に plugin を含む名前の利用可能なパッケージをリスト表示するには、以下のコマンドを実行します。
~]$ yum list available gstreamer*plugin\* Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager Available Packages gstreamer-plugins-bad-free.i686 0.10.23-20.el7 rhel-7-server-rpms gstreamer-plugins-base.i686 0.10.36-10.el7 rhel-7-server-rpms gstreamer-plugins-good.i686 0.10.31-11.el7 rhel-7-server-rpms gstreamer1-plugins-bad-free.i686 1.4.5-3.el7 rhel-7-server-rpms gstreamer1-plugins-base.i686 1.4.5-2.el7 rhel-7-server-rpms gstreamer1-plugins-base-devel.i686 1.4.5-2.el7 rhel-7-server-rpms gstreamer1-plugins-base-devel.x86_64 1.4.5-2.el7 rhel-7-server-rpms gstreamer1-plugins-good.i686 1.4.5-2.el7 rhel-7-server-rpms
リポジトリーのリスト表示
リポジトリーの ID、名前、使用中のシステム上で 有効な 各リポジトリーでのパッケージ数をリスト表示するには、以下のコマンドを実行します。
yum
repolist
これらのリポジトリーの詳細情報をリスト表示するには、-v
オプションを追加します。このオプションを有効にすると、各リポジトリーでファイル名や全体のサイズ、最終更新日、ベース URL といった情報が表示されます。別の方法としては、repoinfo
コマンドを使用して同じ出力を作成することもできます。
yum
repolist
-v
yum
repoinfo
有効および無効なリポジトリーの両方を表示するには、以下のコマンドを実行します。ステータスのコラムが出力リストに追加され、どのリポジトリーが有効になっているかが分かります。
yum
repolist
all
最初の引数を disabled
にすることで、コマンドの出力を無効なリポジトリーに制限できます。また、リポジトリーの ID、名前、関連する glob 表現を引数として指定することもできます。リポジトリー ID または名前が引数と完全に一致する場合は、enabled フィルターまたは disabled フィルターを通過しないリポジトリーであっても表示されることに注意してください。
9.2.3. パッケージ情報の表示
1 つ以上のパッケージに関する情報を表示するには、以下のコマンドを実行します (ここでは glob 表現も有効)。
yum info package_name…
package_name を、パッケージ名に置き換えます。
例9.8 abrt パッケージ情報の表示
abrt パッケージに関する情報を表示するには、以下を入力します。
~]$ yum info abrt Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager Installed Packages Name : abrt Arch : x86_64 Version : 2.1.11 Release : 35.el7 Size : 2.3 M Repo : installed From repo : rhel-7-server-rpms Summary : Automatic bug detection and reporting tool URL : https://fedorahosted.org/abrt/ License : GPLv2+ Description : abrt is a tool to help users to detect defects in applications and : to create a bug report with all information needed by maintainer to fix : it. It uses plugin system to extend its functionality.
yum info package_name
コマンドは rpm -q --info package_name
コマンドに似ていますが、追加情報として RPM パッケージのインストール元である yum リポジトリーの名前を提供します (出力の From repo:
の行を参照)。
yumdb の使用
以下のコマンドを使用して、パッケージに関する代替情報や有用な情報について Yum データベースにクエリーすることもできます。
yumdb info package_name
このコマンドは、パッケージのチェックサム (および SHA-256 などのチェックサムを算出するためのアルゴリズム)、パッケージのインストール開始に使用されたコマンドラインのコマンド (存在する場合)、パッケージがシステムにインストールされた理由 (user
はユーザーがインストールしたことを、dep
は依存関係として取り入れたことを意味します) などのパッケージに関する追加情報を提供します。
例9.9 yum パッケージに関する情報を yumdb でクエリー
yum パッケージに関する追加情報を表示するには、以下を入力します。
~]$ yumdb info yum Loaded plugins: langpacks, product-id yum-3.4.3-132.el7.noarch changed_by = 1000 checksum_data = a9d0510e2ff0d04d04476c693c0313a11379053928efd29561f9a837b3d9eb02 checksum_type = sha256 command_line = upgrade from_repo = rhel-7-server-rpms from_repo_revision = 1449144806 from_repo_timestamp = 1449144805 installed_by = 4294967295 origin_url = https://cdn.redhat.com/content/dist/rhel/server/7/7Server/x86_64/os/Packages/yum-3.4.3-132.el7.noarch.rpm reason = user releasever = 7Server var_uuid = 147a7d49-b60a-429f-8d8f-3edb6ce6f4a1
yumdb
コマンドの詳細は、man ページの yumdb(8) を参照してください。
9.2.4. パッケージのインストール
1 つのパッケージと、そのパッケージの依存関係でインストールされていないものをすべてインストールするには、root
で以下の形式のコマンドを入力します。
yum install package_name
複数パッケージを同時にインストールするには、その名前を引数として追加します。これを実行するには、root
で次のコマンドを実行します。
yum install package_name package_name…
AMD64 マシンや Intel 64 マシンなどの multilib システムにパッケージをインストールする場合は、パッケージ名に .arch を追加して、パッケージのアーキテクチャーを指定できます (ただし、有効なリポジトリーで利用可能な場合のみ)。
yum install package_name.arch
例9.10 multilib システムでのパッケージのインストール
i686
アーキテクチャー用の sqlite パッケージをインストールするには、以下を入力します。
~]# yum install sqlite.i686
glob 表現を使用すると、名前が似ている複数のパッケージを迅速にインストールできます。root
で以下のコマンドを実行します。
yum install glob_expression…
例9.11 audacious の全プラグインのインストール
似た名前の複数のパッケージをインストールするには、glob 表現が便利です。audacious プラグインをすべてインストールするには、以下の形式でコマンドを使用します。
~]# yum install audacious-plugins-\*
パッケージ名と glob 表現に加えて、yum install
にはファイル名も追加できます。インストールするバイナリー名が分かっていて、パッケージ名が分からない場合は、yum install
にパス名を付けて実行します。root
で以下のコマンドを実行します。
yum install /usr/sbin/named
yum はパッケージリストで検索を行い、/usr/sbin/named
を提供するパッケージを探します。パッケージが存在すると、yum により、そのパッケージをインストールするかどうかを尋ねられます。
上記の例で分かるように、yum install
コマンドで必要な変数は、厳密に定義されていません。様々な形式のパッケージ名や glob 表現を処理できるため、ユーザーによるインストールを容易にします。一方で、yum が入力を正確に分析するには時間がかかります。指定するパッケージの数が多くなれば、それだけ時間がかかります。したがって、パッケージ検索を最適化するために、以下のコマンドを実行して引数の分析方法を明示的に定義できます。
yum install-n
name
yum install-na
name.architecture
yum install-nevra
name-epoch:version-release.architecture
yum は、install-n
コマンドでは name をパッケージの正確な名前として解釈します。また、install-na
コマンドでは、後続の引数で、ピリオドを使用してパッケージ名とアーキテクチャーを指定していると yum は解釈します。一方、install-nevra
では、yum で、name-epoch:version-release.architecture の形で引数を指定していることが必要になります。同様に、削除するパッケージを検索する際は、yum remove-n
、yum remove-na
、および yum remove-nevra
が必要です。
named
バイナリーを含むパッケージをインストールする前に、ファイルがインストールされているのが bin/
ディレクトリーか sbin/
ディレクトリーか分からない場合は、glob 表現を付けて yum provides
コマンドを実行します。
~]# yum provides "*bin/named" Loaded plugins: langpacks, product-id, search-disabled-repos, subscription- : manager 32:bind-9.9.4-14.el7.x86_64 : The Berkeley Internet Name Domain (BIND) DNS : (Domain Name System) server Repo : rhel-7-server-rpms Matched from: Filename : /usr/sbin/named
yum provides "*/file_name"
は、file_name が含まれるパッケージを検索するのに便利です。
例9.12 インストールプロセス
以下の例は、yum を使用したインストールの概要を示しています。最新バージョンの httpd パッケージをダウンロードしてインストールするには、root
で以下のコマンドを実行します。
~]# yum install httpd Loaded plugins: langpacks, product-id, subscription-manager Resolving Dependencies --> Running transaction check ---> Package httpd.x86_64 0:2.4.6-12.el7 will be updated ---> Package httpd.x86_64 0:2.4.6-13.el7 will be an update --> Processing Dependency: 2.4.6-13.el7 for package: httpd-2.4.6-13.el7.x86_64 --> Running transaction check ---> Package httpd-tools.x86_64 0:2.4.6-12.el7 will be updated ---> Package httpd-tools.x86_64 0:2.4.6-13.el7 will be an update --> Finished Dependency Resolution Dependencies Resolved
上記のコマンドを実行した後、yum は必要なプラグインを読み込み、トランザクションチェックを実行します。このケースでは、httpd がすでにインストールされています。インストール済みのパッケージが利用可能な最新バージョンよりも古いことから、これは更新されます。httpd が依存する httpd-tools にも同様のことが行われます。すると、トランザクションサマリーは以下のように表示されます。
================================================================================ Package Arch Version Repository Size ================================================================================ Updating: httpd x86_64 2.4.6-13.el7 rhel-x86_64-server-7 1.2 M Updating for dependencies: httpd-tools x86_64 2.4.6-13.el7 rhel-x86_64-server-7 77 k Transaction Summary ================================================================================ Upgrade 1 Package (+1 Dependent package) Total size: 1.2 M Is this ok [y/d/N]:
このステップでは、yum がインストールを確認するプロンプトを表示します。y
(yes) および N
(no) オプションのほかに、d
(ダウンロードのみ) を選択してパッケージをダウンロードしますが、直接インストールすることはできません。y
を選択すると、以下のメッセージが出て、インストールが正常に完了するまで続行します。
Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Updating : httpd-tools-2.4.6-13.el7.x86_64 1/4 Updating : httpd-2.4.6-13.el7.x86_64 2/4 Cleanup : httpd-2.4.6-12.el7.x86_64 3/4 Cleanup : httpd-tools-2.4.6-12.el7.x86_64 4/4 Verifying : httpd-2.4.6-13.el7.x86_64 1/4 Verifying : httpd-tools-2.4.6-13.el7.x86_64 2/4 Verifying : httpd-tools-2.4.6-12.el7.x86_64 3/4 Verifying : httpd-2.4.6-12.el7.x86_64 4/4 Updated: httpd.x86_64 0:2.4.6-13.el7 Dependency Updated: httpd-tools.x86_64 0:2.4.6-13.el7 Complete!
ダウンロード済みのパッケージを、システム上のローカルディレクトリーからインストールするには、以下のコマンドを使用します。
yum localinstall
path
path を、インストールするパッケージのパスに置き換えます。
9.2.5. パッケージのダウンロード
例9.12「インストールプロセス」 にあるように、インストールプロセスのある時点で、インストールを確認する以下のメッセージが表示されます。
... Total size: 1.2 M Is this ok [y/d/N]: ...
d
オプションを指定すると、yum は、パッケージをインストールせずにダウンロードを行います。ダウンロードしたパッケージは、キャッシュディレクトリーのサブディレクトリー (デフォルトでは /var/cache/yum/$basearch/$releasever/packages/
) の 1 つに保存されます。ダウンロードしたパッケージは、キャッシュディレクトリーのサブディレクトリー (デフォルトでは /var/cache/yum/$basearch/$releasever/packages/
) のいずれかに保存されます。ダウンロードはバックグラウンドモードで続行されるため、yum を並行して他の操作に使用できます。
9.2.6. パッケージの削除
パッケージのインストールと同様に、yum を使用するとパッケージのアンインストールができます。特定のパッケージと、そのパッケージの依存関係パッケージをすべてアンインストールをするには、root
で以下のコマンドを実行します。
yum remove package_name…
複数のパッケージをインストールする場合と同様、コマンドに複数のパッケージ名を追加すると、一度に複数のパッケージを削除できます。
例9.13 複数パッケージの削除
totem を削除するには、シェルプロンプトで以下を入力します。
~]# yum remove totem
install
と同じように、remove
では、以下の引数を使用できます。
- パッケージ名
- glob 表現
- ファイルリスト
- パッケージが提供する機能
Yum では、パッケージを削除して、その依存パッケージを残すことはできません。こうした動作は RPM でのみ実行可能であり、推奨されません。システムが機能しなくなる、またはアプリケーションに誤作動やクラッシュが生じる恐れがあるためです。
9.3. パッケージグループでの作業
パッケージグループは、たとえば システムツール や サウンドとビデオ などの共通の目的でサービスを行うパッケージの集合です。パッケージグループをインストールすると、依存パッケージも取得するため、時間が大幅に短縮できます。yum groups
コマンドは、yum のパッケージグループに作用するすべての操作をカバーするトップレベルのコマンドです。
9.3.1. パッケージグループのリスト表示
summary
オプションを使用すると、インストール済みのグループ数、利用可能なグループ数、利用可能な環境グループ数、インストール済みの言語グループ数、利用可能な言語グループ数が表示されます。
yum groups
summary
例9.14 yum groups summary の出力例
~]$yum
groups
summary
Loaded plugins: langpacks, product-id, subscription-manager Available Environment Groups: 12 Installed Groups: 10 Available Groups: 12
yum リポジトリーからすべてのパッケージグループをリスト表示するには、list
オプションを追加します。コマンドの出力は、グループ名でフィルターを設定できます。
yum group list glob_expression…
このコマンドで使用できる任意の引数がいくつかあります。たとえば、hidden
は、ユーザーに表示可能とされていないグループもリスト表示し、ids
はグループ ID を表示します。language
オプション、environment
オプション、installed
、または available
オプションを追加して、出力を特定のグループタイプに制限することもできます。
特定のグループに含まれている必須およびオプションパッケージをリスト表示するには、以下のコマンドを使用します。
yum group info glob_expression…
例9.15 LibreOffice パッケージグループの情報表示
~]$ yum group info LibreOffice
Loaded plugins: langpacks, product-id, subscription-manager
Group: LibreOffice
Group-Id: libreoffice
Description: LibreOffice Productivity Suite
Mandatory Packages:
=libreoffice-calc
libreoffice-draw
-libreoffice-emailmerge
libreoffice-graphicfilter
=libreoffice-impress
=libreoffice-math
=libreoffice-writer
+libreoffice-xsltfilter
Optional Packages:
libreoffice-base
libreoffice-pyuno
上記の例で分かるように、このパッケージグループに含まれているパッケージは、以下の記号でマークされている状態に分けられます。
-
-
: パッケージはインストールされておらず、このパッケージグループではインストールされません。 -
+
: パッケージはインストールされていませんが、次回のyum upgrade
またはyum group upgrade
でインストールされます。 -
=
: パッケージはインストールされており、パッケージグループの一部としてインストールされました。 -
記号なし: パッケージはインストールされていますが、パッケージグループとしてはインストールされませんでした。このため、
yum group remove
ではこのパッケージを削除できません。
この区別は、group_command
設定パラメーターがデフォルト設定の objects
に設定されている場合にのみ行われます。グループの一部として、または個別にパッケージをインストールしたかを yum で追跡したくない場合は、このパラメーターを異なる値に設定します。すると、"記号なし" パッケージと "=" パッケージが同じ意味になります。
yum group mark
コマンドを使用する上記のパッケージの状態を変更することもできます。たとえば、yum group mark packages
は、特定のインストール済みパッケージを指定されたグループのメンバーとしてマークします。グループ更新で新たなパッケージのインストールをしないようにするには、yum group mark blacklist
を使用します。yum group mark
の詳細な機能は man ページの yum
(8) を参照してください。
@^ 接頭辞を使用すると環境グループが特定でき、パッケージグループには @ のマークが付きます。yum
group
list
、info
、install
、または remove
を使用する場合は、@group_name を渡すてパッケージグループを指定し、@^group_name で環境グループを指定します。または group_name の両方を含める場合は group_name を渡します。
9.3.2. パッケージグループのインストール
パッケージグループにはそれぞれ、名前とグループ ID (groupid) があります。パッケージグループの名前とグループ ID (括弧内に表示される) をリスト表示するには、以下のコマンドを入力します。
yum group list ids
例9.16 パッケージグループの名前と groupid の表示
パッケージグループ (例: KDE デスクトップ環境に関連するグループ) の名前または ID を検索するには、以下のコマンドを入力します。
~]$ yum group list ids kde\* Available environment groups: KDE Plasma Workspaces (kde-desktop-environment) Done
一部のグループは、設定されたリポジトリーの設定により非表示になっています。たとえば、サーバーで hidden
コマンドオプションを使用すると、非表示グループも表示されます。
~]$ yum group list hidden ids kde\* Loaded plugins: product-id, subscription-manager Available Groups: KDE (kde-desktop) Done
パッケージグループをインストールするには、group install
コマンドに正式なグループ名 (groupid は含めない) を渡します。root
で以下のコマンドを実行します。
yum
group install
"group name"
groupid を使用してインストールすることもできます。root
で、以下のコマンドを実行します。
yum
group install
groupid
groupid、または引用付きグループ名の先頭に @ 記号を追加して install
コマンドに渡すことで、group install
と同じように yum
を実行できます。root
で以下のコマンドを実行します。
yum
install
@group
group を、groupid、または引用符で囲んだグループ名に置き換えます。同じ論理が環境グループにも適用できます。
yum install @^group
例9.17 KDE Desktop グループをインストールする 4 つの方法
上記で説明したように、パッケージグループをインストールする方法は 4 つあります。KDE Desktop の場合、コマンドは以下のようになります。
~]# yum group install "KDE Desktop" ~]# yum group install kde-desktop ~]# yum install @"KDE Desktop" ~]# yum install @kde-desktop
9.3.3. パッケージグループの削除
install
構文に類似した構文で、パッケージグループ名またはその ID を使用してパッケージグループを削除できます。root
で以下のコマンドを実行します。
yum group remove group_name
yum
group remove
groupid
また、groupid または引用付き名前の先頭に @ 記号を追加して、remove
コマンドに渡すことで、group remove
と同じように yum を実行できます。root
で以下のコマンドを実行します。
yum
remove
@group
group を、groupid、または引用符で囲んだグループ名に置き換えます。同様に、環境グループに置き換えることもできます。
yum remove @^group
例9.18 KDE Desktop
グループを削除する 4 つの方法
インストールする場合と同様に、パッケージグループを削除する方法は 4 つあります。KDE Desktop の場合、コマンドは以下のようになります。
~]# yum group remove "KDE Desktop" ~]# yum group remove kde-desktop ~]# yum remove @"KDE Desktop" ~]# yum remove @kde-desktop
9.4. トランザクション履歴の活用
yum history
コマンドを使用すると、yum のトランザクションのタイムライン、トランザクションの発生日時、影響を受けたパッケージ数、トランザクション成功の有無、RPM データベースがトランザクション間で変更されたかどうかといった情報を確認できます。さらに、このコマンドを使用すると、特定のトランザクションを元に戻す、またはやり直すことが可能です。すべての履歴データは、/var/lib/yum/history/ ディレクトリーの history DB
に保存されます。
9.4.1. トランザクションのリスト表示
最近発生した 20 件のトランザクションをリスト表示するには、root
で引数なしで yum history
を実行するか、以下のコマンドを実行します。
yum
history
list
すべてのトランザクションを表示するには、all
のキーワードを追加します。
yum
history
list
all
特定の範囲内のトランザクションのみを表示したい場合は、以下の形式でコマンドを使用します。
yum history list start_id..end_id
特定のパッケージに関するトランザクションのみをリスト表示することもできます。そのためには、パッケージ名か glob 表現を付けてコマンドを実行します。
yum history list glob_expression…
例9.19 最も古いトランザクション 5 件を表示する
yum history list
の出力では、最新のトランザクションがリストの上部に表示されます。履歴データベースにある最も古い 5 件のトランザクションに関する情報を表示するには、以下を入力します。
~]# yum history list 1..5 Loaded plugins: langpacks, product-id, subscription-manager ID | Login user | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 5 | User <user> | 2013-07-29 15:33 | Install | 1 4 | User <user> | 2013-07-21 15:10 | Install | 1 3 | User <user> | 2013-07-16 15:27 | I, U | 73 2 | System <unset> | 2013-07-16 15:19 | Update | 1 1 | System <unset> | 2013-07-16 14:38 | Install | 1106 history list
yum history list
コマンドのすべての形式で、以下のコラムで設定される各行を含む表形式出力を生成します。
-
ID
: 特定のトランザクションを識別する整数値です。 -
Login user
: トランザクションが開始したログインセッションのユーザー名。この情報は、通常Full Name <username>
の形式で表示されます。ユーザーが実行しなかったトランザクションに関しては (システムの自動更新など)、代わりにSystem <unset>
が使用されます。 -
Date and time
: トランザクションが発生した日時です。 -
Action(s)
: 表9.1「Action フィールドの値」 の説明通りに、トランザクション中に実行された動作のリストです。 -
Altered
: 表9.2「Altered フィールドの値」 の説明通りに、トランザクションにより影響を受けたパッケージ数、場合によっては追加情報も含まれます。
Action | 省略形 | 詳細 |
---|---|---|
|
| 1 つ以上のパッケージが旧バージョンにダウングレードされました。 |
|
| 1 つ以上のパッケージが削除されました。 |
|
| 1 つ以上の新しいパッケージがインストールされました。 |
|
| 1 つ以上のパッケージが廃止として記録されました。 |
|
| 1 つ以上のパッケージが再インストールされました。 |
|
| 1 つ以上のパッケージが新しいバージョンに更新されました。 |
記号 | 詳細 |
---|---|
|
トランザクションが終了する前に、 |
|
トランザクションが終了した後に、 |
| トランザクションは失敗して終了しました。 |
| トランザクションは正常に終了しましたが、yum はゼロ以外の終了コードを返しました。 |
| トランザクションは正常に終了しましたが、エラーまたは警告が表示されました。 |
|
トランザクションは正常に終了しましたが、 |
|
トランザクションは正常に終了しましたが、 |
インストール済みパッケージの rpmdb
または yumdb
データベースのコンテンツを、現在使用されている rpmdb
または yumdb
データベースと同期するには、以下を入力します。
yum
history
sync
現在使用している履歴データベースに関する全体的な統計数字を表示するには、以下のコマンドを使用します。
yum
history
stats
例9.20 yum history stats の出力例
~]# yum history stats Loaded plugins: langpacks, product-id, subscription-manager File : //var/lib/yum/history/history-2012-08-15.sqlite Size : 2,766,848 Transactions: 41 Begin time : Wed Aug 15 16:18:25 2012 End time : Wed Feb 27 14:52:30 2013 Counts : NEVRAC : 2,204 NEVRA : 2,204 NA : 1,759 NEVR : 2,204 rpm DB : 2,204 yum DB : 2,204 history stats
Yum を使用すると、過去に発生したすべてのトランザクションのサマリーを表示することもできます。root
で以下の形式のコマンドを実行します。
yum
history
summary
特定の範囲内でのトランザクションのみを表示するには、以下を入力します。
yum history summary start_id..end_id
yum history list
コマンドと同様に、パッケージの名前または glob 表現を指定することで、特定のパッケージに関するトランザクションのサマリーを表示できます。
yum history summary glob_expression…
例9.21 最新のトランザクション 5 件のサマリー
~]# yum history summary 1..5 Loaded plugins: langpacks, product-id, subscription-manager Login user | Time | Action(s) | Altered ------------------------------------------------------------------------------- Jaromir ... <jhradilek> | Last day | Install | 1 Jaromir ... <jhradilek> | Last week | Install | 1 Jaromir ... <jhradilek> | Last 2 weeks | I, U | 73 System <unset> | Last 2 weeks | I, U | 1107 history summary
yum history summary
コマンドはすべての形式で、yum history list
の出力に似た、簡略化された表形式出力を生成します。
上記のように、yum history list
および yum history summary
とも、トランザクション向けに設定されています。特定のパッケージに関連するトランザクションのみを表示することができますが、パッケージバージョンのような重要な詳細は表示されません。パッケージに関連するトランザクションをリスト表示するには、root
で以下のコマンドを実行します。
yum history package-list glob_expression…
例9.22 パッケージ履歴の追跡
たとえば、subscription-manager および関連パッケージの履歴を調べるには、シェルプロンプトで以下を入力します。
~]# yum history package-list subscription-manager\* Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager ID | Action(s) | Package ------------------------------------------------------------------------------- 2 | Updated | subscription-manager-1.13.22-1.el7.x86_64 EE 2 | Update | 1.15.9-15.el7.x86_64 EE 2 | Obsoleted | subscription-manager-firstboot-1.13.22-1.el7.x86_64 EE 2 | Updated | subscription-manager-gui-1.13.22-1.el7.x86_64 EE 2 | Update | 1.15.9-15.el7.x86_64 EE 2 | Obsoleting | subscription-manager-initial-setup-addon-1.15.9-15.el7.x86_64 EE 1 | Install | subscription-manager-1.13.22-1.el7.x86_64 1 | Install | subscription-manager-firstboot-1.13.22-1.el7.x86_64 1 | Install | subscription-manager-gui-1.13.22-1.el7.x86_64 history package-list
上記の例では、初期のシステムインストール時に subscription-manager、subscription-manager-firstboot、subscription-manager-gui の 3 パッケージがインストールされています。3 つ目のトランザクションでは、これらの全パッケージはバージョン 1.10.11 から 1.10.17 に更新されています。
9.4.2. トランザクションの検証
単一のトランザクションのサマリーを表示するには、root
で以下の形式で yum history summary
コマンドを使用します。
yum
history
summary
id
ここでは、id はトランザクションの ID を表します。
特定のトランザクションを詳しく調べる場合は、root
で以下のコマンドを実行します。
yum
history
info
id…
id の引数はオプションです。これを省略する場合は、yum は自動的に最後のトランザクションを使用します。複数のトランザクションを指定する場合は、範囲を指定することもできます。
yum history info start_id..end_id
例9.23 yum history info の出力例
以下は、2 つのトランザクションに関する出力のサンプルです。それぞれ新しいパッケージを 1 つインストールしています。
~]# yum history info 4..5 Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager Transaction ID : 4..5 Begin time : Mon Dec 7 16:51:07 2015 Begin rpmdb : 1252:d2b62b7b5768e855723954852fd7e55f641fbad9 End time : 17:18:49 2015 (27 minutes) End rpmdb : 1253:cf8449dc4c53fc0cbc0a4c48e496a6c50f3d43c5 User : Maxim Svistunov <msvistun> Return-Code : Success Command Line : install tigervnc-server.x86_64 Command Line : reinstall tigervnc-server Transaction performed with: Installed rpm-4.11.3-17.el7.x86_64 @rhel-7-server-rpms Installed subscription-manager-1.15.9-15.el7.x86_64 @rhel-7-server-rpms Installed yum-3.4.3-132.el7.noarch @rhel-7-server-rpms Packages Altered: Reinstall tigervnc-server-1.3.1-3.el7.x86_64 @rhel-7-server-rpms history info
また、トランザクション時に使用された設定オプション、特定のパッケージをインストールしたリポジトリー、その理由などの追加情報も閲覧できます。特定のトランザクションに関して入手可能な追加情報を表示する場合は、root
としてシェルプロンプトで以下を入力します。
yum
history
addon-info
id
yum history info
と同様に、id が指定されていない場合、yum は自動的に最新のトランザクションを使用します。別の方法として、最新のトランザクションを参照するには、last
キーワードを使用することもできます。
yum
history
addon-info
last
例9.24 yum
history
addon-info
の出力例
履歴の 4 番目のトランザクションを指定すると、yum history addon-info
は以下のような出力を返します。
~]# yum history addon-info 4 Loaded plugins: langpacks, product-id, subscription-manager Transaction ID: 4 Available additional history information: config-main config-repos saved_tx history addon-info
yum
history
addon-info
コマンドの出力では、以下の 3 種類の情報が表示されます。
-
config-main
: トランザクション時に使用された yum のグローバルオプション。グローバルオプションの変更方法は 「[main] オプションの設定」 を参照してください。 -
config-repos
: 個々の yum リポジトリー用のオプションです。個々のリポジトリー用のオプションを変更する方法は 「[repository] オプションの設定」 を参照してください。 -
saved_tx
: 別のマシンでトランザクションを繰り返すためにyum load-transaction
コマンドにより利用できるデータです (下記参照)。
選択した種類の追加情報を表示するには、root
で以下のコマンドを実行してください。
yum
history
addon-info
id information
9.4.3. トランザクションを元に戻す/繰り返す
トランザクション履歴の確認以外に、yum history
コマンドは選択したトランザクションを元に戻す、または繰り返す方法を提供します。トランザクションを元に戻すには、root
で次のコマンドを実行します。
yum
history
undo
id
特定のトランザクションを繰り返すには、root
で次のコマンドを実行します。
yum
history
redo
id
どちらのコマンドでも last
キーワードを使用して、最新のトランザクションを元に戻す、または繰り返すことができます。
yum history undo
コマンドおよび yum history redo
コマンドのどちらも、トランザクション中に実行したステップを元に戻す、または繰り返すだけである点に注意してください。このトランザクションで新しいパッケージがインストールされた場合に、yum history undo
コマンドを実行すると、今回インストールしたパッケージがアンインストールされます。逆に、このトランザクションでパッケージがアンインストールされた場合は、このコマンドにより再度インストールされます。またこのコマンドは、(古いパッケージが引き続き利用可能な場合に) 更新済みパッケージをすべて以前のバージョンにダウングレードする試みも行います。
複数の同一システムを管理する場合、yum を使用すると、1 つのシステムでトランザクションを実行して、そのトランザクションの詳細をファイルに格納し、テスト期間の終了後に残りのシステムで同じトランザクションを繰り返すことができます。トランザクションの詳細をファイルに保存するには、root
でシェルプロンプトに以下を入力します。
yum -q history addon-info id saved_tx > file_name
このファイルを目的のシステムにコピーしたら、root
で以下のコマンドを使用してトランザクションを繰り返すことができます。
yum load-transaction file_name
欠けているパッケージまたは rpmdb バージョンを無視するように load-transaction
を設定できます。これらの設定オプションの詳細は、yum.conf
(5) man ページを参照してください。
9.4.4. 新しいトランザクション履歴の開始
Yum は単一の SQLite データベースファイルにトランザクション履歴を保存します。新しいトランザクションの履歴を開始するには、root
で以下のコマンドを実行します。
yum
history
new
これにより /var/lib/yum/history/
ディレクトリーに新しい空のデータベースファイルが作成されます。古いトランザクション履歴は保存されますが、新しいデータベースファイルがディレクトリーにある限りアクセスすることはできません。
9.5. Yum と Yum リポジトリーの設定
専門知識を深めるために、Red Hat System Administration III (RH254) トレーニングコースと RHCSA Rapid Track (RH199) トレーニングコースを受講することを推奨します。
yum および関連ユーティリティーの設定情報は /etc/yum.conf
に存在します。このファイルには、必須の [main]
セクションが 1 つあり、ここで全体に影響を与える yum オプションを設定できます。また、[repository]
セクションを 1 つ以上追加して、リポジトリー固有のオプションを設定することもできます。ただし、/etc/yum.repos.d/
ディレクトリーにある、新規または既存の .repo
ファイルに個々のリポジトリーを定義することが推奨されます。/etc/yum.conf
ファイルの各 [repository]
セクションで定義した値は、[main]
セクションに設定した値をオーバーライドします。
このセクションでは以下の方法を紹介します。
-
/etc/yum.conf
設定ファイルの[main]
セクションを編集して、yum のグローバルオプションを設定する方法 -
/etc/yum.conf
ファイル、および/etc/yum.repos.d/
ディレクトリーの.repo
ファイルの[repository]
セクションを編集して、個々のレポジトリーにオプションを設定する方法 -
動的バージョンとアーキテクチャーの値が適切に処理されるように
/etc/yum.conf
の yum 変数と/etc/yum.repos.d/
ディレクトリー内のファイルを使用する方法 - コマンドラインで yum リポジトリーを追加、有効、無効にする方法
- カスタムの yum リポジトリーを設定する方法
9.5.1. [main] オプションの設定
/etc/yum.conf
設定ファイルには、[main]
セクションが 1 つだけ含まれます。本セクションにあるキー値ペアの中には、yum の動作に影響を与えるものもあれば、yum がリポジトリーを処理する方法に影響を与えるものもあります。
/etc/yum.conf
の [main]
セクションの下に、オプションを多数追加できます。
以下は、/etc/yum.conf
設定ファイルのサンプルです。
[main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=3 [comments abridged] # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d
以下は、[main]
セクションで最もよく使用されるオプションです。
assumeyes
=valueassumeyes
オプションは、yum が重要なアクションに関する確認を行うかどうかを決定します。value を、以下のいずれかで置き換えます。0
: (デフォルト)。yum は、実行する重要な動作の確認を行います。1
:yum
は、実行する重要な動作の確認を行いません。assumeyes=1
を設定すると、yum はコマンドラインオプション-y
および--assumeyes
と同じように動作します。cachedir
=directoryこのオプションを使用して、yum がキャッシュおよびデータベースファイルを保存するディレクトリーを設定します。directory をディレクトリーへの絶対パスで置き換えます。デフォルトでは、yum のキャッシュディレクトリーは
/var/cache/yum/$basearch/$releasever/
です。yum 変数
$basearch
および$releasever
の詳細は、「yum 変数の使用」 を参照してください。debuglevel
=value-
このオプションは、yum が生成するデバッグ出力の詳細を指定します。ここでは、value は
1
から10
までの整数になります。debuglevel
値を高く設定すると、yum がより詳細なデバッグ出力を表示します。debuglevel=2
はデフォルトで、debuglevel=0
がデバッグ出力を無効にします。 exactarch
=valueこのオプションを使用すると、インストール済みのパッケージを更新する際に、yum が正確なアーキテクチャーを考慮するように設定できます。value を以下のいずれかで置き換えます。
0
: パッケージの更新時には正しいアーキテクチャーを考慮に入れて実行しません。1
(デフォルト値): パッケージの更新時に正しいアーキテクチャーを考慮します。このように設定すると、yum が、64 ビットアーキテクチャーのシステムにインストールされているパッケージの更新に、32 ビットアーキテクチャーのパッケージを使用しません。exclude
=package_name more_package_names-
exclude
オプションでは、インストールまたはシステム更新の際にキーワードでパッケージを除外できます。除外する複数のパッケージのリストを表示するには、スペースで区切ったパッケージのリストを引用符で囲みます。ワイルドカードを使用したシェル glob 表現 (*
や?
など) を使用できます。 gpgcheck
=valuegpgcheck
オプションを指定して、GPG 著名チェックをパッケージで行う必要があるかどうかを指定します。value を以下のいずれかで置き換えます。0
: インストールされるローカルパッケージなど、全リポジトリー内のパッケージでの GPG 署名確認を無効にします。1
(デフォルト): インストールされるローカルパッケージなど、全リポジトリーのすべてのパッケージで GPG 署名確認を有効にします。gpgcheck
を有効にすると、すべてのパッケージ署名が確認されます。このオプションが
/etc/yum.conf
ファイルの[main]
セクションで設定されている場合は、全リポジトリーに対して GPG 確認ルールが設定されます。ただし、個々のリポジトリーにgpgcheck=value
を設定することもできます。つまり、あるリポジトリーで GPG チェックを有効にしつつ、別のレポジトリーで無効にすることができます。対応の.repo
ファイルの個別のレポジトリーにgpgcheck=value
を設定すると、/etc/yum.conf
にデフォルト値がある場合はそれを無効にします。group_command
=valuegroup_command
オプションを指定して、yum group install
、yum group upgrade
、yum group remove
がパッケージグループを処理する方法を指定します。value を、以下のいずれかで置き換えます。simple
: パッケージグループのすべてのメンバーをインストールします。以前にインストールされたパッケージのみを更新し、その間にグループに追加されたパッケージはインストールしません。compat
:simple
に似ていますが、yum upgrade
は前回の更新以降にグループに追加されたパッケージもインストールします。オブジェクト
: (デフォルト)。このオプションでは、yum は以前にインストールされたグループを追跡し、グループの一部としてインストールされたパッケージと、個別にインストールされたパッケージを区別します。例9.15「LibreOffice パッケージグループの情報表示」 を参照してください。group_package_types
=package_type more_package_types-
yum
group
install
コマンドが呼び出されたときにインストールされるパッケージのタイプ (オプション、デフォルト、必須) を指定することができます。default および mandatory のパッケージタイプがデフォルトで選択されます。 history_record
=valueこのオプションを使用すると、yum はトランザクション履歴を記録します。value を、以下のいずれかで置き換えます。
0
: yum はトランザクションの履歴エントリーを記録しません。1
(デフォルト値): yum はトランザクションの履歴エントリーを記録します。この操作により、ある程度のディスク領域が使用され、トランザクションの時間が少し長くなりますが、過去の操作に関する多くの情報が提供されます。これは、yum
history
で表示できます。history_record=1
がデフォルトです。yum
history
コマンドの詳細は、「トランザクション履歴の活用」 を参照してください。注記yum は履歴記録を使用して、yum 以外で行われた
rpmdb
データベースへの変更を検出します。変更が検出されると、yum は警告を表示し、rpmdb
の変更によって起こり得る問題を自動的に検索します。history_record
がオフになっていると、yum はこのような変更を検出できず、自動チェックは実行されません。installonlypkgs
=space separated list of packagesここでは、yum でインストールを行い、更新を行わないパッケージのリストをスペースで区切って提供できます。デフォルトでインストールのみに設定されているパッケージのリストは、
yum.conf
(5) man ページを参照してください。installonlypkgs
ディレクティブを/etc/yum.conf
に追加する場合は、yum.conf
(5) のinstallonlypkgs
セクションにリスト表示されているものを含め、インストールのみのパッケージをすべてリストするようにしてください。特に (デフォルトで) カーネルパッケージが常にinstallonlypkgs
でリスト表示され、installonly_limit
の値が常に2
よりも大きく設定され、デフォルトが起動に失敗した場合にバックアップカーネルを常に利用可能にするようにしてください。
installonly_limit
=valueこのオプションは、
installonlypkgs
ディレクティブにリストされている多くのパッケージを同時にインストールできる数を設定します。installonlypkgs
にリスト表示されている単一のパッケージに同時にインストールできるようにバージョンの最大数を示す整数に値を置き換えます。installonlypkgs
ディレクティブのデフォルトには複数のカーネルパッケージが含まれています。そのため、installonly_limit
の値を変更すると、インストール済みの単一のカーネルパッケージのバージョンの最大数にも影響することに注意してください。/etc/yum.conf
にリスト表示されるデフォルト値はinstallonly_limit=3
で、使用できる最小値はinstallonly_limit=2
です。installonly_limit=1
に設定すると yum によって実行中のカーネルが削除されるため、設定することはできません。installonly_limit=1
を使用すると、yum は失敗します。installonly_limit=2
を使用すると、1 つのバックアップカーネルが利用可能になります。ただし、2 つのバックアップカーネルを利用できるようにするためにも、デフォルト設定installonly_limit=3
を使用し続けることが推奨されます。keepcache
=valuekeepcache
オプションはインストールに成功した後に、yum がヘッダーのキャッシュを維持するかどうかを決めます。値は、以下のいずれかになります。0
: (デフォルト)。インストールの成功後は、ヘッダーとパッケージのキャッシュを保持しません。1
: インストールの成功後も、キャッシュを保持します。logfile
=file_name-
ログ出力の場所を指定するため、file_name を、yum がログ出力を書き込むファイルへの絶対パスで置き換えます。デフォルトでは、yum は
/var/log/yum.log
にログを記録します。 max_connenctions
=number- ここでの value は、同時接続の最大数を表します。デフォルトは 5 です。
multilib_policy
=valuemultilib_policy
は、複数のアーキテクチャーバージョンがパッケージのインストールに利用できる場合に、インストール動作を設定します。ここで、value は以下を表します。best
: このシステムに最適なアーキテクチャーをインストールします。たとえば、AMD64 システムにmultilib_policy=best
を設定すると、yum は全パッケージの 64 ビットバージョンをインストールします。all
: 常に全パッケージ用の可能なあらゆるアーキテクチャーをインストールします。たとえば、AMD64 システムでmultilib_policy
をall
に設定すると、yum は i686 および AMD64 のパッケージが利用可能であれば両方のバージョンをインストールします。obsoletes
=valueobsoletes
オプションでは、更新中に廃止プロセス論理を有効化します。あるパッケージのスペックファイルで、別のパッケージを廃止することを宣言すると、廃止宣言したパッケージのインストール時に、廃止宣言されたパッケージが、廃止宣言したパッケージに置き換えられます。たとえば、パッケージ名が変更された場合などに廃止が宣言されます。value を、以下のいずれかで置き換えます。0
: 更新の実行時に yum の廃止処理ロジックを無効にします。1
: (デフォルト)。更新の実行時に yum の廃止処理ロジックを有効にします。plugins
=valueこれは、yum プラグインを有効または無効にするグローバルスイッチです。value は以下のいずれかになります。
0
: yum のプラグインをグローバルで無効にします。重要一部のプラグインは重要な yum サービスを提供するため、すべてのプラグインを無効にすることは推奨されません。特に、product-id および subscription-manager プラグインは、証明書ベースの
Content Delivery Network
(CDN) のサポートを提供します。プラグインをグローバルで無効にするオプションは便利なオプションとして提供されていますが、通常は yum に潜在的な問題があると判断された場合にのみ使用することが推奨されます。1
(デフォルト値): すべての yum プラグインを全体的に有効にします。plugins=1
では、そのプラグインの設定ファイルにenabled=0
を設定して、特定の yum プラグインを無効にすることができます。yum の各種プラグインの詳細は 「yum のプラグイン」 を参照してください。プラグインの制御に関する詳細は 「yum プラグインを有効、設定、および無効にする方法」 を参照してください。
reposdir
=directory-
ここでの directory は
.repo
ファイルがあるディレクトリーへの絶対パスです。すべての.repo
ファイルには、リポジトリー情報 (/etc/yum.conf
の[repository]
セクションと類似) が含まれています。yum は.repo
ファイルおよび/etc/yum.conf
ファイルの[repository]
セクションからすべてのリポジトリー情報を収集し、トランザクションに使用するリポジトリーのマスター一覧を作成します。reposdir
が設定されていない場合は、yum はデフォルトのディレクトリーである/etc/yum.repos.d/
を使用します。 retries
=value-
このオプションは、エラーを返す前に yum がファイルの取得を試行する回数を設定します。値 は整数
0
以上です。値を0
に設定すると、yum はその試行を何度も続けます。デフォルト値は10
です。
利用可能な [main]
オプションの詳細なリストは、man ページの yum.conf(5) の [main] OPTIONS
セクションを参照してください。
9.5.2. [repository] オプションの設定
[repository]
セクションでは、個別の yum リポジトリーを定義できます。repository は、my_personal_repo
(スペースは使用不可) などの一意のリポジトリー ID になります。競合を回避するために、カスタムリポジトリーには、Red Hat リポジトリーで使用されている名前を使用しないでください。
[repository]
セクションでは、少なくとも以下の例のような形式が必要になります。
[repository] name=repository_name baseurl=repository_url
すべての [repository]
セクションには、以下のディレクティブを含める必要があります。
name
=repository_name- repository_name は、人間が判読可能な、リポジトリーを説明する文字列になります。
baseurl
=repository_urlrepository_url を、リポジトリーの repodata ディレクトリーが置かれているディレクトリーへの URL に置き換えます。
-
リポジトリーが HTTP にある場合は、
http://path/to/repo
を使用します。 -
リポジトリーが FTP にある場合は、
ftp://path/to/repo
を使用します。 -
リポジトリーがマシンのローカルにある場合は、
file:///path/to/local/repo
を使用します。 特定のオンラインリポジトリーでベーシック HTTP 認証が必要な場合は、
username:password@link
として URL にプリペンドして、ユーザー名とパスワードを指定できます。たとえば、http://www.example.com/repo/ のリポジトリーで user のユーザー名およびパスワード password が必要な場合、baseurl リンクは http://user:password@www.example.com/repo/ として指定できます。通常この URL は以下のような HTTP リンクになります。
baseurl=http://path/to/repo/releases/$releasever/server/$basearch/os/
yum は、常に URL の
$releasever
、$arch
、$basearch
変数をデプロイメントする点に注意して下さい。yum 変数の詳細は 「yum 変数の使用」 を参照してください。
-
リポジトリーが HTTP にある場合は、
以下のような便利な [repository]
ディレクティブもあります。
enabled
=valueこのオプションを使用すれば、yum が特定のリポジトリーを使用するか無視するかを簡単に設定できます。value は、以下のいずれかになります。
0
: 更新およびインストールの実行時には、パッケージソースとしてこのリポジトリーを含めません。これはリポジトリーを迅速に有効または無効にする簡単な方法です。更新またはインストールには無効にしているリポジトリーから、単一パッケージが欲しい場合に便利です。1
: パッケージソースとしてこのリポジトリーを含めます。リポジトリーのオンとオフは、
--enablerepo=repo_name
または--disablerepo=repo_name
オプションをyum
に渡すか、PackageKit ユーティリティーのソフトウェアの追加/削除
ウィンドウから実行できます。async
=valueリポジトリーパッケージの並行ダウンロードを制御します。値は、以下のいずれかになります。
auto
(デフォルト): 可能な場合、並行ダウンロードを使用します。つまり、失敗を回避するために yum はプラグインが作成したリポジトリーについては自動的にこれを無効にします。on
: リポジトリーの並行ダウンロードが有効になります。off
: リポジトリーの並行ダウンロードが無効になります。
他にも多くの [repository]
オプションがあります。このうちのいくつかは、[main]
オプションと同一形式、同一機能になります。オプションのリストは、yum.conf
(5) man ページの [repository] OPTIONS セクションを参照してください。
例9.25 /etc/yum.repos.d/redhat.repo ファイルのサンプル
以下は、/etc/yum.repos.d/redhat.repo
ファイルのサンプルです。
# # Red Hat Repositories # Managed by (rhsm) subscription-manager # [red-hat-enterprise-linux-scalable-file-system-for-rhel-6-entitlement-rpms] name = Red Hat Enterprise Linux Scalable File System (for RHEL 6 Entitlement) (RPMs) baseurl = https://cdn.redhat.com/content/dist/rhel/entitlement-6/releases/$releasever/$basearch/scalablefilesystem/os enabled = 1 gpgcheck = 1 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release sslverify = 1 sslcacert = /etc/rhsm/ca/redhat-uep.pem sslclientkey = /etc/pki/entitlement/key.pem sslclientcert = /etc/pki/entitlement/11300387955690106.pem [red-hat-enterprise-linux-scalable-file-system-for-rhel-6-entitlement-source-rpms] name = Red Hat Enterprise Linux Scalable File System (for RHEL 6 Entitlement) (Source RPMs) baseurl = https://cdn.redhat.com/content/dist/rhel/entitlement-6/releases/$releasever/$basearch/scalablefilesystem/source/SRPMS enabled = 0 gpgcheck = 1 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release sslverify = 1 sslcacert = /etc/rhsm/ca/redhat-uep.pem sslclientkey = /etc/pki/entitlement/key.pem sslclientcert = /etc/pki/entitlement/11300387955690106.pem [red-hat-enterprise-linux-scalable-file-system-for-rhel-6-entitlement-debug-rpms] name = Red Hat Enterprise Linux Scalable File System (for RHEL 6 Entitlement) (Debug RPMs) baseurl = https://cdn.redhat.com/content/dist/rhel/entitlement-6/releases/$releasever/$basearch/scalablefilesystem/debug enabled = 0 gpgcheck = 1 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release sslverify = 1 sslcacert = /etc/rhsm/ca/redhat-uep.pem sslclientkey = /etc/pki/entitlement/key.pem sslclientcert = /etc/pki/entitlement/11300387955690106.pem
9.5.3. yum 変数の使用
yum
コマンドおよびすべての yum 設定ファイル (つまり /etc/yum.conf
および /etc/yum.repos.d/
ディレクトリー内のすべての .repo
ファイル) 内で、以下の組み込み変数を使用および参照できます。
$releasever
-
この変数を使用すると、Red Hat Enterprise Linux のリリースバージョンを参照できます。yum は
/etc/yum.conf
設定ファイルにあるdistroverpkg=value
の行から$releasever
の値を取得します。/etc/yum.conf
にそのような行がない場合、yum は、redhat-release
ファイルを提供するredhat-releaseproduct
パッケージからバージョン番号を取得することにより、正しい値を推測します。 $arch
-
この変数を使用して、Python の
os.uname()
関数を呼び出す時に返り値としてシステムの CPU アーキテクチャーを参照できます。$arch
の有効な値は、i586
、i686
、x86_64
です。 $basearch
-
$basearch
を使用すると、システムのベースアーキテクチャーを参照できます。たとえば、i686 および i586 の両マシンにはi386
のベースアーキテクチャーがあり、AMD64 および Intel 64 の両マシンにはx86_64
のベースアーキテクチャーがあります。 $YUM0-9
-
これら 10 個の変数は、それぞれ同じ名前を持つシェル環境変数の値に置換されます。これら変数のいずれかが (たとえば
/etc/yum.conf
で) 参照され、同じ名前を持つシェル環境変数が存在しない場合、設定ファイルの変数は置換されません。
カスタム変数の定義、既存の変数値の上書きを行うには、/etc/yum/vars/
ディレクトリー内に変数と同じ名前を持つファイルを作成して ($
記号はなし) 、1 行目に希望する値を追加します。
たとえば多くの場合、リポジトリーの詳細にはオペレーティングシステムの名前が含まれます。$osname
と呼ばれる新しい変数を定義するには、1 行目に Red Hat Enterprise Linux の名前を持つ新しいファイルを作成して、/etc/yum/vars/osname
として保存します。
~]# echo "Red Hat Enterprise Linux 7" > /etc/yum/vars/osname
.repo
ファイルでは、Red Hat Enterprise Linux 7 の代わりに以下を使用することができます。
name=$osname $releasever
9.5.4. 現在の設定の表示
yum グローバルオプションの現在の値 (つまり /etc/yum.conf
ファイルの [main]
セクションで指定されたオプション) を表示するには、コマンドラインのオプションなしで yum-config-manager
コマンドを実行します。
yum-config-manager
別の設定セクションの内容をリスト表示するには、以下の形式でコマンドを実行します。
yum-config-manager
section…
glob 表現を使用して、適合する全セクションの設定を表示することもできます。
yum-config-manager glob_expression…
例9.26 main セクションの設定を表示する
すべての設定オプションとそれらに対応する値をリスト表示するには、シェルプロンプトで以下を入力します。
~]$ yum-config-manager main \* Loaded plugins: langpacks, product-id, subscription-manager ================================== main =================================== [main] alwaysprompt = True assumeyes = False bandwith = 0 bugtracker_url = https://bugzilla.redhat.com/enter_bug.cgi?product=Red%20Hat%20Enterprise%20Linux%206&component=yum cache = 0 [output truncated]
9.5.5. yum リポジトリーの追加、有効化、および無効化
専門知識を深めるには、Red Hat System Administration III (RH254) トレーニングコースの受講を推奨します。
「[repository] オプションの設定」 では、yum リポジトリーの定義に使用できるさまざまなオプションを説明しています。本セクションでは、yum-config-manager
コマンドを使用してリポジトリーを追加、もしくは有効または無効にする方法を説明します。
システムが Red Hat Subscription Management で証明書ベースの Content Delivery Network
(CDN) に登録されている場合、/etc/yum.repos.d/redhat.repo
ファイル内のリポジトリー管理には Red Hat サブスクリプションマネージャー ツールが使用されます。
yum リポジトリーの追加
新しいリポジトリーを定義するには、[repository]
セクションを、/etc/yum.conf
ファイルか、/etc/yum.repos.d/
ディレクトリーの .repo
ファイルに追加します。このディレクトリーにある、.repo
ファイル拡張子が付いたすべてのファイルを、yum が読み取ります。リポジトリーは、/etc/yum.conf
ではなく、ここに定義することが推奨されます。
ソフトウェアパッケージを、Red Hat の認証ベース Content Delivery Network
(CDN) 以外の未検証または信頼できないソフトウェアソースから取得してインストールする場合には、セキュリティー上のリスクが伴います。セキュリティー、安定性、互換性、保全性に関する問題につながる恐れがあります。
yum リポジトリーは、一般的に .repo
ファイルを提供します。このようなリポジトリーをシステムに追加して有効にするには、root
で以下のコマンドを実行します。
yum-config-manager --add-repo repository_url
repository_url は、.repo
ファイルへのリンクになります。
例9.27 example.repo の追加
http://www.example.com/example.repo にあるリポジトリーを追加するには、シェルプロンプトで以下を入力します。
~]# yum-config-manager --add-repo http://www.example.com/example.repo Loaded plugins: langpacks, product-id, subscription-manager adding repo from: http://www.example.com/example.repo grabbing file http://www.example.com/example.repo to /etc/yum.repos.d/example.repo example.repo | 413 B 00:00 repo saved to /etc/yum.repos.d/example.repo
yum リポジトリーの有効化
特定のリポジトリーを有効にするには、root
で以下のコマンドを入力します。
yum-config-manager
--enable
repository…
ここでの repository は一意のリポジトリー ID になります (利用可能なリポジトリー ID をリスト表示するには yum repolist all
を使用)。別の方法では、glob 表現を使用すると、一致するすべてのリポジトリーを有効にできます。
yum-config-manager --enable glob_expression…
例9.28 /etc/yum.conf のカスタムセクションで定義されるリポジトリーを有効にする
[example]
、[example-debuginfo]
、[example-source]
セクション内で定義されたリポジトリーを有効にするには、以下を入力します。
~]# yum-config-manager --enable example\* Loaded plugins: langpacks, product-id, subscription-manager ============================== repo: example ============================== [example] bandwidth = 0 base_persistdir = /var/lib/yum/repos/x86_64/7Server baseurl = http://www.example.com/repo/7Server/x86_64/ cache = 0 cachedir = /var/cache/yum/x86_64/7Server/example [output truncated]
例9.29 すべてのリポジトリーの有効化
/etc/yum.conf
ファイルと /etc/yum.repos.d/
ディレクトリーで定義されたすべてのリポジトリーを有効にするには、以下のコマンドを入力します。
~]# yum-config-manager --enable \* Loaded plugins: langpacks, product-id, subscription-manager ============================== repo: example ============================== [example] bandwidth = 0 base_persistdir = /var/lib/yum/repos/x86_64/7Server baseurl = http://www.example.com/repo/7Server/x86_64/ cache = 0 cachedir = /var/cache/yum/x86_64/7Server/example [output truncated]
成功すると、yum-config-manager --enable
コマンドは現在のリポジトリー設定を表示します。
yum リポジトリーの無効化
yum リポジトリーを無効にするには、root
で以下のコマンドを実行します。
yum-config-manager
--disable
repository…
ここでの repository は一意のリポジトリー ID になります (利用可能なリポジトリー ID をリスト表示するには yum repolist all
を使用)。yum-config-manager --enable
と同様に、glob 表現を使用して、一致するすべてのリポジトリーを同時に無効にできます。
yum-config-manager --disable glob_expression…
例9.30 すべてのリポジトリーの無効化
/etc/yum.conf
ファイルと /etc/yum.repos.d/
ディレクトリーで定義されたすべてのリポジトリーを無効にするには、以下のコマンドを入力します。
~]# yum-config-manager --disable \* Loaded plugins: langpacks, product-id, subscription-manager ============================== repo: example ============================== [example] bandwidth = 0 base_persistdir = /var/lib/yum/repos/x86_64/7Server baseurl = http://www.example.com/repo/7Server/x86_64/ cache = 0 cachedir = /var/cache/yum/x86_64/7Server/example [output truncated]
成功すると、yum-config-manager --disable
コマンドは現在の設定を表示します。
9.5.6. yum リポジトリーの作成
yum リポジトリーを設定するには、以下を行います。
createrepo パッケージをインストールします。
# yum install createrepo
新しいリポジトリーのパッケージをすべて 1 つのディレクトリー (
/tmp/local_repo/
など) にコピーします。cp /your/packages/*.rpm /tmp/local_repo/
リポジトリーの実行を作成するには、以下を行います。
createrepo /tmp/local_repo/
これにより、yum リポジトリーから必要なメタデータが、新たに作成したサブディレクトリー
repodata
に作成されます。このリポジトリーを yum で利用できるようになりました。このリポジトリーは HTTP または FTP プロトコルで共有でき、ローカルマシンから直接参照できます。yum リポジトリーを設定する方法は 「[repository] オプションの設定」 セクションを参照してください。
注記リポジトリーの URL を構築するには、
/mnt/local_repo/repodata
ではなく/mnt/local_repo
を参照してください。実際の yum パッケージは/mnt/local_repo
にあります。
9.5.6.1. 作成した yum リポジトリーへのパッケージの追加
作成した yum リポジトリーにパッケージを追加するには、以下を行います。
リポジトリーディレクトリー (
/tmp/local_repo/
など) に新しいパッケージをコピーします。cp /your/packages/*.rpm /tmp/local_repo/
メタデータで新たに追加されたパッケージを反映するには、以下を実行します。
createrepo --update /tmp/local_repo/
任意: 新たに更新したリポジトリーで yum コマンドを使用している場合は、以下のコマンドを実行します。
yum clean expire-cache
9.5.7. Optional および Supplementary リポジトリーの追加
Optional および Supplementary のサブスクリプションチャンネルでは、オープンソースのライセンス付きソフトウェア (Optional チャンネル) と商用ライセンス付きソフトウェア (Supplementary チャンネル) をカバーする Red Hat Enterprise Linux 用の追加ソフトウェアパッケージが提供されます。
Optional および Supplementary チャンネルをサブスクライブする前に、対象範囲の詳細 を参照してください。これらのチャンネルからパッケージをインストールする場合は、Red Hat カスタマーポータルの記事 証明書ベースの管理を使用して、Optional および Supplementary チャンネル、-devel パッケージにアクセスする方法 で説明されている手順を行ってください。
9.6. yum のプラグイン
yum は、その操作を拡張し、強化するプラグインを提供します。特定のプラグインが、デフォルトでインストールされています。yum コマンドを呼び出すたびに、読み込まれ、アクティブになっているプラグインがあれば、yum
がそれを通知します。以下に例を示します。
~]# yum info yum Loaded plugins: langpacks, product-id, subscription-manager [output truncated]
Loaded plugins
に続くプラグイン名は --disableplugin=plugin_name
オプションに指定できる名前です。
9.6.1. yum プラグインを有効、設定、および無効にする方法
yum プラグインを有効にする場合は、/etc/yum.conf
の [main]
セクションに plugins=
で始まる行を追加し、その値を 1
にします。
plugins=1
すべてのプラグインを無効にするには、この行を plugins=0
に変更します。
一部のプラグインは重要な yum サービスを提供するため、すべてのプラグインを無効にすることは推奨されません。その中でも product-id プラグインおよび subscription-manager プラグインは、証明書ベースの Content Delivery Network
(CDN) への対応に必要です。プラグインをグローバルで無効にするオプションは便利なオプションとして提供されていますが、通常は yum に潜在的な問題があると判断された場合にのみ使用することが推奨されます。
すべてのインストール済みプラグインには、/etc/yum/pluginconf.d/
ディレクトリーにそれぞれの設定ファイルがあります。このファイルに、プラグイン固有のオプションを設定できます。たとえば、以下のように aliases プラグインの aliases.conf
設定ファイルがあるとします。
[main] enabled=1
/etc/yum.conf
ファイルと同様、プラグイン設定ファイルには常に [main]
セクションが含まれます。このセクションでは、enabled=
オプションで、yum
コマンドを実行する際にプラグインを有効にするかどうかを制御します。このオプションがファイルに含まれていない場合は手動で追加できます。
/etc/yum.conf
に enabled=0
を設定してすべてのプラグインを無効にすると、個々の設定ファイルで有効かどうかに関わらず、すべてのプラグインが無効になります。
1 つの yum
コマンドで yum プラグインをすべて無効にする場合は、--noplugins
オプションを使用します。
1 つの yum
コマンドで、1 つ以上の yum プラグインを無効にする場合は、そのコマンドに --disableplugin=plugin_name
オプションを追加します。たとえば、システムの更新中に aliases プラグインを無効にするには、以下を入力します。
~]# yum update --disableplugin=aliases
--disableplugin=
オプションに指定したプラグイン名は、yum
コマンドの出力の Loaded プラグイン
行の後にリスト表示される名前と同じです。名前をコンマで区切ることにより、複数のプラグインを無効にすることができます。さらに、glob 表現を使用して、複数のプラグイン名に一致したり、長いプラグイン名を短くすることができます。
~]# yum update --disableplugin=aliases,lang*
9.6.2. 追加の Yum プラグインのインストール
yum プラグインは通常、 yum-plugin-plugin_name
規則に従いますが、常に kabi プラグインを提供するパッケージは kabi-yum-plugins
という名前です。yum プラグインは、他のパッケージをインストールするのと同じ方法でインストールできます。たとえば、yum-aliases プラグインをインストールするには、シェルプロンプトで次のコマンドを実行します。
~]# yum install yum-plugin-aliases
9.6.3. yum プラグインの使用方法
以下では、便利な yum プラグインの説明と使用方法を紹介しています。プラグインは名前で表示されており、括弧内はパッケージ名になります。
- search-disabled-repos (subscription-manager)
search-disabled-repos プラグインを使用すると、依存関係を解決するために無効なリポジトリーを一時的または永久的に有効にできます。このプラグインが有効な場合は、依存関係の解決に失敗して Yum がパッケージのインストールに失敗したときに、無効なリポジトリーを一時的に有効し、再試行することが提示されます。インストールが成功した場合、Yum は使用されているリポジトリーを永久的に有効にすることも提示します。プラグインは subscription-manager により管理されているリポジトリーとのみ連携し、カスタムリポジトリーとは連携しません。
重要yum
が--assumeyes
または-y
オプションで実行されるか、/etc/yum.conf
でassumeyes
ディレクティブが有効になっている場合、プラグインは、確認を求めるプロンプトなしに、一時的に、そして永続的に無効なリポジトリーを有効にします。この結果、有効にしたくないリポジトリーが有効になるといった問題が発生することがあります。search-disabled-repos プラグインを設定するには、
/etc/yum/pluginconf.d/search-disabled-repos.conf
にある設定ファイルを編集します。[main]
セクションで使用できるディレクティブのリストについては、以下の表を参照してください。表9.3 サポートされている search-disabled-repos.conf ディレクティブ ディレクティブ 詳細 enabled
=valueプラグインを有効または無効にできます。value は
1
(有効) または0
(無効) にする必要があります。プラグインはデフォルトで有効です。notify_only
=valueプラグインの動作を通知のみに制限できます。value は
1
(Yum の動作の変更なしで通知のみ) または0
(Yum の動作の変更) のいずれかにする必要があります。デフォルトでは、プラグインはユーザーへの通知のみを行います。ignored_repos
=repositoriesプラグインで有効でないリポジトリーを指定できます。
- kabi (kabi-yum-plugins)
kabi プラグインは、ドライバー更新パッケージが公式の Red Hat kernel Application Binary Interface (kABI) と適合するかどうかを確認します。このプラグインが有効な状態で、ユーザーがホワイトリストにないカーネルシンボルを使用するパッケージのインストールを試行する場合は、警告メッセージがシステムログに書き込まれます。さらには、プラグインを enforcing モードで実行するように設定すると、そうしたパッケージがインストールされないようにできます。
kabi プラグインを設定するには、
/etc/yum/pluginconf.d/kabi.conf
にある設定ファイルを編集します。[main]
セクションに使用できるディレクティブのリストを以下の表に示します。表9.4 サポートされている kabi.conf ディレクティブ ディレクティブ 詳細 enabled
=valueプラグインを有効または無効にできます。value は
1
(有効) または0
(無効) にする必要があります。インストール時には、プラグインはデフォルトで有効です。whitelists
=directoryサポートされているカーネルシンボルを持つファイルがある directory を指定できます。デフォルトでは、kabi プラグインは kernel-abi-whitelists パッケージ (
/usr/lib/modules/kabi-rhel70/
ディレクトリー) が提供するファイルを使用します。enforce
=valueenforcing モードを有効または無効にできます。value は
1
(有効) または0
(無効) にする必要があります。デフォルトでは、このオプションはコメントアウトされ kabi プラグインは警告メッセージのみを表示します。- product-id (subscription-manager)
- product-id プラグインは、Content Delivery Network (コンテンツ配信ネットワーク) からインストールされた製品の製品識別証明書を管理します。product-id プラグインはデフォルトでインストールされています。
- langpacks (yum-langpacks)
- langpacks プラグインは、インストールされているすべてのパッケージ用に選択された言語のロケールパッケージを検索するために使用します。langpacks プラグインはデフォルトでインストールされます。
- エイリアス (yum-plugin-aliases )
-
aliases プラグインは、
yum
のエイリアスの設定と使用を可能にするalias
コマンドラインオプションを追加します。 - yum-changelog (yum-plugin-changelog)
-
yum-changelog プラグインは、更新前後にパッケージ変更ログの表示を有効にする
--changelog
コマンドラインオプションを追加します。 - yum-tmprepo (yum-plugin-tmprepo)
-
yum-tmprepo プラグインは、リポジトリーファイルの URL を取り扱う
--tmprepo
コマンドラインオプションを追加し、1 つのトランザクションに対してのみダウンロードおよび有効化します。このプラグインはリポジトリーの安全な一時的使用を確保します。デフォルトでは、gpg 確認を無効にしません。 - yum-verify ( yum-plugin-verify )
-
yum-verify プラグインは、システム上の検証データを表示するための
verify
、verify-rpm
、verify-all
コマンドラインオプションを追加します。 - yum-versionlock ( yum-plugin-versionlock )
-
yum-versionlock プラグインは選択されたパッケージの他のバージョンを除外し、パッケージが最新バージョンに更新されることを防ぎます。
versionlock
コマンドラインオプションを使用すると、ロックされたパッケージを表示して、編集できます。
9.7. yum-cron を使用したパッケージデータベースの自動更新および更新のダウンロード
yum-cron
サービスがパッケージの更新を自動的に確認してダウンロードします。yum-cron
が提供する cron ジョブは、yum-cron パッケージのインストール後すぐにアクティブになります。また、yum-cron
サービスは、ダウンロードした更新を自動的にインストールできます。
yum-cron
サービスのデフォルト設定では、以下を行います。
- 1 時間ごとに yum cache のメタデータを更新。
- yum cache で保留になっているパッケージの更新を 1 日 1 回ダウンロード。リポジトリーで新しいパッケージが利用可能になると、メールが送信されます。詳細は 「任意のメール通知の設定」 の章を参照してください。
yum-cron
サービスには設定ファイルが 2 つあります。
/etc/yum/yum-cron.conf
- 日次タスクの場合。
/etc/yum/yum-cron-hourly.conf
- 1 時間ごとのタスクの場合。
9.7.1. 更新の自動インストールの有効化
ダウンロードした更新の自動インストールを有効にするには、日次設定ファイル (日次インストールの場合) または 1 時間単位の設定ファイル (1 時間ごとのインストールの場合) で apply_updates
を以下のように設定します。
apply_updates = yes
9.7.2. 任意のメール通知の設定
デフォルトでは、yum-cron
サービスは cron
を使用して、実行したコマンドの出力を含むメール送信を行います。このメールは cron
設定に従って送信されますが、通常はローカルのスーパーユーザー、および /var/spool/mail/root
ファイルに設定されているユーザーに送信されます。
すべての cron
ジョブに影響する設定とは異なり、特定のメール設定を使用できます。ただし、このメール設定では TLS および全体のメールの組み込みロジックはサポートされません。
yum-cron
の組み込みメール通知を有効にするには、以下を実行します。
選択した
yum-cron
設定ファイルを開きます。/etc/yum/yum-cron.conf
- 日次タスクの場合。
/etc/yum/yum-cron-hourly.conf
- 1 時間ごとのタスクの場合。
[emitters]
セクションで、以下のオプションを設定します。emit_via = email
-
必要に応じて、
email_from
、email_to
、email_host
オプションを指定します
9.7.3. 個別のリポジトリーの有効化または無効化
yum-cron
は、リポジトリーの特定の設定をサポートしません。yum
ではなく、yum-cron
で個別のリポジトリーを有効または無効にするには、以下の手順を行ってください。
- システムの任意の場所に空のリポジトリー設定ディレクトリーを作成します。
-
/etc/yum.repos.d/
ディレクトリーから、新たに作成したこのディレクトリーに設定ファイルをすべてコピーします。 /etc/yum.repos.d/
内の各.repo
設定ファイルで、以下のようにenabled
オプションを設定します。enabled = 1
- リポジトリーを有効にするには、以下を行います。
enabled = 0
- リポジトリーを無効にするには、以下を行います。
選択した
yum-cron
設定ファイルの最後に、新たに作成したリポジトリーのディレクトリーを指定する以下のオプションを追加します。reposdir=/path/to/new/reposdir
9.7.4. Yum-cron 設定のテスト
次に予定されている yum-cron
タスクを待たずに yum-cron
設定をテストするには、以下を行います。
選択した
yum-cron
設定ファイルを開きます。/etc/yum/yum-cron.conf
- 日次タスクの場合。
/etc/yum/yum-cron-hourly.conf
- 1 時間ごとのタスクの場合。
以下のように、選択した設定ファイルに
random_sleep
オプションを設定します。random_sleep = 0
設定を保存します。
# yum-cron /etc/yum/yum-cron.conf # yum-cron /etc/yum/yum-cron-hourly.conf
9.7.5. yum-cron メッセージの無効
yum-cron
メッセージを完全に無効にすることはできませんが、優先度が重大なメッセージだけに制限することはできます。メッセージを制限するには、以下を行います。
選択した
yum-cron
設定ファイルを開きます。/etc/yum/yum-cron.conf
- 日次タスクの場合。
/etc/yum/yum-cron-hourly.conf
- 1 時間ごとのタスクの場合。
設定ファイルの
[base]
セクションに以下のオプションを設定します。debuglevel = -4
9.7.6. パッケージの自動削除
yum-cron
サービスは、yum clean all
コマンドと同様に、パッケージを削除する設定オプションはサポートしていません。パッケージを自動的に削除するには、実行可能なシェルスクリプトとして cron ジョブを作成できます。
/etc/cron.daily/
ディレクトリーにシェルスクリプトを作成し、以下を追加します。#!/bin/sh yum clean all
スクリプトを実行可能にします。
# chmod +x /etc/cron.daily/script-name.sh
9.8. 関連情報
Red Hat Enterprise Linux でソフトウェアパッケージを管理する方法についての詳細情報は、下記のリソースを参照してください。
インストールされているドキュメント
-
yum
(8): yum コマンドラインユーティリティーの man ページには、サポートされるオプションおよびコマンドの完全なリストを提供します。 -
yumdb
(8):yumdb
コマンドラインユーティリティーの man ページでは、このツールを使用してクエリーを行い、必要であれば yum データベースを変更する方法が説明されています。 -
yum.conf
(5):yum.conf
の man ページでは、利用できる yum 設定オプションが説明されています。 -
yum-utils
(1):yum-utils
の man ページでは、yum 設定の管理、リポジトリーの操作、yum データベースの作業を行う追加ユーティリティーのリスト表示と簡単な説明が提供されます。
オンラインリソース
- Yum Guides: プロジェクトホームページ上の Yum Guides では、追加のドキュメンテーションのリンクがあります。
- Red Hat Customer Portal Labs: Red Hat Customer Portal Labs で Yum Repository Configuration Helper をご利用になれます。
関連項目
-
6章権限の取得 では、
su
およびsudo
コマンドを使用して管理者権限を取得する方法を説明しています。
パート IV. インフラストラクチャーサービス
ここでは、サービスおよびデーモンの設定方法と、Red Hat Enterprise Linux マシンへのリモートアクセスを可能にする方法を提供します。
第10章 systemd によるサービス管理
10.1. systemd の概要
systemd は、Linux オペレーティングシステム用のシステムおよびサービスのマネージャーです。SysV init スクリプトと後方互換するように設計されており、システム起動時のシステムサービスの並行スタートアップや、デーモンのオンデマンドのアクティベーション、依存関係ベースのサービス制御論理などの多くの機能を提供します。Red Hat Enterprise Linux 7 では、systemd は Upstart に代わるデフォルトの init システムです。
systemd は、systemd unit の概念を導入します。これらの unit は 表10.2「systemd のユニットファイルの場所」 にあるディレクトリーの 1 つに置かれる unit 設定ファイルで表示され、システムサービスやリスニングソケット、init システムに関連するその他のオブジェクトに関する情報を要約します。利用可能な systemd unit タイプの完全なリストは、表10.1「利用可能な systemd のユニットタイプ」 を参照してください。
ユニットのタイプ | ファイルの拡張子 | 詳細 |
---|---|---|
サービスユニット |
| システムサービス |
ターゲットユニット |
| systemd ユニットのグループ |
自動マウントユニット |
| ファイルシステムの自動マウントポイント |
デバイスユニット |
| カーネルが認識するデバイスファイル |
マウントユニット |
| ファイルシステムのマウントポイント |
パスユニット |
| ファイルシステム内のファイルまたはディレクトリー |
スコープユニット |
| 外部作成のプロセス |
スライスユニット |
| システムプロセスを管理する、階層的に設定されたユニットのグループ |
スナップショットユニット |
| systemd マネージャーの保存状態。 |
ソケットユニット |
| プロセス間の通信ソケット |
スワップユニット |
| スワップデバイスまたはスワップファイル |
タイマーユニット |
| systemd タイマー |
ディレクトリー | 説明 |
---|---|
| インストール済みの RPM パッケージで配布された systemd のユニットファイル。 |
| ランタイム時に作成された systemd ユニットファイル。このディレクトリーは、インストール済みのサービスのユニットファイルのディレクトリーよりも優先されます。 |
|
|
system.conf を使用してデフォルトの systemd 設定の上書き
systemd のデフォルト設定はコンパイル中に定義され、/etc/systemd/system.conf
にある systemd 設定ファイルで確認できます。ここに記載されるデフォルトではなく、systemd ユニットでグローバルに選択したデフォルト値を上書きする場合は、このファイルを使用します。
たとえば、タイムアウト制限のデフォルト値 (90 秒) を上書きする場合は、DefaultTimeoutStartSec
パラメーターを使用して、上書きする値を秒単位で入力します。
DefaultTimeoutStartSec=required value
例10.21「タイムアウト制限の変更」 も参照してください。
10.1.1. 主な特長
Red Hat Enterprise Linux 7 では、systemd システムおよびサービスマネージャーは以下の主要な機能を提供します。
ソケットベースのアクティベーション: 起動時に systemd は、このタイプのアクティベーションをサポートするすべてのシステムサービス用のリスニングソケットを作成し、サービスが開始するとすぐにこれらのソケットをサービスに渡します。これで systemd がサービスを並行で開始できるだけでなく、サービスが利用可能でない間に送信されたメッセージを失うことなくサービスの再起動が可能になります。これは、対応するソケットがアクセス可能なままで、すべてのメッセージがキューに登録されるためです。
systemd は、ソケットベースの有効化にソケットユニットを使用します。
- バスベースのアクティベーション: プロセス間の通信に D-Bus を使用するシステムサービスは、クライアントアプリケーションがシステムサービスとの通信を初めて試みる時にオンデマンドで開始します。systemd は、バスベースのアクティベーションにD-Bus service files を使用します。
- デバイスベースのアクティベーション: デバイスベースのアクティベーションをサポートするシステムサービスは、特定のタイプのハードウェアがプラグインするか利用可能になると、オンデマンドで開始できます。systemd は、デバイスベースのアクティベーションに、デバイスユニットを使用します。
- パスベースのアクティベーション: パスベースのアクティベーションをサポートするシステムサービスは、特定のファイルまたはディレクトリーのステータスが変更になると、オンデマンドで開始できます。systemd は、パスベースのアクティベーションに パスユニット を使用します。
- マウントおよび自動マウントポイント管理: systemd は、マウントポイントおよび自動マウントポイントを監視および管理します。systemd は、マウントポイントにマウントユニットを使用し、自動マウントポイントに自動マウントユニットを使用します。
- アグレッシブな並列化: ソケットベースのアクティベーションを使用するため、systemd はすべてのリスニングソケットが配置されると同時に並行してシステムサービスを開始できます。並列アクティベーションは、オンデマンドのアクティベーションをサポートするシステムサービスと組み合わせることで、システムの起動に必要な時間を大幅に短縮します。
- トランザクション unit アクティベーション論理: unit のアクティブ化または非アクティブ化の前に、systemd はその依存関係を計算して一時的なトランザクションを作成し、このトランザクションの一貫性を検証します。トランザクションに一貫性がない場合、systemd は自動的にこれを正そうとし、エラーをレポートする前に必須ではないジョブを削除しようと試みます。
- SysV init との後方互換性: Linux Standard Base Core Specification にあるように、systemd は SysV init スクリプトに対応しています。これにより、systemd サービスのユニットへのアップグレードが容易になります。
10.1.2. 互換性の変更点
systemd システムおよびサービスマネージャーは、その大部分が SysV init および Upstart と互換性があるように設計されています。以下では、Red Hat Enterprise Linux システムの以前のメジャーリリースとの比較で最も顕著な互換性の変更点を挙げています。
systemd のランレベルのサポートは限定的なものです。ランレベルに直接マッピング可能なターゲットユニットを数多く提供し、互換性のために以前の
runlevel
コマンドで配布されます。ただし、systemd ターゲットのすべてがランレベルに直接マッピングできるわけではないため、このコマンドが不明なランレベルを示すN
を返す場合もあります。可能な場合は、runlevel
コマンドの使用を避けることが推奨されます。systemd ターゲットの詳細と、ランレベルとの比較は、「systemd ターゲットでの作業」を参照してください。
systemctl
ユーティリティーは、カスタマイズされたコマンドをサポートしません。SysV init スクリプトでは、start
、stop
、status
といった標準のコマンドのほかに、任意のコマンドを実装して多くの機能を提供できます。たとえば、Red Hat Enterprise Linux 6 のiptables
の init スクリプトは、panic
コマンドで実行できます。これにより、パニックモードが即座に有効になり、システムを再設定して受信パケットおよび送信パケットをすべて切断します。これは systemd ではサポートされておらず、systemctl
は文書化されたコマンドのみ受け付けます。systemctl
ユーティリティー、および以前のservice
ユーティリティーとの比較は、「システムサービスの管理」 を参照してください。-
systemctl
ユーティリティーは、systemd が開始していないサービスとは通信しません。systemd がシステムサービスを開始すると、メインプロセスの ID を保存して、メインプロセスを追跡します。すると、systemctl
ユーティリティーがこの PID を使用してクエリーを行い、サービスを管理します。このため、ユーザーがコマンドラインで特定のデーモンを直接開始すると、systemctl
がそのデーモンの最新の状態を判断したり、停止したりすることができません。 -
systemd が停止するのは、実行中のサービスのみです。Red Hat Enterprise Linux 6 以前のリリースでは、シャットダウンシーケンスが開始すると、
/etc/rc0.d/
ディレクトリーにあるシンボリックリンクを使用して、利用可能なシステムサービスをそのステータスに関係なくすべて停止していました。systemd では、実行中のサービスだけを、シャットダウン時に停止します。 -
システムサービスは、標準の入力ストリームからは読み取れません。systemd がサービスを開始すると、標準入力を
/dev/null
に接続し、ユーザーとの対話を行わないようにします。 -
システムサービスは、呼び出したユーザーやそのセッションから、(環境変数
HOME
、PATH
などの) コンテキストを継承しません。各サービスは、クリーンな実行コンテキストで実行します。 - SysV init スクリプトを読み込む際に、systemd は Linux Standard Base (LSB) ヘッダーにエンコードされている依存関係情報を読み取り、ランタイム時に解釈します。
- サービスユニット上のすべての操作は、デフォルトで 5 分でタイムアウトになるように設定されており、サービスの故障でシステムがフリーズすることを防ぎます。この値は initscript から生成されるサービス用にハードコーディングされ、変更することができません。ただし、個別の設定ファイルを使用して、サービスごとにタイムアウト値を長くすることができます。例10.21「タイムアウト制限の変更」 を参照してください。
systemd で導入された互換性の変更点に関する詳細なリストは、Red Hat Enterprise Linux 7 の 移行計画ガイド を参照してください。
10.2. システムサービスの管理
専門知識のさらなる拡充を図るには、Red Hat System Administration II (RH134) トレーニングコースもあります。
以前のバージョンの Red Hat Enterprise Linux は、SysV init または Upstart で配布されており、/etc/rc.d/init.d/
ディレクトリーにある init スクリプト を使用していました。この init スクリプトは通常の Bash で書かれており、システム管理者がシステム内で、サービスの状態とデーモンを管理できるようになっていました。Red Hat Enterprise Linux 7 では、この init スクリプトは、サービスユニット に代わっています。
サービスユニットは、ファイル拡張子 .service
で終わり、init スクリプトと同様のロールを担います。システムサービスの表示、開始、停止、再開、有効化、無効化には、表10.3「service ユーティリティーと systemctl の比較」、表10.4「chkconfig ユーティリティーと systemctl の比較」、および本セクションで説明されているように、systemctl
コマンドラインを使用します。service
コマンドおよび chkconfig
コマンドは、引き続きシステムで利用可能になっており、期待通りに機能しますが、これらは互換性のために含まれており、使用は推奨されていません。
サービス | systemctl | 詳細 |
---|---|---|
|
| サービスを起動します。 |
|
| サービスを停止します。 |
|
| サービスを再起動します。 |
|
| サービスが実行中の場合のみ、再起動します。 |
|
| 設定を再読み込みします。 |
|
| サービスが実行中かどうかをチェックします。 |
|
| すべてのサービスのステータスを表示します。 |
chkconfig | systemctl | 詳細 |
---|---|---|
|
| サービスを有効にします。 |
|
| サービスを無効にします。 |
|
| サービスが有効かどうかを確認します。 |
|
| サービスをリスト表示し、各サービスが有効かどうかを確認します。 |
|
| 指定されたユニットの前に開始するように指定されているサービスをリスト表示します。 |
|
| 指定されたユニットの後に開始するように指定されているサービスをリスト表示します。 |
サービスユニットの指定
分かりやすくするため、本セクションの残りの部分のコマンド例では、.service
ファイル拡張子がついた完全なユニット名を使用します。以下に例を示します。
~]# systemctl stop nfs-server.service
ただし、ファイル拡張子は省略することができます。省略すると、systemctl
は、引数がサービスユニットであることを想定します。以下のコマンドは、上記のコマンドと同等のものになります。
~]# systemctl stop nfs-server
また、ユニットによってはエイリアス名を持つものもあります。この名前は、ユニット名よりも短くすることができ、ユニット名の代わりとして使用できます。特定のユニットに使用できるエイリアスを見つけるには、以下のコマンドを実行します。
~]# systemctl show nfs-server.service -p Names
chroot 環境における systemctl の挙動
chroot
コマンドを使用して root ディレクトリーを変更すると、ほとんどの systemctl
コマンドは、アクションの実行をすべて拒否します。なぜなら、systemd
プロセスと、chroot
コマンドを使用しているユーザーでは、ファイルシステムの見え方が異なるからです。このような状況は、systemctl
が キックスタート
ファイルから呼び出されたときなどに発生します。
例外が、systemctl enable
や systemctl disable
などのユニットファイルコマンドです。このコマンドは、実行中のシステムを必要とせず実行中のプロセスに影響を与えませんが、ユニットファイルには影響を及ぼします。したがってこのようなコマンドは、chroot
環境であっても実行することが可能です。たとえば、/srv/website1/
ディレクトリー配下で、システムの httpd
サービスを有効にするときは、以下のコマンドを実行します。
~]# chroot /srv/website1 ~]# systemctl enable httpd.service Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service, pointing to /usr/lib/systemd/system/httpd.service.
10.2.1. サービスのリスト表示
読み込み済みのサービスユニットのリストを表示するには、シェルプロンプトで以下を実行します。
systemctl list-units --type service
各サービスのユニットファイルに対して、このコマンドは正式名 (UNIT
) の後に、そのユニットファイルが読み込まれているかどうか (LOAD
)、そのユニットファイルアクティベーションの状態の概要 (ACTIVE
) および詳細 (SUB
) な状態、そして簡単な説明 (DESCRIPTION
) を示します。
デフォルトでは、systemctl list-units
コマンドは、アクティブなユニットのみを表示します。状態に関係なく読み込み済みユニットをすべて表示する場合は、コマンドラインオプションの --all
または -a
を付けて、以下のコマンドを実行します。
systemctl list-units --type service --all
また、利用可能なサービスユニットをリスト表示して、各ユニットが有効かどうかを確認できます。これには、以下のコマンドを実行します。
systemctl list-unit-files --type service
このコマンドにより、各サービスユニットの完全な名前 (UNIT FILE
) と、サービスユニットが有効かどうか (STATE
) が表示されます。個別のサービスユニットの状態を判断する方法は 「サービスステータスの表示」 を参照してください。
例10.1 サービスのリスト表示
読み込み済みのサービスユニットのリストを表示するには、以下のコマンドを実行します。
~]$ systemctl list-units --type service
UNIT LOAD ACTIVE SUB DESCRIPTION
abrt-ccpp.service loaded active exited Install ABRT coredump hook
abrt-oops.service loaded active running ABRT kernel log watcher
abrt-vmcore.service loaded active exited Harvest vmcores for ABRT
abrt-xorg.service loaded active running ABRT Xorg log watcher
abrtd.service loaded active running ABRT Automated Bug Reporting Tool
...
systemd-vconsole-setup.service loaded active exited Setup Virtual Console
tog-pegasus.service loaded active running OpenPegasus CIM Server
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
46 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'
インストール済みのサービスユニットファイルをリスト表示して、そのユニットが有効かどうかを判断するには、以下コマンドを実行します。
~]$ systemctl list-unit-files --type service UNIT FILE STATE abrt-ccpp.service enabled abrt-oops.service enabled abrt-vmcore.service enabled abrt-xorg.service enabled abrtd.service enabled ... wpa_supplicant.service disabled ypbind.service disabled 208 unit files listed.
10.2.2. サービスステータスの表示
システムサービスに対応するサービスユニットに関する詳細情報を表示するには、シェルプロンプトで以下を実行します。
systemctl status name.service
name を、確認するサービスユニット名 (gdm
など) に置き換えます。このコマンドでは、選択したサービスユニット名の後に、簡単な説明と、表10.5「利用可能なサービスユニットの情報」 にある 1 つ以上のフィールド、さらに root
ユーザーが実行している場合は最新のログエントリーが表示されます。
フィールド | 説明 |
---|---|
| サービスユニットが読み込まれているかどうか、ユニットファイルへの絶対パス、ユニットが有効かどうかについての説明 |
| サービスユニットが実行中かどうかの説明と、タイムスタンプ |
| 対応するシステムサービスの PID と、その名前 |
| 対応するシステムサービスに関する追加情報 |
| 関連プロセスに関する追加情報 |
| 関連するコントロールグループ (cgroup) に関する追加情報 |
特定のサービスユニットが実行中かどうかだけを確認する場合は、以下のコマンドを実行します。
systemctl is-active name.service
同様に、特定のサービスユニットが有効かどうかを確認するには、以下のコマンドを実行します。
systemctl is-enabled name.service
systemctl is-active
および systemctl is-enabled
は両方とも、指定したサービスユニットが実行中または有効な場合に、終了ステータス 0
を返すことに注意してください。現在読み込み済みのサービスユニットのリストを表示する方法は、「サービスのリスト表示」 を参照してください。
例10.2 サービスステータスの表示
GNOME Display Manager のサービスユニット名は gdm.service
になります。このサービスユニットの現在のステータスを確認するには、シェルプロンプトで次のコマンドを実行します。
~]# systemctl status gdm.service gdm.service - GNOME Display Manager Loaded: loaded (/usr/lib/systemd/system/gdm.service; enabled) Active: active (running) since Thu 2013-10-17 17:31:23 CEST; 5min ago Main PID: 1029 (gdm) CGroup: /system.slice/gdm.service ├─1029 /usr/sbin/gdm ├─1037 /usr/libexec/gdm-simple-slave --display-id /org/gno... └─1047 /usr/bin/Xorg :0 -background none -verbose -auth /r... Oct 17 17:31:23 localhost systemd[1]: Started GNOME Display Manager.
例10.3 サービスの前に開始するサービスの表示
特定のサービスの前に開始するサービスを確認するには、シェルプロンプトで次のコマンドを実行します。
~]# systemctl list-dependencies --after gdm.service gdm.service ├─dbus.socket ├─getty@tty1.service ├─livesys.service ├─plymouth-quit.service ├─system.slice ├─systemd-journald.socket ├─systemd-user-sessions.service └─basic.target [output truncated]
例10.4 サービスの後に開始するサービスの表示
特定のサービスの後に開始するサービスを確認するには、シェルプロンプトで次のコマンドを実行します。
~]# systemctl list-dependencies --before gdm.service gdm.service ├─dracut-shutdown.service ├─graphical.target │ ├─systemd-readahead-done.service │ ├─systemd-readahead-done.timer │ └─systemd-update-utmp-runlevel.service └─shutdown.target ├─systemd-reboot.service └─final.target └─systemd-reboot.service
10.2.3. サービスの起動
システムサービスに対応するサービスユニットを開始する場合は、root
で次のコマンドを実行します。
systemctl start name.service
name を、開始するサービスユニット名 (たとえば、gdm
) に置き換えます。このコマンドは、選択したサービスを現行セッションで開始します。起動時にサービスユニットを開始するようにする方法は、「サービスの有効化」 を参照してください。特定のサービスユニットのステータスを確認する方法は 「サービスステータスの表示」 を参照してください。
例10.5 サービスの起動
Apache HTTP サーバー用のサービスユニットは httpd.service
です。サービスユニットをアクティブにし、現行セッションで httpd
デーモンを起動するには、root
で以下のコマンドを実行します。
~]# systemctl start httpd.service
10.2.4. サービスの停止
システムサービスに対応するサービスユニットを停止するには、root
で次のコマンドを実行します。
systemctl stop name.service
name を、停止するサービスユニット名 (たとえば bluetooth
) に置き換えます。このコマンドは、選択したサービスユニットを現行セッションで停止します。システムの起動時にサービスユニットを無効にし、開始しないようにする方法は、「サービスの無効化」 を参照してください。特定のサービスユニットのステータスを確認する方法は 「サービスステータスの表示」 を参照してください。
例10.6 サービスの停止
bluetoothd
デーモンのサービスユニットは bluetooth.service
です。サービスユニットを無効にし、現行セッションで bluetoothd
デーモンを停止する場合は、root
で以下のコマンドを実行します。
~]# systemctl stop bluetooth.service
10.2.5. サービスの再開
システムサービスに対応するサービスユニットを再開する場合は、root
で次のコマンドを実行します。
systemctl restart name.service
name を、再開するサービスユニット名 (たとえば、httpd
) に置き換えます。このコマンドは、現行セッションで選択したサービスユニットを停止し、即座に再起動します。重要なのは、選択したサービスユニットが実行中でないと、このコマンドがそのサービスユニットを起動するということです。対応するサービスがすでに実行中の場合にのみ、サービスユニットを再起動するように systemd に設定するには、root
で以下のコマンドを実行します。
systemctl try-restart name.service
システムサービスによっては、サービスの実行を中断することなく設定の再読み込みが可能です。これを実行するには、root
で次のコマンドを実行します。
systemctl reload name.service
システムサービスがこの機能をサポートしない場合は、このコマンドが無視されることに注意してください。代わりに、systemctl
コマンドでは、この機能をサポートしないサービスを代わりに再起動する reload-or-restart
コマンドおよび reload-or-try-restart
コマンドもサポートします。特定のサービスユニットのステータスを確認する方法は 「サービスステータスの表示」 を参照してください。
例10.7 サービスの再開
ユーザーが不要なエラーメッセージや、部分的に表示される Web ページに遭遇しないようにするため、Apache HTTP Server では設定を再起動したり、処理されたリクエストをアクティブに妨害したりせずに、設定を編集したり再読み込みしたりできます。これを行うには、root
で次のコマンドを実行します。
~]# systemctl reload httpd.service
10.2.6. サービスの有効化
システムの起動時にシステムサービスに対応するサービスユニットを自動的に起動するように設定するには、root
で次のコマンドを実行します。
systemctl enable name.service
name を、有効にするサービスユニット名 (httpd
など) に置き換えます。このコマンドは、選択したサービスユニットの [Install]
セクションを読み取り、/etc/systemd/system/
ディレクトリーおよびそのサブディレクトリーにある /usr/lib/systemd/system/name.service
ファイルへの適切なシンボリックリンクを作成します。ただし、このコマンドは既存のリンクを上書きしません。シンボリックリンクが確実に再作成されるようにするには、root
で以下のコマンドを実行します。
systemctl reenable name.service
このコマンドは、選択したサービスユニットを無効にし、即座に再度有効にします。特定のサービスユニットが起動時に有効になるかどうかを確認する方法は 「サービスステータスの表示」 を参照してください。現行セッションでサービスを開始する方法は 「サービスの起動」 を参照してください。
例10.8 サービスの有効化
システムの起動時に Apache HTTP Server が自動的に開始するように設定するには、root
で以下のコマンドを実行します。
~]# systemctl enable httpd.service Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
10.2.7. サービスの無効化
システムの起動時に、システムサービスに対応するサービスユニットを自動的に起動しないように設定するには、root
で次のコマンドを実行します。
systemctl disable name.service
name を、無効にするサービスユニット名 (bluetooth
など) に置き換えます。このコマンドは、選択したサービスユニットの [Install]
セクションを読み取り、/etc/systemd/system/
ディレクトリーおよびそのサブディレクトリーから、/usr/lib/systemd/system/name.service
ファイルへの適切なシンボリックリンクを削除します。さらに、サービスユニットにマスクをして、手動で開始したり、別のサービスがこれを開始することを防いだりできます。これを行うには、root
で以下のコマンドを実行します。
systemctl mask name.service
このコマンドにより、/etc/systemd/system/name.service
ファイルを、/dev/null
へのシンボリックリンクに置き換え、実際のユニットファイルが systemd ファイルにアクセスできないようにします。この動作を元に戻してサービスユニットのマスクを解除するには、root
で以下のコマンドを実行します。
systemctl unmask name.service
特定のサービスユニットが起動時に有効になるかどうかを確認する方法は 「サービスステータスの表示」 を参照してください。現行セッションでサービスを停止する方法は 「サービスの停止」 を参照してください。
例10.9 サービスの無効化
例10.6「サービスの停止」 では、現行セッションで bluetooth.service
ユニットを停止する方法を説明しました。システムの起動時にこのサービスユニットが開始しないようにするには、root
で次のコマンドを実行します。
~]# systemctl disable bluetooth.service Removed symlink /etc/systemd/system/bluetooth.target.wants/bluetooth.service. Removed symlink /etc/systemd/system/dbus-org.bluez.service.
10.2.8. 競合するサービスの起動
systemd では、サービスとサービスとの間に正と負の依存関係が存在します。特定のサービスを起動するとき、別のサービスを 1 つまたは複数開始 (正の依存関係)、あるいはサービスを 1 つまたは複数停止 (負の依存関係) することが必要となる場合があります。
ユーザーが新しいサービスを起動しようとすると、systemd がすべての依存関係を自動的に解決します。これは、ユーザーに明示的に通知されることなく実行されるため注意が必要です。サービスが実行されているときに、負の依存関係を持つ別のサービスを起動しようとすると、実行しているサービスが自動的に停止します。
たとえば、postfix
サービスを実行している時に sendmail
サービスを起動すると、systemd は、自動的に postfix
を停止します。 この 2 つのサービスは競合するため、同じポートでは実行できません。
10.3. systemd ターゲットでの作業
以前のバージョンの Red Hat Enterprise Linux は、SysV init または Upstart で配布されており、特定モードのオペレーションを表す事前定義の ランレベル を実装していました。このランレベルは 0 から 6 までの数字で表され、システム管理者が各ランレベルを有効にしたときに実行するシステムサービスが定義されていました。Red Hat Enterprise Linux 7 では、ランレベルの概念が systemd ターゲット に代わっています。
systemd ターゲットは ターゲットユニット で表現されます。ターゲットユニットは .target
ファイル拡張子で終わり、その唯一の目的は依存関係の連鎖で他の systemd ユニットをグループ化することです。たとえば、グラフィカルセッションの開始に使用する graphical.target
ユニットは、GNOME Display Manager (gdm.service
) または Accounts Service (accounts-daemon.service
) といったシステムサービスを開始するとともに、multi-user.target
ユニットもアクティブにします。同様に、multi-user.target
ユニットは、NetworkManager (NetworkManager.service
)、D-Bus (dbus.service
) といった、その他の必須システムサービスを開始し、basic.target
という別のターゲットユニットをアクティブにします。
Red Hat Enterprise Linux 7 では、以前のシステムリリースの標準ランレベルと類似する定義済みターゲットが多数同梱されています。互換性の理由から、このようなターゲットのエイリアスも SysV ランレベルに直接マッピングします。表10.6「SysV ランレベルと systemd ターゲットの比較」 SysV ランレベルとそれに対応する systemd ターゲットの完全リストを提供します。
ランレベル | ターゲットユニット | 詳細 |
---|---|---|
|
| システムをシャットダウンし、電源を切ります。 |
|
| レスキューシェルを設定します。 |
|
| 非グラフィカルなマルチユーザーシステムを設定します。 |
|
| 非グラフィカルなマルチユーザーシステムを設定します。 |
|
| 非グラフィカルなマルチユーザーシステムを設定します。 |
|
| グラフィカルなマルチユーザーシステムを設定します。 |
|
| システムをシャットダウンして再起動します。 |
systemd ターゲットを表示、変更、または設定するには、表10.7「SysV init コマンドと systemctl の比較」 および以下のセクションの説明に従って systemctl
ユーティリティーを使用します。runlevel
コマンドおよび telinit
コマンドは今も利用でき、期待どおりに機能しますが、このコマンドは互換性のために同梱されているため、なるべく使用しないでください。
古いコマンド | 新しいコマンド | 詳細 |
---|---|---|
|
| 現在読み込まれているターゲットユニットをリスト表示します。 |
|
| 現在のターゲットを変更します。 |
10.3.1. デフォルトターゲットの表示
デフォルトでどのターゲットユニットが使用されるかを決定するには、以下のコマンドを実行します。
systemctl get-default
このコマンドは、/etc/systemd/system/default.target
にあるシンボリックリンクを解決して、結果を表示します。デフォルトのターゲット変更する方法は 「デフォルトターゲットの変更」 を参照してください。現在、読み込み済みのターゲットユニットをリスト表示する方法は 「現在のターゲットの表示」 を参照してください。
例10.10 デフォルトターゲットの表示
デフォルトのターゲットユニットを表示するには、以下のコマンドを実行します。
~]$ systemctl get-default
graphical.target
10.3.2. 現在のターゲットの表示
読み込み済みのターゲットユニットのリストを表示するには、以下のコマンドを実行します。