Product SiteDocumentation Site

Red Hat Enterprise Linux 5

Deployment Guide

Deployment, configuration and administration of Red Hat Enterprise Linux 5

エディッション 8

Logo


法律上の通知

Copyright © 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
All other trademarks are the property of their respective owners.


1801 Varsity Drive
 RaleighNC 27606-2072 USA
 Phone: +1 919 754 3700
 Phone: 888 733 4281
 Fax: +1 919 754 3701

概要
The Deployment Guide documents relevant information regarding the deployment, configuration and administration of Red Hat Enterprise Linux 5.

はじめに
1. 表記方法
2. フィードバック
I. ファイルシステム
1. ファイルシステム構造
1.1. なぜファイルシステム構造を共有するのか
1.2. Filesystem Hierarchy Standard(FHS)の概要
1.2.1. FHS標準
1.3. Red Hat Enterprise Linux 稼動環境下での特別なファイルの場所
2. Using the mount Command
2.1. Listing Currently Mounted File Systems
2.2. Mounting a File System
2.2.1. Specifying the File System Type
2.2.2. Specifying the Mount Options
2.2.3. Sharing Mounts
2.2.4. Moving a Mount Point
2.3. Unmounting a File System
2.4. Additional Resources
2.4.1. Installed Documentation
2.4.2. Useful Websites
3. ext3 ファイルシステム
3.1. ext3の機能
3.2. ext3 ファイルシステムの作成
3.3. ext3ファイルシステムへの変換
3.4. ext2ファイルシステムへの復元
4. The proc File System
4.1. 仮想ファイルシステム
4.1.1. 仮想ファイルの表示
4.1.2. 仮想ファイルの変更
4.2. Top-level Files within the proc File System
4.2.1. /proc/apm
4.2.2. /proc/buddyinfo
4.2.3. /proc/cmdline
4.2.4. /proc/cpuinfo
4.2.5. /proc/crypto
4.2.6. /proc/devices
4.2.7. /proc/dma
4.2.8. /proc/execdomains
4.2.9. /proc/fb
4.2.10. /proc/filesystems
4.2.11. /proc/interrupts
4.2.12. /proc/iomem
4.2.13. /proc/ioports
4.2.14. /proc/kcore
4.2.15. /proc/kmsg
4.2.16. /proc/loadavg
4.2.17. /proc/locks
4.2.18. /proc/mdstat
4.2.19. /proc/meminfo
4.2.20. /proc/misc
4.2.21. /proc/modules
4.2.22. /proc/mounts
4.2.23. /proc/mtrr
4.2.24. /proc/partitions
4.2.25. /proc/pci
4.2.26. /proc/slabinfo
4.2.27. /proc/stat
4.2.28. /proc/swaps
4.2.29. /proc/sysrq-trigger
4.2.30. /proc/uptime
4.2.31. /proc/version
4.3. Directories within /proc/
4.3.1. プロセスディレクトリ
4.3.2. /proc/bus/
4.3.3. /proc/driver/
4.3.4. /proc/fs
4.3.5. /proc/ide/
4.3.6. /proc/irq/
4.3.7. /proc/net/
4.3.8. /proc/scsi/
4.3.9. /proc/sys/
4.3.10. /proc/sysvipc/
4.3.11. /proc/tty/
4.3.12. /proc/<PID>/
4.4. Using the sysctl Command
4.5. その他のリソース
4.5.1. インストールされているドキュメント
4.5.2. 役に立つWebサイト
5. Redundant Array of Independent Disks (RAID)
5.1. What is RAID?
5.1.1. Who Should Use RAID?
5.1.2. Hardware RAID versus Software RAID
5.1.3. RAID Levels and Linear Support
5.2. Configuring Software RAID
5.2.1. RAIDパーティションの作成
5.2.2. RAIDデバイスとマウントポイントの作成
5.3. Managing Software RAID
5.3.1. Reviewing RAID Configuration
5.3.2. Creating a New RAID Device
5.3.3. Replacing a Faulty Device
5.3.4. Extending a RAID Device
5.3.5. Removing a RAID Device
5.3.6. Preserving the Configuration
5.4. Additional Resources
5.4.1. Installed Documentation
6. スワップ領域
6.1. スワップ領域の説明
6.2. スワップ領域の追加
6.2.1. LVM2論理ボリュームでのスワップの拡張
6.2.2. スワップ用のLVM2論理ボリュームの作成
6.2.3. スワップファイルの作成
6.3. スワップ領域の削除
6.3.1. LVM2論理ボリュームのスワップの削減
6.3.2. スワップに使用するLVM2論理ボリュームの削除
6.3.3. スワップファイルの削除
6.4. スワップ領域の移動
7. ディスク保存の管理
7.1. Standard Partitions using parted
7.1.1. パーティションテーブルの表示
7.1.2. パーティションの作成
7.1.3. パーティションの削除
7.1.4. パーティションのサイズ変更
7.2. LVMパーティション管理
8. ディスク容量制限の実践
8.1. ディスク容量制限の設定
8.1.1. 容量制限を有効にする
8.1.2. ファイルシステムの再マウント
8.1.3. 容量制限データベースファイルの作成
8.1.4. ユーザー単位で容量制限を割り当てる
8.1.5. グループ単位で容量制限を割り当てる
8.1.6. ソフトリミット用の猶予期間を設定
8.2. ディスク容量制限の管理
8.2.1. 有効化 と 無効化
8.2.2. ディスク容量制限の報告
8.2.3. 容量制限を正確に維持する
8.3. その他のリソース
8.3.1. インストールされているドキュメント
8.3.2. 関連書籍
9. Access Control Lists
9.1. ファイルシステムのマウント
9.1.1. NFS
9.2. アクセスACLの設定
9.3. デフォルトACLの設定
9.4. ACLの読み出し
9.5. ACLでファイルシステムをアーカイブする
9.6. 旧システムとの互換性
9.7. 追加リソース
9.7.1. インストールされているドキュメント
9.7.2. 役に立つWebサイト
10. LVM (Logical Volume Manager)
10.1. What is LVM?
10.1.1. What is LVM2?
10.2. LVM の設定
10.3. 自動パーティション設定
10.4. 手動LVMパーティション設定
10.4.1. Creating the /boot Partition
10.4.2. LVM物理ボリュームの作成
10.4.3. LVMボリュームグループの作成
10.4.4. LVM論理ボリュームの作成
10.5. Using the LVM utility system-config-lvm
10.5.1. Utilizing uninitialized entities
10.5.2. Adding Unallocated Volumes to a volume group
10.5.3. Migrating extents
10.5.4. Adding a new hard disk using LVM
10.5.5. Adding a new volume group
10.5.6. Extending a volume group
10.5.7. Editing a Logical Volume
10.6. Additional Resources
10.6.1. Installed Documentation
10.6.2. Useful Websites
II. パッケージ管理
11. RPMによるパッケージ管理
11.1. RPM の設計目標
11.2. RPMの使用法
11.2.1. RPM パッケージの検索
11.2.2. インストール
11.2.3. アンインストール
11.2.4. アップグレード
11.2.5. freshenの実行
11.2.6. 問い合わせ
11.2.7. 検証
11.3. Checking a Package's Signature
11.3.1. キーのインポート
11.3.2. パッケージ署名の検証
11.4. Practical and Common Examples of RPM Usage
11.5. その他のリソース
11.5.1. インストールされているドキュメント
11.5.2. 役に立つWebサイト
11.5.3. 関連書籍
12. Package Management Tool
12.1. Listing and Analyzing Packages
12.2. Installing and Removing Packages
13. YUM (Yellowdog Updater Modified)
13.1. Setting Up a Yum Repository
13.2. yum Commands
13.3. yum Options
13.4. Configuring yum
13.4.1. [main] Options
13.4.2. [repository] Options
13.5. Useful yum Variables
14. Product Subscriptions and Entitlements
14.1. An Overview of Managing Subscriptions and Content
14.1.1. The Purpose of Subscription Management
14.1.2. Defining Subscriptions, Entitlements, and Products
14.1.3. Subscription Management Tools
14.1.4. Subscription and Content Architecture
14.1.5. Advanced Content Management: Extended Update Support
14.1.6. RHN Classic v. Certificate-based Red Hat Network
14.2. Using Red Hat Subscription Manager Tools
14.2.1. Launching Red Hat Subscription Manager
14.2.2. About subscription-manager
14.2.3. Looking at RHN Subscription Management
14.2.4. Looking at Subscription Asset Manager
14.3. Managing Special Deployment Scenarios
14.3.1. Local Subscription Services, Local Content Providers, and Multi-Tenant Organizations
14.3.2. Virtual Guests and Hosts
14.3.3. Domains
14.4. Registering, Unregistering, and Reregistering a System
14.4.1. Registering Consumers in the Hosted Environment
14.4.2. Registering Consumers to a Local Organization
14.4.3. Registering an Offline Consumer
14.4.4. Registering from the Command Line
14.4.5. Unregistering
14.4.6. Restoring a Registration
14.5. Migrating Systems from RHN Classic to Certificate-based Red Hat Network
14.5.1. Installing the Migration Tools
14.5.2. Migrating from RHN Classic to Certificate-based Red Hat Network
14.5.3. Unregistering from RHN Classic Only
14.5.4. Migrating a Disconnected System
14.5.5. Looking at Channel and Certificate Mappings
14.6. Handling Subscriptions
14.6.1. Subscribing and Unsubscribing through the Red Hat Subscription Manager GUI
14.6.2. Handling Subscriptions through the Command Line
14.6.3. Stacking Subscriptions
14.6.4. Manually Adding a New Subscription
14.7. Redeeming Subscriptions on a Machine
14.7.1. Redeeming Subscriptions through the GUI
14.7.2. Redeeming Subscriptions on a Machine through the Command Line
14.8. Viewing Available and Used Subscriptions
14.8.1. Viewing Subscriptions in the GUI
14.8.2. Listing Subscriptions with the Command Line
14.8.3. Viewing Subscriptions Used in Both RHN Classic and Certificate-based Red Hat Network
14.9. Working with Subscription yum Repos
14.10. Responding to Subscription Notifications
14.11. Healing Subscriptions
14.11.1. Enabling Healing
14.11.2. Changing the Healing Check Frequency
14.12. Working with Subscription Asset Manager
14.12.1. Configuring Subscription Manager to Work with Subscription Asset Manager
14.12.2. Viewing Organization Information
14.13. Updating Entitlements Certificates
14.13.1. Updating Entitlement Certificates
14.13.2. Updating Subscription Information
14.14. Configuring the Subscription Service
14.14.1. Red Hat Subscription Manager Configuration Files
14.14.2. Using the config Command
14.14.3. Using an HTTP Proxy
14.14.4. Changing the Subscription Server
14.14.5. Configuring Red Hat Subscription Manager to Use a Local Content Provider
14.14.6. Managing Secure Connections to the Subscription Server
14.14.7. Starting and Stopping the Subscription Service
14.14.8. Checking Logs
14.14.9. Showing and Hiding Incompatible Subscriptions
14.14.10. Checking and Adding System Facts
14.14.11. Regenerating Identity Certificates
14.14.12. Getting the System UUID
14.14.13. Viewing Package Profiles
14.14.14. Retrieving the Consumer ID, Registration Tokens, and Other Information
14.15. About Certificates and Managing Entitlements
14.15.1. The Structure of Identity Certificates
14.15.2. The Structure of Entitlement Certificates
14.15.3. The Structure of Product Certificates
14.15.4. Anatomy of Satellite Certificates
III. ネットワーク関連の設定
15. ネットワークインターフェース
15.1. ネットワーク設定ファイル
15.2. インターフェース設定ファイル
15.2.1. イーサネットインターフェース
15.2.2. IPsec インターフェース
15.2.3. チャンネルボンディングインターフェース
15.2.4. エイリアスファイルとクローンファイル
15.2.5. ダイヤルアップインターフェース
15.2.6. 他のインターフェース
15.3. インターフェース制御スクリプト
15.4. Configuring Static Routes
15.5. ネットワーク機能ファイル
15.6. その他のリソース
15.6.1. インストールされているドキュメント
16. ネットワーク設定
16.1. 概要
16.2. イーサネット接続の確立
16.3. ISDN 接続の確立
16.4. モデム接続の確立
16.5. xDSL 接続の確立
16.6. トークンリング接続の確立
16.7. ワイヤレス接続の確立
16.8. DNS 設定の管理
16.9. ホストの管理
16.10. プロファイルの作業
16.11. デバイスエイリアス
16.12. ネットワーク設定を保存/復元する
17. サービスへのアクセスの制御
17.1. ランレベル
17.2. TCP ラッパー
17.2.1. xinetd
17.3. Services Configuration Tool
17.4. ntsysv
17.5. chkconfig
17.6. その他のリソース
17.6.1. インストールされているドキュメント
17.6.2. 役に立つ Web サイト
18. Berkeley Internet Name Domain (BIND)
18.1. DNS について
18.1.1. ネームサーバーゾーン
18.1.2. ネームサーバーのタイプ
18.1.3. BIND as a Nameserver
18.2. /etc/named.conf
18.2.1. 一般的なステートメントのタイプ
18.2.2. 他のステートメントタイプ
18.2.3. コメントタグ
18.3. ゾーンファイル
18.3.1. ゾーンファイルディレクティブ
18.3.2. ゾーンファイルリソースレコード
18.3.3. ゾーンファイルの例
18.3.4. 逆引き名前解決ゾーンファイル
18.4. Using rndc
18.4.1. Configuring /etc/named.conf
18.4.2. Configuring /etc/rndc.conf
18.4.3. コマンド行オプション
18.5. BIND の高度な機能
18.5.1. DNS プロトコル改良
18.5.2. 複数ビュー
18.5.3. セキュリティ
18.5.4. IP バージョン 6
18.6. よくある間違いを避けるために
18.7. その他のリソース
18.7.1. インストールされているドキュメント
18.7.2. 役に立つ Web サイト
18.7.3. 関連書籍
19. OpenSSH
19.1. SSH の特長
19.1.1. なぜ SSH を使うのか
19.2. SSH プロトコルバージョン
19.3. SSH 接続のイベント順序
19.3.1. トランスポートレイヤー
19.3.2. 認証
19.3.3. チャンネル
19.4. OpenSSH サーバーの設定
19.4.1. リモート接続に SSH を要求
19.5. OpenSSH 設定ファイル
19.6. OpenSSH クライアントの設定
19.6.1. Using the ssh Command
19.6.2. Using the scp Command
19.6.3. Using the sftp Command
19.7. 単なる安全なシェルではありません
19.7.1. X11 転送
19.7.2. ポート転送
19.7.3. 鍵ペアの生成
19.8. その他のリソース
19.8.1. インストールされているドキュメント
19.8.2. 役に立つ Web サイト
20. NFS(ネットワークファイルシステム)
20.1. How It Works
20.1.1. Required Services
20.2. NFS Client Configuration
20.2.1. Mounting NFS File Systems using /etc/fstab
20.3. autofs
20.3.1. What's new in autofs version 5?
20.3.2. autofs Configuration
20.3.3. autofs Common Tasks
20.4. Common NFS Mount Options
20.5. Starting and Stopping NFS
20.6. NFS Server Configuration
20.6.1. Exporting or Sharing NFS File Systems
20.6.2. コマンドラインで設定
20.6.3. Running NFS Behind a Firewall
20.6.4. ホスト名の形式
20.7. The /etc/exports Configuration File
20.7.1. The exportfs Command
20.8. Securing NFS
20.8.1. Host Access
20.8.2. File Permissions
20.9. NFS and portmap
20.9.1. Troubleshooting NFS and portmap
20.10. Using NFS over TCP
20.11. その他のリソース
20.11.1. インストールされているドキュメント
20.11.2. 役に立つ Webサイト
20.11.3. 関連書籍
21. Samba
21.1. Samba の概要
21.1.1. Samba の機能
21.2. Samba デーモンと関連サービス
21.2.1. Samba デーモン
21.3. Samba シェアへの接続
21.3.1. コマンドライン
21.3.2. シェアの実装
21.4. Samba サーバーの設定
21.4.1. グラフィックな設定
21.4.2. コマンドラインの設定
21.4.3. 暗合化されたパスワード
21.5. Samba の開始と停止
21.6. Samba Server Types and the smb.conf File
21.6.1. スタンドアローンのサーバ
21.6.2. ドメインメンバーサーバ
21.6.3. Domain Controller
21.7. Samba のセキュリティモード
21.7.1. ユーザーレベルセキュリティ
21.7.2. Share-Level Security
21.8. Samba のアカウント情報データベース
21.9. Samba ネットワークブラウジング
21.9.1. Domain Browsing
21.9.2. WINS (Windows Internetworking Name Server)
21.10. CUPS 印刷サポートを使った Samba
21.10.1. Simple smb.conf Settings
21.11. Samba ディストリビューションプログラム
21.12. Additional Resources
21.12.1. インストールされているドキュメント
21.12.2. 関連書籍
21.12.3. 役に立つWebサイト
22. Dynamic Host Configuration Protocol (DHCP)
22.1. DHCP を使用する理由
22.2. DHCP サーバーの設定
22.2.1. 設定ファイル
22.2.2. リースデータベース
22.2.3. サーバーの起動と停止
22.2.4. DHCP リレーエージェント
22.3. DHCP クライアントの設定
22.4. Configuring a Multihomed DHCP Server
22.4.1. Host Configuration
22.5. その他のリソース
22.5.1. インストールされているドキュメント
23. Apache HTTP Server
23.1. Apache HTTP Server 2.2
23.1.1. Apache HTTP Server 2.2 の機能
23.2. Apache HTTP Server 設定ファイルを移行する。
23.2.1. Apache HTTP Server 2.0 設定ファイルを移行する
23.2.2. Apache HTTP Server 1.3 設定ファイルを 2.0 に移行する
23.3. Starting and Stopping httpd
23.4. Apache HTTP Server の設定
23.4.1. Basic Settings
23.4.2. デフォルトの設定
23.5. Configuration Directives in httpd.conf
23.5.1. 一般的な設定のヒント
23.5.2. SSL の設定ディレクティブ
23.5.3. MPM 固有サーバープールのディレクティブ
23.6. モジュールを追加する
23.7. 仮想ホスト
23.7.1. 仮想ホストのセットアップ
23.8. Apache HTTP セキュアサーバーの設定
23.8.1. セキュリティ関連パッケージの概要
23.8.2. 証明書とセキュリティの概要
23.8.3. 既存の鍵と証明書を使用する
23.8.4. 証明書のタイプ
23.8.5. キーの生成
23.8.6. 新しいキーを使うためのサーバーの設定方法
23.9. 便利な情報源
23.9.1. 役に立つ Web サイト
24. FTP
24.1. The File Transfer Protocol
24.1.1. マルチポート、マルチモード
24.2. FTP サーバー
24.2.1. vsftpd
24.3. Files Installed with vsftpd
24.4. Starting and Stopping vsftpd
24.4.1. Starting Multiple Copies of vsftpd
24.5. vsftpd Configuration Options
24.5.1. デーモンオプション
24.5.2. ログインオプションとアクセス制御
24.5.3. 匿名ユーザーオプション
24.5.4. ローカルユーザーオプション
24.5.5. ディレクトリオプション
24.5.6. ファイル転送のオプション
24.5.7. ロギングのオプション
24.5.8. ネットワークオプション
24.6. その他のリソース
24.6.1. インストール済みのドキュメント
24.6.2. 役に立つ web サイト
25. 電子メール
25.1. 電子メールプロトコル
25.1.1. メールトランスポートのプロトコル
25.1.2. メールアクセスのプロトコル
25.2. 電子メールプログラム分類
25.2.1. Mail Transport Agent
25.2.2. Mail Delivery Agent
25.2.3. Mail User Agent
25.3. Mail Transport Agent
25.3.1. Sendmail
25.3.2. Postfix
25.3.3. Fetchmail
25.4. Mail Transport Agent (MTA) の設定
25.5. Mail Delivery Agent
25.5.1. Procmail の設定
25.5.2. Procmail レシピ
25.6. メールユーザーエージェント
25.6.1. 通信のセキュリティ
25.7. その他のリソース
25.7.1. インストールされたドキュメント
25.7.2. 役に立つ Web サイト
25.7.3. 関連書籍
26. LDAP(Lightweight Directory Access Protocol)
26.1. LDAP の使用理由
26.1.1. OpenLDAP 機能
26.2. LDAP の用語
26.3. OpenLDAP デーモンとユーティリティ
26.3.1. NSS、 PAM、 および LDAP
26.3.2. PHP4、 LDAP、 及び Apache HTTP Server
26.3.3. LDAP クライアントアプリケーション
26.4. OpenLDAP 設定ファイル
26.5. The /etc/openldap/schema/ Directory
26.6. OpenLDAP 設定の概要
26.6.1. Editing /etc/openldap/slapd.conf
26.7. システムが OpenLDAP を使用して認証を実行するように設定する
26.7.1. PAM と LDAP
26.7.2. 古い認証情報を LDAP フォーマットへ移行
26.8. 旧リリースからディレクトリを移行する
26.9. その他のリソース
26.9.1. インストールされているドキュメント
26.9.2. 役に立つ Web サイト
26.9.3. 関連書籍
27. 認証の設定
27.1. User Information
27.2. Authentication
27.3. Options
27.4. コマンドラインバージョン
28. Using and Caching Credentials with SSSD
28.1. About the sssd.conf File
28.2. Starting and Stopping SSSD
28.3. Configuring Services
28.3.1. Configuring the NSS Service
28.3.2. Configuring the PAM Service
28.4. Creating Domains
28.4.1. General Rules and Options for Configuring a Domain
28.4.2. Configuring an LDAP Domain
28.4.3. Configuring Kerberos Authentication with a Domain
28.4.4. Configuring a Proxy Domain
28.5. Configuring Access Control for SSSD Domains
28.5.1. Using the Simple Access Provider
28.5.2. Using the LDAP Access Filter
28.6. Configuring Domain Failover
28.6.1. Configuring Failover
28.6.2. Using SRV Records with Failover
28.7. Deleting Domain Cache Files
28.8. Using NSCD with SSSD
28.9. Troubleshooting SSSD
28.9.1. Using SSSD Log Files
28.9.2. Problems with SSSD Configuration
IV. システム設定
29. コンソールのアクセス
29.1. Disabling Shutdown Via Ctrl+Alt+Del
29.2. コンソールプログラムアクセスの無効化
29.3. コンソールの定義
29.4. コンソールからファイルにアクセスできるようにする方法
29.5. ほかのアプリケーションに対するコンソールアクセスの有効化
29.6. The floppy Group
30. The sysconfig Directory
30.1. Files in the /etc/sysconfig/ Directory
30.1.1. /etc/sysconfig/amd
30.1.2. /etc/sysconfig/apmd
30.1.3. /etc/sysconfig/arpwatch
30.1.4. /etc/sysconfig/authconfig
30.1.5. /etc/sysconfig/autofs
30.1.6. /etc/sysconfig/clock
30.1.7. /etc/sysconfig/desktop
30.1.8. /etc/sysconfig/dhcpd
30.1.9. /etc/sysconfig/exim
30.1.10. /etc/sysconfig/firstboot
30.1.11. /etc/sysconfig/gpm
30.1.12. /etc/sysconfig/hwconf
30.1.13. /etc/sysconfig/i18n
30.1.14. /etc/sysconfig/init
30.1.15. /etc/sysconfig/ip6tables-config
30.1.16. /etc/sysconfig/iptables-config
30.1.17. /etc/sysconfig/irda
30.1.18. /etc/sysconfig/keyboard
30.1.19. /etc/sysconfig/kudzu
30.1.20. /etc/sysconfig/named
30.1.21. /etc/sysconfig/network
30.1.22. /etc/sysconfig/nfs
30.1.23. /etc/sysconfig/ntpd
30.1.24. /etc/sysconfig/radvd
30.1.25. /etc/sysconfig/samba
30.1.26. /etc/sysconfig/selinux
30.1.27. /etc/sysconfig/sendmail
30.1.28. /etc/sysconfig/spamassassin
30.1.29. /etc/sysconfig/squid
30.1.30. /etc/sysconfig/system-config-securitylevel
30.1.31. /etc/sysconfig/system-config-selinux
30.1.32. /etc/sysconfig/system-config-users
30.1.33. /etc/sysconfig/system-logviewer
30.1.34. /etc/sysconfig/tux
30.1.35. /etc/sysconfig/vncservers
30.1.36. /etc/sysconfig/xinetd
30.2. Directories in the /etc/sysconfig/ Directory
30.3. その他のリソース
30.3.1. インストールされているドキュメント
31. 日付と時刻の設定
31.1. Time and Date Properties
31.2. ネットワークタイムプロトコル (Network Time Protocol=NTP) のプロパティ
31.3. タイムゾーンの設定
32. Keyboard Configuration
33. X Window System
33.1. X11R7.1 リリース
33.2. デスクトップ環境とウィンドウマネージャ
33.2.1. デスクトップ環境
33.2.2. ウィンドウマネージャ
33.3. X サーバー設定ファイル
33.3.1. xorg.conf
33.4. フォント
33.4.1. Fontconfig
33.4.2. コア X フォントシステム
33.5. ランレベルと X
33.5.1. ランレベル 3
33.5.2. ランレベル 5
33.6. その他のリソース
33.6.1. インストールされているドキュメント
33.6.2. 役に立つ Web サイト
34. X Window System の設定
34.1. Display Settings
34.2. Display Hardware Settings
34.3. Dual Head Display Settings
35. ユーザーとグループ
35.1. ユーザーとグループの管理
35.1.1. 新規ユーザーを追加する
35.1.2. ユーザーのプロパティを変更する
35.1.3. 新規グループを追加する
35.1.4. グループのプロパティを変更する
35.2. ユーザーとグループの管理ツール
35.2.1. コマンドライン管理
35.2.2. ユーザーを追加する
35.2.3. グループを追加する
35.2.4. パスワードエージング
35.2.5. 手順の説明
35.3. 標準的なユーザー
35.4. 標準的なグループ
35.5. ユーザープライベートグループ
35.5.1. グループディレクトリ
35.6. シャドウパスワード
35.7. その他のリソース
35.7.1. インストールされているドキュメント
36. プリンタの設定
36.1. ローカルプリンタの追加
36.2. IPP プリンタの追加
36.3. Samba (SMB) プリンタの追加
36.4. Adding a JetDirect Printer
36.5. プリンタモデルの選択と終了
36.5.1. プリンタ設定の確認
36.6. テストページの印刷
36.7. 既存プリンタの変更
36.7.1. 設定 タブ
36.7.2. ポリシー タブ
36.7.3. アクセス制御 タブ
36.7.4. プリンタ 及び ジョブオプション タブ
36.8. 印刷ジョブの管理
36.9. その他のリソース
36.9.1. インストールされているドキュメント
36.9.2. 役に立つ Web ページ
37. Automated Tasks
37.1. Cron
37.1.1. cron タスクの設定
37.1.2. Cron へのアクセスの制御
37.1.3. サービスの起動と停止
37.2. at コマンドと batch コマンド
37.2.1. At ジョブの設定
37.2.2. batch ジョブの設定
37.2.3. 保留ジョブの表示
37.2.4. その他のコマンドラインオプション
37.2.5. at と batch へのアクセスの制御
37.2.6. サービスの起動と停止
37.3. その他のリソース
37.3.1. インストールされているドキュメント
38. ログファイル
38.1. ログファイルを探す
38.2. ログファイルの表示
38.3. Adding a Log File
38.4. ログファイルを監視する
V. システム監視
39. SystemTap
39.1. はじめに
39.2. Implementation
39.3. Using SystemTap
39.3.1. Tracing
40. システム情報の収集
40.1. システムプロセス
40.2. メモリ使用量
40.3. ファイルシステム
40.4. ハードウェア
40.5. その他のリソース
40.5.1. インストールされているドキュメント
41. OProfile
41.1. ツール概要
41.2. OProfileの設定
41.2.1. カーネルの指定
41.2.2. 監視イベントの設定
41.2.3. カーネルプロファイルとユーザープロファイルを分離する
41.3. OProfile の起動と停止
41.4. データ保存
41.5. データ分析
41.5.1. Using opreport
41.5.2. Using opreport on a Single Executable
41.5.3. Getting more detailed output on the modules
41.5.4. Using opannotate
41.6. Understanding /dev/oprofile/
41.7. 使用例
41.8. グラフィカルインターフェース
41.9. その他のリソース
41.9.1. インストールされたドキュメント
41.9.2. 役に立つWebサイト
VI. カーネルとドライバー設定
42. カーネルをアップグレードする
42.1. カーネルパッケージの概要
42.2. アップグレードの準備
42.3. アップグレードされたカーネルをダウンロードする
42.4. アップグレードの実行
42.5. 初期RAMディスクイメージの確認
42.6. ブートローダの確認
42.6.1. x86 のシステム
42.6.2. Itanium のシステム
42.6.3. IBM S/390 and IBM System z Systems
42.6.4. IBM eServer iSeries のシステム
42.6.5. IBM eServer pSeries のシステム
43. 一般的なパラメータとモジュール
43.1. Kernel Module Utilities
43.2. Persistent Module Loading
43.3. モジュールパラメータの指定
43.4. Storage parameters
43.5. イーサネットパラメータ
43.5.1. 複数のイーサネットカードの使用
43.5.2. チャネル ボンディング モジュール
43.6. Additional Resources
43.6.1. Installed Documentation
43.6.2. Useful Websites
44. The kdump Crash Recovery Service
44.1. Configuring the kdump Service
44.1.1. Configuring the kdump at First Boot
44.1.2. Using the Kernel Dump Configuration Utility
44.1.3. Configuring kdump on the Command Line
44.1.4. Testing the Configuration
44.2. Analyzing the Core Dump
44.2.1. Displaying the Message Buffer
44.2.2. Displaying a Backtrace
44.2.3. Displaying a Process Status
44.2.4. Displaying Virtual Memory Information
44.2.5. Displaying Open Files
44.3. Additional Resources
44.3.1. Installed Documentation
44.3.2. Useful Websites
VII. セキュリティと認証
45. セキュリティ概要
45.1. セキュリティの導入
45.1.1. コンピュータセキュリティとは?
45.1.2. セキュリティコントロール
45.1.3. 結論
45.2. 脆弱性の査定
45.2.1. 敵になったつもりで考える
45.2.2. 査定を決定してテストする
45.2.3. ツールを検討する
45.3. 攻撃者と脆弱性
45.3.1. ハッカーの略歴
45.3.2. ネットワークセキュリティへの脅威
45.3.3. サーバーセキュリティへの脅威
45.3.4. ワークステーションと家庭用 PC のセキュリティに対する脅威
45.4. よくある不正アクセスと攻撃
45.5. セキュリティの更新
45.5.1. パッケージを更新する
46. ネットワークの安全性を図る
46.1. ワークステーションセキュリティ
46.1.1. ワークステーションセキュリティを評価する
46.1.2. BIOS とブートローダのセキュリティ
46.1.3. パスワードのセキュリティ
46.1.4. 管理制御
46.1.5. 利用できるネットワークサービス
46.1.6. パーソナルファイアウォール
46.1.7. セキュリティ強化された通信ツール
46.2. サーバーセキュリティ
46.2.1. TCP ラッパー と xinetd を使用したサービスの安全保護
46.2.2. ポートマップの保護
46.2.3. NIS の保護
46.2.4. NFS 保護
46.2.5. Apache HTTP サーバーの保護
46.2.6. FTP の保護
46.2.7. Sendmail の保護
46.2.8. リッスンするポートの確認
46.3. Single Sign-on (SSO)
46.3.1. 導入
46.3.2. 新しいスマートカードの入門
46.3.3. スマートカードの登録の働き
46.3.4. スマートカードログインの働き
46.3.5. SSO のための Kerberos を使用するための Firefox の設定
46.4. PAM(Pluggable Authentication Modules)
46.4.1. PAM の利点
46.4.2. PAM 設定ファイル
46.4.3. PAM 設定ファイルの形式
46.4.4. PAM 設定ファイルのサンプル
46.4.5. PAM モジュールの作成
46.4.6. PAM と管理用証明書のキャッシュ
46.4.7. PAM およびデバイスの所有権
46.4.8. その他のリソース
46.5. TCP ラッパーと xinetd
46.5.1. TCP Wrappers
46.5.2. TCP ラッパーの設定ファイル
46.5.3. xinetd
46.5.4. xinetd 設定ファイル
46.5.5. その他のリソース
46.6. Kerberos
46.6.1. Kerberosとは?
46.6.2. Kerberosの用語
46.6.3. Kerberosの機能
46.6.4. Kerberos と PAM
46.6.5. Keberos 5サーバーの設定
46.6.6. Kerberos 5クライアントの設定
46.6.7. Domain-to-Realm Mapping
46.6.8. Setting Up Secondary KDCs
46.6.9. Setting Up Cross Realm Authentication
46.6.10. その他のリソース
46.7. Virtual Private Networks (VPNs)
46.7.1. VPN の仕組の説明
46.7.2. VPN と Red Hat Enterprise Linux
46.7.3. IPsec
46.7.4. IPsec 接続の作成
46.7.5. IPsec インストール
46.7.6. IPsec ホスト間 (Host-to-Host) 設定
46.7.7. IPsec ネットワーク間 (Network-to-Network) 設定
46.7.8. IPsec 接続の開始と停止
46.8. Firewalls
46.8.1. Netfilter と IPTables
46.8.2. 基本的なファイアウォールの設定
46.8.3. IPTables の使い方
46.8.4. 一般的な IPTables フィルタリング
46.8.5. FORWARDNAT のルール
46.8.6. 悪意あるソフトウェアとなりすまし IP アドレス
46.8.7. IPTables と接続トラッキング
46.8.8. IPv6
46.8.9. その他のリソース
46.9. IPTables
46.9.1. パケットフィルタリング
46.9.2. IPTables と IPChains との相違
46.9.3. IPTable 用のコマンドオプション
46.9.4. IPTables 規則の保存
46.9.5. IPTables 制御スクリプト
46.9.6. IPTables と IPv6
46.9.7. その他のリソース
47. セキュリティと SELinux
47.1. アクセス制御機構 :Access Control Mechanisms (ACM)
47.1.1. 自由アクセス制御:Discretionary Access Control (DAC)
47.1.2. アクセス制御リスト:Access Control Lists (ACL)
47.1.3. 監視アクセス制御:Mandatory Access Control (MAC)
47.1.4. 役割基準アクセス制御:Role-based Access Control (RBAC)
47.1.5. 複数レベルセキュリティ:Multi-Level Security (MLS)
47.1.6. 複数カテゴリーセキュリティ:Multi-Category Security (MCS)
47.2. SELinux への入門
47.2.1. SELinux の概要
47.2.2. SELinux に関連したファイル
47.2.3. その他の資料
47.3. SELinux の簡単な背景と歴史
47.4. Multi-Category Security (MCS)
47.4.1. Introduction
47.4.2. Applications for Multi-Category Security
47.4.3. SELinux Security Contexts
47.5. Getting Started with Multi-Category Security (MCS)
47.5.1. Introduction
47.5.2. Comparing SELinux and Standard Linux User Identities
47.5.3. Configuring Categories
47.5.4. Assigning Categories to Users
47.5.5. Assigning Categories to Files
47.6. Multi-Level Security (MLS)
47.6.1. Why Multi-Level?
47.6.2. Security Levels, Objects and Subjects
47.6.3. MLS Policy
47.6.4. LSPP Certification
47.7. SELinux Policy Overview
47.7.1. What is the SELinux Policy?
47.7.2. Where is the Policy?
47.7.3. The Role of Policy in the Boot Process
47.7.4. Object Classes and Permissions
47.8. Targeted Policy Overview
47.8.1. What is the Targeted Policy?
47.8.2. Files and Directories of the Targeted Policy
47.8.3. Understanding the Users and Roles in the Targeted Policy
48. Working With SELinux
48.1. End User Control of SELinux
48.1.1. Moving and Copying Files
48.1.2. Checking the Security Context of a Process, User, or File Object
48.1.3. Relabeling a File or Directory
48.1.4. Creating Archives That Retain Security Contexts
48.2. Administrator Control of SELinux
48.2.1. Viewing the Status of SELinux
48.2.2. Relabeling a File System
48.2.3. Managing NFS Home Directories
48.2.4. Granting Access to a Directory or a Tree
48.2.5. Backing Up and Restoring the System
48.2.6. Enabling or Disabling Enforcement
48.2.7. Enable or Disable SELinux
48.2.8. Changing the Policy
48.2.9. Specifying the Security Context of Entire File Systems
48.2.10. Changing the Security Category of a File or User
48.2.11. Running a Command in a Specific Security Context
48.2.12. Useful Commands for Scripts
48.2.13. Changing to a Different Role
48.2.14. When to Reboot
48.3. Analyst Control of SELinux
48.3.1. Enabling Kernel Auditing
48.3.2. Dumping and Viewing Logs
49. Customizing SELinux Policy
49.1. Introduction
49.1.1. Modular Policy
49.2. Building a Local Policy Module
49.2.1. Using audit2allow to Build a Local Policy Module
49.2.2. Analyzing the Type Enforcement (TE) File
49.2.3. Loading the Policy Package
50. 参考文献
VIII. Red Hat トレーニングと認定資格
51. Red Hat Training and Certification
51.1. Three Ways to Train
51.2. Microsoft Certified Professional Resource Center
52. Certification Tracks
52.1. Free Pre-assessment tests
53. RH033: Red Hat Linux 基礎コース
53.1. コースの概要
53.1.1. 前提条件
53.1.2. 目標
53.1.3. 対象者
53.1.4. コースの概要
53.1.5. 継続コース
54. RH035: Red Hat Linux Essentials for Windows Professionals
54.1. Course Description
54.1.1. Prerequisites
54.1.2. Goal
54.1.3. Audience
54.1.4. Course Objectives
54.1.5. Follow-on Courses
55. RH133: Red Hat Linux System Administration and Red Hat Certified Technician (RHCT) Certification
55.1. Course Description
55.1.1. Prerequisites
55.1.2. Goal
55.1.3. Audience
55.1.4. Course Objectives
55.1.5. Follow-on Courses
56. RH202 RHCT 認定試験 - 全ての Linux の中でも最も速く成長している認定です。
56.1. コースの説明
56.1.1. 前提条件
57. RH253 Red Hat Linux Networking and Security Administration
57.1. Course Description
57.1.1. Prerequisites
57.1.2. Goal
57.1.3. Audience
57.1.4. Course Objectives
57.1.5. Follow-on Courses
58. RH300: RHCE Rapid track course (and RHCE exam)
58.1. Course Description
58.1.1. Prerequisites
58.1.2. Goal
58.1.3. Audience
58.1.4. Course Objectives
58.1.5. Follow-on Courses
59. RH302 RHCE EXAM
59.1. Course Description
59.1.1. Prerequisites
59.1.2. Content
60. RHS333: RED HAT enterprise security: network services
60.1. Course Description
60.1.1. Prerequisites
60.1.2. Goal
60.1.3. Audience
60.1.4. Course Objectives
60.1.5. Follow-on Courses
61. RH401: Red Hat Enterprise Deployment and systems management
61.1. Course Description
61.1.1. Prerequisites
61.1.2. Goal
61.1.3. Audience
61.1.4. Course Objectives
61.1.5. Follow-on Courses
62. RH423: Red Hat Enterprise Directory services and authentication
62.1. Course Description
62.1.1. Prerequisites
62.1.2. Goal
62.1.3. Audience
62.1.4. Course Objectives
62.1.5. Follow-on Courses
63. SELinux Courses
63.1. RHS427: SELinux と Red Hat ターゲットポリシー入門
63.1.1. 対象者
63.1.2. コースの概要
63.2. RHS429: Red Hat Enterprise SELinux Policy Administration
64. RH436: Red Hat Enterprise storage management
64.1. Course Description
64.1.1. Prerequisites
64.1.2. Goal
64.1.3. Audience
64.1.4. Course Objectives
64.1.5. Follow-on Courses
65. RH442: Red Hat Enterprise system monitoring and performance tuning
65.1. Course Description
65.1.1. Prerequisites
65.1.2. Goal
65.1.3. Audience
65.1.4. Course Objectives
65.1.5. Follow-on Courses
66. Red Hat Enterprise Linux Developer Courses
66.1. RHD143: Red Hat Linux Programming Essentials
66.2. RHD221 Red Hat Linux Device Drivers
66.3. RHD236 Red Hat Linux Kernel Internals
66.4. RHD256 Red Hat Linux Application Development and Porting
67. JBoss Courses
67.1. RHD161 JBoss and EJB3 for Java
67.1.1. Prerequisites
67.2. RHD163 JBoss for Web Developers
67.2.1. Prerequisites
67.3. RHD167: JBOSS - HIBERNATE ESSENTIALS
67.3.1. Prerequisites
67.3.2. Course Summary
67.4. RHD267: JBOSS - ADVANCED HIBERNATE
67.4.1. Prerequisites
67.5. RHD261:JBOSS for advanced J2EE developers
67.5.1. Prerequisites
67.6. RH336: JBOSS for Administrators
67.6.1. Prerequisites
67.6.2. Course Summary
67.7. RHD439: JBoss Clustering
67.7.1. Prerequisites
67.8. RHD449: JBoss jBPM
67.8.1. Description
67.8.2. Prerequisites
67.9. RHD451 JBoss Rules
67.9.1. Prerequisites
A. Revision History
B. Colophon

はじめに

Red Hat Enterprise Linux 導入ガイド へようこそ。
Red Hat Enterprise Linux 導入ガイドは、必要性に応じた Red Hat Enterprise Linux のカスタマイズの方法についての情報を含んでいます。このマニュアルは、システムの設定及びカスタマイズのために、総合的でタスク指向なガイドをお探しの場合にはふさわしいです。
このマニュアルは、下記のような中級のトピックについて説明しています。
  • ネットワークのインターフェースカードを設定する (NIC)
  • 仮想プライベートネットワークを設定する (VPN)
  • Samba シェアを設定する
  • RPM でソフトウェアを管理する
  • システムの情報を決定する
  • カーネルをアップグレードする
このマニュアルは下記の主なカテゴリに分けられます。
  • ファイルシステム
  • パッケージ管理
  • ネットワーク関連の設定
  • システムの設定
  • システムのモニタリング
  • カーネルとドライバの設定
  • セキュリティと認証
  • Red Hat トレーニングと証明書
このガイドは、ユーザーが Red Hat Enterprise Linux システムの基礎的な知識を持っていることを前堤にしています。 Red Hat Enterprise Linux のインストールにヘルプが必要であれば、 Red Hat Enterprise Linux インストールガイド を参照してください。

1. 表記方法

本ガイドを読むと、特定の単語が、異なるフォント、書体、サイズ、太さで表記されています。この強調表示は、規則にしたがって行われています。異なる単語であっても、同じスタイルで表記されている場合は、特定のカテゴリに含まれることを示しています。この様に表記されている単語のタイプには次のような物があります。
command
Linux commands (and other operating system commands, when used) are represented this way. This style should indicate to you that you can type the word or phrase on the command line and press Enter to invoke a command. Sometimes a command contains words that would be displayed in a different style on their own (such as file names). In these cases, they are considered to be part of the command, so the entire phrase is displayed as a command. For example:
Use the cat testfile command to view the contents of a file, named testfile, in the current working directory.
file name
ファイル名、ディレクトリ名、パス、 RPM パッケージ名は、この様に表記します。このスタイルは、その名前の特定のファイルやディレクトリがシステム上に存在することを示しています。例えば、
The .bashrc file in your home directory contains bash shell definitions and aliases for your own use.
The /etc/fstab file contains information about different system devices and file systems.
Install the webalizer RPM if you want to use a Web server log file analysis program.
application
この表記はプログラムがエンドユーザーアプリケーションである (システムソフトウェアではない) ことを示します。例えば、
Use Mozilla to browse the Web.
key
キーボード上のキーは以下のように表記します。例えば、
ディレクトリ内の特定のファイルをリストする Tab キーによる補完機能を使用するには、 ls コマンドを入力し、次に文字を入力し、最後に Tab キーを押してください。ターミナルがディレクトリ内のその文字で始まるファイルのリストを表示します。
key+combination
キーの組み合わせは、次のように表記されます。例えば、
The Ctrl+Alt+Backspace key combination exits your graphical session and returns you to the graphical login screen or the console.
text found on a GUI interface
GUI のインターフェース画面やウィンドウ上に使われる見出し、単語、および文字列は、この様に表記します。このスタイルで表記されている場合、特定の GUI 画面、または GUI 画面上の特定の項目を指しています (チェックボックスやフィールドに付けられた文字列など) 。例えば、
Select the Require Password checkbox if you would like your screensaver to require a password before stopping.
top level of a menu on a GUI screen or window
この表記がある時は、それがプルダウンメニューの最上位の項目だということを表します。 GUI 画面上にあるその文字列をクリックすると、そのメニューの残りが表示されます。例えば、
Under File on a GNOME terminal, the New Tab option allows you to open multiple shell prompts in the same window.
GUI メニューを連続して操作する場合は、次の例のように表記します。
Go to Applications (the main menu on the panel) > Programming > Emacs Text Editor to start the Emacs text editor.
button on a GUI screen or window
この表記は、 GUI 画面上のクリックできるボタン上にテキストがあることを示します。例えば、
Click on the Back button to return to the webpage you last viewed.
computer output
この表記のテキストは、エラーメッセージやコマンドに対する応答など、シェルプロンプトに表示されるテキストを示します。例えば、
The ls command displays the contents of a directory. For example:
Desktop    about.html    logs     paulwesterberg.png
Mail    backupfiles    mail     reports
コマンドの実行結果として表示される出力 (この場合は、ディレクトリの内容) は、上記の様に表示されます。
prompt
A prompt, which is a computer's way of signifying that it is ready for you to input something, is shown in this style. Examples:
$
#
[stephen@maturin stephen]$
leopard login:
user input
Text that the user types, either on the command line or into a text box on a GUI screen, is displayed in this style. In the following example, text is displayed in this style:
To boot your system into the text based installation program, you must type in the text command at the boot: prompt.
<replaceable>
Text used in examples that is meant to be replaced with data provided by the user is displayed in this style. In the following example, <version-number> is displayed in this style:
The directory for the kernel source is /usr/src/kernels/<version-number>/, where <version-number> is the version and type of kernel installed on this system.
また、特定の情報について、ユーザーの注意を引くためにいくつかの注意書きがあります。重要度に応じて、それぞれの項目は、注記、ヒント、重要、注意、警告のマークが付いています。例えば、

注記

Linux は、大文字/小文字を区別します。つまり rose は、 ROSE と rOsE とは異なります。

Tip

The directory /usr/share/doc/ contains additional documentation for packages installed on your system.

重要

DHCP 設定ファイルを変更した場合、その変更は DHCP デーモンを再起動するまで反映されません。

注意

日常の操作は root で実行しないで下さい。 — システム管理の作業に、 root アカウントで操作をする必要があるとき以外は、通常のユーザーアカウントを使用して下さい。

警告

必要なパーティションだけを削除するよう充分に注意してください。他のパーティションを削除するとデータの損失、システム環境の破損を招く恐れがあります。

2. フィードバック

If you find an error in the Red Hat Enterprise Linux Deployment Guide, or if you have thought of a way to make this manual better, we would like to hear from you! Submit a report in Bugzilla (http://bugzilla.redhat.com/bugzilla/) against the component Deployment_Guide.
改善策をお寄せいただく場合には、できるだけ具体的に説明してください。ガイドの誤りについては、早急に発見できるよう、章及びセクションの番号、前後の文章を添えてお知らせください。

パート I. ファイルシステム

File system refers to the files and directories stored on a computer. A file system can have different formats called file system types. These formats determine how the information is stored as files and directories. Some file system types store redundant copies of the data, while some file system types make hard drive access faster. This part discusses the ext3, swap, RAID, and LVM file system types. It also discusses the parted utility to manage partitions and access control lists (ACLs) to customize file permissions.

目次

1. ファイルシステム構造
1.1. なぜファイルシステム構造を共有するのか
1.2. Filesystem Hierarchy Standard(FHS)の概要
1.2.1. FHS標準
1.3. Red Hat Enterprise Linux 稼動環境下での特別なファイルの場所
2. Using the mount Command
2.1. Listing Currently Mounted File Systems
2.2. Mounting a File System
2.2.1. Specifying the File System Type
2.2.2. Specifying the Mount Options
2.2.3. Sharing Mounts
2.2.4. Moving a Mount Point
2.3. Unmounting a File System
2.4. Additional Resources
2.4.1. Installed Documentation
2.4.2. Useful Websites
3. ext3 ファイルシステム
3.1. ext3の機能
3.2. ext3 ファイルシステムの作成
3.3. ext3ファイルシステムへの変換
3.4. ext2ファイルシステムへの復元
4. The proc File System
4.1. 仮想ファイルシステム
4.1.1. 仮想ファイルの表示
4.1.2. 仮想ファイルの変更
4.2. Top-level Files within the proc File System
4.2.1. /proc/apm
4.2.2. /proc/buddyinfo
4.2.3. /proc/cmdline
4.2.4. /proc/cpuinfo
4.2.5. /proc/crypto
4.2.6. /proc/devices
4.2.7. /proc/dma
4.2.8. /proc/execdomains
4.2.9. /proc/fb
4.2.10. /proc/filesystems
4.2.11. /proc/interrupts
4.2.12. /proc/iomem
4.2.13. /proc/ioports
4.2.14. /proc/kcore
4.2.15. /proc/kmsg
4.2.16. /proc/loadavg
4.2.17. /proc/locks
4.2.18. /proc/mdstat
4.2.19. /proc/meminfo
4.2.20. /proc/misc
4.2.21. /proc/modules
4.2.22. /proc/mounts
4.2.23. /proc/mtrr
4.2.24. /proc/partitions
4.2.25. /proc/pci
4.2.26. /proc/slabinfo
4.2.27. /proc/stat
4.2.28. /proc/swaps
4.2.29. /proc/sysrq-trigger
4.2.30. /proc/uptime
4.2.31. /proc/version
4.3. Directories within /proc/
4.3.1. プロセスディレクトリ
4.3.2. /proc/bus/
4.3.3. /proc/driver/
4.3.4. /proc/fs
4.3.5. /proc/ide/
4.3.6. /proc/irq/
4.3.7. /proc/net/
4.3.8. /proc/scsi/
4.3.9. /proc/sys/
4.3.10. /proc/sysvipc/
4.3.11. /proc/tty/
4.3.12. /proc/<PID>/
4.4. Using the sysctl Command
4.5. その他のリソース
4.5.1. インストールされているドキュメント
4.5.2. 役に立つWebサイト
5. Redundant Array of Independent Disks (RAID)
5.1. What is RAID?
5.1.1. Who Should Use RAID?
5.1.2. Hardware RAID versus Software RAID
5.1.3. RAID Levels and Linear Support
5.2. Configuring Software RAID
5.2.1. RAIDパーティションの作成
5.2.2. RAIDデバイスとマウントポイントの作成
5.3. Managing Software RAID
5.3.1. Reviewing RAID Configuration
5.3.2. Creating a New RAID Device
5.3.3. Replacing a Faulty Device
5.3.4. Extending a RAID Device
5.3.5. Removing a RAID Device
5.3.6. Preserving the Configuration
5.4. Additional Resources
5.4.1. Installed Documentation
6. スワップ領域
6.1. スワップ領域の説明
6.2. スワップ領域の追加
6.2.1. LVM2論理ボリュームでのスワップの拡張
6.2.2. スワップ用のLVM2論理ボリュームの作成
6.2.3. スワップファイルの作成
6.3. スワップ領域の削除
6.3.1. LVM2論理ボリュームのスワップの削減
6.3.2. スワップに使用するLVM2論理ボリュームの削除
6.3.3. スワップファイルの削除
6.4. スワップ領域の移動
7. ディスク保存の管理
7.1. Standard Partitions using parted
7.1.1. パーティションテーブルの表示
7.1.2. パーティションの作成
7.1.3. パーティションの削除
7.1.4. パーティションのサイズ変更
7.2. LVMパーティション管理
8. ディスク容量制限の実践
8.1. ディスク容量制限の設定
8.1.1. 容量制限を有効にする
8.1.2. ファイルシステムの再マウント
8.1.3. 容量制限データベースファイルの作成
8.1.4. ユーザー単位で容量制限を割り当てる
8.1.5. グループ単位で容量制限を割り当てる
8.1.6. ソフトリミット用の猶予期間を設定
8.2. ディスク容量制限の管理
8.2.1. 有効化 と 無効化
8.2.2. ディスク容量制限の報告
8.2.3. 容量制限を正確に維持する
8.3. その他のリソース
8.3.1. インストールされているドキュメント
8.3.2. 関連書籍
9. Access Control Lists
9.1. ファイルシステムのマウント
9.1.1. NFS
9.2. アクセスACLの設定
9.3. デフォルトACLの設定
9.4. ACLの読み出し
9.5. ACLでファイルシステムをアーカイブする
9.6. 旧システムとの互換性
9.7. 追加リソース
9.7.1. インストールされているドキュメント
9.7.2. 役に立つWebサイト
10. LVM (Logical Volume Manager)
10.1. What is LVM?
10.1.1. What is LVM2?
10.2. LVM の設定
10.3. 自動パーティション設定
10.4. 手動LVMパーティション設定
10.4.1. Creating the /boot Partition
10.4.2. LVM物理ボリュームの作成
10.4.3. LVMボリュームグループの作成
10.4.4. LVM論理ボリュームの作成
10.5. Using the LVM utility system-config-lvm
10.5.1. Utilizing uninitialized entities
10.5.2. Adding Unallocated Volumes to a volume group
10.5.3. Migrating extents
10.5.4. Adding a new hard disk using LVM
10.5.5. Adding a new volume group
10.5.6. Extending a volume group
10.5.7. Editing a Logical Volume
10.6. Additional Resources
10.6.1. Installed Documentation
10.6.2. Useful Websites

第1章 ファイルシステム構造

1.1. なぜファイルシステム構造を共有するのか

ファイルシステム構造はオペレーティングシステムの構造の中でも最も基本的なものです。OSがユーザー、アプリケーション、セキュリティモデルなどと相互作用する方法は、そのほとんどが記憶装置にファイルが保存される方法によって決まります。共通のファイルシステム構想を用意することにより、ユーザー及びプログラムによるファイルへのアクセスと書き込みを可能にします。
ファイルシステムはファイルを以下の2つの論理的なカテゴリに分けます:
  • Shareable vs. unshareable files
  • 可変ファイルと静的ファイル
Shareable files are those that can be accessed locally and by remote hosts; unshareable files are only available locally. Variable files, such as documents, can be changed at any time; static files, such as binaries, do not change without an action from the system administrator.
この様にファイルを見ている理由は、ファイルが置いてあるディレクトリに割り当て られた権限とファイルの機能を関連付けするためです。オペレーティングシステムと そのユーザーが該当ファイルに対してなす相互作用の仕方は、そのファイルのあるディレクトリが読み込み専用か、読み/書きかどうか及び、各ユーザーが持つそのファイルへのアクセスレベルを決定します。この構造のトップレベルが重要になります。トップレベルから以下が組織化されないままである場合、根底のディレクトリへの アクセスを制限される可能性があり、さもなければ、セキュリティ問題が露呈することに なります。

1.2. Filesystem Hierarchy Standard(FHS)の概要

Red Hat Enterprise Linux は、多数のファイルタイプやディレクトリの名前と場所と権限を定義した FHS(Filesystem Hierarchy Standard)に 従います。
FHSドキュメントは、任意のFHS準拠ファイルシステムに対する権威のあるリファレンスであるものの、 この標準には未定義または拡張可能の領域が多く残されています。このセクションでは、 この規格の概要を示し、規格で取り扱われていないファイルシステムの部分について説明します。
Compliance with the standard means many things, but the two most important are compatibility with other compliant systems and the ability to mount a /usr/ partition as read-only. This second point is important because the directory contains common executables and should not be changed by users. Also, since the /usr/ directory is mounted as read-only, it can be mounted from the CD-ROM or from another machine via a read-only NFS mount.

1.2.1. FHS標準

ここで示すディレクトリとファイルは、FHSドキュメントで指定されるもののほんの一部です。 完全な情報については最新のFHSドキュメントを参照してください。
総括的な基準はオンラインの http://www.pathname.com/fhsで見ることが出来ます。

1.2.1.1. The /boot/ Directory

The /boot/ directory contains static files required to boot the system, such as the Linux kernel. These files are essential for the system to boot properly.

警告

Do not remove the /boot/ directory. Doing so renders the system unbootable.

1.2.1.2. The /dev/ Directory

The /dev/ directory contains device nodes that either represent devices that are attached to the system or virtual devices that are provided by the kernel. These device nodes are essential for the system to function properly. The udev daemon takes care of creating and removing all these device nodes in /dev/.
Devices in the /dev directory and subdirectories are either character (providing only a serial stream of input/output) or block (accessible randomly). Character devices include mouse, keyboard, modem while block devices include hard disk, floppy drive etc. If you have GNOME or KDE installed in your system, devices such as external drives or cds are automatically detected when connected (e.g via usb) or inserted (e.g via CD or DVD drive) and a popup window displaying the contents is automatically displayed. Files in the /dev directory are essential for the system to function properly.
表1.1 Examples of common files in the /dev
File Description
/dev/hda The master device on primary IDE channel.
/dev/hdb The slave device on primary IDE channel.
/dev/tty0 The first virtual console.
/dev/tty1 The second virtual console.
/dev/sda The first device on primary SCSI or SATA channel.
/dev/lp0 The first parallel port.

1.2.1.3. The /etc/ Directory

The /etc/ directory is reserved for configuration files that are local to the machine. No binaries are to be placed in /etc/. Any binaries that were once located in /etc/ should be placed into /sbin/ or /bin/.
Examples of directories in /etc are the X11/ and skel/:
/etc
   |- X11/
   |- skel/
The /etc/X11/ directory is for X Window System configuration files, such as xorg.conf. The /etc/skel/ directory is for "skeleton" user files, which are used to populate a home directory when a user is first created. Applications also store their configuration files in this directory and may reference them when they are executed.

1.2.1.4. The /lib/ Directory

The /lib/ directory should contain only those libraries needed to execute the binaries in /bin/ and /sbin/. These shared library images are particularly important for booting the system and executing commands within the root file system.

1.2.1.5. The /media/ Directory

The /media/ directory contains subdirectories used as mount points for removable media such as usb storage media, DVDs, CD-ROMs, and Zip disks.

1.2.1.6. The /mnt/ Directory

The /mnt/ directory is reserved for temporarily mounted file systems, such as NFS file system mounts. For all removable media, please use the /media/ directory. Automatically detected removable media will be mounted in the /media directory.

注記

この /mnt ディレクトリをインストールプログラムで使用しないで下さい。

1.2.1.7. The /opt/ Directory

The /opt/ directory provides storage for most application software packages.
A package placing files in the /opt/ directory creates a directory bearing the same name as the package. This directory, in turn, holds files that otherwise would be scattered throughout the file system, giving the system administrator an easy way to determine the role of each file within a particular package.
For example, if sample is the name of a particular software package located within the /opt/ directory, then all of its files are placed in directories inside the /opt/sample/ directory, such as /opt/sample/bin/ for binaries and /opt/sample/man/ for manual pages.
Packages that encompass many different sub-packages, data files, extra fonts, clipart etc are also located in the /opt/ directory, giving that large package a way to organize itself. In this way, our sample package may have different tools that each go in their own sub-directories, such as /opt/sample/tool1/ and /opt/sample/tool2/, each of which can have their own bin/, man/, and other similar directories.

1.2.1.8. The /proc/ Directory

The /proc/ directory contains special files that either extract information from or send information to the kernel. Examples include system memory, cpu information, hardware configuration etc.
Due to the great variety of data available within /proc/ and the many ways this directory can be used to communicate with the kernel, an entire chapter has been devoted to the subject. For more information, refer to 4章The proc File System.

1.2.1.9. The /sbin/ Directory

The /sbin/ directory stores executables used by the root user. The executables in /sbin/ are used at boot time, for system administration and to perform system recovery operations. Of this directory, the FHS says:
/sbin contains binaries essential for booting, restoring, recovering, and/or repairing the system in addition to the binaries in /bin. Programs executed after /usr/ is known to be mounted (when there are no problems) are generally placed into /usr/sbin. Locally-installed system administration programs should be placed into /usr/local/sbin.
At a minimum, the following programs should be in /sbin/:
arp, clock,
halt, init,
fsck.*, grub,
ifconfig, mingetty,
mkfs.*, mkswap,
reboot, route,
shutdown, swapoff,
swapon

1.2.1.10. The /srv/ Directory

The /srv/ directory contains site-specific data served by your system running Red Hat Enterprise Linux. This directory gives users the location of data files for a particular service, such as FTP, WWW, or CVS. Data that only pertains to a specific user should go in the /home/ directory.

1.2.1.11. The /sys/ Directory

The /sys/ directory utilizes the new sysfs virtual file system specific to the 2.6 kernel. With the increased support for hot plug hardware devices in the 2.6 kernel, the /sys/ directory contains information similarly held in /proc/, but displays a hierarchical view of specific device information in regards to hot plug devices.

1.2.1.12. The /usr/ Directory

/usr/ ディレクトリは、複数のマシンで共有することのできるファイル用です。通常、/usr/ディレクトリは独自のパーティション上にあり、読み込み専用でマウントされます。最小限、以下のディレクトリ群を /usr/ のサブディレクトリとする必要があります:
/usr
   |- bin/
   |- etc/
   |- games/
   |- include/
   |- kerberos/
   |- lib/
   |- libexec/
   |- local/
   |- sbin/
   |- share/
   |- src/
   |- tmp -> ../var/tmp/
Under the /usr/ directory, the bin/ subdirectory contains executables, etc/ contains system-wide configuration files, games is for games, include/ contains C header files, kerberos/ contains binaries and other Kerberos-related files, and lib/ contains object files and libraries that are not designed to be directly utilized by users or shell scripts. The libexec/ directory contains small helper programs called by other programs, sbin/ is for system administration binaries (those that do not belong in the /sbin/ directory), share/ contains files that are not architecture-specific, src/ is for source code.

1.2.1.13. The /usr/local/ Directory

The FHS says:
The /usr/local hierarchy is for use by the system administrator when installing software locally. It needs to be safe from being overwritten when the system software is updated. It may be used for programs and data that are shareable among a group of hosts, but not found in /usr.
The /usr/local/ directory is similar in structure to the /usr/ directory. It has the following subdirectories, which are similar in purpose to those in the /usr/ directory:
/usr/local
	|- bin/
	|- etc/
	|- games/
	|- include/
	|- lib/
	|- libexec/
	|- sbin/
	|- share/
	|- src/
In Red Hat Enterprise Linux, the intended use for the /usr/local/ directory is slightly different from that specified by the FHS. The FHS says that /usr/local/ should be where software that is to remain safe from system software upgrades is stored. Since software upgrades can be performed safely with RPM Package Manager (RPM), it is not necessary to protect files by putting them in /usr/local/. Instead, the /usr/local/ directory is used for software that is local to the machine.
For instance, if the /usr/ directory is mounted as a read-only NFS share from a remote host, it is still possible to install a package or program under the /usr/local/ directory.

1.2.1.14. The /var/ Directory

Since the FHS requires Linux to mount /usr/ as read-only, any programs that write log files or need spool/ or lock/ directories should write them to the /var/ directory. The FHS states /var/ is for:
...variable data files. This includes spool directories and files, administrative and logging data, and transient and temporary files.
Below are some of the directories found within the /var/ directory:
/var
   |- account/
   |- arpwatch/
   |- cache/
   |- crash/
   |- db/
   |- empty/
   |- ftp/
   |- gdm/
   |- kerberos/
   |- lib/
   |- local/
   |- lock/
   |- log/
   |- mail -> spool/mail/
   |- mailman/
   |- named/
   |- nis/
   |- opt/
   |- preserve/
   |- run/
   +- spool/
       |- at/
       |- clientmqueue/
       |- cron/
       |- cups/
       |- exim/
       |- lpd/
       |- mail/
       |- mailman/
       |- mqueue/
       |- news/
       |- postfix/
       |- repackage/
       |- rwho/
       |- samba/
       |- squid/
       |- squirrelmail/
       |- up2date/
       |- uucp
       |- uucppublic/
       |- vbox/
|- tmp/
|- tux/
|- www/
|- yp/
System log files, such as messages and lastlog, go in the /var/log/ directory. The /var/lib/rpm/ directory contains RPM system databases. Lock files go in the /var/lock/ directory, usually in directories for the program using the file. The /var/spool/ directory has subdirectories for programs in which data files are stored.

1.3. Red Hat Enterprise Linux 稼動環境下での特別なファイルの場所

Red Hat Enterprise Linux は、特殊ファイルを収納するために、FHS の構造を幾分拡張しています。
Most files pertaining to RPM are kept in the /var/lib/rpm/ directory. For more information on RPM, refer to the chapter 11章RPMによるパッケージ管理.
The /var/cache/yum/ directory contains files used by the Package Updater, including RPM header information for the system. This location may also be used to temporarily store RPMs downloaded while updating the system. For more information about Red Hat Network, refer to 14章Product Subscriptions and Entitlements.
Another location specific to Red Hat Enterprise Linux is the /etc/sysconfig/ directory. This directory stores a variety of configuration information. Many scripts that run at boot time use the files in this directory. Refer to 30章The sysconfig Directory for more information about what is within this directory and the role these files play in the boot process.

第2章 Using the mount Command

On Linux, UNIX, and similar operating systems, file systems on different partitions and removable devices like CDs, DVDs, or USB flash drives can be attached to a certain point (that is, the mount point) in the directory tree, and detached again. To attach or detach a file system, you can use the mount or umount command respectively. This chapter describes the basic usage of these commands, and covers some advanced topics such as moving a mount point or creating shared subtrees.

2.1. Listing Currently Mounted File Systems

To display all currently attached file systems, run the mount command with no additional arguments:
mount
This command displays the list of known mount points. Each line provides important information about the device name, the file system type, the directory in which it is mounted, and relevant mount options in the following form:
device on directory type type (options)
By default, the output includes various virtual file systems such as sysfs, tmpfs, and others. To display only the devices with a certain file system type, supply the -t option on the command line:
mount -t type
For a list of common file system types, refer to 表2.1「Common File System Types」. For an example on how to use the mount command to list the mounted file systems, see 例2.1「Listing Currently Mounted ext3 File Systems」.
例2.1 Listing Currently Mounted ext3 File Systems
Usually, both / and /boot partitions are formatted to use ext3. To display only the mount points that use this file system, type the following at a shell prompt:
~]$ mount -t ext3
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
/dev/vda1 on /boot type ext3 (rw)

2.2. Mounting a File System

To attach a certain file system, use the mount command in the following form:
mount [option] device directory
When the mount command is run, it reads the content of the /etc/fstab configuration file to see if the given file system is listed. This file contains a list of device names and the directory in which the selected file systems should be mounted, as well as the file system type and mount options. Because of this, when you are mounting a file system that is specified in this file, you can use one of the following variants of the command:
mount [option] directory
mount [option] device
Note that unless you are logged in as root, you must have permissions to mount the file system (see 「Specifying the Mount Options」).

2.2.1. Specifying the File System Type

In most cases, mount detects the file system automatically. However, there are certain file systems, such as NFS (Network File System) or CIFS (Common Internet File System), that are not recognized, and need to be specified manually. To specify the file system type, use the mount command in the following form:
mount -t type device directory
表2.1「Common File System Types」 provides a list of common file system types that can be used with the mount command. For a complete list of all available file system types, consult the relevant manual page as referred to in 「Installed Documentation」.
表2.1 Common File System Types
Type Description
ext2 The ext2 file system.
ext3 The ext3 file system.
iso9660 The ISO 9660 file system. It is commonly used by optical media, typically CDs.
jfs The JFS file system created by IBM.
nfs The NFS file system. It is commonly used to access files over the network.
nfs4 The NFSv4 file system. It is commonly used to access files over the network.
ntfs The NTFS file system. It is commonly used on machines that are running the Windows operating system.
udf The UDF file system. It is commonly used by optical media, typically DVDs.
vfat The FAT file system. It is commonly used on machines that are running the Windows operating system, and on certain digital media such as USB flash drives or floppy disks.

See 例2.2「Mounting a USB Flash Drive」 for an example usage.
例2.2 Mounting a USB Flash Drive
Older USB flash drives often use the FAT file system. Assuming that such drive uses the /dev/sdc1 device and that the /media/flashdisk/ directory exists, you can mount it to this directory by typing the following at a shell prompt as root:
~]# mount -t vfat /dev/sdc1 /media/flashdisk

2.2.2. Specifying the Mount Options

To specify additional mount options, use the command in the following form:
mount -o options
When supplying multiple options, do not insert a space after a comma, or mount will incorrectly interpret the values following spaces as additional parameters.
表2.2「Common Mount Options」 provides a list of common mount options. For a complete list of all available options, consult the relevant manual page as referred to in 「Installed Documentation」.
表2.2 Common Mount Options
Option Description
async Allows the asynchronous input/output operations on the file system.
auto Allows the file system to be mounted automatically using the mount -a command.
defaults Provides an alias for async,auto,dev,exec,nouser,rw,suid.
exec Allows the execution of binary files on the particular file system.
loop Mounts an image as a loop device.
noauto Disallows the automatic mount of the file system using the mount -a command.
noexec Disallows the execution of binary files on the particular file system.
nouser Disallows an ordinary user (that is, other than root) to mount and unmount the file system.
remount Remounts the file system in case it is already mounted.
ro Mounts the file system for reading only.
rw Mounts the file system for both reading and writing.
user Allows an ordinary user (that is, other than root) to mount and unmount the file system.

See 例2.3「Mounting an ISO Image」 for an example usage.
例2.3 Mounting an ISO Image
An ISO image (or a disk image in general) can be mounted by using the loop device. Assuming that the ISO image of the Fedora 14 installation disc is present in the current working directory and that the /media/cdrom/ directory exists, you can mount the image to this directory by running the following command as root:
~]# mount -o ro,loop Fedora-14-x86_64-Live-Desktop.iso /media/cdrom
Note that ISO 9660 is by design a read-only file system.

2.2.3. Sharing Mounts

Occasionally, certain system administration tasks require access to the same file system from more than one place in the directory tree (for example, when preparing a chroot environment). To address such requirements, the mount command implements the --bind option that provides a means for duplicating certain mounts. Its usage is as follows:
mount --bind old_directory new_directory
Although the above command allows a user to access the file system from both places, it does not apply on the file systems that are mounted within the original directory. To include these mounts as well, type:
mount --rbind old_directory new_directory
Additionally, to provide as much flexibility as possible, Red Hat Enterprise Linux 5.8 implements the functionality known as shared subtrees. This feature allows you to use the following four mount types:
Shared Mount
A shared mount allows you to create an exact replica of a given mount point. When a shared mount is created, any mount within the original mount point is reflected in it, and vice versa. To create a shared mount, type the following at a shell prompt:
mount --make-shared mount_point
Alternatively, you can change the mount type for the selected mount point and all mount points under it:
mount --make-rshared mount_point
See 例2.4「Creating a Shared Mount Point」 for an example usage.
例2.4 Creating a Shared Mount Point
There are two places where other file systems are commonly mounted: the /media directory for removable media, and the /mnt directory for temporarily mounted file systems. By using a shared mount, you can make these two directories share the same content. To do so, as root, mark the /media directory as shared:
~]# mount --bind /media /media
~]# mount --make-shared /media
Then create its duplicate in /mnt by using the following command:
~]# mount --bind /media /mnt
You can now verify that a mount within /media also appears in /mnt. For example, if you have non-empty media in your CD-ROM drive and the /media/cdrom/ directory exists, run the following commands:
~]# mount /dev/cdrom /media/cdrom
~]# ls /media/cdrom
EFI  GPL  isolinux  LiveOS
~]# ls /mnt/cdrom
EFI  GPL  isolinux  LiveOS
Similarly, you can verify that any file system mounted in the /mnt directory is reflected in /media. For instance, if you have a non-empty USB flash drive that uses the /dev/sdc1 device plugged in and the /mnt/flashdisk/ directory is present, type:
~]# mount /dev/sdc1 /mnt/flashdisk
~]# ls /media/flashdisk
en-US  publican.cfg
~]# ls /mnt/flashdisk
en-US  publican.cfg

Slave Mount
A slave mount allows you to create a limited duplicate of a given mount point. When a slave mount is created, any mount within the original mount point is reflected in it, but no mount within a slave mount is reflected in its original. To create a slave mount, type the following at a shell prompt:
mount --make-slave mount_point
Alternatively, you can change the mount type for the selected mount point and all mount points under it:
mount --make-rslave mount_point
See 例2.5「Creating a Slave Mount Point」 for an example usage.
例2.5 Creating a Slave Mount Point
Imagine you want the content of the /media directory to appear in /mnt as well, but you do not want any mounts in the /mnt directory to be reflected in /media. To do so, as root, first mark the /media directory as shared:
~]# mount --bind /media /media
~]# mount --make-shared /media
Then create its duplicate in /mnt, but mark it as slave:
~]# mount --bind /media /mnt
~]# mount --make-slave /mnt
You can now verify that a mount within /media also appears in /mnt. For example, if you have non-empty media in your CD-ROM drive and the /media/cdrom/ directory exists, run the following commands:
~]# mount /dev/cdrom /media/cdrom
~]# ls /media/cdrom
EFI  GPL  isolinux  LiveOS
~]# ls /mnt/cdrom
EFI  GPL  isolinux  LiveOS
You can also verify that file systems mounted in the /mnt directory are not reflected in /media. For instance, if you have a non-empty USB flash drive that uses the /dev/sdc1 device plugged in and the /mnt/flashdisk/ directory is present, type: :
~]# mount /dev/sdc1 /mnt/flashdisk
~]# ls /media/flashdisk
~]# ls /mnt/flashdisk
en-US  publican.cfg

Private Mount
A private mount allows you to create an ordinary mount. When a private mount is created, no subsequent mounts within the original mount point are reflected in it, and no mount within a private mount is reflected in its original. To create a private mount, type the following at a shell prompt:
mount --make-private mount_point
Alternatively, you can change the mount type for the selected mount point and all mount points under it:
mount --make-rprivate mount_point
See 例2.6「Creating a Private Mount Point」 for an example usage.
例2.6 Creating a Private Mount Point
Taking into account the scenario in 例2.4「Creating a Shared Mount Point」, assume that you have previously created a shared mount point by using the following commands as root:
~]# mount --bind /media /media
~]# mount --make-shared /media
~]# mount --bind /media /mnt
To mark the /mnt directory as private, type:
~]# mount --make-private /mnt
You can now verify that none of the mounts within /media appears in /mnt. For example, if you have non-empty media in your CD-ROM drive and the /media/cdrom/ directory exists, run the following commands:
~]# mount /dev/cdrom /media/cdrom
~]# ls /media/cdrom
EFI  GPL  isolinux  LiveOS
~]# ls /mnt/cdrom
~]#
You can also verify that file systems mounted in the /mnt directory are not reflected in /media. For instance, if you have a non-empty USB flash drive that uses the /dev/sdc1 device plugged in and the /mnt/flashdisk/ directory is present, type:
~]# mount /dev/sdc1 /mnt/flashdisk
~]# ls /media/flashdisk
~]# ls /mnt/flashdisk
en-US  publican.cfg

Unbindable Mount
An unbindable mount allows you to prevent a given mount point from being duplicated whatsoever. To create an unbindable mount, type the following at a shell prompt:
mount --make-unbindable mount_point
Alternatively, you can change the mount type for the selected mount point and all mount points under it:
mount --make-runbindable mount_point
例2.7 Creating an Unbindable Mount Point
To prevent the /media directory from being shared, as root, type the following at a shell prompt:
~]# mount --bind /media /media
~]# mount --make-unbindable /media
This way, any subsequent attempt to make a duplicate of this mount will fail with an error:
~]# mount --bind /media /mnt
mount: wrong fs type, bad option, bad superblock on /media/,
       missing code page or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

2.2.4. Moving a Mount Point

To change the directory in which a file system is mounted, use the following command:
mount --move old_directory new_directory
例2.8 Moving an Existing NFS Mount Point
Imagine that you have an NFS storage that contains user directories. Assuming that this storage is already mounted in /mnt/userdirs/, as root, you can move this mount point to /home by using the following command:
~]# mount --move /mnt/userdirs /home
To verify the mount point has been moved, list the content of both directories:
~]# ls /mnt/userdirs
~]# ls /home
jill  joe

2.3. Unmounting a File System

To detach a previously mounted file system, use either of the following variants of the umount command:
umount directory
umount device
Note that unless you are logged in as root, you must have permissions to unmount the file system (see 「Specifying the Mount Options」). See 例2.9「Unmounting a CD」 for an example usage.

Important: Make Sure the File System Is Not in Use

When a file system is in use (for example, when a process is reading a file on this file system), running the umount command will fail with an error. To determine which processes are accessing the file system, use the fuser command in the following form:
fuser -m directory
For example, to list the processes that are accessing a file system mounted to the /media/cdrom/ directory, type:
~]$ fuser -m /media/cdrom
/media/cdrom:         1793  2013  2022  2435 10532c 10672c
例2.9 Unmounting a CD
To unmount a CD that was previously mounted to the /media/cdrom/ directory, type the following at a shell prompt:
~]$ umount /media/cdrom

2.4. Additional Resources

The following resources provide an in-depth documentation on the subject.

2.4.1. Installed Documentation

  • man 8 mount — The manual page for the mount command that provides a full documentation on its usage.
  • man 8 umount — The manual page for the umount command that provides a full documentation on its usage.
  • man 5 fstab — The manual page providing a thorough description of the /etc/fstab file format.

2.4.2. Useful Websites

  • Shared subtrees — An LWN article covering the concept of shared subtrees.
  • sharedsubtree.txt — Extensive documentation that is shipped with the shared subtrees patches.

第3章 ext3 ファイルシステム

デフォルトのファイルシステムはジャーナリング機能のext3 ファイルシステムです。

3.1. ext3の機能

ext3 ファイルシステムは、根本的には ext2ファイルシステムの強化版です。 次のような改善がなされています。
回復力
After an unexpected power failure or system crash (also called an unclean system shutdown), each mounted ext2 file system on the machine must be checked for consistency by the e2fsck program. This is a time-consuming process that can delay system boot time significantly, especially with large volumes containing a large number of files. During this time, any data on the volumes is unreachable.
ext3 ファイルシステムに装備されているジャーナリングは、異常システム終了の 後でも、上記の様なファイルシステムチェックがもう必要ないという意味を持ちます。 唯一、ext3ファイルシステム使用中に一貫性テストが必要になる可能性があるのは、 ハードディスク故障などの稀なハードウェア問題の場合です。異常システム終了後の ext3ファイルシステムの回復時間は、ファイルシステムのサイズやファイルの数に 左右されるのではなく、むしろ一貫性を管理するジャーナルの サイズに影響されます。ハードウェアの速度にもよりますが、デフォルトのジャーナルサイズは 回復するのに約1秒かかるだけです。
データの保全性
ext3 ファイルシステムは異常システム終了が発生した場合に、データ統合性の損失を 防止します。ext3 ファイルシステムを使用すると、データの保護のタイプとレベルを選択できます。デフォルトでは、ext3 ボリュームは、ファイルシステムの状態に応じて、データ一貫性を高レベルに維持するよう設定されます。
速度
Despite writing some data more than once, ext3 has a higher throughput in most cases than ext2 because ext3's journaling optimizes hard drive head motion. You can choose from three journaling modes to optimize speed, but doing so means trade-offs in regards to data integrity if the system was to fail.
簡単な移動
It is easy to migrate from ext2 to ext3 and gain the benefits of a robust journaling file system without reformatting. Refer to 「ext3ファイルシステムへの変換」 for more on how to perform this task.
The following sections walk you through the steps for creating and tuning ext3 partitions. For ext2 partitions, skip the partitioning and formatting sections below and go directly to 「ext3ファイルシステムへの変換」.

3.2. ext3 ファイルシステムの作成

インストール後に、新規のext3ファイルを作成する必要がある場合があります。 例えば、システムに新しいディスクドライブを追加した場合、そのドライブにパーティション設定をして ext3 ファイルシステムを使用したいことがあるかもしれません。
ext3ファイルシステムを作成するステップは以下の通りです。
  1. Format the partition with the ext3 file system using mkfs.
  2. Label the partition using e2label.

3.3. ext3ファイルシステムへの変換

The tune2fs allows you to convert an ext2 filesystem to ext3.

注意

tune2fs を使用する前と後には、常に e2fsck ユーティリティを使用してファイルシステムをチェックして下さい。Red Hat Enterprise Linux の デフォルトインストールは全てのファイルシステムに ext3 を使用しています。
ext2 ファイルシステムから ext3 へ変換するには、 root でログインしてターミナルで次のようにタイプします:
tune2fs -j <block_device>
where <block_device> contains the ext2 filesystem you wish to convert.
有効なブロックデバイスは、以下の 2つの種類のエントリのいずれかになります:
  • A mapped device — A logical volume in a volume group, for example, /dev/mapper/VolGroup00-LogVol02.
  • A static device — A traditional storage volume, for example, /dev/hdbX, where hdb is a storage device name and X is the partition number.
Issue the df command to display mounted file systems.
このセクションの残りの個所では、サンプルコマンドがブロックデバイス用に以下の値を 使用します:
/dev/mapper/VolGroup00-LogVol02
You must recreate the initrd image so that it will contain the ext3 kernel module. To create this, run the mkinitrd program. For information on using the mkinitrd command, type man mkinitrd. Also, make sure your GRUB configuration loads the initrd.
この変更をしなかった場合、システムはブートしますがファイルシステムは、ext3でなくext2としてマウントされます。

3.4. ext2ファイルシステムへの復元

パーティションをなんらかの理由で ext3 から ext2 に戻す場合、先ず、root でログインして以下の コマンドを入力をし、パーティションをアンマウントする必要があります:
umount /dev/mapper/VolGroup00-LogVol02
次に、 root で次の入力をしてファイルシステムをext2 に変更します:
tune2fs -O ^has_journal /dev/mapper/VolGroup00-LogVol02
root で、以下のコマンドを入力してパーティションのエラーをチェックします:
e2fsck -y /dev/mapper/VolGroup00-LogVol02
そして、以下の入力をしてext2ファイルシステムとしてパーティションをマウントします:
mount -t ext2 /dev/mapper/VolGroup00-LogVol02 /mount/point
上記のコマンドでは、/mount/point をパーティションのマウントポイントで置き換えます。
Next, remove the .journal file at the root level of the partition by changing to the directory where it is mounted and typing:
rm -f .journal
これで ext2 パーティションができました。
If you want to permanently change the partition to ext2, remember to update the /etc/fstab file.

第4章 The proc File System

The Linux kernel has two primary functions: to control access to physical devices on the computer and to schedule when and how processes interact with these devices. The /proc/ directory — also called the proc file system — contains a hierarchy of special files which represent the current state of the kernel — allowing applications and users to peer into the kernel's view of the system.
Within the /proc/ directory, one can find a wealth of information detailing the system hardware and any processes currently running. In addition, some of the files within the /proc/ directory tree can be manipulated by users and applications to communicate configuration changes to the kernel.

4.1. 仮想ファイルシステム

Under Linux, all data are stored as files. Most users are familiar with the two primary types of files: text and binary. But the /proc/ directory contains another type of file called a virtual file. It is for this reason that /proc/ is often referred to as a virtual file system.
これらの仮想ファイルは独特の性質を持ちます。殆どはサイズがゼロバイトでリストされ、1つを表示すると、それは大量の情報を含んでいることがあります。さらには、仮想ファイル上の殆どの時刻と日付の設定が現在の時刻と日付を示しますのでこれが、常時更新されている事実を現しています。
Virtual files such as /proc/interrupts, /proc/meminfo, /proc/mounts, and /proc/partitions provide an up-to-the-moment glimpse of the system's hardware. Others, like the /proc/filesystems file and the /proc/sys/ directory provide system configuration information and interfaces.
For organizational purposes, files containing information on a similar topic are grouped into virtual directories and sub-directories. For instance, /proc/ide/ contains information for all physical IDE devices. Likewise, process directories contain information about each running process on the system.

4.1.1. 仮想ファイルの表示

By using the cat, more, or less commands on files within the /proc/ directory, users can immediately access enormous amounts of information about the system. For example, to display the type of CPU a computer has, type cat /proc/cpuinfo to receive output similar to the following:
processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 5
model		: 9
model name	: AMD-K6(tm) 3D+
Processor stepping	: 1 cpu
MHz		: 400.919
cache size	: 256 KB
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 1
wp		: yes
flags		: fpu vme de pse tsc msr mce cx8 pge mmx syscall 3dnow k6_mtrr
bogomips	: 799.53
When viewing different virtual files in the /proc/ file system, some of the information is easily understandable while some is not human-readable. This is in part why utilities exist to pull data from virtual files and display it in a useful way. Examples of these utilities include lspci, apm, free, and top.

注記

Some of the virtual files in the /proc/ directory are readable only by the root user.

4.1.2. 仮想ファイルの変更

As a general rule, most virtual files within the /proc/ directory are read-only. However, some can be used to adjust settings in the kernel. This is especially true for files in the /proc/sys/ subdirectory.
To change the value of a virtual file, use the echo command and a greater than symbol (>) to redirect the new value to the file. For example, to change the hostname on the fly, type:
echo www.example.com > /proc/sys/kernel/hostname 
Other files act as binary or Boolean switches. Typing cat /proc/sys/net/ipv4/ip_forward returns either a 0 or a 1. A 0 indicates that the kernel is not forwarding network packets. Using the echo command to change the value of the ip_forward file to 1 immediately turns packet forwarding on.

Tip

Another command used to alter settings in the /proc/sys/ subdirectory is /sbin/sysctl. For more information on this command, refer to 「Using the sysctl Command」
For a listing of some of the kernel configuration files available in the /proc/sys/ subdirectory, refer to /proc/sys/.

4.2. Top-level Files within the proc File System

Below is a list of some of the more useful virtual files in the top-level of the /proc/ directory.

注記

In most cases, the content of the files listed in this section are not the same as those installed on your machine. This is because much of the information is specific to the hardware on which Red Hat Enterprise Linux is running for this documentation effort.

4.2.1. /proc/apm

This file provides information about the state of the Advanced Power Management (APM) system and is used by the apm command. If a system with no battery is connected to an AC power source, this virtual file would look similar to the following:
1.16 1.2 0x07 0x01 0xff 0x80 -1% -1 ?
Running the apm -v command on such a system results in output similar to the following:
APM BIOS 1.2 (kernel driver 1.16ac) AC on-line, no system battery
For systems which do not use a battery as a power source, apm is able do little more than put the machine in standby mode. The apm command is much more useful on laptops. For example, the following output is from the command cat /proc/apm on a laptop while plugged into a power outlet:
1.16 1.2 0x03 0x01 0x03 0x09 100% -1 ?
When the same laptop is unplugged from its power source for a few minutes, the content of the apm file changes to something like the following:
1.16 1.2 0x03 0x00 0x00 0x01 99% 1792 min
The apm -v command now yields more useful data, such as the following:
APM BIOS 1.2 (kernel driver 1.16) AC off-line, battery status high: 99% (1 day, 5:52)

4.2.2. /proc/buddyinfo

このファイルは主に、メモリの分散化問題を解析するために使用されます。このバディアルゴリズムの使用では、各桁はある任意の時間に利用できる特定の順の(又は特定のサイズの)ページ数を表示します。例えば、ゾーン DMA (direct memory access) には、メモリの 2^(0*PAGE_SIZE)グループの 90があります。同様に、利用できるメモリの2^(1*PAGE_SIZE)グループには 6、そして2^(2*PAGE_SIZE)グループには 2 があります。
The DMA row references the first 16 MB on a system, the HighMem row references all memory greater than 4 GB on a system, and the Normal row references all memory in between.
The following is an example of the output typical of /proc/buddyinfo:
Node 0, zone      DMA     90      6      2      1      1      ...
Node 0, zone   Normal   1650    310      5      0      0      ...
Node 0, zone  HighMem      2      0      0      1      1      ...

4.2.3. /proc/cmdline

This file shows the parameters passed to the kernel at the time it is started. A sample /proc/cmdline file looks like the following:
ro root=/dev/VolGroup00/LogVol00 rhgb quiet 3
This output tells us the following:
ro
The root device is mounted read-only at boot time. The presence of ro on the kernel boot line overrides any instances of rw.
root=/dev/VolGroup00/LogVol00
This tells us on which disk device or, in this case, on which logical volume, the root filesystem image is located. With our sample /proc/cmdline output, the root filesystem image is located on the first logical volume (LogVol00) of the first LVM volume group (VolGroup00). On a system not using Logical Volume Management, the root file system might be located on /dev/sda1 or /dev/sda2, meaning on either the first or second partition of the first SCSI or SATA disk drive, depending on whether we have a separate (preceding) boot or swap partition on that drive.
For more information on LVM used in Red Hat Enterprise Linux, refer to http://www.tldp.org/HOWTO/LVM-HOWTO/index.html.
rhgb
A short lowercase acronym that stands for Red Hat Graphical Boot, providing "rhgb" on the kernel command line signals that graphical booting is supported, assuming that /etc/inittab shows that the default runlevel is set to 5 with a line like this:
id:5:initdefault:
quiet
Indicates that all verbose kernel messages except those which are extremely serious should be suppressed at boot time.

4.2.4. /proc/cpuinfo

This virtual file identifies the type of processor used by your system. The following is an example of the output typical of /proc/cpuinfo:
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 15
model		: 2
model name	: Intel(R) Xeon(TM) CPU 2.40GHz
stepping	: 7 cpu
MHz		: 2392.371
cache size	: 512 KB
physical id	: 0
siblings	: 2
runqueue	: 0
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 2
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca  cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm
bogomips	: 4771.02
  • processor — Provides each processor with an identifying number. On systems that have one processor, only a 0 is present.
  • cpu family — Authoritatively identifies the type of processor in the system. For an Intel-based system, place the number in front of "86" to determine the value. This is particularly helpful for those attempting to identify the architecture of an older system such as a 586, 486, or 386. Because some RPM packages are compiled for each of these particular architectures, this value also helps users determine which packages to install.
  • model name — Displays the common name of the processor, including its project name.
  • cpu MHz — Shows the precise speed in megahertz for the processor to the thousandths decimal place.
  • cache size — Displays the amount of level 2 memory cache available to the processor.
  • siblings — Displays the number of sibling CPUs on the same physical CPU for architectures which use hyper-threading.
  • flags — Defines a number of different qualities about the processor, such as the presence of a floating point unit (FPU) and the ability to process MMX instructions.

4.2.5. /proc/crypto

This file lists all installed cryptographic ciphers used by the Linux kernel, including additional details for each. A sample /proc/crypto file looks like the following:
name         : sha1
module       : kernel
type         : digest
blocksize    : 64
digestsize   : 20
name         : md5
module       : md5
type         : digest
blocksize    : 64
digestsize   : 16

4.2.6. /proc/devices

このファイルは現在設定されている各種のキャラクタデバイスやブロックデバイスを表示します (モジュールがロードされていないデバイスは除く)。 以下にこのファイルからの出力のサンプルを示します。
Character devices:
  1 mem
  4 /dev/vc/0
  4 tty
  4 ttyS
  5 /dev/tty
  5 /dev/console
  5 /dev/ptmx
  7 vcs
  10 misc
  13 input
  29 fb
  36 netlink
  128 ptm
  136 pts
  180 usb

Block devices:
  1 ramdisk
  3 ide0
  9 md
  22 ide1
  253 device-mapper
  254 mdp
The output from /proc/devices includes the major number and name of the device, and is broken into two major sections: Character devices and Block devices.
キャラクタデバイスブロックデバイスと類似していますが、 次の2つの相違点があります:
  1. キャラクターデバイスはバッファを必要としません。ブロックデバイスは利用出来るバッファを持ち、それらに処理する前に順序付けをすることができます。これは、情報を保存するためのデバイス— ハードディスクなど—にはとても重要です。情報をデバイスに書き込む前に順番を付けることができると、効率のよい順番に配置できるためです。
  2. キャラクタデバイスでは、事前設定サイズのないデータを送信します。ブロックデバイスはデバイス毎の特定サイズ設定のブロック単位で情報を送受信します。
デバイスに関する詳細は、インストールされている以下のドキュメントを参照してください。
/usr/share/doc/kernel-doc-<version>/Documentation/devices.txt

4.2.7. /proc/dma

This file contains a list of the registered ISA DMA channels in use. A sample /proc/dma files looks like the following:
4: cascade

4.2.8. /proc/execdomains

このファイルは、このファイルは、Linuxカーネルが現在サポートしている実行ドメインと、 サポートしているパーソナリティの範囲の一覧を表示します。
0-0   Linux           [kernel]
Think of execution domains as the "personality" for an operating system. Because other binary formats, such as Solaris, UnixWare, and FreeBSD, can be used with Linux, programmers can change the way the operating system treats system calls from these binaries by changing the personality of the task. Except for the PER_LINUX execution domain, different personalities can be implemented as dynamically loadable modules.

4.2.9. /proc/fb

This file contains a list of frame buffer devices, with the frame buffer device number and the driver that controls it. Typical output of /proc/fb for systems which contain frame buffer devices looks similar to the following:
0 VESA VGA

4.2.10. /proc/filesystems

This file displays a list of the file system types currently supported by the kernel. Sample output from a generic /proc/filesystems file looks similar to the following:
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   sockfs
nodev   binfmt_misc
nodev   usbfs
nodev   usbdevfs
nodev   futexfs
nodev   tmpfs
nodev   pipefs
nodev   eventpollfs
nodev   devpts
	ext2
nodev   ramfs
nodev   hugetlbfs
	iso9660
nodev   mqueue
	ext3
nodev   rpc_pipefs
nodev   autofs
The first column signifies whether the file system is mounted on a block device. Those beginning with nodev are not mounted on a device. The second column lists the names of the file systems supported.
The mount command cycles through the file systems listed here when one is not specified as an argument.

4.2.11. /proc/interrupts

This file records the number of interrupts per IRQ on the x86 architecture. A standard /proc/interrupts looks similar to the following:
  CPU0
  0:   80448940          XT-PIC  timer
  1:     174412          XT-PIC  keyboard
  2:          0          XT-PIC  cascade
  8:          1          XT-PIC  rtc
 10:     410964          XT-PIC  eth0
 12:      60330          XT-PIC  PS/2 Mouse
 14:    1314121          XT-PIC  ide0
 15:    5195422          XT-PIC  ide1
NMI:          0
ERR:          0
マルチプロセッサのコンピュータの場合、このファイルは多少異なります:
	   CPU0       CPU1
  0: 1366814704          0          XT-PIC  timer
  1:        128        340    IO-APIC-edge  keyboard
  2:          0          0          XT-PIC  cascade
  8:          0          1    IO-APIC-edge  rtc
 12:       5323       5793    IO-APIC-edge  PS/2 Mouse
 13:          1          0          XT-PIC  fpu
 16:   11184294   15940594   IO-APIC-level  Intel EtherExpress Pro 10/100 Ethernet
 20:    8450043   11120093   IO-APIC-level  megaraid
 30:      10432      10722   IO-APIC-level  aic7xxx
 31:         23         22   IO-APIC-level  aic7xxx
NMI:          0
ERR:          0
1番目の列はIRQ番号です。システム内のそれぞれのCPUは独自の列とIRQごとの割り込み数を持ちます。 次の列は割込みのタイプを示し、最後の列がそのIRQにあるデバイス名です。
このファイル内の各割り込みタイプはアーキテクチャ固有なので、それぞれ意味することが異なります。 x86 マシンなら以下のような値が一般的です。
  • XT-PIC — This is the old AT computer interrupts.
  • IO-APIC-edge — The voltage signal on this interrupt transitions from low to high, creating an edge, where the interrupt occurs and is only signaled once. This kind of interrupt, as well as the IO-APIC-level interrupt, are only seen on systems with processors from the 586 family and higher.
  • IO-APIC-level — Generates interrupts when its voltage signal is high until the signal is low again.

4.2.12. /proc/iomem

This file shows you the current map of the system's memory for each physical device:
00000000-0009fbff : System RAM
0009fc00-0009ffff : reserved
000a0000-000bffff : Video RAM area
000c0000-000c7fff : Video ROM
000f0000-000fffff : System ROM
00100000-07ffffff : System RAM
00100000-00291ba8 : Kernel code
00291ba9-002e09cb : Kernel data
e0000000-e3ffffff : VIA Technologies, Inc. VT82C597 [Apollo VP3] e4000000-e7ffffff : PCI Bus #01
e4000000-e4003fff : Matrox Graphics, Inc. MGA G200 AGP
e5000000-e57fffff : Matrox Graphics, Inc. MGA G200 AGP
e8000000-e8ffffff : PCI Bus #01
e8000000-e8ffffff : Matrox Graphics, Inc. MGA G200 AGP
ea000000-ea00007f : Digital Equipment Corporation DECchip 21140 [FasterNet]
ea000000-ea00007f : tulip ffff0000-ffffffff : reserved
最初の列は異なる各メモリタイプで使用するメモリレジスタを表示します。2番目の列は、これらのレジスタ内にあるメモリの種類を示し、 システムの RAM 内でカーネルが使用するメモリレジスタを表示、あるいは NIC に複数のイーサネットポートがある場合は、各ポートに割り当てられているメモリレジスタも表示します。

4.2.13. /proc/ioports

The output of /proc/ioports provides a list of currently registered port regions used for input or output communication with a device. This file can be quite long. The following is a partial listing:
0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : ide1
01f0-01f7 : ide0
02f8-02ff : serial(auto)
0376-0376 : ide1
03c0-03df : vga+
03f6-03f6 : ide0
03f8-03ff : serial(auto)
0cf8-0cff : PCI conf1
d000-dfff : PCI Bus #01
e000-e00f : VIA Technologies, Inc. Bus Master IDE
e000-e007 : ide0
e008-e00f : ide1
e800-e87f : Digital Equipment Corporation DECchip 21140 [FasterNet]
e800-e87f : tulip
1番目の列には2番目の列に表示されているデバイスのために予約されている実際のIOポートアドレス範囲が表示されます。

4.2.14. /proc/kcore

This file represents the physical memory of the system and is stored in the core file format. Unlike most /proc/ files, kcore displays a size. This value is given in bytes and is equal to the size of the physical memory (RAM) used plus 4 KB.
The contents of this file are designed to be examined by a debugger, such as gdb, and is not human readable.

注意

Do not view the /proc/kcore virtual file. The contents of the file scramble text output on the terminal. If this file is accidentally viewed, press Ctrl+C to stop the process and then type reset to bring back the command line prompt.

4.2.15. /proc/kmsg

This file is used to hold messages generated by the kernel. These messages are then picked up by other programs, such as /sbin/klogd or /bin/dmesg.

4.2.16. /proc/loadavg

This file provides a look at the load average in regard to both the CPU and IO over time, as well as additional data used by uptime and other commands. A sample /proc/loadavg file looks similar to the following:
0.20 0.18 0.12 1/80 11206
The first three columns measure CPU and IO utilization of the last one, five, and 15 minute periods. The fourth column shows the number of currently running processes and the total number of processes. The last column displays the last process ID used.
In addition, load average also refers to the number of processes ready to run (i.e. in the run queue, waiting for a CPU share.

4.2.17. /proc/locks

This file displays the files currently locked by the kernel. The contents of this file contain internal kernel debugging data and can vary tremendously, depending on the use of the system. A sample /proc/locks file for a lightly loaded system looks similar to the following:
1: POSIX  ADVISORY  WRITE 3568 fd:00:2531452 0 EOF
2: FLOCK  ADVISORY  WRITE 3517 fd:00:2531448 0 EOF
3: POSIX  ADVISORY  WRITE 3452 fd:00:2531442 0 EOF
4: POSIX  ADVISORY  WRITE 3443 fd:00:2531440 0 EOF
5: POSIX  ADVISORY  WRITE 3326 fd:00:2531430 0 EOF
6: POSIX  ADVISORY  WRITE 3175 fd:00:2531425 0 EOF
7: POSIX  ADVISORY  WRITE 3056 fd:00:2548663 0 EOF
Each lock has its own line which starts with a unique number. The second column refers to the class of lock used, with FLOCK signifying the older-style UNIX file locks from a flock system call and POSIX representing the newer POSIX locks from the lockf system call.
The third column can have two values: ADVISORY or MANDATORY. ADVISORY means that the lock does not prevent other people from accessing the data; it only prevents other attempts to lock it. MANDATORY means that no other access to the data is permitted while the lock is held. The fourth column reveals whether the lock is allowing the holder READ or WRITE access to the file. The fifth column shows the ID of the process holding the lock. The sixth column shows the ID of the file being locked, in the format of MAJOR-DEVICE:MINOR-DEVICE:INODE-NUMBER . The seventh and eighth column shows the start and end of the file's locked region.

4.2.18. /proc/mdstat

This file contains the current information for multiple-disk, RAID configurations. If the system does not contain such a configuration, then /proc/mdstat looks similar to the following:
Personalities :  read_ahead not set unused devices: <none>
This file remains in the same state as seen above unless a software RAID or md device is present. In that case, view /proc/mdstat to find the current status of mdX RAID devices.
The /proc/mdstat file below shows a system with its md0 configured as a RAID 1 device, while it is currently re-syncing the disks:
Personalities : [linear] [raid1] read_ahead 1024 sectors
md0: active raid1 sda2[1] sdb2[0] 9940 blocks [2/2] [UU] resync=1% finish=12.3min algorithm 2 [3/3] [UUU]
unused devices: <none>

4.2.19. /proc/meminfo

This is one of the more commonly used files in the /proc/ directory, as it reports a large amount of valuable information about the systems RAM usage.
The following sample /proc/meminfo virtual file is from a system with 256 MB of RAM and 512 MB of swap space:
MemTotal:       255908 kB
MemFree:         69936 kB
Buffers:         15812 kB
Cached:         115124 kB
SwapCached:          0 kB
Active:          92700 kB
Inactive:        63792 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:       255908 kB
LowFree:         69936 kB
SwapTotal:      524280 kB
SwapFree:       524280 kB
Dirty:               4 kB
Writeback:           0 kB
Mapped:          42236 kB
Slab:            25912 kB
Committed_AS:   118680 kB
PageTables:       1236 kB
VmallocTotal:  3874808 kB
VmallocUsed:      1416 kB
VmallocChunk:  3872908 kB
HugePages_Total:     0
HugePages_Free:      0
Hugepagesize:     4096 kB
Much of the information here is used by the free, top, and ps commands. In fact, the output of the free command is similar in appearance to the contents and structure of /proc/meminfo. But by looking directly at /proc/meminfo, more details are revealed:
  • MemTotal — Total amount of physical RAM, in kilobytes.
  • MemFree — The amount of physical RAM, in kilobytes, left unused by the system.
  • Buffers — The amount of physical RAM, in kilobytes, used for file buffers.
  • Cached — The amount of physical RAM, in kilobytes, used as cache memory.
  • SwapCached — The amount of swap, in kilobytes, used as cache memory.
  • Active — The total amount of buffer or page cache memory, in kilobytes, that is in active use. This is memory that has been recently used and is usually not reclaimed for other purposes.
  • Inactive — The total amount of buffer or page cache memory, in kilobytes, that are free and available. This is memory that has not been recently used and can be reclaimed for other purposes.
  • HighTotal and HighFree — The total and free amount of memory, in kilobytes, that is not directly mapped into kernel space. The HighTotal value can vary based on the type of kernel used.
  • LowTotal and LowFree — The total and free amount of memory, in kilobytes, that is directly mapped into kernel space. The LowTotal value can vary based on the type of kernel used.
  • SwapTotal — The total amount of swap available, in kilobytes.
  • SwapFree — The total amount of swap free, in kilobytes.
  • Dirty — The total amount of memory, in kilobytes, waiting to be written back to the disk.
  • Writeback — The total amount of memory, in kilobytes, actively being written back to the disk.
  • Mapped — The total amount of memory, in kilobytes, which have been used to map devices, files, or libraries using the mmap command.
  • Slab — The total amount of memory, in kilobytes, used by the kernel to cache data structures for its own use.
  • Committed_AS — The total amount of memory, in kilobytes, estimated to complete the workload. This value represents the worst case scenario value, and also includes swap memory.
  • PageTables — The total amount of memory, in kilobytes, dedicated to the lowest page table level.
  • VMallocTotal — The total amount of memory, in kilobytes, of total allocated virtual address space.
  • VMallocUsed — The total amount of memory, in kilobytes, of used virtual address space.
  • VMallocChunk — The largest contiguous block of memory, in kilobytes, of available virtual address space.
  • HugePages_Total — The total number of hugepages for the system. The number is derived by dividing Hugepagesize by the megabytes set aside for hugepages specified in /proc/sys/vm/hugetlb_pool. This statistic only appears on the x86, Itanium, and AMD64 architectures.
  • HugePages_Free — The total number of hugepages available for the system. This statistic only appears on the x86, Itanium, and AMD64 architectures.
  • Hugepagesize — The size for each hugepages unit in kilobytes. By default, the value is 4096 KB on uniprocessor kernels for 32 bit architectures. For SMP, hugemem kernels, and AMD64, the default is 2048 KB. For Itanium architectures, the default is 262144 KB. This statistic only appears on the x86, Itanium, and AMD64 architectures.

4.2.20. /proc/misc

このファイルは、デバイス番号10のその他のメジャーデバイス上に登録されている その他のドライバを一覧表示します:
63 device-mapper 175 agpgart 135 rtc 134 apm_bios
最初の列は各デバイスのマイナー番号で、2番目の列は使用中のドライバです。

4.2.21. /proc/modules

This file displays a list of all modules loaded into the kernel. Its contents vary based on the configuration and use of your system, but it should be organized in a similar manner to this sample /proc/modules file output:

注記

This example has been reformatted into a readable format. Most of this information can also be viewed via the /sbin/lsmod command.
nfs      170109  0 -          Live 0x129b0000
lockd    51593   1 nfs,       Live 0x128b0000
nls_utf8 1729    0 -          Live 0x12830000
vfat     12097   0 -          Live 0x12823000
fat      38881   1 vfat,      Live 0x1287b000
autofs4  20293   2 -          Live 0x1284f000
sunrpc   140453  3 nfs,lockd, Live 0x12954000
3c59x    33257   0 -          Live 0x12871000
uhci_hcd 28377   0 -          Live 0x12869000
md5      3777    1 -          Live 0x1282c000
ipv6     211845 16 -          Live 0x128de000
ext3     92585   2 -          Live 0x12886000
jbd      65625   1 ext3,      Live 0x12857000
dm_mod   46677   3 -          Live 0x12833000
一番目の桁にはモジュール名が含まれています。
二番目の桁はモジュールのメモリサイズをバイト単位で表示します。
三番目の桁は現在ロードされているモジュールのインスタンス数量をリストします。0の値はロードされていないモジュールを示します。
四番目の桁はモジュールが機能するために別のモジュールに依存するかどうかを表示します。そしてその他の依存モジュールをリストします。
The fifth column lists what load state the module is in: Live, Loading, or Unloading are the only possible values.
The sixth column lists the current kernel memory offset for the loaded module. This information can be useful for debugging purposes, or for profiling tools such as oprofile.

4.2.22. /proc/mounts

このファイルは、システムで使用中の全マウントの一覧を提供します。
rootfs / rootfs rw 0 0
/proc /proc proc rw,nodiratime 0 0 none
/dev ramfs rw 0 0
/dev/mapper/VolGroup00-LogVol00 / ext3 rw 0 0
none /dev ramfs rw 0 0
/proc /proc proc rw,nodiratime 0 0
/sys /sys sysfs rw 0 0
none /dev/pts devpts rw 0 0
usbdevfs /proc/bus/usb usbdevfs rw 0 0
/dev/hda1 /boot ext3 rw 0 0
none /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
The output found here is similar to the contents of /etc/mtab, except that /proc/mount is more up-to-date.
The first column specifies the device that is mounted, the second column reveals the mount point, and the third column tells the file system type, and the fourth column tells you if it is mounted read-only (ro) or read-write (rw). The fifth and sixth columns are dummy values designed to match the format used in /etc/mtab.

4.2.23. /proc/mtrr

This file refers to the current Memory Type Range Registers (MTRRs) in use with the system. If the system architecture supports MTRRs, then the /proc/mtrr file may look similar to the following:
reg00: base=0x00000000 (   0MB), size= 256MB: write-back, count=1
reg01: base=0xe8000000 (3712MB), size=  32MB: write-combining, count=1
MTRRs are used with the Intel P6 family of processors (Pentium II and higher) and control processor access to memory ranges. When using a video card on a PCI or AGP bus, a properly configured /proc/mtrr file can increase performance more than 150%.
ほとんどの場合、この値はデフォルトで正しく設定されています。手動でこのファイルを設定する方法については、オンラインで次の URL で見る事ができます:
/usr/share/doc/kernel-doc-<version>/Documentation/mtrr.txt

4.2.24. /proc/partitions

このファイルには、パーティションブロックの割り当て情報が含まれています。基本的なシステムからのファイルサンプルは次ぎの様になります:
major minor  #blocks  name
  3     0   19531250 hda
  3     1     104391 hda1
  3     2   19422585 hda2
253     0   22708224 dm-0
253     1     524288 dm-1
ここに述べる情報の多くは大部分のユーザーにとってはあまり重要ではありません。ただし、次の列は重要です:
  • major — The major number of the device with this partition. The major number in the /proc/partitions, (3), corresponds with the block device ide0, in /proc/devices.
  • minor — The minor number of the device with this partition. This serves to separate the partitions into different physical devices and relates to the number at the end of the name of the partition.
  • #blocks — Lists the number of physical disk blocks contained in a particular partition.
  • name — The name of the partition.

4.2.25. /proc/pci

This file contains a full listing of every PCI device on the system. Depending on the number of PCI devices, /proc/pci can be rather long. A sampling of this file from a basic system looks similar to the following:
Bus  0, device 0, function 0: Host bridge: Intel Corporation 440BX/ZX - 82443BX/ZX Host bridge (rev 3). Master Capable. Latency=64. Prefetchable 32 bit memory at 0xe4000000 [0xe7ffffff].
Bus  0, device 1, function 0: PCI bridge: Intel Corporation 440BX/ZX - 82443BX/ZX AGP bridge (rev 3).   Master Capable. Latency=64. Min Gnt=128.
Bus  0, device 4, function 0: ISA bridge: Intel Corporation 82371AB PIIX4 ISA (rev 2).
Bus  0, device 4, function 1: IDE interface: Intel Corporation 82371AB PIIX4 IDE (rev 1). Master Capable. Latency=32. I/O at 0xd800 [0xd80f].
Bus  0, device 4, function 2: USB Controller: Intel Corporation 82371AB PIIX4 USB (rev 1). IRQ 5. Master Capable. Latency=32. I/O at 0xd400 [0xd41f].
Bus  0, device 4, function 3: Bridge: Intel Corporation 82371AB PIIX4 ACPI (rev 2). IRQ 9.
Bus  0, device 9, function 0: Ethernet controller: Lite-On Communications Inc LNE100TX (rev 33). IRQ 5. Master Capable. Latency=32. I/O at 0xd000 [0xd0ff].
Bus  0, device 12, function  0: VGA compatible controller: S3 Inc. ViRGE/DX or /GX (rev 1). IRQ 11. Master Capable. Latency=32. Min Gnt=4.Max Lat=255.
この出力はすべてのPCIデバイスをバス、デバイス、機能の順にソートした一覧を表しています。デバイスの名前とバージョンのほか、詳細な IRQ情報も得られるので、コンフリクトをすぐに検出できます。

Tip

より読みやすい情報は次のように入力して得られます:
lspci -vb

4.2.26. /proc/slabinfo

このファイルは、slabレベルのメモリ使用率についての情報を提供します。バージョン2.2 以降の Linux カーネルは、 slab poolsを使用してページレベル以上のメモリを管理します。よく使用されるオブジェクトには独自の slab pool があります。
Instead of parsing the highly verbose /proc/slabinfo file manually, the /usr/bin/slabtop program displays kernel slab cache information in real time. This program allows for custom configurations, including column sorting and screen refreshing.
A sample screen shot of /usr/bin/slabtop usually looks like the following example:
Active / Total Objects (% used)    : 133629 / 147300 (90.7%)
Active / Total Slabs (% used)      : 11492 / 11493 (100.0%)
Active / Total Caches (% used)     : 77 / 121 (63.6%)
Active / Total Size (% used)       : 41739.83K / 44081.89K (94.7%)
Minimum / Average / Maximum Object : 0.01K / 0.30K / 128.00K
OBJS   ACTIVE USE      OBJ   SIZE     SLABS OBJ/SLAB CACHE SIZE NAME
44814  43159  96%    0.62K   7469      6     29876K ext3_inode_cache
36900  34614  93%    0.05K    492     75      1968K buffer_head
35213  33124  94%    0.16K   1531     23      6124K dentry_cache
7364   6463  87%    0.27K    526      14      2104K radix_tree_node
2585   1781  68%    0.08K     55      47       220K vm_area_struct
2263   2116  93%    0.12K     73      31       292K size-128
1904   1125  59%    0.03K     16      119        64K size-32
1666    768  46%    0.03K     14      119        56K anon_vma
1512   1482  98%    0.44K    168       9       672K inode_cache
1464   1040  71%    0.06K     24      61        96K size-64
1320    820  62%    0.19K     66      20       264K filp
678    587  86%    0.02K      3      226        12K dm_io
678    587  86%    0.02K      3      226        12K dm_tio
576    574  99%    0.47K     72        8       288K proc_inode_cache
528    514  97%    0.50K     66        8       264K size-512
492    372  75%    0.09K     12       41        48K bio
465    314  67%    0.25K     31       15       124K size-256
452    331  73%    0.02K      2      226         8K biovec-1
420    420 100%    0.19K     21       20        84K skbuff_head_cache
305    256  83%    0.06K      5       61        20K biovec-4
290      4   1%    0.01K      1      290         4K revoke_table
264    264 100%    4.00K    264        1      1056K size-4096
260    256  98%    0.19K     13       20        52K biovec-16
260    256  98%    0.75K     52        5       208K biovec-64
Some of the more commonly used statistics in /proc/slabinfo that are included into /usr/bin/slabtop include:
  • OBJS — The total number of objects (memory blocks), including those in use (allocated), and some spares not in use.
  • ACTIVE — The number of objects (memory blocks) that are in use (allocated).
  • USE — Percentage of total objects that are active. ((ACTIVE/OBJS)(100))
  • OBJ SIZE — The size of the objects.
  • SLABS — The total number of slabs.
  • OBJ/SLAB — The number of objects that fit into a slab.
  • CACHE SIZE — The cache size of the slab.
  • NAME — The name of the slab.
For more information on the /usr/bin/slabtop program, refer to the slabtop man page.

4.2.27. /proc/stat

This file keeps track of a variety of different statistics about the system since it was last restarted. The contents of /proc/stat, which can be quite long, usually begins like the following example:
cpu  259246 7001 60190 34250993 137517 772 0
cpu0 259246 7001 60190 34250993 137517 772 0
intr 354133732 347209999 2272 0 4 4 0 0 3 1 1249247 0 0 80143 0 422626 5169433
ctxt 12547729
btime 1093631447
processes 130523
procs_running 1
procs_blocked 0
preempt 5651840
cpu  209841 1554 21720 118519346 72939 154 27168
cpu0 42536 798 4841 14790880 14778 124 3117
cpu1 24184 569 3875 14794524 30209 29 3130
cpu2 28616 11 2182 14818198 4020 1 3493
cpu3 35350 6 2942 14811519 3045 0 3659
cpu4 18209 135 2263 14820076 12465 0 3373
cpu5 20795 35 1866 14825701 4508 0 3615
cpu6 21607 0 2201 14827053 2325 0 3334
cpu7 18544 0 1550 14831395 1589 0 3447
intr 15239682 14857833 6 0 6 6 0 5 0 1 0 0 0 29 0 2 0 0 0 0 0 0 0 94982 0 286812
ctxt 4209609
btime 1078711415
processes 21905
procs_running 1
procs_blocked 0
よく使用される統計情報には次のようなものがあります。
  • cpu — Measures the number of jiffies (1/100 of a second for x86 systems) that the system has been in user mode, user mode with low priority (nice), system mode, idle task, I/O wait, IRQ (hardirq), and softirq respectively. The IRQ (hardirq) is the direct response to a hardware event. The IRQ takes minimal work for queuing the "heavy" work up for the softirq to execute. The softirq runs at a lower priority than the IRQ and therefore may be interrupted more frequently. The total for all CPUs is given at the top, while each individual CPU is listed below with its own statistics. The following example is a 4-way Intel Pentium Xeon configuration with multi-threading enabled, therefore showing four physical processors and four virtual processors totaling eight processors.
  • page — The number of memory pages the system has written in and out to disk.
  • swap — The number of swap pages the system has brought in and out.
  • intr — The number of interrupts the system has experienced.
  • btime — The boot time, measured in the number of seconds since January 1, 1970, otherwise known as the epoch.

4.2.28. /proc/swaps

This file measures swap space and its utilization. For a system with only one swap partition, the output of /proc/swaps may look similar to the following:
Filename                          Type        Size     Used    Priority
/dev/mapper/VolGroup00-LogVol01   partition   524280   0       -1
While some of this information can be found in other files in the /proc/ directory, /proc/swaps provides a snapshot of every swap file name, the type of swap space, the total size, and the amount of space in use (in kilobytes). The priority column is useful when multiple swap files are in use. The lower the priority, the more likely the swap file is to be used.

4.2.29. /proc/sysrq-trigger

Using the echo command to write to this file, a remote root user can execute most System Request Key commands remotely as if at the local terminal. To echo values to this file, the /proc/sys/kernel/sysrq must be set to a value other than 0. For more information about the System Request Key, refer to /proc/sys/kernel/.
root ユーザーであっても、このファイルに書き込むことはできますが、読むことはできません。

4.2.30. /proc/uptime

This file contains information detailing how long the system has been on since its last restart. The output of /proc/uptime is quite minimal:
350735.47 234388.90
最初の数字は、システムが起動されている時間の総数を秒単位で表しています。 2番目の数字はその時間のうちのアイドル時間を秒単位で表しています。

4.2.31. /proc/version

This file specifies the version of the Linux kernel and gcc in use, as well as the version of Red Hat Enterprise Linux installed on the system:
Linux version 2.6.8-1.523 (user@foo.redhat.com) (gcc version 3.4.1 20040714 \  (Red Hat Enterprise Linux 3.4.1-7)) #1 Mon Aug 16 13:27:03 EDT 2004
この情報はユーザーがログインした時のバージョンデータなど、さまざまな目的に使用できます。

4.3. Directories within /proc/

Common groups of information concerning the kernel are grouped into directories and subdirectories within the /proc/ directory.

4.3.1. プロセスディレクトリ

Every /proc/ directory contains a number of directories with numerical names. A listing of them may be similar to the following:
dr-xr-xr-x    3 root     root            0 Feb 13 01:28 1
dr-xr-xr-x    3 root     root            0 Feb 13 01:28 1010
dr-xr-xr-x    3 xfs      xfs             0 Feb 13 01:28 1087
dr-xr-xr-x    3 daemon   daemon          0 Feb 13 01:28 1123
dr-xr-xr-x    3 root     root            0 Feb 13 01:28 11307
dr-xr-xr-x    3 apache   apache          0 Feb 13 01:28 13660
dr-xr-xr-x    3 rpc      rpc             0 Feb 13 01:28 637
dr-xr-xr-x    3 rpcuser  rpcuser         0 Feb 13 01:28 666
These directories are called process directories, as they are named after a program's process ID and contain information specific to that process. The owner and group of each process directory is set to the user running the process. When the process is terminated, its /proc/ process directory vanishes.
各プロセスディレクトリには次のファイルがあります:
  • cmdline — Contains the command issued when starting the process.
  • cwd — A symbolic link to the current working directory for the process.
  • environ — A list of the environment variables for the process. The environment variable is given in all upper-case characters, and the value is in lower-case characters.
  • exe — A symbolic link to the executable of this process.
  • fd — A directory containing all of the file descriptors for a particular process. These are given in numbered links:
    total 0
    lrwx------    1 root     root           64 May  8 11:31 0 -> /dev/null
    lrwx------    1 root     root           64 May  8 11:31 1 -> /dev/null
    lrwx------    1 root     root           64 May  8 11:31 2 -> /dev/null
    lrwx------    1 root     root           64 May  8 11:31 3 -> /dev/ptmx
    lrwx------    1 root     root           64 May  8 11:31 4 -> socket:[7774817]
    lrwx------    1 root     root           64 May  8 11:31 5 -> /dev/ptmx
    lrwx------    1 root     root           64 May  8 11:31 6 -> socket:[7774829]
    lrwx------    1 root     root           64 May  8 11:31 7 -> /dev/ptmx
  • maps — A list of memory maps to the various executables and library files associated with this process. This file can be rather long, depending upon the complexity of the process, but sample output from the sshd process begins like the following:
    08048000-08086000 r-xp 00000000 03:03 391479     /usr/sbin/sshd
    08086000-08088000 rw-p 0003e000 03:03 391479	/usr/sbin/sshd
    08088000-08095000 rwxp 00000000 00:00 0
    40000000-40013000 r-xp 0000000 03:03 293205	/lib/ld-2.2.5.so
    40013000-40014000 rw-p 00013000 03:03 293205	/lib/ld-2.2.5.so
    40031000-40038000 r-xp 00000000 03:03 293282	/lib/libpam.so.0.75
    40038000-40039000 rw-p 00006000 03:03 293282	/lib/libpam.so.0.75
    40039000-4003a000 rw-p 00000000 00:00 0
    4003a000-4003c000 r-xp 00000000 03:03 293218	/lib/libdl-2.2.5.so
    4003c000-4003d000 rw-p 00001000 03:03 293218	/lib/libdl-2.2.5.so
  • mem — The memory held by the process. This file cannot be read by the user.
  • root — A link to the root directory of the process.
  • stat — The status of the process.
  • statm — The status of the memory in use by the process. Below is a sample /proc/statm file:
    263 210 210 5 0 205 0
    7つの列はプロセスの異なるメモリ統計情報に関連しています。表示されている順に、 左から右に使用メモリの異なる側面をレポートしています:
    1. プログラム合計サイズ。Kバイト単位。
    2. メモリ部分のサイズ。Kバイト単位。
    3. 共有ページ数。
    4. コードのページ数。
    5. データ/スタックのページ数。
    6. ライブラリのページ数。
    7. ダーティなページ数。
  • status — The status of the process in a more readable form than stat or statm. Sample output for sshd looks similar to the following:
    Name:	sshd
    State:	S (sleeping)
    Tgid:	797
    Pid:	797
    PPid:	1
    TracerPid:	0
    Uid:	0	0	0	0
    Gid:	0	0	0	0
    FDSize:	32
    Groups:
    VmSize:	    3072 kB
    VmLck:	       0 kB
    VmRSS:	     840 kB
    VmData:	     104 kB
    VmStk:	      12 kB
    VmExe:	     300 kB
    VmLib:	    2528 kB
    SigPnd:	0000000000000000
    SigBlk:	0000000000000000
    SigIgn:	8000000000001000
    SigCgt:	0000000000014005
    CapInh:	0000000000000000
    CapPrm:	00000000fffffeff
    CapEff:	00000000fffffeff
    The information in this output includes the process name and ID, the state (such as S (sleeping) or R (running)), user/group ID running the process, and detailed data regarding memory usage.

4.3.1.1. /proc/self/

The /proc/self/ directory is a link to the currently running process. This allows a process to look at itself without having to know its process ID.
Within a shell environment, a listing of the /proc/self/ directory produces the same contents as listing the process directory for that process.

4.3.2. /proc/bus/

This directory contains information specific to the various buses available on the system. For example, on a standard system containing PCI and USB buses, current data on each of these buses is available within a subdirectory within /proc/bus/ by the same name, such as /proc/bus/pci/.
The subdirectories and files available within /proc/bus/ vary depending on the devices connected to the system. However, each bus type has at least one directory. Within these bus directories are normally at least one subdirectory with a numerical name, such as 001, which contain binary files.
For example, the /proc/bus/usb/ subdirectory contains files that track the various devices on any USB buses, as well as the drivers required for them. The following is a sample listing of a /proc/bus/usb/ directory:
total 0 dr-xr-xr-x    1 root     root            0 May  3 16:25 001
-r--r--r--    1 root     root            0 May  3 16:25 devices
-r--r--r--    1 root     root            0 May  3 16:25 drivers
The /proc/bus/usb/001/ directory contains all devices on the first USB bus and the devices file identifies the USB root hub on the motherboard.
The following is a example of a /proc/bus/usb/devices file:
T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 0.00
S:  Product=USB UHCI Root Hub
S:  SerialNumber=d400
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=255ms

4.3.3. /proc/driver/

このディレクトリにはカーネルが使用する特定のドライバについての情報があります。
A common file found here is rtc which provides output from the driver for the system's Real Time Clock (RTC), the device that keeps the time while the system is switched off. Sample output from /proc/driver/rtc looks like the following:
rtc_time        : 16:21:00
rtc_date        : 2004-08-31
rtc_epoch       : 1900
alarm           : 21:16:27
DST_enable      : no
BCD             : yes
24hr            : yes
square_wave     : no
alarm_IRQ       : no
update_IRQ      : no
periodic_IRQ    : no
periodic_freq   : 1024
batt_status     : okay
RTC に関する詳細は、インストールされている以下のドキュメントを参照してください:
/usr/share/doc/kernel-doc-<version>/Documentation/rtc.txt.

4.3.4. /proc/fs

This directory shows which file systems are exported. If running an NFS server, typing cat /proc/fs/nfsd/exports displays the file systems being shared and the permissions granted for those file systems. For more on file system sharing with NFS, refer to 20章NFS(ネットワークファイルシステム).

4.3.5. /proc/ide/

This directory contains information about IDE devices on the system. Each IDE channel is represented as a separate directory, such as /proc/ide/ide0 and /proc/ide/ide1. In addition, a drivers file is available, providing the version number of the various drivers used on the IDE channels:
ide-floppy version 0.99.
newide ide-cdrom version 4.61
ide-disk version 1.18
Many chipsets also provide a file in this directory with additional data concerning the drives connected through the channels. For example, a generic Intel PIIX4 Ultra 33 chipset produces the /proc/ide/piix file which reveals whether DMA or UDMA is enabled for the devices on the IDE channels:
Intel PIIX4 Ultra 33 Chipset.
------------- Primary Channel ---------------- Secondary Channel -------------
		enabled                          enabled

------------- drive0 --------- drive1 -------- drive0 ---------- drive1 ------
DMA enabled:    yes              no              yes               no
UDMA enabled:   yes              no              no                no
UDMA enabled:   2                X               X                 X
UDMA DMA PIO
Navigating into the directory for an IDE channel, such as ide0, provides additional information. The channel file provides the channel number, while the model identifies the bus type for the channel (such as pci).

4.3.5.1. デバイスディレクトリ

Within each IDE channel directory is a device directory. The name of the device directory corresponds to the drive letter in the /dev/ directory. For instance, the first IDE drive on ide0 would be hda.

注記

There is a symbolic link to each of these device directories in the /proc/ide/ directory.
各デバイスディレクトリには、一連の情報と統計値があります。これらディレクトリの内容は、 接続されているデバイスのタイプにより変わります。多くのデバイスに共通して役に立つファイルには、 次のようなものがあります:
  • cache — The device cache.
  • capacity — The capacity of the device, in 512 byte blocks.
  • driver — The driver and version used to control the device.
  • geometry — The physical and logical geometry of the device.
  • media — The type of device, such as a disk.
  • model — The model name or number of the device.
  • settings — A collection of current device parameters. This file usually contains quite a bit of useful, technical information. A sample settings file for a standard IDE hard disk looks similar to the following:
    name                value          min          max          mode
    ----                -----          ---          ---          ----
    acoustic            0              0            254          rw
    address             0              0            2            rw
    bios_cyl            38752          0            65535        rw
    bios_head           16             0            255          rw
    bios_sect           63             0            63           rw
    bswap               0              0            1            r
    current_speed       68             0            70           rw
    failures            0              0            65535        rw
    init_speed          68             0            70           rw
    io_32bit            0              0            3            rw
    keepsettings        0              0            1            rw
    lun                 0              0            7            rw
    max_failures        1              0            65535        rw
    multcount           16             0            16           rw
    nice1               1              0            1            rw
    nowerr              0              0            1            rw
    number              0              0            3            rw
    pio_mode            write-only     0            255          w
    unmaskirq           0              0            1            rw
    using_dma           1              0            1            rw
    wcache              1              0            1            rw

4.3.6. /proc/irq/

このディレクトリを使用してIRQをCPUアフィニティに設定すると、特定のIRQを1つのCPUにのみ接続できます。 また、別の方法としてCPUがどのIRQも処理しないように設定することもできます。
Each IRQ has its own directory, allowing for the individual configuration of each IRQ. The /proc/irq/prof_cpu_mask file is a bitmask that contains the default values for the smp_affinity file in the IRQ directory. The values in smp_affinity specify which CPUs handle that particular IRQ.
For more information about the /proc/irq/ directory, refer to the following installed documentation:
/usr/share/doc/kernel-doc-<version>/Documentation/filesystems/proc.txt

4.3.7. /proc/net/

This directory provides a comprehensive look at various networking parameters and statistics. Each directory and virtual file within this directory describes aspects of the system's network configuration. Below is a partial list of the /proc/net/ directory:
  • arp — Lists the kernel's ARP table. This file is particularly useful for connecting a hardware address to an IP address on a system.
  • atm/ directory — The files within this directory contain Asynchronous Transfer Mode (ATM) settings and statistics. This directory is primarily used with ATM networking and ADSL cards.
  • dev — Lists the various network devices configured on the system, complete with transmit and receive statistics. This file displays the number of bytes each interface has sent and received, the number of packets inbound and outbound, the number of errors seen, the number of packets dropped, and more.
  • dev_mcast — Lists Layer2 multicast groups on which each device is listening.
  • igmp — Lists the IP multicast addresses which this system joined.
  • ip_conntrack — Lists tracked network connections for machines that are forwarding IP connections.
  • ip_tables_names — Lists the types of iptables in use. This file is only present if iptables is active on the system and contains one or more of the following values: filter, mangle, or nat.
  • ip_mr_cache — Lists the multicast routing cache.
  • ip_mr_vif — Lists multicast virtual interfaces.
  • netstat — Contains a broad yet detailed collection of networking statistics, including TCP timeouts, SYN cookies sent and received, and much more.
  • psched — Lists global packet scheduler parameters.
  • raw — Lists raw device statistics.
  • route — Lists the kernel's routing table.
  • rt_cache — Contains the current routing cache.
  • snmp — List of Simple Network Management Protocol (SNMP) data for various networking protocols in use.
  • sockstat — Provides socket statistics.
  • tcp — Contains detailed TCP socket information.
  • tr_rif — Lists the token ring RIF routing table.
  • udp — Contains detailed UDP socket information.
  • unix — Lists UNIX domain sockets currently in use.
  • wireless — Lists wireless interface data.

4.3.8. /proc/scsi/

This directory is analogous to the /proc/ide/ directory, but it is for connected SCSI devices.
The primary file in this directory is /proc/scsi/scsi, which contains a list of every recognized SCSI device. From this listing, the type of device, as well as the model name, vendor, SCSI channel and ID data is available.
たとえば、システムにSCSI CD-ROM、テープドライブ、ハードドライブ、RAIDコントローラがある場合、このファイルは次のようになります。
Attached devices:
Host: scsi1
Channel: 00
Id: 05
Lun: 00
Vendor: NEC
Model: CD-ROM DRIVE:466
Rev: 1.06
Type:   CD-ROM
ANSI SCSI revision: 02
Host: scsi1
Channel: 00
Id: 06
Lun: 00
Vendor: ARCHIVE
Model: Python 04106-XXX
Rev: 7350
Type:   Sequential-Access
ANSI SCSI revision: 02
Host: scsi2
Channel: 00
Id: 06
Lun: 00
Vendor: DELL
Model: 1x6 U2W SCSI BP
Rev: 5.35
Type:   Processor
ANSI SCSI revision: 02
Host: scsi2
Channel: 02
Id: 00
Lun: 00
Vendor: MegaRAID
Model: LD0 RAID5 34556R
Rev: 1.01
Type:   Direct-Access
ANSI SCSI revision: 02
Each SCSI driver used by the system has its own directory within /proc/scsi/, which contains files specific to each SCSI controller using that driver. From the previous example, aic7xxx/ and megaraid/ directories are present, since two drivers are in use. The files in each of the directories typically contain an I/O address range, IRQ information, and statistics for the SCSI controller using that driver. Each controller can report a different type and amount of information. The Adaptec AIC-7880 Ultra SCSI host adapter's file in this example system produces the following output:
Adaptec AIC7xxx driver version: 5.1.20/3.2.4
Compile Options:
TCQ Enabled By Default : Disabled
AIC7XXX_PROC_STATS     : Enabled
AIC7XXX_RESET_DELAY    : 5
Adapter Configuration:
SCSI Adapter: Adaptec AIC-7880 Ultra SCSI host adapter
Ultra Narrow Controller     PCI MMAPed
I/O Base: 0xfcffe000
Adapter SEEPROM Config: SEEPROM found and used.
Adaptec SCSI BIOS: Enabled
IRQ: 30
SCBs: Active 0, Max Active 1, Allocated 15, HW 16, Page 255
Interrupts: 33726
BIOS Control Word: 0x18a6
Adapter Control Word: 0x1c5f
Extended Translation: Enabled
Disconnect Enable Flags: 0x00ff
Ultra Enable Flags: 0x0020
Tag Queue Enable Flags: 0x0000
Ordered Queue Tag Flags: 0x0000
Default Tag Queue Depth: 8
Tagged Queue By Device array for aic7xxx
host instance 1:       {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}
Actual queue depth per device for aic7xxx host instance 1:       {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
Statistics:

(scsi1:0:5:0) Device using Narrow/Sync transfers at 20.0 MByte/sec, offset 15
Transinfo settings: current(12/15/0/0), goal(12/15/0/0), user(12/15/0/0)
Total transfers 0 (0 reads and 0 writes)
		< 2K      2K+     4K+     8K+    16K+    32K+    64K+   128K+
Reads:        0       0       0       0       0       0       0       0
Writes:       0       0       0       0       0       0       0       0

(scsi1:0:6:0) Device using Narrow/Sync transfers at 10.0 MByte/sec, offset 15
Transinfo settings: current(25/15/0/0), goal(12/15/0/0), user(12/15/0/0)
Total transfers 132 (0 reads and 132 writes)
		< 2K      2K+     4K+     8K+    16K+    32K+    64K+   128K+
Reads:        0       0       0       0       0       0       0       0
Writes:       0       0       0       1     131       0       0       0
この出力では、チャンネルIDに基づいてコントローラに接続されている SCSI デバイスへの転送速度、及び、そのデバイスが読み取り/書き込みするファイルの量とサイズ についての詳細な統計情報がわかります。例えば、このコントローラは 20 メガバイト/秒でCD-ROMと通信しているが、テープドライブは 10 メガバイト/秒で通信していることがわかります。

4.3.9. /proc/sys/

The /proc/sys/ directory is different from others in /proc/ because it not only provides information about the system but also allows the system administrator to immediately enable and disable kernel features.

注意

Use caution when changing settings on a production system using the various files in the /proc/sys/ directory. Changing the wrong setting may render the kernel unstable, requiring a system reboot.
For this reason, be sure the options are valid for that file before attempting to change any value in /proc/sys/.
A good way to determine if a particular file can be configured, or if it is only designed to provide information, is to list it with the -l option at the shell prompt. If the file is writable, it may be used to configure the kernel. For example, a partial listing of /proc/sys/fs looks like the following:
-r--r--r--    1 root     root            0 May 10 16:14 dentry-state
-rw-r--r--    1 root     root            0 May 10 16:14 dir-notify-enable
-r--r--r--    1 root     root            0 May 10 16:14 dquot-nr
-rw-r--r--    1 root     root            0 May 10 16:14 file-max
-r--r--r--    1 root     root            0 May 10 16:14 file-nr
In this listing, the files dir-notify-enable and file-max can be written to and, therefore, can be used to configure the kernel. The other files only provide feedback on current settings.
Changing a value within a /proc/sys/ file is done by echoing the new value into the file. For example, to enable the System Request Key on a running kernel, type the command:
echo 1 > /proc/sys/kernel/sysrq
This changes the value for sysrq from 0 (off) to 1 (on).
A few /proc/sys/ configuration files contain more than one value. To correctly send new values to them, place a space character between each value passed with the echo command, such as is done in this example:
echo 4 2 45 > /proc/sys/kernel/acct

注記

Any configuration changes made using the echo command disappear when the system is restarted. To make configuration changes take effect after the system is rebooted, refer to 「Using the sysctl Command」.
The /proc/sys/ directory contains several subdirectories controlling different aspects of a running kernel.

4.3.9.1. /proc/sys/dev/

This directory provides parameters for particular devices on the system. Most systems have at least two directories, cdrom/ and raid/. Customized kernels can have other directories, such as parport/, which provides the ability to share one parallel port between multiple device drivers.
The cdrom/ directory contains a file called info, which reveals a number of important CD-ROM parameters:
CD-ROM information, Id: cdrom.c 3.20 2003/12/17
drive name:             hdc
drive speed:            48
drive # of slots:       1
Can close tray:         1
Can open tray:          1
Can lock tray:          1
Can change speed:       1
Can select disk:        0
Can read multisession:  1
Can read MCN:           1
Reports media changed:  1
Can play audio:         1
Can write CD-R:         0
Can write CD-RW:        0
Can read DVD:           0
Can write DVD-R:        0
Can write DVD-RAM:      0
Can read MRW:           0
Can write MRW:          0
Can write RAM:          0
このファイルを一瞥すると少なくともカーネルには未知のCD-ROMのクオリティを知ることができます。 システム上で複数のCD-ROMが利用できる場合、各デバイスにはそれぞれの情報列が与えられます。
Various files in /proc/sys/dev/cdrom, such as autoclose and checkmedia, can be used to control the system's CD-ROM. Use the echo command to enable or disable these features.
If RAID support is compiled into the kernel, a /proc/sys/dev/raid/ directory becomes available with at least two files in it: speed_limit_min and speed_limit_max. These settings determine the acceleration of RAID devices for I/O intensive tasks, such as resyncing the disks.

4.3.9.2. /proc/sys/fs/

このディレクトリには、quota、file handle、inode、dentry情報を含むファイルシステムに 関するさまざまな側面について多くのオプションと情報が格納されています。
The binfmt_misc/ directory is used to provide kernel support for miscellaneous binary formats.
The important files in /proc/sys/fs/ include:
  • dentry-state — Provides the status of the directory cache. The file looks similar to the following:
    57411	52939	45	0	0	0
    1番目の数はディレクトリキャッシュエントリの総数を示し、2番目の数は未使用エントリ数を示します。 3番目の数はディレクトリの開放から再要求できるまでの秒数を示しています。4番目の数は現在システムが 要求しているページ数です。最後の2つの数は未使用で、現在0のみを表示します。
  • dquot-nr — Lists the maximum number of cached disk quota entries.
  • file-max — Lists the maximum number of file handles that the kernel allocates. Raising the value in this file can resolve errors caused by a lack of available file handles.
  • file-nr — Lists the number of allocated file handles, used file handles, and the maximum number of file handles.
  • overflowgid and overflowuid — Defines the fixed group ID and user ID, respectively, for use with file systems that only support 16-bit group and user IDs.
  • super-max — Controls the maximum number of superblocks available.
  • super-nr — Displays the current number of superblocks in use.

4.3.9.3. /proc/sys/kernel/

このディレクトリには、カーネルの動作に直接影響するさまざまな異なる設定ファイルが格納されています。最も重要なファイルには以下のようなものがあります。
  • acct — Controls the suspension of process accounting based on the percentage of free space available on the file system containing the log. By default, the file looks like the following:
    4	2	30
    1番目の値がロギングのリジュームに必要な空き領域の割合を決定するのに対し、2番目の値はロギングがサスペンドした場合の空き領域のしきい値(threshold)の割合を設定します。3番目の値はロギングをサスペンドするかリジュームするかを確認するためにカーネルがファイルシステムをポーリングする間隔を秒単位で設定します。
  • cap-bound — Controls the capability bounding settings, which provides a list of capabilities for any process on the system. If a capability is not listed here, then no process, no matter how privileged, can do it. The idea is to make the system more secure by ensuring that certain things cannot happen, at least beyond a certain point in the boot process.
    この仮想ファイルの値の正しいリストについては、インストールされている以下のドキュメントを参照してください:
    /lib/modules/<kernel-version>/build/include/linux/capability.h.
  • ctrl-alt-del — Controls whether Ctrl+Alt+Delete gracefully restarts the computer using init (0) or forces an immediate reboot without syncing the dirty buffers to disk (1).
  • domainname — Configures the system domain name, such as example.com.
  • exec-shield — Configures the Exec Shield feature of the kernel. Exec Shield provides protection against certain types of buffer overflow attacks.
    この仮想ファイルには2つの可能な値があります:
    • 0 — Disables Exec Shield.
    • 1 — Enables Exec Shield. This is the default value.

    重要

    Exec Shield が無効な間に起動したセキュリティに敏感なアプリケーションが稼働している場合、こうしたアプリケーションは Exec Shield を再び有効にしたときに再起動して稼働する必要があります。
  • exec-shield-randomize — Enables location randomization of various items in memory. This helps deter potential attackers from locating programs and daemons in memory. Each time a program or daemon starts, it is put into a different memory location each time, never in a static or absolute memory address.
    この仮想ファイルには2つの可能な値があります:
    • 0 — Disables randomization of Exec Shield. This may be useful for application debugging purposes.
    • 1 — Enables randomization of Exec Shield. This is the default value. Note: The exec-shield file must also be set to 1 for exec-shield-randomize to be effective.
  • hostname — Configures the system hostname, such as www.example.com.
  • hotplug — Configures the utility to be used when a configuration change is detected by the system. This is primarily used with USB and Cardbus PCI. The default value of /sbin/hotplug should not be changed unless testing a new program to fulfill this role.
  • modprobe — Sets the location of the program used to load kernel modules. The default value is /sbin/modprobe which means kmod calls it to load the module when a kernel thread calls kmod.
  • msgmax — Sets the maximum size of any message sent from one process to another and is set to 8192 bytes by default. Be careful when raising this value, as queued messages between processes are stored in non-swappable kernel memory. Any increase in msgmax would increase RAM requirements for the system.
  • msgmnb — Sets the maximum number of bytes in a single message queue. The default is 16384.
  • msgmni — Sets the maximum number of message queue identifiers. The default is 16.
  • osrelease — Lists the Linux kernel release number. This file can only be altered by changing the kernel source and recompiling.
  • ostype — Displays the type of operating system. By default, this file is set to Linux, and this value can only be changed by changing the kernel source and recompiling.
  • overflowgid and overflowuid — Defines the fixed group ID and user ID, respectively, for use with system calls on architectures that only support 16-bit group and user IDs.
  • panic — Defines the number of seconds the kernel postpones rebooting when the system experiences a kernel panic. By default, the value is set to 0, which disables automatic rebooting after a panic.
  • printk — This file controls a variety of settings related to printing or logging error messages. Each error message reported by the kernel has a loglevel associated with it that defines the importance of the message. The loglevel values break down in this order:
    • 0 — Kernel emergency. The system is unusable.
    • 1 — Kernel alert. Action must be taken immediately.
    • 2 — Condition of the kernel is considered critical.
    • 3 — General kernel error condition.
    • 4 — General kernel warning condition.
    • 5 — Kernel notice of a normal but significant condition.
    • 6 — Kernel informational message.
    • 7 — Kernel debug-level messages.
    Four values are found in the printk file:
    6     4     1     7
    これらの値は、それぞれ異なるエラーメッセージ処理方法を定義します。1番目の値は コンソールログレベルと呼ばれ、コンソールに出力される 優先度が最も低いメッセージを定義します(優先度が低いほどログレベル数が大きいことに注意)。2番目の値は、メッセージに添付される明確なログレベルがないデフォルトのログレベルを設定します。 3番目の値はコンソールのログレベルでは最低限のログレベル設定をします。最後の値は コンソールログレベルのデフォルト値を設定します。
  • random/ directory — Lists a number of values related to generating random numbers for the kernel.
  • rtsig-max — Configures the maximum number of POSIX real-time signals that the system may have queued at any one time. The default value is 1024.
  • rtsig-nr — Lists the current number of POSIX real-time signals queued by the kernel.
  • sem — Configures semaphore settings within the kernel. A semaphore is a System V IPC object that is used to control utilization of a particular process.
  • shmall— Sets the total amount of shared memory pages that can be used at one time, system-wide. By default, this value is 2097152.
  • shmmax — Sets the largest shared memory segment size allowed by the kernel. By default, this value is 33554432. However, the kernel supports much larger values than this.
  • shmmni — Sets the maximum number of shared memory segments for the whole system. By default, this value is 4096.
  • sysrq — Activates the System Request Key, if this value is set to anything other than zero (0), the default.
    The System Request Key allows immediate input to the kernel through simple key combinations. For example, the System Request Key can be used to immediately shut down or restart a system, sync all mounted file systems, or dump important information to the console. To initiate a System Request Key, type Alt+SysRq+ <system request code> . Replace <system request code> with one of the following system request codes:
    • r — Disables raw mode for the keyboard and sets it to XLATE (a limited keyboard mode which does not recognize modifiers such as Alt, Ctrl, or Shift for all keys).
    • k — Kills all processes active in a virtual console. Also called Secure Access Key (SAK), it is often used to verify that the login prompt is spawned from init and not a Trojan copy designed to capture usernames and passwords.
    • b — Reboots the kernel without first unmounting file systems or syncing disks attached to the system.
    • c — Crashes the system without first unmounting file systems or syncing disks attached to the system.
    • o — Shuts off the system.
    • s — Attempts to sync disks attached to the system.
    • u — Attempts to unmount and remount all file systems as read-only.
    • p — Outputs all flags and registers to the console.
    • t — Outputs a list of processes to the console.
    • m — Outputs memory statistics to the console.
    • 0 through 9 — Sets the log level for the console.
    • e — Kills all processes except init using SIGTERM.
    • i — Kills all processes except init using SIGKILL.
    • l — Kills all processes using SIGKILL (including init). The system is unusable after issuing this System Request Key code.
    • h — Displays help text.
    この機能は開発カーネルを使用している時やシステムがフリーズした時に特に便利です。

    注意

    システム要求キーの機能は、放置状態のコンソールが攻撃者にシステムへのアクセスを与えてしまう恐れがあるため、セキュリティリスクとみなされます。このため、デフォルトではオフになっています。
    Refer to /usr/share/doc/kernel-doc-<version>/Documentation/sysrq.txt for more information about the System Request Key.
  • sysrq-key — Defines the key code for the System Request Key (84 is the default).
  • sysrq-sticky — Defines whether the System Request Key is a chorded key combination. The accepted values are as follows:
    • 0Alt+SysRq and the system request code must be pressed simultaneously. This is the default value.
    • 1Alt+SysRq must be pressed simultaneously, but the system request code can be pressed anytime before the number of seconds specified in /proc/sys/kernel/sysrq-timer elapses.
  • sysrq-timer — Specifies the number of seconds allowed to pass before the system request code must be pressed. The default value is 10.
  • tainted — Indicates whether a non-GPL module is loaded.
    • 0 — No non-GPL modules are loaded.
    • 1 — At least one module without a GPL license (including modules with no license) is loaded.
    • 2 — At least one module was force-loaded with the command insmod -f.
  • threads-max — Sets the maximum number of threads to be used by the kernel, with a default value of 2048.
  • version — Displays the date and time the kernel was last compiled. The first field in this file, such as #3, relates to the number of times a kernel was built from the source base.

4.3.9.4. /proc/sys/net/

This directory contains subdirectories concerning various networking topics. Various configurations at the time of kernel compilation make different directories available here, such as ethernet/, ipv4/, ipx/, and ipv6/. By altering the files within these directories, system administrators are able to adjust the network configuration on a running system.
Given the wide variety of possible networking options available with Linux, only the most common /proc/sys/net/ directories are discussed.
The /proc/sys/net/core/ directory contains a variety of settings that control the interaction between the kernel and networking layers. The most important of these files are:
  • message_burst — Sets the amount of time in tenths of a second required to write a new warning message. This setting is used to mitigate Denial of Service (DoS) attacks. The default setting is 50.
  • message_cost — Sets a cost on every warning message. The higher the value of this file (default of 5), the more likely the warning message is ignored. This setting is used to mitigate DoS attacks.
    The idea of a DoS attack is to bombard the targeted system with requests that generate errors and fill up disk partitions with log files or require all of the system's resources to handle the error logging. The settings in message_burst and message_cost are designed to be modified based on the system's acceptable risk versus the need for comprehensive logging.
  • netdev_max_backlog — Sets the maximum number of packets allowed to queue when a particular interface receives packets faster than the kernel can process them. The default value for this file is 300.
  • optmem_max — Configures the maximum ancillary buffer size allowed per socket.
  • rmem_default — Sets the receive socket buffer default size in bytes.
  • rmem_max — Sets the receive socket buffer maximum size in bytes.
  • wmem_default — Sets the send socket buffer default size in bytes.
  • wmem_max — Sets the send socket buffer maximum size in bytes.
The /proc/sys/net/ipv4/ directory contains additional networking settings. Many of these settings, used in conjunction with one another, are useful in preventing attacks on the system or when using the system to act as a router.

注意

これらのファイルで変更にミスをするとシステムへのリモート接続に影響が生じる可能性があります。
The following is a list of some of the more important files within the /proc/sys/net/ipv4/ directory:
  • icmp_destunreach_rate, icmp_echoreply_rate, icmp_paramprob_rate, and icmp_timeexeed_rate — Set the maximum ICMP send packet rate, in 1/100 of a second, to hosts under certain conditions. A setting of 0 removes any delay and is not a good idea.
  • icmp_echo_ignore_all and icmp_echo_ignore_broadcasts — Allows the kernel to ignore ICMP ECHO packets from every host or only those originating from broadcast and multicast addresses, respectively. A value of 0 allows the kernel to respond, while a value of 1 ignores the packets.
  • ip_default_ttl — Sets the default Time To Live (TTL), which limits the number of hops a packet may make before reaching its destination. Increasing this value can diminish system performance.
  • ip_forward — Permits interfaces on the system to forward packets to one other. By default, this file is set to 0. Setting this file to 1 enables network packet forwarding.
  • ip_local_port_range — Specifies the range of ports to be used by TCP or UDP when a local port is needed. The first number is the lowest port to be used and the second number specifies the highest port. Any systems that expect to require more ports than the default 1024 to 4999 should use a range from 32768 to 61000.
  • tcp_syn_retries — Provides a limit on the number of times the system re-transmits a SYN packet when attempting to make a connection.
  • tcp_retries1 — Sets the number of permitted re-transmissions attempting to answer an incoming connection. Default of 3.
  • tcp_retries2 — Sets the number of permitted re-transmissions of TCP packets. Default of 15.
The file called
/usr/share/doc/kernel-doc-<version>/Documentation/networking/ ip-sysctl.txt
contains a complete list of files and options available in the /proc/sys/net/ipv4/ directory.
A number of other directories exist within the /proc/sys/net/ipv4/ directory and each covers a different aspect of the network stack. The /proc/sys/net/ipv4/conf/ directory allows each system interface to be configured in different ways, including the use of default settings for unconfigured devices (in the /proc/sys/net/ipv4/conf/default/ subdirectory) and settings that override all special configurations (in the /proc/sys/net/ipv4/conf/all/ subdirectory).
The /proc/sys/net/ipv4/neigh/ directory contains settings for communicating with a host directly connected to the system (called a network neighbor) and also contains different settings for systems more than one hop away.
Routing over IPV4 also has its own directory, /proc/sys/net/ipv4/route/. Unlike conf/ and neigh/, the /proc/sys/net/ipv4/route/ directory contains specifications that apply to routing with any interfaces on the system. Many of these settings, such as max_size, max_delay, and min_delay, relate to controlling the size of the routing cache. To clear the routing cache, write any value to the flush file.
これらのディレクトリや設定ファイルの値に関する詳細は以下にあります。
/usr/share/doc/kernel-doc-<version>/Documentation/filesystems/proc.txt

4.3.9.5. /proc/sys/vm/

This directory facilitates the configuration of the Linux kernel's virtual memory (VM) subsystem. The kernel makes extensive and intelligent use of virtual memory, which is commonly referred to as swap space.
The following files are commonly found in the /proc/sys/vm/ directory:
  • block_dump — Configures block I/O debugging when enabled. All read/write and block dirtying operations done to files are logged accordingly. This can be useful if diagnosing disk spin up and spin downs for laptop battery conservation. All output when block_dump is enabled can be retrieved via dmesg. The default value is 0.

    Tip

    If block_dump is enabled at the same time as kernel debugging, it is prudent to stop the klogd daemon, as it generates erroneous disk activity caused by block_dump.
  • dirty_background_ratio — Starts background writeback of dirty data at this percentage of total memory, via a pdflush daemon. The default value is 10.
  • dirty_expire_centisecs — Defines when dirty in-memory data is old enough to be eligible for writeout. Data which has been dirty in-memory for longer than this interval is written out next time a pdflush daemon wakes up. The default value is 3000, expressed in hundredths of a second.
  • dirty_ratio — Starts active writeback of dirty data at this percentage of total memory for the generator of dirty data, via pdflush. The default value is 40.
  • dirty_writeback_centisecs — Defines the interval between pdflush daemon wakeups, which periodically writes dirty in-memory data out to disk. The default value is 500, expressed in hundredths of a second.
  • laptop_mode — Minimizes the number of times that a hard disk needs to spin up by keeping the disk spun down for as long as possible, therefore conserving battery power on laptops. This increases efficiency by combining all future I/O processes together, reducing the frequency of spin ups. The default value is 0, but is automatically enabled in case a battery on a laptop is used.
    この値は、ユーザーがバッテリーパワーが有効であることを知らされると、acpid デーモンにより自動的に制御されます。ラップトップが ACPI (Advanced Configuration and Power Interface)仕様に対応している限り、ユーザーによる修正や対応は必要ありません。
    詳細は、以下のインストール済のドキュメントを参照してください:
    /usr/share/doc/kernel-doc-<version>/Documentation/laptop-mode.txt
  • lower_zone_protection — Determines how aggressive the kernel is in defending lower memory allocation zones. This is effective when utilized with machines configured with highmem memory space enabled. The default value is 0, no protection at all. All other integer values are in megabytes, and lowmem memory is therefore protected from being allocated by users.
    詳細は、以下のインストール済のドキュメントを参照してください:
    /usr/share/doc/kernel-doc-<version>/Documentation/filesystems/proc.txt
  • max_map_count — Configures the maximum number of memory map areas a process may have. In most cases, the default value of 65536 is appropriate.
  • min_free_kbytes — Forces the Linux VM (virtual memory manager) to keep a minimum number of kilobytes free. The VM uses this number to compute a pages_min value for each lowmem zone in the system. The default value is in respect to the total memory on the machine.
  • nr_hugepages — Indicates the current number of configured hugetlb pages in the kernel.
    詳細は、以下のインストール済のドキュメントを参照してください:
    /usr/share/doc/kernel-doc-<version>/Documentation/vm/hugetlbpage.txt
  • nr_pdflush_threads — Indicates the number of pdflush daemons that are currently running. This file is read-only, and should not be changed by the user. Under heavy I/O loads, the default value of two is increased by the kernel.
  • overcommit_memory — Configures the conditions under which a large memory request is accepted or denied. The following three modes are available:
    • 0 — The kernel performs heuristic memory over commit handling by estimating the amount of memory available and failing requests that are blatantly invalid. Unfortunately, since memory is allocated using a heuristic rather than a precise algorithm, this setting can sometimes allow available memory on the system to be overloaded. This is the default setting.
    • 1 — The kernel performs no memory over commit handling. Under this setting, the potential for memory overload is increased, but so is performance for memory intensive tasks (such as those executed by some scientific software).
    • 2 — The kernel fails requests for memory that add up to all of swap plus the percent of physical RAM specified in /proc/sys/vm/overcommit_ratio. This setting is best for those who desire less risk of memory overcommitment.

      注記

      スワップエリアが物理メモリ大きいシステムのみ、この設定をお推めします。
  • overcommit_ratio — Specifies the percentage of physical RAM considered when /proc/sys/vm/overcommit_memory is set to 2. The default value is 50.
  • page-cluster — Sets the number of pages read in a single attempt. The default value of 3, which actually relates to 16 pages, is appropriate for most systems.
  • swappiness — Determines how much a machine should swap. The higher the value, the more swapping occurs. The default value, as a percentage, is set to 60.
全てのカーネルベースのドキュメントは以下のローカルインストールの場所にあります:
/usr/share/doc/kernel-doc-<version>/Documentation/, which contains additional information.

4.3.10. /proc/sysvipc/

This directory contains information about System V IPC resources. The files in this directory relate to System V IPC calls for messages (msg), semaphores (sem), and shared memory (shm).

4.3.11. /proc/tty/

このディレクトリにはシステム上で利用可能な現在使用されているttyデバイスに関する情報が格納されています。 従来teletype deviceと呼ばれていたもので、キャラクタベースのデータ端末がttyデバイスと 呼ばれます。
In Linux, there are three different kinds of tty devices. Serial devices are used with serial connections, such as over a modem or using a serial cable. Virtual terminals create the common console connection, such as the virtual consoles available when pressing Alt+<F-key> at the system console. Pseudo terminals create a two-way communication that is used by some higher level applications, such as XFree86. The drivers file is a list of the current tty devices in use, as in the following example:
serial               /dev/cua        5  64-127 serial:callout
serial               /dev/ttyS       4  64-127 serial
pty_slave            /dev/pts      136   0-255 pty:slave
pty_master           /dev/ptm      128   0-255 pty:master
pty_slave            /dev/ttyp       3   0-255 pty:slave
pty_master           /dev/pty        2   0-255 pty:master
/dev/vc/0            /dev/vc/0       4       0 system:vtmaster
/dev/ptmx            /dev/ptmx       5       2 system
/dev/console         /dev/console    5       1 system:console
/dev/tty             /dev/tty        5       0 system:/dev/tty
unknown              /dev/vc/%d      4    1-63 console
The /proc/tty/driver/serial file lists the usage statistics and status of each of the serial tty lines.
ttyデバイスをネットワークデバイスとして使用するために、Linuxカーネルはデバイスの 回線制御を強化します。これにより、ドライバはデバイス上で伝送されるデータブロック毎に固有のヘッダーを付けることができます。接続のリモートエンドでデータブロックを1本のストリームのように 見せることが可能です。SLIP や PPPは一般的な回線制御で、それぞれ一般的にシリアルリンクでシステムを接続するために使用されます。
Registered line disciplines are stored in the ldiscs file, and more detailed information is available within the ldisc/ directory.

4.3.12. /proc/<PID>/

Out of Memory (OOM) refers to a computing state where all available memory, including swap space, has been allocated. When this situation occurs, it will cause the system to panic and stop functioning as expected. There is a switch that controls OOM behavior in /proc/sys/vm/panic_on_oom. When set to 1 the kernel will panic on OOM. A setting of 0 instructs the kernel to call a function named oom_killer on an OOM. Usually, oom_killer can kill rogue processes and the system will survive.
The easiest way to change this is to echo the new value to /proc/sys/vm/panic_on_oom.
~]# cat /proc/sys/vm/panic_on_oom
1
~]# echo 0 > /proc/sys/vm/panic_on_oom
~]# cat /proc/sys/vm/panic_on_oom
0
It is also possible to prioritize which processes get killed by adjusting the oom_killer score. In /proc/<PID>/ there are two tools labelled oom_adj and oom_score. Valid scores for oom_adj are in the range -16 to +15. To see the current oom_killer score, view the oom_score for the process. oom_killer will kill processes with the highest scores first.
This example adjusts the oom_score of a process with a PID of 12465 to make it less likely that oom_killer will kill it.
~]# cat /proc/12465/oom_score
79872
~]# echo -5 > /proc/12465/oom_adj
~]# cat /proc/12465/oom_score
78
There is also a special value of -17, which disables oom_killer for that process. In the example below, oom_score returns a value of 0, indicating that this process would not be killed.
~]# cat /proc/12465/oom_score
78
~]# echo -17 > /proc/12465/oom_adj
~]# cat /proc/12465/oom_score
0
A function called badness() is used to determine the actual score for each process. This is done by adding up 'points' for each examined process. The process scoring is done in the following way:
  1. The basis of each process's score is its memory size.
  2. The memory size of any of the process's children (not including a kernel thread) is also added to the score
  3. The process's score is increased for 'niced' processes and decreased for long running processes.
  4. Processes with the CAP_SYS_ADMIN and CAP_SYS_RAWIO capabilities have their scores reduced.
  5. The final score is then bitshifted by the value saved in the oom_adj file.
Thus, a process with the highest oom_score value will most probably be a non-privileged, recently started process that, along with its children, uses a large amount of memory, has been 'niced', and handles no raw I/O.

4.4. Using the sysctl Command

The /sbin/sysctl command is used to view, set, and automate kernel settings in the /proc/sys/ directory.
For a quick overview of all settings configurable in the /proc/sys/ directory, type the /sbin/sysctl -a command as root. This creates a large, comprehensive list, a small portion of which looks something like the following:
net.ipv4.route.min_delay = 2 kernel.sysrq = 0 kernel.sem = 250     32000     32     128
This is the same information seen if each of the files were viewed individually. The only difference is the file location. For example, the /proc/sys/net/ipv4/route/min_delay file is listed as net.ipv4.route.min_delay, with the directory slashes replaced by dots and the proc.sys portion assumed.
The sysctl command can be used in place of echo to assign values to writable files in the /proc/sys/ directory. For example, instead of using the command
echo 1 > /proc/sys/kernel/sysrq
use the equivalent sysctl command as follows:
~]# sysctl -w kernel.sysrq="1"
kernel.sysrq = 1
While quickly setting single values like this in /proc/sys/ is helpful during testing, this method does not work as well on a production system as special settings within /proc/sys/ are lost when the machine is rebooted. To preserve custom settings, add them to the /etc/sysctl.conf file.
Each time the system boots, the init program runs the /etc/rc.d/rc.sysinit script. This script contains a command to execute sysctl using /etc/sysctl.conf to determine the values passed to the kernel. Any values added to /etc/sysctl.conf therefore take effect each time the system boots.

4.5. その他のリソース

Below are additional sources of information about proc file system.

4.5.1. インストールされているドキュメント

Some of the best documentation about the proc file system is installed on the system by default.
  • /usr/share/doc/kernel-doc-<version>/Documentation/filesystems/proc.txt — Contains assorted, but limited, information about all aspects of the /proc/ directory.
  • /usr/share/doc/kernel-doc-<version>/Documentation/sysrq.txt — An overview of System Request Key options.
  • /usr/share/doc/kernel-doc-<version>/Documentation/sysctl/ — A directory containing a variety of sysctl tips, including modifying values that concern the kernel (kernel.txt), accessing file systems (fs.txt), and virtual memory use (vm.txt).
  • /usr/share/doc/kernel-doc-<version>/Documentation/networking/ip-sysctl.txt — A detailed overview of IP networking options.

4.5.2. 役に立つWebサイト

  • http://www.linuxhq.com/ — この webサイトには、Linuxカーネルのバージョンに対する ソース、パッチ、ドキュメントの完全なデータベースが用意されています。

第5章 Redundant Array of Independent Disks (RAID)

The basic idea behind RAID is to combine multiple small, inexpensive disk drives into an array to accomplish performance or redundancy goals not attainable with one large and expensive drive. This array of drives appears to the computer as a single logical storage unit or drive.

5.1. What is RAID?

RAID allows information to access several disks. RAID uses techniques such as disk striping (RAID Level 0), disk mirroring (RAID Level 1), and disk striping with parity (RAID Level 5) to achieve redundancy, lower latency, increased bandwidth, and maximized ability to recover from hard disk crashes.
RAID consistently distributes data across each drive in the array. RAID then breaks down the data into consistently-sized chunks (commonly 32K or 64k, although other values are acceptable). Each chunk is then written to a hard drive in the RAID array according to the RAID level employed. When the data is read, the process is reversed, giving the illusion that the multiple drives in the array are actually one large drive.

5.1.1. Who Should Use RAID?

System Administrators and others who manage large amounts of data would benefit from using RAID technology. Primary reasons to deploy RAID include:
  • Enhances speed
  • Increases storage capacity using a single virtual disk
  • Minimizes disk failure

5.1.2. Hardware RAID versus Software RAID

There are two possible RAID approaches: hardware RAID and software RAID.
Hardware RAID
The hardware-based array manages the RAID subsystem independently from the host. It presents a single disk per RAID array to the host.
A hardware RAID device connects to the SCSI controller and presents the RAID arrays as a single SCSI drive. An external RAID system moves all RAID handling intelligence into a controller located in the external disk subsystem. The whole subsystem is connected to the host via a normal SCSI controller and appears to the host as a single disk.
RAID controller cards function like a SCSI controller to the operating system, and handle all the actual drive communications. The user plugs the drives into the RAID controller (just like a normal SCSI controller) and then adds them to the RAID controllers configuration, and the operating system won't know the difference.
Software RAID
Software RAID implements the various RAID levels in the kernel disk (block device) code. It offers the cheapest possible solution, as expensive disk controller cards or hot-swap chassis[1] are not required. Software RAID also works with cheaper IDE disks as well as SCSI disks. With today's faster CPUs, software RAID outperforms hardware RAID.
The Linux kernel contains an MD driver that allows the RAID solution to be completely hardware independent. The performance of a software-based array depends on the server CPU performance and load.
To learn more about software RAID, here are the key features:
  • Threaded rebuild process
  • Kernel-based configuration
  • Portability of arrays between Linux machines without reconstruction
  • Backgrounded array reconstruction using idle system resources
  • Hot-swappable drive support
  • Automatic CPU detection to take advantage of certain CPU optimizations

5.1.3. RAID Levels and Linear Support

RAID supports various configurations, including levels 0, 1, 4, 5, and linear. These RAID types are defined as follows:
Level 0
RAID level 0, often called striping, is a performance-oriented striped data mapping technique. This means the data being written to the array is broken down into strips and written across the member disks of the array, allowing high I/O performance at low inherent cost but provides no redundancy. The storage capacity of a level 0 array is equal to the total capacity of the member disks in a hardware RAID or the total capacity of member partitions in a software RAID.
Level 1
RAID level 1, or mirroring, has been used longer than any other form of RAID. Level 1 provides redundancy by writing identical data to each member disk of the array, leaving a mirrored copy on each disk. Mirroring remains popular due to its simplicity and high level of data availability. Level 1 operates with two or more disks that may use parallel access for high data-transfer rates when reading but more commonly operate independently to provide high I/O transaction rates. Level 1 provides very good data reliability and improves performance for read-intensive applications but at a relatively high cost. The storage capacity of the level 1 array is equal to the capacity of one of the mirrored hard disks in a hardware RAID or one of the mirrored partitions in a software RAID.

注記

RAID level 1 comes at a high cost because you write the same information to all of the disks in the array, which wastes drive space. For example, if you have RAID level 1 set up so that your root (/) partition exists on two 40G drives, you have 80G total but are only able to access 40G of that 80G. The other 40G acts like a mirror of the first 40G.
Level 4
RAID level 4 uses parity[2] concentrated on a single disk drive to protect data. It is better suited to transaction I/O rather than large file transfers. Because the dedicated parity disk represents an inherent bottleneck, level 4 is seldom used without accompanying technologies such as write-back caching. Although RAID level 4 is an option in some RAID partitioning schemes, it is not an option allowed in Red Hat Enterprise Linux RAID installations. The storage capacity of hardware RAID level 4 is equal to the capacity of member disks, minus the capacity of one member disk. The storage capacity of software RAID level 4 is equal to the capacity of the member partitions, minus the size of one of the partitions if they are of equal size.

注記

RAID level 4 takes up the same amount of space as RAID level 5, but level 5 has more advantages. For this reason, level 4 is not supported.
Level 5
RAID level 5 is the most common type of RAID. By distributing parity across some or all of an array's member disk drives, RAID level 5 eliminates the write bottleneck inherent in level 4. The only performance bottleneck is the parity calculation process. With modern CPUs and software RAID, that usually is not a very big problem. As with level 4, the result is asymmetrical performance, with reads substantially outperforming writes. Level 5 is often used with write-back caching to reduce the asymmetry. The storage capacity of hardware RAID level 5 is equal to the capacity of member disks, minus the capacity of one member disk. The storage capacity of software RAID level 5 is equal to the capacity of the member partitions, minus the size of one of the partitions if they are of equal size.
Linear RAID
Linear RAID is a simple grouping of drives to create a larger virtual drive. In linear RAID, the chunks are allocated sequentially from one member drive, going to the next drive only when the first is completely filled. This grouping provides no performance benefit, as it is unlikely that any I/O operations will be split between member drives. Linear RAID also offers no redundancy and, in fact, decreases reliability — if any one member drive fails, the entire array cannot be used. The capacity is the total of all member disks.

5.2. Configuring Software RAID

Users can configure software RAID during the graphical installation process, the text-based installation process, or during a kickstart installation. This section discusses software RAID configuration during the installation process using the Disk Druid application, and covers the following steps:
  1. Creating software RAID partitions on physical hard drives.
  2. ソフトウェアRAIDパーティションからRAIDデバイスを作成します。
  3. (Optional) Configuring LVM from the RAID devices.
  4. RAIDデバイスからファイルシステムを作成します。
To configure software RAID, select Create custom layout from the pulldown list on the Disk Partitioning Setup screen, click the Next button, and follow the instructions in the rest of this section. The example screenshots in this section use two 10 GB disk drives (/dev/hda and /dev/hdb) to illustrate the creation of simple RAID 1 and RAID 0 configurations, and detail how to create a simple RAID configuration by implementing multiple RAID devices.

5.2.1. RAIDパーティションの作成

In a typical situation, the disk drives are new or are formatted. Both drives are shown as raw devices with no partition configuration in 図5.1「Two Blank Drives, Ready For Configuration」.
Two Blank Drives, Ready For Configuration
Two Blank Drives, Ready For Configuration
図5.1 Two Blank Drives, Ready For Configuration

  1. In Disk Druid, click the RAID button to enter the software RAID creation screen.
  2. Choose Create a software RAID partition to create a RAID partition as shown in 図5.2「RAID Partition Options」. Note that no other RAID options (such as entering a mount point) are available until RAID partitions, as well as RAID devices, are created. Click OK to confirm the choice.
    RAID Partition Options
    RAID Partition Options
    図5.2 RAID Partition Options

  3. A software RAID partition must be constrained to one drive. For Allowable Drives, select the drive to use for RAID. If you have multiple drives, by default all drives are selected and you must deselect the drives you do not want.
    Adding a RAID Partition
    Adding a RAID Partition
    図5.3 Adding a RAID Partition

  4. Edit the Size (MB) field, and enter the size that you want the partition to be (in MB).
  5. Select Fixed Size to specify partition size. Select Fill all space up to (MB) and enter a value (in MB) to specify partition size range. Select Fill to maximum allowable size to allow maximum available space of the hard disk. Note that if you make more than one space growable, they share the available free space on the disk.
  6. Select Force to be a primary partition if you want the partition to be a primary partition. A primary partition is one of the first four partitions on the hard drive. If unselected, the partition is created as a logical partition. If other operating systems are already on the system, unselecting this option should be considered. For more information on primary versus logical/extended partitions, refer to the appendix section of the Red Hat Enterprise Linux Installation Guide.
Repeat these steps to create as many partitions as needed for your RAID setup. Notice that all the partitions do not have to be RAID partitions. For example, you can configure only the /boot partition as a software RAID device, leaving the root partition (/), /home, and swap as regular file systems. 図5.4「RAID 1 Partitions Ready, Pre-Device and Mount Point Creation」 shows successfully allocated space for the RAID 1 configuration (for /boot), which is now ready for RAID device and mount point creation:
RAID 1 Partitions Ready, Pre-Device and Mount Point Creation
RAID 1 Partitions Ready, Pre-Device and Mount Point Creation
図5.4 RAID 1 Partitions Ready, Pre-Device and Mount Point Creation

5.2.2. RAIDデバイスとマウントポイントの作成

Once you create all of your partitions as software RAID partitions, you must create the RAID device and mount point.
  1. On the main partitioning screen, click the RAID button. The RAID Options dialog appears as shown in 図5.5「RAIDオプション」.
    RAIDオプション
    RAID選択オプション
    図5.5 RAIDオプション

  2. Select the Create a RAID device option, and click OK. As shown in 図5.6「Making a RAID Device and Assigning a Mount Point」, the Make RAID Device dialog appears, allowing you to make a RAID device and assign a mount point.
    Making a RAID Device and Assigning a Mount Point
    Making a RAID Device and Assigning a Mount Point
    図5.6 Making a RAID Device and Assigning a Mount Point

  3. Select a mount point from the Mount Point pulldown list.
  4. Choose the file system type for the partition from the File System Type pulldown list. At this point you can either configure a dynamic LVM file system or a traditional static ext2/ext3 file system. For more information on LVM and its configuration during the installation process, refer to 10章LVM (Logical Volume Manager). If LVM is not required, continue on with the following instructions.
  5. From the RAID Device pulldown list, select a device name such as md0.
  6. From the RAID Level, choose the required RAID level.

    注記

    If you are making a RAID partition of /boot, you must choose RAID level 1, and it must use one of the first two drives (IDE first, SCSI second). If you are not creating a separate RAID partition of /boot, and you are making a RAID partition for the root file system (that is, /), it must be RAID level 1 and must use one of the first two drives (IDE first, SCSI second).
  7. The RAID partitions created appear in the RAID Members list. Select which of these partitions should be used to create the RAID device.
  8. If configuring RAID 1 or RAID 5, specify the number of spare partitions in the Number of spares field. If a software RAID partition fails, the spare is automatically used as a replacement. For each spare you want to specify, you must create an additional software RAID partition (in addition to the partitions for the RAID device). Select the partitions for the RAID device and the partition(s) for the spare(s).
  9. Click OK to confirm the setup. The RAID device appears in the Drive Summary list.
  10. Repeat this chapter's entire process for configuring additional partitions, devices, and mount points, such as the root partition (/), home partition (/home), or swap.
After completing the entire configuration, the figure as shown in 図5.7「Sample RAID Configuration」 resembles the default configuration, except for the use of RAID.
Sample RAID Configuration
Sample RAID Configuration
図5.7 Sample RAID Configuration

The figure as shown in 図5.8「Sample RAID With LVM Configuration」 is an example of a RAID and LVM configuration.
Sample RAID With LVM Configuration
Sample RAID With LVM Configuration
図5.8 Sample RAID With LVM Configuration

You can proceed with your installation process by clicking Next. Refer to the Red Hat Enterprise Linux Installation Guide for further instructions.

5.3. Managing Software RAID

This section discusses software RAID configuration and management after the installation, and covers the following topics:
  • Reviewing existing software RAID configuration.
  • Creating a new RAID device.
  • Replacing a faulty device in an array.
  • Adding a new device to an existing array.
  • Deactivating and removing an existing RAID device.
  • Saving the configuration.
All examples in this section use the software RAID configuration from the previous section.

5.3.1. Reviewing RAID Configuration

When a software RAID is in use, basic information about all presently active RAID devices are stored in the /proc/mdstat special file. To list these devices, display the content of this file by typing the following at a shell prompt:
cat /proc/mdstat
To determine whether a certain device is a RAID device or a component device, run the command in the following form as root:
mdadm --query device
In order to examine a RAID device in more detail, use the following command:
mdadm --detail raid_device
Similarly, to examine a component device, type:
mdadm --examine component_device
While the mdadm --detail command displays information about a RAID device, mdadm --examine only relays information about a RAID device as it relates to a given component device. This distinction is particularly important when working with a RAID device that itself is a component of another RAID device.
The mdadm --query command, as well as both mdadm --detail and mdadm --examine commands allow you to specify multiple devices at once.
例5.1 Reviewing RAID configuration
Assume the system uses configuration from 図5.7「Sample RAID Configuration」. You can verify that /dev/md0 is a RAID device by typing the following at a shell prompt:
~]# mdadm --query /dev/md0
/dev/md0: 125.38MiB raid1 2 devices, 0 spares. Use mdadm --detail for more detail.
/dev/md0: No md super block found, not an md component.
As you can see, the above command produces only a brief overview of the RAID device and its configuration. To display more detailed information, use the following command instead:
~]# mdadm --detail /dev/md0
/dev/md0:
        Version : 0.90
  Creation Time : Tue Jun 28 16:05:49 2011
     Raid Level : raid1
     Array Size : 128384 (125.40 MiB 131.47 MB)
  Used Dev Size : 128384 (125.40 MiB 131.47 MB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Thu Jun 30 17:06:34 2011
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           UUID : 49c5ac74:c2b79501:5c28cb9c:16a6dd9f
         Events : 0.6

    Number   Major   Minor   RaidDevice State
       0       3        1        0      active sync   /dev/hda1
       1       3       65        1      active sync   /dev/hdb1
Finally, to list all presently active RAID devices, type:
~]$ cat /proc/mdstat
Personalities : [raid0] [raid1]
md0 : active raid1 hdb1[1] hda1[0]
      128384 blocks [2/2] [UU]
      
md1 : active raid0 hdb2[1] hda2[0]
      1573888 blocks 256k chunks

md2 : active raid0 hdb3[1] hda3[0]
      19132928 blocks 256k chunks

unused devices: <none>

5.3.2. Creating a New RAID Device

To create a new RAID device, use the command in the following form as root:
mdadm --create raid_device --level=level --raid-devices=number component_device
This is the simplest way to create a RAID array. There are many more options that allow you to specify the number of spare devices, the block size of a stripe array, if the array has a write-intent bitmap, and much more. All these options can have a significant impact on the performance, but are beyond the scope of this document. For more detailed information, refer to the CREATE MODE section of the mdadm(8) manual page.
例5.2 Creating a new RAID device
Assume that the system has two unused SCSI disk drives available, and that each of these devices has exactly one partition of the same size:
~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sdb  /dev/sdb1
To create /dev/md3 as a new RAID level 1 array from /dev/sda1 and /dev/sdb1, run the following command:
~]# mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
mdadm: array /dev/md3 started.

5.3.3. Replacing a Faulty Device

To replace a particular device in a software RAID, first make sure it is marked as faulty by running the following command as root:
mdadm raid_device --fail component_device
Then remove the faulty device from the array by using the command in the following form:
mdadm raid_device --remove component_device
Once the device is operational again, you can re-add it to the array:
mdadm raid_device --add component_device
例5.3 Replacing a faulty device
Assume the system has an active RAID device, /dev/md3, with the following layout (that is, the RAID device created in 例5.2「Creating a new RAID device」):
~]# mdadm --detail /dev/md3 | tail -n 3
    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1
Imagine the first disk drive fails and needs to be replaced. To do so, first mark the /dev/sdb1 device as faulty:
~]# mdadm /dev/md3 --fail /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md3
Then remove it from the RAID device:
~]# mdadm /dev/md3 --remove /dev/sdb1
mdadm: hot removed /dev/sdb1
As soon as the hardware is replaced, you can add the device back to the array by using the following command:
~]# mdadm /dev/md3 --add /dev/sdb1
mdadm: added /dev/sdb1

5.3.4. Extending a RAID Device

To add a new device to an existing array, use the command in the following form as root:
mdadm raid_device --add component_device
This will add the device as a spare device. To grow the array to use this device actively, type the following at a shell prompt:
mdadm --grow raid_device --raid-devices=number
例5.4 Extending a RAID device
Assume the system has an active RAID device, /dev/md3, with the following layout (that is, the RAID device created in 例5.2「Creating a new RAID device」):
~]# mdadm --detail /dev/md3 | tail -n 3
    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1
Also assume that a new SCSI disk drive, /dev/sdc, has been added and has exactly one partition. To add it to the /dev/md3 array, type the following at a shell prompt:
~]# mdadm /dev/md3 --add /dev/sdc1
mdadm: added /dev/sdc1
This will add /dev/sdc1 as a spare device. To change the size of the array to actually use it, type:
~]# mdadm --grow /dev/md3 --raid-devices=3

5.3.5. Removing a RAID Device

To remove an existing RAID device, first deactivate it by running the following command as root:
mdadm --stop raid_device
Once deactivated, remove the RAID device itself:
mdadm --remove raid_device
Finally, zero superblocks on all devices that were associated with the particular array:
mdadm --zero-superblock component_device
例5.5 Removing a RAID device
Assume the system has an active RAID device, /dev/md3, with the following layout (that is, the RAID device created in 例5.4「Extending a RAID device」):
~]# mdadm --detail /dev/md3 | tail -n 4
    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1
       2       8       33        2      active sync   /dev/sdc1
In order to remove this device, first stop it by typing the following at a shell prompt:
~]# mdadm --stop /dev/md3
mdadm: stopped /dev/md3
Once stopped, you can remove the /dev/md3 device by running the following command:
~]# mdadm --remove /dev/md3
Finally, to remove the superblocks from all associated devices, type:
~]# mdadm --zero-superblock /dev/sda1 /dev/sdb1 /dev/sdc1

5.3.6. Preserving the Configuration

By default, changes made by the mdadm command only apply to the current session, and will not survive a system restart. At boot time, the mdmonitor service reads the content of the /etc/mdadm.conf configuration file to see which RAID devices to start. If the software RAID was configured during the graphical installation process, this file contains directives listed in 表5.1「Common mdadm.conf directives」 by default.
表5.1 Common mdadm.conf directives
Option Description
ARRAY
Allows you to identify a particular array.
DEVICE
Allows you to specify a list of devices to scan for a RAID component (for example, /dev/hda1). You can also use the keyword partitions to use all partitions listed in /proc/partitions, or containers to specify an array container.
MAILADDR Allows you to specify an email address to use in case of an alert.

To list what ARRAY lines are presently in use regardless of the configuration, run the following command as root:
mdadm --detail --scan
Use the output of this command to determine which lines to add to the /etc/mdadm.conf file. You can also display the ARRAY line for a particular device:
mdadm --detail --brief raid_device
By redirecting the output of this command, you can add such a line to the configuration file with a single command:
mdadm --detail --brief raid_device >> /etc/mdadm.conf
例5.6 Preserving the configuration
By default, the /etc/mdadm.conf contains the software RAID configuration created during the system installation:
# mdadm.conf written out by anaconda
DEVICE partitions
MAILADDR root
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=49c5ac74:c2b79501:5c28cb9c:16a6dd9f
ARRAY /dev/md1 level=raid0 num-devices=2 UUID=76914c11:5bfa2c00:dc6097d1:a1f4506d
ARRAY /dev/md2 level=raid0 num-devices=2 UUID=2b5d38d0:aea898bf:92be20e2:f9d893c5
Assuming you have created the /dev/md3 device as shown in 例5.2「Creating a new RAID device」, you can make it persistent by running the following command:
~]# mdadm --detail --brief /dev/md3 >> /etc/mdadm.conf

5.4. Additional Resources

For more information on RAID, refer to the following resources.

5.4.1. Installed Documentation

  • mdadm man page — A manual page for the mdadm utility.
  • mdadm.conf man page — A manual page that provides a comprehensive list of available /etc/mdadm.conf configuration options.


[1] A hot-swap chassis allows you to remove a hard drive without having to power-down your system.
[2] Parity information is calculated based on the contents of the rest of the member disks in the array. This information can then be used to reconstruct data when one disk in the array fails. The reconstructed data can then be used to satisfy I/O requests to the failed disk before it is replaced and to repopulate the failed disk after it has been replaced.

第6章 スワップ領域

6.1. スワップ領域の説明

Linuxの中のスワップ領域は、物理メモリ(RAM)の容量が満杯になった時に使用されます。メモリが満杯の時にシステムがさらにメモリリソースを必要とする場合、使用していないメモリのページがスワップ領域に移動されます。スワップ領域はマシンのRAMの容量が小さい場合に特に役に立ちますが、RAMを増やす手段として使用しないでください。スワップ領域はハードドライブに存在するため、スワップ領域へのアクセス時間は物理メモリの場合に比べて長くなります。
スワップ領域は、専用のスワップパーティション(推奨)、スワップファイル、或は、 スワップパーティションとスワップファイルの組合せのどれかであることができます。
In years past, the recommended amount of swap space increased linearly with the amount of RAM in the system. But because the amount of memory in modern systems has increased into the hundreds of gigabytes, it is now recognized that the amount of swap space that a system needs is a function of the memory workload running on that system. However, given that swap space is usually designated at install time, and that it can be difficult to determine beforehand the memory workload of a system, we recommend determining system swap using the following table.

重要

File systems and LVM2 volumes assigned as swap space cannot be in use when being modified. For example, no system processes can be assigned the swap space, as well as no amount of swap should be allocated and used by the kernel. Use the free and cat /proc/swaps commands to verify how much and where swap is in use.
The best way to achieve swap space modifications is to boot your system in rescue mode, and then follow the instructions (for each scenario) in the remainder of this chapter. Refer to the Red Hat Enterprise Linux Installation Guide for instructions on booting into rescue mode. When prompted to mount the file system, select Skip.

6.2. スワップ領域の追加

時には、インストールした後にスワップ領域を増加する必要がでてきます。 例えば、RAMの容量を128MBから256MBにアップグレードした場合、スワップ領域はそのままでは256MBしかありません。 メモリ使用の多い操作をしたり、大容量 メモリを要求するアプリケーションを実行する場合、スワップ領域を512MBまで増加したほうが都合がよいでしょう。
新しいスワップパーティションの作成、新しいスワップファイルの作成、または既存のLVM2論理ボリュームでのスワップの拡張の3つのオプションがあります。既存の論理ボリュームを拡張することをお勧めします。

6.2.1. LVM2論理ボリュームでのスワップの拡張

To extend an LVM2 swap logical volume (assuming /dev/VolGroup00/LogVol01 is the volume you want to extend):
  1. 関連付けられた論理ボリュームに対してスワップを無効にします。
    swapoff -v /dev/VolGroup00/LogVol01
  2. LVM2論理ボリュームのサイズを256MB変更します。
    lvm lvresize /dev/VolGroup00/LogVol01 -L +256M
  3. 新しいスワップ領域をフォーマットします。
    mkswap /dev/VolGroup00/LogVol01
  4. 拡張された論理ボリュームを有効にします。
    swapon -va
  5. 論理ボリュームが適切に拡張されたことを確認します。
    cat /proc/swaps
    free

6.2.2. スワップ用のLVM2論理ボリュームの作成

To add a swap volume group (assuming /dev/VolGroup00/LogVol02 is the swap volume you want to add):
  1. サイズが256MBのLVM2論理ボリュームを作成します。
    lvm lvcreate VolGroup00 -n LogVol02 -L 256M
  2. 新しいスワップ領域をフォーマットします。
    mkswap /dev/VolGroup00/LogVol02
  3. Add the following entry to the /etc/fstab file:
    /dev/VolGroup00/LogVol02   swap     swap    defaults     0 0
  4. 拡張された論理ボリュームを有効にします。
    swapon -va
  5. 論理ボリュームが適切に拡張されたことを確認します。
    cat /proc/swaps
    free

6.2.3. スワップファイルの作成

スワップファイルを追加するには次の方法で実行します。
  1. 新しいスワップファイルの容量をメガバイトで決定し、 その数値に1024を掛けてブロックサイズを決定します。たとえば、64MBのスワップファイルのブロックサイズは65536となります。
  2. At a shell prompt as root, type the following command with count being equal to the desired block size:
    dd if=/dev/zero of=/swapfile bs=1024 count=65536
  3. 次のコマンドでスワップファイルを作成します。
    mkswap /swapfile
  4. すぐにスワップファイルを有効にするには(ただし、ブート時に自動的にではない)、 次を入力します。
    swapon /swapfile
  5. To enable it at boot time, edit /etc/fstab to include the following entry:
    /swapfile          swap            swap    defaults        0 0
    次回システムがブートする時には、新しいスワップファイルが有効になります。
  6. After adding the new swap file and enabling it, verify it is enabled by viewing the output of the command cat /proc/swaps or free.

6.3. スワップ領域の削除

場合によっては、インストールした後にスワップ領域を削減した方が良い場合があります。たとえば、システムのRAMの容量を1GBから512MBにダウングレードし、引き続き2GBのスワップ領域が割り当てられているとします。この場合、ディスク容量が無駄になるため、スワップ領域のサイズを1GBまで削減することをお勧めします。
スワップに使用されるLVM2論理ボリューム全体の削除、スワップファイルの削除、または既存のLVM2論理ボリュームのスワップ領域の削減の3つのオプションがあります。

6.3.1. LVM2論理ボリュームのスワップの削減

To reduce an LVM2 swap logical volume (assuming /dev/VolGroup00/LogVol01 is the volume you want to reduce):
  1. 関連付けられた論理ボリュームに対してスワップを無効にします。
    swapoff -v /dev/VolGroup00/LogVol01
  2. LVM2論理ボリュームを512MB削減します。
    lvm lvreduce /dev/VolGroup00/LogVol01 -L -512M
  3. 新しいスワップ領域をフォーマットします。
    mkswap /dev/VolGroup00/LogVol01
  4. 拡張された論理ボリュームを有効にします。
    swapon -va
  5. 論理ボリュームが適切に削減されていることを確認します。
    cat /proc/swaps
    free

6.3.2. スワップに使用するLVM2論理ボリュームの削除

The swap logical volume cannot be in use (no system locks or processes on the volume). The easiest way to achieve this is to boot your system in rescue mode. Refer to the Red Hat Enterprise Linux Installation Guide for instructions on booting into rescue mode. When prompted to mount the file system, select Skip.
To remove a swap volume group (assuming /dev/VolGroup00/LogVol02 is the swap volume you want to remove):
  1. 関連付けられた論理ボリュームに対してスワップを無効にします。
    swapoff -v /dev/VolGroup00/LogVol02
  2. サイズ512MBのLVM2論理ボリュームを削除します。
    lvm lvremove /dev/VolGroup00/LogVol02
  3. Remove the following entry from the /etc/fstab file:
    /dev/VolGroup00/LogVol02   swap     swap    defaults     0 0
  4. Test that the logical volume has been removed:
    cat /proc/swaps
    free

6.3.3. スワップファイルの削除

スワップファイルを削除するには次の方法で実行します。
  1. At a shell prompt as root, execute the following command to disable the swap file (where /swapfile is the swap file):
    swapoff -v /swapfile
  2. Remove its entry from the /etc/fstab file.
  3. 次のコマンドで実際のファイルを削除します。
    rm /swapfile

6.4. スワップ領域の移動

1つの場所から別の場所へスワップ領域を移動するには、スワップ領域の削除の方法に従います。 その後、スワップ領域の追加の方法で新しい場所に追加します。

第7章 ディスク保存の管理

7.1. Standard Partitions using parted

ユーティリティ parted を使用してユーザーができること
  • 既存のパーティションテーブルを表示する
  • 既存のパーティションサイズを変更する
  • 空き領域または追加のハードドライブからパーティションを追加する
If you want to view the system's disk space usage or monitor the disk space usage, refer to 「ファイルシステム」.
デフォルトでは、 parted パッケージは Red Hat Enterprise Linux をインストールする際に含まれます。 parted を起動するには、 root としてログインしシェルプロンプトでコマンド parted /dev/sda を入力します (/dev/sda には設定しようとしているドライブのデバイス名を入れる)。
If you want to remove or resize a partition, the device on which that partition resides must not be in use. Creating a new partition on a device which is in use—while possible—is not recommended.
使用中であってはならないデバイスに対して、 デバイス上のパーティションはマウントできません。 また、 デバイス上のいずれの swap 領域も有効にしないようにしてください。
また、 使用中のパーティションテーブルは変更しないでください。 カーネルがその変更を正しく認識できない場合があります。 パーティションテーブルが実際にマウントされたパーティションの状態と一致しない場合、 情報が誤ったパーティションに書き込まれてしまう可能性があるため、 データが紛失、 上書きされてしまいます。
The easiest way to achieve this is to boot your system in rescue mode. When prompted to mount the file system, select Skip.
Alternately, if the drive does not contain any partitions in use (system processes that use or lock the file system from being unmounted), you can unmount them with the umount command and turn off all the swap space on the hard drive with the swapoff command.
表7.1「parted commands」 contains a list of commonly used parted commands. The sections that follow explain some of these commands and arguments in more detail.
表7.1 parted commands
コマンド 説明
check minor-num ファイルシステムの簡単なチェックを行う
cp from to 1つのパーティションから別のパーティションへファイルシステムをコピーする。 転送元転送先の部分はそれぞれのパーティションのマイナー番号。
help 使用可能なコマンドの一覧を表示する
mklabel label パーティションテーブル用にディスクラベルを作成する
mkfs minor-num file-system-type ファイルシステムの種類タイプのファイルシステムを作成する
mkpart part-type fs-type start-mb end-mb パーティションを作成して、新規のファイルシステムは作成しない
mkpartfs part-type fs-type start-mb end-mb パーティションを作成して、指定のファイルシステムを作成する
move minor-num start-mb end-mb パーティションを移動する
name minor-num name Mac及びPC98ディスクラベル専用のパーティションに名前を付ける
print パーティションテーブルを表示する
quit Quit parted
rescue start-mb end-mb 失われたパーティションをstart-mbから end-mbに救出する
resize minor-num start-mb end-mb パーティションサイズを 開始-mbから終了-mbへ変更する
rm minor-num パーティションを削除する
select device 設定するデバイスを別に選択する
set minor-num flag state パーティションにフラグを設定する。 状態は オンまたはオフ。
toggle [NUMBER [FLAG] パーティション NUMBER 上の FLAG の状態を切り替える
unit UNIT デフォルトのユニットを UNIT に設定する

7.1.1. パーティションテーブルの表示

After starting parted, use the command print to view the partition table. A table similar to the following appears:
Model: ATA ST3160812AS (scsi)
Disk /dev/sda: 160GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End    Size    Type      File system  Flags
 1      32.3kB  107MB  107MB   primary   ext3         boot
 2      107MB   105GB  105GB   primary   ext3
 3      105GB   107GB  2147MB  primary   linux-swap
 4      107GB   160GB  52.9GB  extended		      root
 5      107GB   133GB  26.2GB  logical   ext3
 6      133GB   133GB  107MB   logical   ext3
 7      133GB   160GB  26.6GB  logical                lvm
1 番目の行はディスクのタイプ、 製造元、 モデル番号とインターフェースになります。 2 番目の行はディスクラベルのタイプを表示します。 以下残りの出力の 4 番目の行はパーティションテーブルを表示しています。
In the partition table, the Minor number is the partition number. For example, the partition with minor number 1 corresponds to /dev/sda1. The Start and End values are in megabytes. Valid Type are metadata, free, primary, extended, or logical. The Filesystem is the file system type, which can be any of the following:
  • ext2
  • ext3
  • fat16
  • fat32
  • hfs
  • jfs
  • linux-swap
  • ntfs
  • reiserfs
  • hp-ufs
  • sun-ufs
  • xfs
デバイスの Filesystem に値が表示されない場合、 そのファイルシステムのタイプは不明ということになります。
The Flags column lists the flags set for the partition. Available flags are boot, root, swap, hidden, raid, lvm, or lba.

Tip

To select a different device without having to restart parted, use the select command followed by the device name (for example, /dev/sda). Doing so allows you to view or configure the partition table of a device.

7.1.2. パーティションの作成

警告

使用中のデバイス上ではパーティションの作成をしないで下さい。
パーティションを作成する前に、レスキューモードで起動します。(或は、デバイス上の どのパーティションもアンマウントして、デバイス上のすべてのスワップ領域を止めます)
Start parted, where /dev/sda is the device on which to create the partition:
parted /dev/sda
現在のパーティションテーブルを表示して、十分な空き領域があるかどうか 判定します。
print
If there is not enough free space, you can resize an existing partition. Refer to 「パーティションのサイズ変更」 for details.

7.1.2.1. パーティションの構築

パーティションテーブルから、 新規パーティションの開始点と終了点、 及びパーティションタイプを決定します。 1 つのデバイス上にはプライマリパーティションは 4 つまでしか作れません(拡張パーティションがない場合)。 パーティションが 4 つ以上必要な場合は、 プライマリパーティションを 3 つにして、 拡張パーティションを 1 つ構築し、 その拡張パーティションの中に複数の論理パーティションを持たせることができます。 ディスクパーティションの概要については、 Red Hat Enterprise Linux インストールガイド の付録 ディスクパーティションの概要 を参照してください。
例えば、ハードディスク上の1024メガバイトから2048メガバイトまでを ext3ファイルシステムでプライマリパーティションにするには、次のコマンドを タイプします。
mkpart primary ext3 1024 2048

Tip

If you use the mkpartfs command instead, the file system is created after the partition is created. However, parted does not support creating an ext3 file system. Thus, if you wish to create an ext3 file system, use mkpart and create the file system with the mkfs command as described later.
The changes start taking place as soon as you press Enter, so review the command before executing to it.
After creating the partition, use the print command to confirm that it is in the partition table with the correct partition type, file system type, and size. Also remember the minor number of the new partition so that you can label it. You should also view the output of
cat /proc/partitions
これでカーネルが新規パーティションを認識することが確実になります。

7.1.2.2. Formatting the Partition

パーティションはまだ、ファイルシステムを持っていません。以下のようにして ファイルシステムを作成します:
mkfs -t ext3 /dev/sda6

警告

パーティションをフォーマットすると、 パーティション上に現在存在するすべてのデータが永久に消滅します。

7.1.2.3. パーティションのラベル作成

Next, give the partition a label. For example, if the new partition is /dev/sda6 and you want to label it /work:
e2label /dev/sda6 /work
デフォルトでは、インストールプログラムは、 パーティションのマウントポイントをラベルとして使用して、 ラベルが固有のものであることを確認します。どのラベルを使用しても構いません。

7.1.2.4. マウントポイントの作成

rootとして以下の操作で マウントポイントを作成します:
mkdir /work

7.1.2.5. Add to /etc/fstab

As root, edit the /etc/fstab file to include the new partition. The new line should look similar to the following:
LABEL=/work           /work                 ext3    defaults        1 2
The first column should contain LABEL= followed by the label you gave the partition. The second column should contain the mount point for the new partition, and the next column should be the file system type (for example, ext3 or swap). If you need more information about the format, read the man page with the command man fstab.
If the fourth column is the word defaults, the partition is mounted at boot time. To mount the partition without rebooting, as root, type the command:
mount /work

7.1.3. パーティションの削除

警告

使用中のデバイス上のパーティションは削除しないで下さい。
パーティションを削除する前にレスキューモードで起動します。(又は、デバイス上の どのパーティションもアンマウントし、デバイス上のどのスワップ領域も停止します。)
Start parted, where /dev/sda is the device on which to remove the partition:
parted /dev/sda
現在のパーティションテーブルを表示して削除するパーティションの マイナー番号を決定します:
print
Remove the partition with the command rm. For example, to remove the partition with minor number 3:
rm 3
The changes start taking place as soon as you press Enter, so review the command before committing to it.
After removing the partition, use the print command to confirm that it is removed from the partition table. You should also view the output of
cat /proc/partitions
これでカーネルが、パーティションは削除されたと認識することを確実にします。
The last step is to remove it from the /etc/fstab file. Find the line that declares the removed partition, and remove it from the file.

7.1.4. パーティションのサイズ変更

警告

使用中のデバイス上のパーティションのサイズ変更はしないで下さい。
パーティションのサイズ変更の前に、レスキューモードで起動します。(又は、デバイス上のどんなパーティションでも アンマウントして、デバイス上のどのスワップ領域も止めます。)
Start parted, where /dev/sda is the device on which to resize the partition:
parted /dev/sda
現在のパーティションテーブルを表示してサイズ変更するパーティションのマイナー番号、及び そのパーティションの開始点と終了点を確認します。
print
To resize the partition, use the resize command followed by the minor number for the partition, the starting place in megabytes, and the end place in megabytes. For example:
resize 3 1024 2048

警告

パーティションはデバイス上の使用可能領域を超える大きさにはできません。
After resizing the partition, use the print command to confirm that the partition has been resized correctly, is the correct partition type, and is the correct file system type.
After rebooting the system into normal mode, use the command df to make sure the partition was mounted and is recognized with the new size.

7.2. LVMパーティション管理

The following commands can be found by issuing lvm help at a command prompt.
表7.2 LVM commands
コマンド 説明
dumpconfig 有効な設定をダンプする
formats 利用可能なメタデータ形式をリストする
help ヘルプコマンドを表示する
lvchange 論理ボリュームの属性を変更する
lvcreate 論理ボリュームを作成する
lvdisplay 論理ボリュームに関する情報を表示する
lvextend 論理ボリュームにスペースを追加する
lvmchange Due to use of the device mapper, this command has been deprecated
lvmdiskscan 物理ボリュームとして使用できるデバイスをリストする
lvmsadc アクティビティデータを収集する
lvmsar アクティビティレポートを作成する
lvreduce 論理ボリュームのサイズを削減する
lvremove システムから論理ボリュームを削除する
lvrename 論理ボリュームの名前を変更する
lvresize 論理ボリュームのサイズを変更する
lvs 論理ボリュームに関する情報を表示する
lvscan ボリュームグループ内のすべての論理ボリュームをリストする
pvchange 物理ボリュームの属性を変更する
pvcreate LVMにより使用する物理ボリュームを初期化する
pvdata 物理ボリュームに対するディスク上のメタデータを表示する
pvdisplay 物理ボリュームのさまざまな属性を表示する
pvmove エクステントをある物理ボリュームから別の物理ボリュームに移動する
pvremove 物理ボリュームからLVMラベルを削除する
pvresize ボリュームグループにより使用されている物理ボリュームのサイズを変更する
pvs 物理ボリュームに関する情報を表示する
pvscan すべての物理ボリュームをリストする
segtypes 利用可能なセグメントタイプをリストする
vgcfgbackup ボリュームグループ設定をバックアップする
vgcfgrestore ボリュームグループ設定を復元する
vgchange ボリュームグループ属性を変更する
vgck ボリュームグループの整合性をチェックする
vgconvert ボリュームグループメタデータ形式を変更する
vgcreate ボリュームグループを作成する
vgdisplay ボリュームグループ情報を表示する
vgexport ボリュームグループをシステムから登録解除する
vgextend 物理ボリュームを論理グループに追加する
vgimport エクスポートされたボリュームグループをシステムに登録する
vgmerge 論理グループをマージする
vgmknodes /dev/にボリュームグループデバイスの特別なファイルを作成する
vgreduce ボリュームグループから物理ボリュームを削除する
vgremove ボリュームグループを削除する
vgrename ボリュームグループの名前を変更する
vgs ボリュームグループに関する情報を表示する
vgscan すべてのボリュームグループを検索する
vgsplit 新しいボリュームグループに物理ボリュームを移動する
version ソフトウェアおよびドライバのバージョン情報を表示する

第8章 ディスク容量制限の実践

使用ディスク容量はディスク容量制限を実践することにより規制することが可能で、これによりシステム管理者は、ユーザーがディスク容量を使い過ぎたり、パーティションが満杯になってしまったりする前に警報を受けることができます。
ディスク容量制限は、個別のユーザーにもユーザーグループにも設定できます。各ユーザー特有のファイル(メールなど)を管理する為の容量制限を個別に与え、あるユーザーが担当するプロジェクトには別の容量制限(自己のグループにプロジェクトを与えると想定)を与えることを可能にします。
さらに、容量制限は使用されるディスクブロックの数量を制御する為だけでなくiノード(UNIXファイルシステムのファイルに関する情報を含むデータ構造)の数量も制御します。iノードはファイル関連の情報を収納する為に使用されますので、それが、作成出来るファイルの数量を制御します。
The quota RPM must be installed to implement disk quotas.

注記

For more information on installing RPM packages, refer to パートII「パッケージ管理」.

8.1. ディスク容量制限の設定

ディスク容量制限を実践するには次のステップを使用します:
  1. Enable quotas per file system by modifying the /etc/fstab file.
  2. ファイルシステムを再マウントします。
  3. 容量データベースファイルを作成し、ディスク使用テーブルを生成します。
  4. 容量制限ポリシーを割り当てます。
これらの各ステップは、以下のセクションで詳しく説明されます。

8.1.1. 容量制限を有効にする

As root, using a text editor, edit the /etc/fstab file. Add the usrquota and/or grpquota options to the file systems that require quotas:
/dev/VolGroup00/LogVol00 /         ext3    defaults        1 1
LABEL=/boot              /boot     ext3    defaults        1 2
none                     /dev/pts  devpts  gid=5,mode=620  0 0
none                     /dev/shm  tmpfs   defaults        0 0
none                     /proc     proc    defaults        0 0
none                     /sys      sysfs   defaults        0 0
/dev/VolGroup00/LogVol02 /home     ext3    defaults,usrquota,grpquota  1 2
/dev/VolGroup00/LogVol01 swap      swap    defaults        0 0 . . .
In this example, the /home file system has both user and group quotas enabled.

注記

The following examples assume that a separate /home partition was created during the installation of Red Hat Enterprise Linux. The root (/) partition can be used for setting quota policies in the /etc/fstab file.

8.1.2. ファイルシステムの再マウント

After adding the usrquota and/or grpquota options, remount each file system whose fstab entry has been modified. If the file system is not in use by any process, use one of the following methods:
  • Issue the umount command followed by the mount command to remount the file system.(See the man page for both umount and mount for the specific syntax for mounting and unmounting various filesystem types.)
  • Issue the mount -o remount <file-system> command (where <file-system> is the name of the file system) to remount the file system. For example, to remount the /home file system, the command to issue is mount -o remount /home.
ファイルシステムが現在使用されている場合、ファイルシステムを再マウントする最も簡単な方法はシステムを再起動することです。

8.1.3. 容量制限データベースファイルの作成

After each quota-enabled file system is remounted, the system is capable of working with disk quotas. However, the file system itself is not yet ready to support quotas. The next step is to run the quotacheck command.
The quotacheck command examines quota-enabled file systems and builds a table of the current disk usage per file system. The table is then used to update the operating system's copy of disk usage. In addition, the file system's disk quota files are updated.
To create the quota files (aquota.user and aquota.group) on the file system, use the -c option of the quotacheck command. For example, if user and group quotas are enabled for the /home file system, create the files in the /home directory:
quotacheck -cug /home
-cオプションは、容量制限が有効な各ファイルシステムの為に容量制限ファイルが作成される様に指定します。-uオプションはユーザー容量制限のチェックを指定し、-gオプションはグループ容量制限のチェックを指定します。
-u-gも指定されていない場合、 ユーザー容量制限ファイルだけが作成されます。-gだけが 指定してある場合は、グループ容量制限ファイルのみが作成されます。
ファイルが作成された後に、次のコマンドを使用して容量制限有効なファイルシステム毎に 現在のディスク使用量のテーブルを生成します:
quotacheck -avug
これらのオプションは次のようになります:
  • a — 全ての容量制限有効な ローカルマウントのファイルシステムをチェックする
  • v — 容量制限のチェックが進むのと共に 詳細進行状態を表示する
  • u — ユーザーディスク容量制限情報をチェック
  • g — グループディスク容量制限情報をチェック
After quotacheck has finished running, the quota files corresponding to the enabled quotas (user and/or group) are populated with data for each quota-enabled locally-mounted file system such as /home.

8.1.4. ユーザー単位で容量制限を割り当てる

The last step is assigning the disk quotas with the edquota command.
ユーザー1人に容量制限を設定するには、シェルプロンプトでrootとして 次のコマンドを実行します:
edquota username
Perform this step for each user who needs a quota. For example, if a quota is enabled in /etc/fstab for the /home partition (/dev/VolGroup00/LogVol02 in the example below) and the command edquota testuser is executed, the following is shown in the editor configured as the default for the system:
Disk quotas for user testuser (uid 501):
Filesystem                blocks     soft     hard    inodes   soft   hard
/dev/VolGroup00/LogVol02  440436        0        0     37418      0      0

注記

The text editor defined by the EDITOR environment variable is used by edquota. To change the editor, set the EDITOR environment variable in your ~/.bash_profile file to the full path of the editor of your choice.
The first column is the name of the file system that has a quota enabled for it. The second column shows how many blocks the user is currently using. The next two columns are used to set soft and hard block limits for the user on the file system. The inodes column shows how many inodes the user is currently using. The last two columns are used to set the soft and hard inode limits for the user on the file system.
ハードブロックリミットとは、ユーザー又はグループが使用出来るディスク容量の絶対最大量 です。この限度に到達すると、それ以上のディスク容量は使用できません。
ソフトブロックリミットは使用できるディスク領域の最大量を定義するものです。 但し、ハードリミットとは違い、ソフトリミットは一定の期間だけその限度を超過できます。この期間は 猶予期間 と呼ばれるものです。猶予期間は、秒、分、時間、日、週、又は 月で表現できます。
いずれかの値が、0に設定されている場合は、その限度は設定されて いないことになります。テキストエディタで目的の限度に修正します。 例えば:
Disk quotas for user testuser (uid 501):
Filesystem                blocks     soft     hard   inodes   soft   hard
/dev/VolGroup00/LogVol02  440436   500000   550000    37418      0      0
ユーザーの為の容量制限が設定されたことを確証するには次のコマンドを 使用します:
quota testuser

8.1.5. グループ単位で容量制限を割り当てる

Quotas can also be assigned on a per-group basis. For example, to set a group quota for the devel group (the group must exist prior to setting the group quota), use the command:
edquota -g devel
このコマンドはグループ用の既存の容量制限をテキストエディタで表示します:
Disk quotas for group devel (gid 505):
Filesystem                blocks    soft     hard    inodes    soft    hard
/dev/VolGroup00/LogVol02  440400       0        0     37418       0       0
この限度を修正し、ファイルを保存します。
グループの容量制限が設定されたことを確証するには次のコマンドを使用します:
quota -g devel

8.1.6. ソフトリミット用の猶予期間を設定

ソフトリミットが任意の割り当て(inode 又は block そしてユーザー又はグループ)用に設定された場合、猶予期間、則ちソフトリミット期間が超過できる期間は以下のコマンドで設定します:
edquota -t
While other edquota commands operate on a particular user's or group's quota, the -t option operates on every filesystem with quotas enabled.

8.2. ディスク容量制限の管理

容量制限が実践されている場合、ある程度の保全が必要です。— ほとんどの場合、容量制限を超過していないかどうかを見て、そしてその制限が精確かどうかを監視します。
Of course, if users repeatedly exceed their quotas or consistently reach their soft limits, a system administrator has a few choices to make depending on what type of users they are and how much disk space impacts their work. The administrator can either help the user determine how to use less disk space or increase the user's disk quota.

8.2.1. 有効化 と 無効化

容量制限は、0 に設定せずに無効にすることも可能です。全てのユーザーとグループの容量制限を停止するには、次のコマンドを使用します:
quotaoff -vaug
-u-g のどちらのオプションも指定されていない場合、ユーザー容量制限のみが無効になります。また -g だけが指定されている場合、グループ容量制限のみが無効になります。-v を付けるとコマンドが実行される時に詳細のステータス情報を表示するようになります。
To enable quotas again, use the quotaon command with the same options.
例えば、全てのファイルシステムのユーザーとグループを有効にするには、以下のコマンドを使用します。
quotaon -vaug
To enable quotas for a specific file system, such as /home, use the following command:
quotaon -vug /home
-u-g のどちらのオプションも指定されていない場合は、ユーザー容量制限のみが有効になります。 -g のみが指定されている場合は、グループ容量制限のみが有効になります。

8.2.2. ディスク容量制限の報告

Creating a disk usage report entails running the repquota utility. For example, the command repquota /home produces this output:
*** Report for user quotas on device /dev/mapper/VolGroup00-LogVol02
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      36       0       0              4     0     0
kristin   --     540       0       0            125     0     0
testuser  --  440400  500000  550000          37418     0     0
容量制限が有効な全てのファイルシステムのディスク使用量報告を表示するには、以下のコマンドを使用します(オプション-aを使用):
repquota -a
While the report is easy to read, a few points should be explained. The -- displayed after each user is a quick way to determine whether the block or inode limits have been exceeded. If either soft limit is exceeded, a + appears in place of the corresponding -; the first - represents the block limit, and the second represents the inode limit.
The grace columns are normally blank. If a soft limit has been exceeded, the column contains a time specification equal to the amount of time remaining on the grace period. If the grace period has expired, none appears in its place.

8.2.3. 容量制限を正確に維持する

Whenever a file system is not unmounted cleanly (due to a system crash, for example), it is necessary to run quotacheck. However, quotacheck can be run on a regular basis, even if the system has not crashed. Safe methods for periodically running quotacheck include:
Ensuring quotacheck runs on next reboot

Best method for most systems

This method works best for (busy) multiuser systems which are periodically rebooted.
As root, place a shell script into the /etc/cron.daily/ or /etc/cron.weekly/ directory—or schedule one using the crontab -e command—that contains the touch /forcequotacheck command. This creates an empty forcequotacheck file in the root directory, which the system init script looks for at boot time. If it is found, the init script runs quotacheck. Afterward, the init script removes the /forcequotacheck file; thus, scheduling this file to be created periodically with cron ensures that quotacheck is run during the next reboot.
Refer to 37章Automated Tasks for more information about configuring cron.
Running quotacheck in single user mode
An alternative way to safely run quotacheck is to (re-)boot the system into single-user mode to prevent the possibility of data corruption in quota files and run:
~]# quotaoff -vaug /<file_system>
~]# quotacheck -vaug /<file_system>
~]# quotaon -vaug /<file_system>
Running quotacheck on a running system
If necessary, it is possible to run quotacheck on a machine during a time when no users are logged in, and thus have no open files on the file system being checked. Run the command quotacheck -vaug <file_system> ; this command will fail if quotacheck cannot remount the given <file_system> as read-only. Note that, following the check, the file system will be remounted read-write.

Do not run quotacheck on a live file system

Running quotacheck on a live file system mounted read-write is not recommended due to the possibility of quota file corruption.
Refer to 37章Automated Tasks for more information about configuring cron.

8.3. その他のリソース

ディスク容量制限に関する詳細情報については、次のリソースを参照して下さい。

8.3.1. インストールされているドキュメント

  • The quotacheck, edquota, repquota, quota, quotaon, and quotaoff man pages

第9章 Access Control Lists

ファイル及びディレクトリには、ファイル所有者、ファイルに関連付けられたグループ、そのシステムのその他ユーザーに関するパーミッションセットがあります。しかし、このパーミッションセットには限界があります。例えば、異なるユーザーに別々のパーミッションを設定することはできません。このため、 アクセス制御リスト (ACL) が導入されました。
Red Hat Enterprise Linux 5 カーネルは ext3 ファイルシステム及び NFS エクスポートファイルシステムに対して ACL サポートを提供します。 ACL は Samba でアクセスされる ext3 ファイルシステム上でも認識されます。
Along with support in the kernel, the acl package is required to implement ACLs. It contains the utilities used to add, modify, remove, and retrieve ACL information.
The cp and mv commands copy or move any ACLs associated with files and directories.

9.1. ファイルシステムのマウント

ACLをファイル又はディレクトリに使用する前に、 ACLサポートを利用してファイル又はディレクトリのパーティション をマウントする必要があります。 ローカルext3ファイルシステムの場合は、次のコマンドにてマウントできます。
mount -t ext3 -o acl <device-name> <partition>
例は次の通り
mount -t ext3 -o acl /dev/VolGroup00/LogVol02 /work
Alternatively, if the partition is listed in the /etc/fstab file, the entry for the partition can include the acl option:
LABEL=/work      /work       ext3    acl        1 2
Sambaを介してext3ファイルシステムに接続され、ACLが有効になっている場合、 Sambaは--with-acl-supportオプションに対応しているため、 ACLは認識されます。Samba共有に接続又はマウントする時に、 特別なフラグは必要ありません。

9.1.1. NFS

NFSサーバーがエクスポートしたファイルシステム によってACLとACL読み込み可能なNFSクライアントがサポートされる場合、 デフォルトではクライアント システムがACLを使用する設定になっています。
To disable ACLs on NFS shares when configuring the server, include the no_acl option in the /etc/exports file. To disable ACLs on an NFS share when mounting it on a client, mount it with the no_acl option via the command line or the /etc/fstab file.

9.2. アクセスACLの設定

ACLにはアクセスACLデフォルトACLの2種類があります。 アクセスACLは特定ファイルやディレクトリのアクセス制御リストです。 デフォルトACLはディレクトリのみに関係し、ディレクトリ内のファイルがACLにアクセス できない場合、デフォルトACLのルールをそのディレクトリに適用します。 デフォルトACLの設定は任意です。
ACLは次のように設定します。
  1. ユーザーごと
  2. グループごと
  3. 有効な権利マスクを経由
  4. ファイルのユーザーグループに含まれていないユーザー
The setfacl utility sets ACLs for files and directories. Use the -m option to add or modify the ACL of a file or directory:
setfacl -m <rules> <files>
Rules (<rules>) must be specified in the following formats. Multiple rules can be specified in the same command if they are separated by commas.
u:<uid>:<perms>
ユーザーのアクセルACLを設定します。 ユーザー名、又はUIDを指定できます。 システム上で有効なユーザーを指定して下さい。
g:<gid>:<perms>
グループのアクセルACLを設定します。 グループ名、又はGIDを指定できます。 システム上で有効なグループを指定して下さい。
m:<perms>
有効な権利マスクを設定します。 このマスクはグループが有するすべてのパーミッションと全ユーザー/全グループを連結します。
o:<perms>
ファイルに対するグループのユーザーでないユーザーのアクセスACLを設定します。
White space is ignored. Permissions (<perms>) must be a combination of the characters r, w, and x for read, write, and execute.
If a file or directory already has an ACL, and the setfacl command is used, the additional rules are added to the existing ACL or the existing rule is modified.
読み取りと書き込みのパーミッションをユーザー andrius に与える場合の例は次の通りです。
setfacl -m u:andrius:rw /project/somefile
To remove all the permissions for a user, group, or others, use the -x option and do not specify any permissions:
setfacl -x <rules> <files>
UID 500 のユーザーからすべてのパーミッションを解除する場合の例は次の通りです。
setfacl -x u:500 /project/somefile

9.3. デフォルトACLの設定

To set a default ACL, add d: before the rule and specify a directory instead of a file name.
For example, to set the default ACL for the /share/ directory to read and execute for users not in the user group (an access ACL for an individual file can override it):
setfacl -m d:o:rx /share

9.4. ACLの読み出し

To determine the existing ACLs for a file or directory, use the getfacl command. In the example below, the getfacl is used to determine the existing ACLs for a file.
getfacl home/john/picture.png
上記のコマンドは下記の出力を返します。
# file: home/john/picture.png
# owner: john
# group: john
user::rw-
group::r--
other::r--
デフォルト ACL が存在するディレクトリが特定された場合、デフォルト ACL は下記のように表示されます。
[john@main /]$ 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

9.5. ACLでファイルシステムをアーカイブする

警告

The tar and dump commands do not backup ACLs.
The star utility is similar to the tar utility in that it can be used to generate archives of files; however, some of its options are different. Refer to 表9.1「Command Line Options for star for a listing of more commonly used options. For all available options, refer to the star man page. The star package is required to use this utility.
表9.1 Command Line Options for star
オプション 説明
-c アーカイブファイルを作成します。
-n ファイルを抽出しないで下さい。ファイル抽出の影響を確認するため、 -xを併して使用して下さい。
-r アーカイブのファイルを置換します。ファイルはアーカイブファイルの最後の 方に書き込まれています。同じパスとファイル名を持つファイルを 全て置換して下さい。
-t アーカイブファイルの内容を表示します。
-u アーカイブファイルを更新します。 ファイルがアーカイブに存在しない場合、 又はファイルがアーカイブ内の同名ファイルより新しい場合はアーカイブの最後の方に書き込まれています。このオプションはこのオプションは、アーカイブがバックスペース可能な 非ブロックテープ又はファイルの場合のみ使用できます。
-x アーカイブからファイルを抽出します。 -U及びファイルシステム の関連ファイルより古いアーカイブのファイルと併して使用された場合は、 ファイルは抽出されません。
-help 重要性が最も高いオプションを表示します。
-xhelp 重要性が最も低いオプションを表示します。
-/ アーカイブよりファイルを抽出する際に、ファイル名の部分にある スラッシュを外さないようにして下さい。 デフォルトでは、ファイルが抽出された際にスラッシュが取り除かれます。
-acl ファイル又はディレクトリの作成、抽出中に関連ACLをアーカイブ又は復元します。

9.6. 旧システムとの互換性

If an ACL has been set on any file on a given file system, that file system has the ext_attr attribute. This attribute can be seen using the following command:
tune2fs -l <filesystem-device>
A file system that has acquired the ext_attr attribute can be mounted with older kernels, but those kernels do not enforce any ACLs which have been set.
Versions of the e2fsck utility included in version 1.22 and higher of the e2fsprogs package (including the versions in Red Hat Enterprise Linux 2.1 and 4) can check a file system with the ext_attr attribute. Older versions refuse to check it.

9.7. 追加リソース

詳細は次のリソースを参照下さい。

9.7.1. インストールされているドキュメント

  • acl man page — Description of ACLs
  • getfacl man page — Discusses how to get file access control lists
  • setfacl man page — Explains how to set file access control lists
  • star man page — Explains more about the star utility and its many options

9.7.2. 役に立つWebサイト

第10章 LVM (Logical Volume Manager)

10.1. What is LVM?

LVM is a tool for logical volume management which includes allocating disks, striping, mirroring and resizing logical volumes.
With LVM, a hard drive or set of hard drives is allocated to one or more physical volumes. LVM physical volumes can be placed on other block devices which might span two or more disks.
The physical volumes are combined into logical volumes, with the exception of the /boot partition. The /boot partition cannot be on a logical volume group because the boot loader cannot read it. If the root (/) partition is on a logical volume, create a separate /boot partition which is not a part of a volume group.
Since a physical volume cannot span over multiple drives, to span over more than one drive, create one or more physical volumes per drive.
Logical Volumes
LVM Group
図10.1 Logical Volumes

The volume groups can be divided into logical volumes, which are assigned mount points, such as /home and / and file system types, such as ext2 or ext3. When "partitions" reach their full capacity, free space from the volume group can be added to the logical volume to increase the size of the partition. When a new hard drive is added to the system, it can be added to the volume group, and partitions that are logical volumes can be increased in size.
Logical Volumes
Logical Volumes
図10.2 Logical Volumes

On the other hand, if a system is partitioned with the ext3 file system, the hard drive is divided into partitions of defined sizes. If a partition becomes full, it is not easy to expand the size of the partition. Even if the partition is moved to another hard drive, the original hard drive space has to be reallocated as a different partition or not used.
To learn how to configure LVM during the installation process, refer to 「LVM の設定」.

10.1.1. What is LVM2?

LVM version 2, or LVM2, is the default for Red Hat Enterprise Linux 5, which uses the device mapper driver contained in the 2.6 kernel. LVM2 can be upgraded from versions of Red Hat Enterprise Linux running the 2.4 kernel.

10.2. LVM の設定

LVM can be configured during the graphical installation process, the text-based installation process, or during a kickstart installation. You can use the system-config-lvm utility to create your own LVM configuration post-installation. The next two sections focus on using Disk Druid during installation to complete this task. The third section introduces the LVM utility (system-config-lvm) which allows you to manage your LVM volumes in X windows or graphically.
Read 「What is LVM?」 first to learn about LVM. An overview of the steps required to configure LVM include:
  • ハードドライブから物理ボリュームを作成する。
  • 物理ボリュームからボリュームグループを作成する。
  • ボリュームグループから論理ボリュームを作成し、論理ボリュームマウントポイントを割り当てる。
Two 9.1 GB SCSI drives (/dev/sda and /dev/sdb) are used in the following examples. They detail how to create a simple configuration using a single LVM volume group with associated logical volumes during installation.

10.3. 自動パーティション設定

On the Disk Partitioning Setup screen, select Remove linux partitions on selected drives and create default layout from the pulldown list.
For Red Hat Enterprise Linux, LVM is the default method for disk partitioning. If you do not wish to have LVM implemented, or if you require RAID partitioning, manual disk partitioning through Disk Druid is required.
自動的に作成される設定を構成するプロパティを以下に示します。
  • The /boot partition resides on its own non-LVM partition. In the following example, it is the first partition on the first drive (/dev/sda1). Bootable partitions cannot reside on LVM logical volumes.
  • A single LVM volume group (VolGroup00) is created, which spans all selected drives and all remaining space available. In the following example, the remainder of the first drive (/dev/sda2), and the entire second drive (/dev/sdb1) are allocated to the volume group.
  • Two LVM logical volumes (LogVol00 and LogVol01) are created from the newly created spanned volume group. In the following example, the recommended swap space is automatically calculated and assigned to LogVol01, and the remainder is allocated to the root file system, LogVol00.
Automatic LVM Configuration With Two SCSI Drives
Automatic LVM Configuration With Two SCSI Drives
図10.3 Automatic LVM Configuration With Two SCSI Drives

注記

If enabling quotas are of interest to you, it may be best to modify the automatic configuration to include other mount points, such as /home or /var, so that each file system has its own independent quota configuration limits.
In most cases, the default automatic LVM partitioning is sufficient, but advanced implementations could warrant modification or manual configuration of the partition tables.

注記

将来メモリをアップグレードする場合は、ボリュームグループの一部の領域を空き領域にしておくと、将来システムでスワップ領域論理ボリュームを簡単に拡張できます。この場合、将来の拡張に備えて領域を空けておくよう自動LVM設定を変更する必要があります。

10.4. 手動LVMパーティション設定

The following section explains how to manually configure LVM for Red Hat Enterprise Linux. Because there are numerous ways to manually configure a system with LVM, the following example is similar to the default configuration done in 「自動パーティション設定」.
On the Disk Partitioning Setup screen, select Create custom layout from the pulldown list and click the Next button in the bottom right corner of the screen.

10.4.1. Creating the /boot Partition

In a typical situation, the disk drives are new, or formatted clean. The following figure, 図10.4「Two Blank Drives, Ready for Configuration」, shows both drives as raw devices with no partitioning configured.
Two Blank Drives, Ready for Configuration
Two Blank Drives, Ready for Configuration
図10.4 Two Blank Drives, Ready for Configuration

警告

The /boot partition cannot reside on an LVM volume because the GRUB boot loader cannot read it.
  1. Select New.
  2. Select /boot from the Mount Point pulldown menu.
  3. Select ext3 from the File System Type pulldown menu.
  4. Select only the sda checkbox from the Allowable Drives area.
  5. Leave 100 (the default) in the Size (MB) menu.
  6. Leave the Fixed size (the default) radio button selected in the Additional Size Options area.
  7. Select Force to be a primary partition to make the partition be a primary partition. A primary partition is one of the first four partitions on the hard drive. If unselected, the partition is created as a logical partition. If other operating systems are already on the system, unselecting this option should be considered. For more information on primary versus logical/extended partitions, refer to the appendix section of the Red Hat Enterprise Linux Installation Guide.
Refer to 図10.5「Creation of the Boot Partition」 to verify your inputted values:
Creation of the Boot Partition
Creation of the Boot Partition
図10.5 Creation of the Boot Partition

Click OK to return to the main screen. The following figure displays the boot partition correctly set:
The /boot Partition Displayed
The /boot Partition Displayed
図10.6 The /boot Partition Displayed

10.4.2. LVM物理ボリュームの作成

ブートパーティションが作成されると、残りのディスク領域をLVMパーティションに割り当てることができます。LVM実装を適切に作成するには、最初に物理ボリュームを作成します。
  1. Select New.
  2. Select physical volume (LVM) from the File System Type pulldown menu as shown in 図10.7「Creating a Physical Volume」.
    Creating a Physical Volume
    Creating a Physical Volume
    図10.7 Creating a Physical Volume

  3. ここではマウントポイントの入力は出来ません(物理ボリュームとすべてのボリュームグループが作成されると可能になります)。
  4. A physical volume must be constrained to one drive. For Allowable Drives, select the drive on which the physical volume are created. If you have multiple drives, all drives are selected, and you must deselect all but one drive.
  5. 物理ボリュームに与える容量を入力します。
  6. Select Fixed size to make the physical volume the specified size, select Fill all space up to (MB) and enter a size in MBs to give range for the physical volume size, or select Fill to maximum allowable size to make it grow to fill all available space on the hard disk. If you make more than one growable, they share the available free space on the disk.
  7. Select Force to be a primary partition if you want the partition to be a primary partition.
  8. Click OK to return to the main screen.
LVM設定の為に必要なだけの複数の物理ボリュームを作成するには上記のステップを繰り返します。例えば、ボリュームグループを1つ以上のドライブに広げたい場合は、ドライブ毎に1つの物理ボリュームを作成します。以下の図は、ステップを繰り返した後の2つのドライブを示しています。
作成された2つの物理ボリューム
Two Physical Volumes Created, Ready for Volume Groups
図10.8 作成された2つの物理ボリューム

10.4.3. LVMボリュームグループの作成

全ての物理ボリュームが作成されたら、ボリュームグループを作成できます。
  1. Click the LVM button to collect the physical volumes into volume groups. A volume group is basically a collection of physical volumes. You can have multiple logical volumes, but a physical volume can only be in one volume group.

    注記

    There is overhead disk space reserved in the volume group. The volume group size is slightly less than the total of physical volume sizes.
    Creating an LVM Volume Group
    Creating an LVM Volume Group
    図10.9 Creating an LVM Volume Group

  2. Change the Volume Group Name if desired.
  3. All logical volumes inside the volume group must be allocated in physical extent (PE) units. A physical extent is an allocation unit for data.
  4. ボリュームグループ用に使用する物理ボリュームを選択します。

10.4.4. LVM論理ボリュームの作成

Create logical volumes with mount points such as /, /home, and swap space. Remember that /boot cannot be a logical volume. To add a logical volume, click the Add button in the Logical Volumes section. A dialog window as shown in 図10.10「Creating a Logical Volume」 appears.
Creating a Logical Volume
Creating a Logical Volume
図10.10 Creating a Logical Volume

作成したいボリュームグループ毎にこのステップを繰り返します。

Tip

You may want to leave some free space in the volume group so you can expand the logical volumes later. The default automatic configuration does not do this, but this manual configuration example does — approximately 1 GB is left as free space for future expansion.
Pending Logical Volumes
Pending Logical Volumes
図10.11 Pending Logical Volumes

Click OK to apply the volume group and all associated logical volumes.
以下の図は最終的な手動設定を示しています。
Final Manual Configuration
Final Manual Configuration
図10.12 Final Manual Configuration

10.5. Using the LVM utility system-config-lvm

The LVM utility allows you to manage logical volumes within X windows or graphically. You can access the application by selecting from your menu panel System > Administration > Logical Volume Management. Alternatively you can start the Logical Volume Management utility by typing system-config-lvm from a terminal.
In the example used in this section, the following are the details for the volume group that was created during the installation:
/boot - (Ext3) file system. Displayed under 'Uninitialized Entities'. (DO NOT initialize this partition).
LogVol00 - (LVM) contains the (/) directory (312 extents).
LogVol02 - (LVM) contains the (/home) directory (128 extents).
LogVol03 - (LVM) swap (28 extents).
The logical volumes above were created in disk entity /dev/hda2 while /boot was created in /dev/hda1. The system also consists of 'Uninitialized Entities' which are illustrated in 図10.17「Uninitialized Entities」. The figure below illustrates the main window in the LVM utility. The logical and the physical views of the above configuration are illustrated below. The three logical volumes exist on the same physical volume (hda2).
Main LVM Window
Main LVM Window
図10.13 Main LVM Window

The figure below illustrates the physical view for the volume. In this window, you can select and remove a volume from the volume group or migrate extents from the volume to another volume group. Steps to migrate extents are discussed in 図10.22「Migrate Extents」.
Physical View Window
Physical View Window
図10.14 Physical View Window

The figure below illustrates the logical view for the selected volume group. The logical volume size is also indicated with the individual logical volume sizes illustrated.
Logical View Window
Logical View Window
図10.15 Logical View Window

On the left side column, you can select the individual logical volumes in the volume group to view more details about each. In this example the objective is to rename the logical volume name for 'LogVol03' to 'Swap'. To perform this operation select the respective logical volume and click on the Edit Properties button. This will display the Edit Logical Volume window from which you can modify the Logical volume name, size (in extents) and also use the remaining space available in a logical volume group. The figure below illustrates this.
Please note that this logical volume cannot be changed in size as there is currently no free space in the volume group. If there was remaining space, this option would be enabled (see 図10.31「Edit logical volume」). Click on the OK button to save your changes (this will remount the volume). To cancel your changes click on the Cancel button. To revert to the last snapshot settings click on the Revert button. A snapshot can be created by clicking on the Create Snapshot button on the LVM utility window. If the selected logical volume is in use by the system (for example) the / (root) directory, this task will not be successful as the volume cannot be unmounted.
Edit Logical Volume
Edit Logical Volume
図10.16 Edit Logical Volume

10.5.1. Utilizing uninitialized entities

'Uninitialized Entities' consist of unpartitioned space and non LVM file systems. In this example partitions 3, 4, 5, 6 and 7 were created during installation and some unpartitioned space was left on the hard disk. Please view each partition and ensure that you read the 'Properties for Disk Entity' on the right column of the window to ensure that you do not delete critical data. In this example partition 1 cannot be initialized as it is /boot. Uninitialized entities are illustrated below.
Uninitialized Entities
Uninitialized Entities
図10.17 Uninitialized Entities

In this example, partition 3 will be initialized and added to an existing volume group. To initialize a partition or unpartioned space, select the partition and click on the Initialize Entity button. Once initialized, a volume will be listed in the 'Unallocated Volumes' list.

10.5.2. Adding Unallocated Volumes to a volume group

Once initialized, a volume will be listed in the 'Unallocated Volumes' list. The figure below illustrates an unallocated partition (Partition 3). The respective buttons at the bottom of the window allow you to:
  • create a new volume group,
  • add the unallocated volume to an existing volume group,
  • remove the volume from LVM.
To add the volume to an existing volume group, click on the Add to Existing Volume Group button.
Unallocated Volumes
Unallocated Volumes
図10.18 Unallocated Volumes

Clicking on the Add to Existing Volume Group button will display a pop up window listing the existing volume groups to which you can add the physical volume you are about to initialize. A volume group may span across one or more hard disks. In this example only one volume group exists as illustrated below.
Add physical volume to volume group
Add physical volume to volume group
図10.19 Add physical volume to volume group

Once added to an existing volume group the new logical volume is automatically added to the unused space of the selected volume group. You can use the unused space to:
  • create a new logical volume (click on the Create New Logical Volume(s) button,
  • select one of the existing logical volumes and increase the extents (see 「Extending a volume group」),
  • select an existing logical volume and remove it from the volume group by clicking on the Remove Selected Logical Volume(s) button. Please note that you cannot select unused space to perform this operation.
The figure below illustrates the logical view of 'VolGroup00' after adding the new volume group.
Logical view of volume group
Logical view of volume group
図10.20 Logical view of volume group

In the figure below, the uninitialized entities (partitions 3, 5, 6 and 7) were added to 'VolGroup00'.
Logical view of volume group
Logical view of volume group
図10.21 Logical view of volume group

10.5.3. Migrating extents

To migrate extents from a physical volume, select the volume and click on the Migrate Selected Extent(s) From Volume button. Please note that you need to have a sufficient number of free extents to migrate extents within a volume group. An error message will be displayed if you do not have a sufficient number of free extents. To resolve this problem, please extend your volume group (see 「Extending a volume group」). If a sufficient number of free extents is detected in the volume group, a pop up window will be displayed from which you can select the destination for the extents or automatically let LVM choose the physical volumes (PVs) to migrate them to. This is illustrated below.
Migrate Extents
Migrate Extents
図10.22 Migrate Extents

The figure below illustrates a migration of extents in progress. In this example, the extents were migrated to 'Partition 3'.
Migrating extents in progress
Migrating extents in progress
図10.23 Migrating extents in progress

Once the extents have been migrated, unused space is left on the physical volume. The figure below illustrates the physical and logical view for the volume group. Please note that the extents of LogVol00 which were initially in hda2 are now in hda3. Migrating extents allows you to move logical volumes in case of hard disk upgrades or to manage your disk space better.
Logical and physical view of volume group
Logical and physical view of volume group
図10.24 Logical and physical view of volume group

10.5.4. Adding a new hard disk using LVM

In this example, a new IDE hard disk was added. The figure below illustrates the details for the new hard disk. From the figure below, the disk is uninitialized and not mounted. To initialize a partition, click on the Initialize Entity button. For more details, see 「Utilizing uninitialized entities」. Once initialized, LVM will add the new volume to the list of unallocated volumes as illustrated in 図10.26「Create new volume group」.
Uninitialized hard disk
Uninitialized hard disk
図10.25 Uninitialized hard disk

10.5.5. Adding a new volume group

Once initialized, LVM will add the new volume to the list of unallocated volumes where you can add it to an existing volume group or create a new volume group. You can also remove the volume from LVM. The volume if removed from LVM will be listed in the list of 'Uninitialized Entities' as illustrated in 図10.25「Uninitialized hard disk」. In this example, a new volume group was created as illustrated below.
Create new volume group
Create new volume group
図10.26 Create new volume group

Once created a new volume group will be displayed in the list of existing volume groups as illustrated below. The logical view will display the new volume group with unused space as no logical volumes have been created. To create a logical volume, select the volume group and click on the Create New Logical Volume button as illustrated below. Please select the extents you wish to use on the volume group. In this example, all the extents in the volume group were used to create the new logical volume.
Create new logical volume
Create new logical volume
図10.27 Create new logical volume

The figure below illustrates the physical view of the new volume group. The new logical volume named 'Backups' in this volume group is also listed.
Physical view of new volume group
Physical view of new volume group
図10.28 Physical view of new volume group

10.5.6. Extending a volume group

In this example, the objective was to extend the new volume group to include an uninitialized entity (partition). This was to increase the size or number of extents for the volume group. To extend the volume group, click on the Extend Volume Group button. This will display the 'Extend Volume Group' window as illustrated below. On the 'Extend Volume Group' window, you can select disk entities (partitions) to add to the volume group. Please ensure that you check the contents of any 'Uninitialized Disk Entities' (partitions) to avoid deleting any critical data (see 図10.25「Uninitialized hard disk」). In the example, the disk entity (partition) /dev/hda6 was selected as illustrated below.
Select disk entities
Select disk entities
図10.29 Select disk entities

Once added, the new volume will be added as 'Unused Space' in the volume group. The figure below illustrates the logical and physical view of the volume group after it was extended.
Logical and physical view of an extended volume group
Logical and physical view of an extended volume group
図10.30 Logical and physical view of an extended volume group

10.5.7. Editing a Logical Volume

The LVM utility allows you to select a logical volume in the volume group and modify its name, size and specify filesystem options. In this example, the logical volume named 'Backups" was extended onto the remaining space for the volume group.
Clicking on the Edit Properties button will display the 'Edit Logical Volume' popup window from which you can edit the properties of the logical volume. On this window, you can also mount the volume after making the changes and mount it when the system is rebooted. Please note that you should indicate the mount point. If the mount point you specify does not exist, a popup window will be displayed prompting you to create it. The 'Edit Logical Volume' window is illustrated below.
Edit logical volume
Edit logical volume
図10.31 Edit logical volume

If you wish to mount the volume, select the 'Mount' checkbox indicating the preferred mount point. To mount the volume when the system is rebooted, select the 'Mount when rebooted' checkbox. In this example, the new volume will be mounted in /mnt/backups. This is illustrated in the figure below.
Edit logical volume - specifying mount options
Edit logical volume - specifying mount options
図10.32 Edit logical volume - specifying mount options

The figure below illustrates the logical and physical view of the volume group after the logical volume was extended to the unused space. Please note in this example that the logical volume named 'Backups' spans across two hard disks. A volume can be striped across two or more physical devices using LVM.
Edit logical volume
Edit logical volume
図10.33 Edit logical volume

10.6. Additional Resources

Use these sources to learn more about LVM.

10.6.1. Installed Documentation

  • rpm -qd lvm2 — This command shows all the documentation available from the lvm package, including man pages.
  • lvm help — This command shows all LVM commands available.

10.6.2. Useful Websites

パート II. パッケージ管理

Red Hat Enterprise Linux システム上の全てのソフトウェアは、 RPM パッケージに分割されており、これらがインストール、アップグレード、あるいは削除を可能にします。このセクションでは、 Red Hat Enterprise Linux システムでグラフィカル、及びコマンドラインのツールを使用した RPM パッケージの管理法を説明しています。

目次

11. RPMによるパッケージ管理
11.1. RPM の設計目標
11.2. RPMの使用法
11.2.1. RPM パッケージの検索
11.2.2. インストール
11.2.3. アンインストール
11.2.4. アップグレード
11.2.5. freshenの実行
11.2.6. 問い合わせ
11.2.7. 検証
11.3. Checking a Package's Signature
11.3.1. キーのインポート
11.3.2. パッケージ署名の検証
11.4. Practical and Common Examples of RPM Usage
11.5. その他のリソース
11.5.1. インストールされているドキュメント
11.5.2. 役に立つWebサイト
11.5.3. 関連書籍
12. Package Management Tool
12.1. Listing and Analyzing Packages
12.2. Installing and Removing Packages
13. YUM (Yellowdog Updater Modified)
13.1. Setting Up a Yum Repository
13.2. yum Commands
13.3. yum Options
13.4. Configuring yum
13.4.1. [main] Options
13.4.2. [repository] Options
13.5. Useful yum Variables
14. Product Subscriptions and Entitlements
14.1. An Overview of Managing Subscriptions and Content
14.1.1. The Purpose of Subscription Management
14.1.2. Defining Subscriptions, Entitlements, and Products
14.1.3. Subscription Management Tools
14.1.4. Subscription and Content Architecture
14.1.5. Advanced Content Management: Extended Update Support
14.1.6. RHN Classic v. Certificate-based Red Hat Network
14.2. Using Red Hat Subscription Manager Tools
14.2.1. Launching Red Hat Subscription Manager
14.2.2. About subscription-manager
14.2.3. Looking at RHN Subscription Management
14.2.4. Looking at Subscription Asset Manager
14.3. Managing Special Deployment Scenarios
14.3.1. Local Subscription Services, Local Content Providers, and Multi-Tenant Organizations
14.3.2. Virtual Guests and Hosts
14.3.3. Domains
14.4. Registering, Unregistering, and Reregistering a System
14.4.1. Registering Consumers in the Hosted Environment
14.4.2. Registering Consumers to a Local Organization
14.4.3. Registering an Offline Consumer
14.4.4. Registering from the Command Line
14.4.5. Unregistering
14.4.6. Restoring a Registration
14.5. Migrating Systems from RHN Classic to Certificate-based Red Hat Network
14.5.1. Installing the Migration Tools
14.5.2. Migrating from RHN Classic to Certificate-based Red Hat Network
14.5.3. Unregistering from RHN Classic Only
14.5.4. Migrating a Disconnected System
14.5.5. Looking at Channel and Certificate Mappings
14.6. Handling Subscriptions
14.6.1. Subscribing and Unsubscribing through the Red Hat Subscription Manager GUI
14.6.2. Handling Subscriptions through the Command Line
14.6.3. Stacking Subscriptions
14.6.4. Manually Adding a New Subscription
14.7. Redeeming Subscriptions on a Machine
14.7.1. Redeeming Subscriptions through the GUI
14.7.2. Redeeming Subscriptions on a Machine through the Command Line
14.8. Viewing Available and Used Subscriptions
14.8.1. Viewing Subscriptions in the GUI
14.8.2. Listing Subscriptions with the Command Line
14.8.3. Viewing Subscriptions Used in Both RHN Classic and Certificate-based Red Hat Network
14.9. Working with Subscription yum Repos
14.10. Responding to Subscription Notifications
14.11. Healing Subscriptions
14.11.1. Enabling Healing
14.11.2. Changing the Healing Check Frequency
14.12. Working with Subscription Asset Manager
14.12.1. Configuring Subscription Manager to Work with Subscription Asset Manager
14.12.2. Viewing Organization Information
14.13. Updating Entitlements Certificates
14.13.1. Updating Entitlement Certificates
14.13.2. Updating Subscription Information
14.14. Configuring the Subscription Service
14.14.1. Red Hat Subscription Manager Configuration Files
14.14.2. Using the config Command
14.14.3. Using an HTTP Proxy
14.14.4. Changing the Subscription Server
14.14.5. Configuring Red Hat Subscription Manager to Use a Local Content Provider
14.14.6. Managing Secure Connections to the Subscription Server
14.14.7. Starting and Stopping the Subscription Service
14.14.8. Checking Logs
14.14.9. Showing and Hiding Incompatible Subscriptions
14.14.10. Checking and Adding System Facts
14.14.11. Regenerating Identity Certificates
14.14.12. Getting the System UUID
14.14.13. Viewing Package Profiles
14.14.14. Retrieving the Consumer ID, Registration Tokens, and Other Information
14.15. About Certificates and Managing Entitlements
14.15.1. The Structure of Identity Certificates
14.15.2. The Structure of Entitlement Certificates
14.15.3. The Structure of Product Certificates
14.15.4. Anatomy of Satellite Certificates

第11章 RPMによるパッケージ管理

The RPM Package Manager (RPM) is an open packaging system, which runs on Red Hat Enterprise Linux as well as other Linux and UNIX systems. Red Hat, Inc. encourages other vendors to use RPM for their own products. RPM is distributed under the terms of the GPL.
The utility works only with packages built for processing by the rpm package. For the end user, RPM makes system updates easy. Installing, uninstalling, and upgrading RPM packages can be accomplished with short commands. RPM maintains a database of installed packages and their files, so you can invoke powerful queries and verifications on your system. If you prefer a graphical interface, you can use the Package Management Tool to perform many RPM commands. Refer to 12章Package Management Tool for details.

重要

When installing a package, please ensure it is compatible with your operating system and architecture. This can usually be determined by checking the package name.
During upgrades, RPM handles configuration files carefully, so that you never lose your customizations — something that you cannot accomplish with regular .tar.gz files.
開発者にとっては、RPM を使用することにより、ソフトウェアのソースコード を取り出し、 エンドユーザー用にソースとバイナリパッケージにパッケージ化することができます。このプロセスは極めて単純で、ひとつのファイルと作成するオプションのパッチから操作することができます。 ビルトの指示に加えて純粋なソースとパッチの明確な 違いが、ソフトウェアの新しいバージョンがリリースされたときにパッケージの管理を 容易にします。

注記

Because RPM makes changes to your system, you must be logged in as root to install, remove, or upgrade an RPM package.

11.1. RPM の設計目標

To understand how to use RPM, it can be helpful to understand the design goals of RPM:
アップグレードの可能性
With RPM, you can upgrade individual components of your system without completely reinstalling. When you get a new release of an operating system based on RPM (such as Red Hat Enterprise Linux), you do not need to reinstall on your machine (as you do with operating systems based on other packaging systems). RPM allows intelligent, fully-automated, in-place upgrades of your system. Configuration files in packages are preserved across upgrades, so you do not lose your customizations. There are no special upgrade files needed to upgrade a package because the same RPM file is used to install and upgrade the package on your system.
強力な問い合わせ
RPM では、強力な問い合わせオプションが提供されて います。データベース全体を通じてパッケージを検索したり、 特定のファイル群のみを検索したりすることができます。 あるファイルがどのパッケージに属し、パッケージがどこから 来たのかをも簡単に検索することができます。RPM パッケージ に含まれるファイルは圧縮アーカイブ形式であり、パッケージと その内容に関する有用な情報を含むカスタムバイナリヘッダーが 付いているため、個別のパッケージをすばやく簡単に問い合わせ することができます。
システムの検証
Another powerful RPM feature is the ability to verify packages. If you are worried that you deleted an important file for some package, you can verify the package. You are then notified of any anomalies, if any — at which point, you can reinstall the package if necessary. Any configuration files that you modified are preserved during reinstallation.
純粋なソース
A crucial design goal was to allow the use of pristine software sources, as distributed by the original authors of the software. With RPM, you have the pristine sources along with any patches that were used, plus complete build instructions. This is an important advantage for several reasons. For instance, if a new version of a program is released, you do not necessarily have to start from scratch to get it to compile. You can look at the patch to see what you might need to do. All the compiled-in defaults, and all of the changes that were made to get the software to build properly, are easily visible using this technique.
The goal of keeping sources pristine may seem important only for developers, but it results in higher quality software for end users, too.

11.2. RPMの使用法

RPM has five basic modes of operation (not counting package building): installing, uninstalling, upgrading, querying, and verifying. This section contains an overview of each mode. For complete details and options, try rpm --help or man rpm. You can also refer to 「その他のリソース」 for more information on RPM.

11.2.1. RPM パッケージの検索

Before using any RPM packages, you must know where to find them. An Internet search returns many RPM repositories, but if you are looking for RPM packages built by Red Hat, they can be found at the following locations:

11.2.2. インストール

RPM packages typically have file names like foo-1.0-1.i386.rpm. The file name includes the package name (foo), version (1.0), release (1), and architecture (i386). To install a package, log in as root and type the following command at a shell prompt:
rpm -ivh foo-1.0-1.i386.rpm
Alternatively, the following command can also be used:
rpm -Uvh foo-1.0-1.i386.rpm
If the installation is successful, the following output is displayed:
Preparing...                ########################################### [100%]
   1:foo                    ########################################### [100%]
As you can see, RPM prints out the name of the package and then prints a succession of hash marks as a progress meter while the package is installed.
パッケージの署名は、パッケージのインストールまたはアップグレード時に自動的にチェックされます。署名により、パッケージが認証機関によって署名されたことを確認できます。たとえば、署名の検証が失敗すると、次のようなエラーメッセージが表示されます。
error: V3 DSA signature: BAD, key ID 0352860f
ヘッダのみの新しい署名なら、次のようなエラーメッセージが表示されます。
error: Header V3 DSA signature: BAD, key ID 0352860f
If you do not have the appropriate key installed to verify the signature, the message contains the word NOKEY such as:
warning: V3 DSA signature: NOKEY, key ID 0352860f
Refer to 「Checking a Package's Signature」 for more information on checking a package's signature.

警告

If you are installing a kernel package, you should use rpm -ivh instead. Refer to 42章カーネルをアップグレードする for details.

11.2.2.1. すでにインストールされているパッケージ

If a package of the same name and version is already installed, the following output is displayed:
Preparing...                ########################################### [100%]
package foo-1.0-1 is already installed
However, if you want to install the package anyway, you can use the --replacepkgs option, which tells RPM to ignore the error:
rpm -ivh --replacepkgs foo-1.0-1.i386.rpm
このオプションは、RPM からインストールされた ファイルが削除された場合や、RPM からオリジナルの 設定ファイルをインストールしたい場合に便利です。

11.2.2.2. ファイルの競合

If you attempt to install a package that contains a file which has already been installed by another package, the following is displayed:
Preparing...                ########################################### [100%]
file /usr/bin/foo from install of foo-1.0-1 conflicts with file from package bar-2.0.20
To make RPM ignore this error, use the --replacefiles option:
rpm -ivh --replacefiles foo-1.0-1.i386.rpm

11.2.2.3. 未解決の依存

RPM packages may sometimes depend on other packages, which means that they require other packages to be installed to run properly. If you try to install a package which has an unresolved dependency, output similar to the following is displayed:
error: Failed dependencies:
        bar.so.2 is needed by foo-1.0-1
Suggested resolutions:
	bar-2.0.20-3.i386.rpm
If you are installing a package from the Red Hat Enterprise Linux CD-ROM set, it usually suggest the package(s) needed to resolve the dependency. Find the suggested package(s) on the Red Hat Enterprise Linux CD-ROMs or from Red Hat Network , and add it to the command:
rpm -ivh foo-1.0-1.i386.rpm bar-2.0.20-3.i386.rpm
両方のパッケージのインストールが正常に行なわれると、以下のような出力が表示されます。
Preparing...                ########################################### [100%]
   1:foo                    ########################################### [ 50%]
   2:bar                    ########################################### [100%]
If it does not suggest a package to resolve the dependency, you can try the -q --whatprovides option combination to determine which package contains the required file.
rpm -q --whatprovides bar.so.2
とにかくインストールをそのまま強制するには(パッケージが正常には動作しない場合があるので推奨されません)、--nodepsオプションを使用します。

11.2.3. アンインストール

パッケージのアンインストールは、インストールと 同様、簡単に実行できます。シェルプロンプトで以下の コマンドを入力します。
rpm -e foo

注記

Notice that we used the package name foo, not the name of the original package file foo-1.0-1.i386.rpm. To uninstall a package, replace foo with the actual package name of the original package.
削除しようとしているパッケージに別のインストール されているパッケージが依存している場合、アンインストール 時に依存関係エラーが発生することがあります。 たとえば、
error: Failed dependencies:
	foo is needed by (installed) bar-2.0.20-3.i386.rpm
To make RPM ignore this error and uninstall the package anyway (which may break the package dependent on it) use the --nodeps option.

11.2.4. アップグレード

パッケージのアップグレードはインストールと 似ています。シェルプロンプトで以下のコマンドを 入力します。
rpm -Uvh foo-2.0-1.i386.rpm
As part of upgrading a package, RPM automatically uninstalls any old versions of the foo package. Note that -U will also install a package even when there are no previous versions of the package installed.

Tip

It is not advisable to use the -U option for installing kernel packages, because RPM replaces the previous kernel package. This does not affect a running system, but if the new kernel is unable to boot during your next restart, there would be no other kernel to boot instead.
Using the -i option adds the kernel to your GRUB boot menu (/etc/grub.conf). Similarly, removing an old, unneeded kernel removes the kernel from GRUB.
RPMは設定ファイルを使用したパッケージのインテリジェントなアップグレードを行うので、以下のようなメッセージが表示されることもあります。
saving /etc/foo.conf as /etc/foo.conf.rpmsave
This message means that changes you made to the configuration file may not be forward compatible with the new configuration file in the package, so RPM saved your original file and installed a new one. You should investigate the differences between the two configuration files and resolve them as soon as possible, to ensure that your system continues to function properly.
If you attempt to upgrade to a package with an older version number (that is, if a more updated version of the package is already installed), the output is similar to the following:
package foo-2.0-1 (which is newer than foo-1.0-1) is already installed
To force RPM to upgrade anyway, use the --oldpackage option:
rpm -Uvh --oldpackage foo-1.0-1.i386.rpm

11.2.5. freshenの実行

Freshening is similar to upgrading, except that only existent packages are upgraded. Type the following command at a shell prompt:
rpm -Fvh foo-1.2-1.i386.rpm
RPM's freshen option checks the versions of the packages specified on the command line against the versions of packages that have already been installed on your system. When a newer version of an already-installed package is processed by RPM's freshen option, it is upgraded to the newer version. However, RPM's freshen option does not install a package if no previously-installed package of the same name exists. This differs from RPM's upgrade option, as an upgrade does install packages whether or not an older version of the package was already installed.
Freshening works for single packages or package groups. If you have just downloaded a large number of different packages, and you only want to upgrade those packages that are already installed on your system, freshening does the job. Thus, you do not have to delete any unwanted packages from the group that you downloaded before using RPM.
この場合、以下のコマンドを発行します。
rpm -Fvh *.rpm
RPMはすでにインストールされているパッケージのみ自動的にアップグレードします。

11.2.6. 問い合わせ

The RPM database stores information about all RPM packages installed in your system. It is stored in the directory /var/lib/rpm/, and is used to query what packages are installed, what versions each package is, and any changes to any files in the package since installation, among others.
To query this database, use the -q option. The rpm -q package name command displays the package name, version, and release number of the installed package package name . For example, using rpm -q foo to query installed package foo might generate the following output:
foo-2.0-1
You can also use the following Package Selection Options with -q to further refine or qualify your query:
  • -a — queries all currently installed packages.
  • -f <filename> — queries the RPM database for which package owns f<filename> . When specifying a file, specify the absolute path of the file (for example, rpm -qf /bin/ls ).
  • -p <packagefile> — queries the uninstalled package <packagefile> .
There are a number of ways to specify what information to display about queried packages. The following options are used to select the type of information for which you are searching. These are called Package Query Options.
  • -i displays package information including name, description, release, size, build date, install date, vendor, and other miscellaneous information.
  • -l displays the list of files that the package contains.
  • -s displays the state of all the files in the package.
  • -d displays a list of files marked as documentation (man pages, info pages, READMEs, etc.).
  • -c displays a list of files marked as configuration files. These are the files you edit after installation to adapt and customize the package to your system (for example, sendmail.cf, passwd, inittab, etc.).
For options that display lists of files, add -v to the command to display the lists in a familiar ls -l format.

11.2.7. 検証

パッケージの検証では、パッケージからインストール されたファイルに関する情報と、元のパッケージに含まれる ファイルに関する情報が同一かどうか調べます。 検証により、各ファイルのサイズ、MD5チェックサム、 権限、タイプ、所有者、グループを始め、さまざまなこと が比較されます。
The command rpm -V verifies a package. You can use any of the Verify Options listed for querying to specify the packages you wish to verify. A simple use of verifying is rpm -V foo, which verifies that all the files in the foo package are as they were when they were originally installed. For example:
  • 特定のファイルを含むパッケージを検証するには、
    rpm -Vf /usr/bin/foo
    In this example, /usr/bin/foo is the absolute path to the file used to query a package.
  • To verify ALL installed packages throughout the system:
    rpm -Va
  • インストールされているパッケージと、 RPM パッケージファイルとを検証するには、
    rpm -Vp foo-1.0-1.i386.rpm
    RPM データベースが破損した疑いがある場合に、 このコマンドが役立ちます。
If everything verified properly, there is no output. If there are any discrepancies, they are displayed. The format of the output is a string of eight characters (a c denotes a configuration file) and then the file name. Each of the eight characters denotes the result of a comparison of one attribute of the file to the value of that attribute recorded in the RPM database. A single period (.) means the test passed. The following characters denote specific discrepancies:
  • 5 — MD5 checksum
  • S — file size
  • L — symbolic link
  • T — file modification time
  • D — device
  • U — user
  • G — group
  • M — mode (includes permissions and file type)
  • ? — unreadable file
If you see any output, use your best judgment to determine if you should remove the package, reinstall it, or fix the problem in another way.

11.3. Checking a Package's Signature

If you wish to verify that a package has not been corrupted or tampered with, examine only the md5sum by typing the following command at a shell prompt (where <rpm-file> is the file name of the RPM package):
rpm -K --nosignature <rpm-file>
The message <rpm-file>: md5 OK is displayed. This brief message means that the file was not corrupted by the download. To see a more verbose message, replace -K with -Kvv in the command.
On the other hand, how trustworthy is the developer who created the package? If the package is signed with the developer's GnuPG key, you know that the developer really is who they say they are.
RPMパッケージはGnu Privacy Guard (GnuPG)を使用して署名でき、これによりユーザーはダウンロードしたパッケージが信頼できるものであることを確認できます。
GnuPGは安全な通信のためのツールで、PGPの暗号化技術である電子プライバシー保護プログラムを完全に無償で置き換えたものです。GnuPGを使用して、ドキュメントの正当性を認証し、他の受信者との間で送受信するデータを暗号化/解読することができます。GnuPGは、PGP 5.xのファイルについても同様に 解読、認証を行うことが可能です。
During installation, GnuPG is installed by default. That way you can immediately start using GnuPG to verify any packages that you receive from Red Hat. Before doing so, you must first import Red Hat's public key.

11.3.1. キーのインポート

To verify Red Hat packages, you must import the Red Hat GPG key. To do so, execute the following command at a shell prompt:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
RPM検証用にインストールされたすべてのキーの一覧を 表示するには、次のコマンドを実行します。
rpm -qa gpg-pubkey*
For the Red Hat key, the output includes:
gpg-pubkey-37017186-45761324
To display details about a specific key, use rpm -qi followed by the output from the previous command:
rpm -qi gpg-pubkey-37017186-45761324

11.3.2. パッケージ署名の検証

To check the GnuPG signature of an RPM file after importing the builder's GnuPG key, use the following command (replace <rpm-file> with the filename of the RPM package):
rpm -K <rpm-file>
If all goes well, the following message is displayed: md5 gpg OK. This means that the signature of the package has been verified, and that it is not corrupt.

11.4. Practical and Common Examples of RPM Usage

RPMはシステムの管理や問題の診断及び修正に役に立つ ツールです。これらのすべてのオプションを理解する 最善の方法はいくつかの例を見ることでしょう。
  • 誤って何らかのファイルを削除してしまったものの、 何を削除したかわからないとします。 システム全体を検証して足りないものを調べるには、以下のコマンドを試すことができます。
    rpm -Va
    足りないファイルがあるか、壊れているファイルが あるように見える場合は、おそらくパッケージを再インストールするか、いったんアンインストールして 再インストールする必要があります。
  • 所属先のわからないファイルを見つけたとします。そのファイルが含まれるパッケージを検索するには、以下のように入力します。
    rpm -qf /usr/bin/ggv
    出力は以下のようになります。
    ggv-2.6.0-2
  • We can combine the above two examples in the following scenario. Say you are having problems with /usr/bin/paste. You would like to verify the package that owns that program, but you do not know which package owns paste. Enter the following command,
    rpm -Vf /usr/bin/paste
    該当するパッケージが検証されます。
  • 特定のプログラムに関して詳細な情報が必要 なら、次のコマンドを入力して、そのプログラムの入った パッケージに付随するドキュメントを検索することが できます。
    rpm -qdf /usr/bin/free
    出力は以下のようになります。
    /usr/share/doc/procps-3.2.3/BUGS
    /usr/share/doc/procps-3.2.3/FAQ
    /usr/share/doc/procps-3.2.3/NEWS
    /usr/share/doc/procps-3.2.3/TODO
    /usr/share/man/man1/free.1.gz
    /usr/share/man/man1/pgrep.1.gz
    /usr/share/man/man1/pkill.1.gz
    /usr/share/man/man1/pmap.1.gz
    /usr/share/man/man1/ps.1.gz
    /usr/share/man/man1/skill.1.gz
    /usr/share/man/man1/slabtop.1.gz
    /usr/share/man/man1/snice.1.gz
    /usr/share/man/man1/tload.1.gz
    /usr/share/man/man1/top.1.gz
    /usr/share/man/man1/uptime.1.gz
    /usr/share/man/man1/w.1.gz
    /usr/share/man/man1/watch.1.gz
    /usr/share/man/man5/sysctl.conf.5.gz
    /usr/share/man/man8/sysctl.8.gz
    /usr/share/man/man8/vmstat.8.gz
  • 新しいRPMパッケージ が見つかったものの、それが何であるかがわからないと します。それに関する情報を検索するには、以下のコマンド を使用します。
    rpm -qip crontabs-1.10-7.noarch.rpm
    出力は以下のようになります。
    Name        : crontabs                     Relocations: (not relocatable)
    Version     : 1.10                              Vendor: Red Hat, Inc.
    Release     : 7                             Build Date: Mon 20 Sep 2004 05:58:10 PM EDT
    Install Date: (not installed)               Build Host: tweety.build.redhat.com
    Group       : System Environment/Base       Source RPM: crontabs-1.10-7.src.rpm
    Size        : 1004                             License: Public Domain
    Signature   : DSA/SHA1, Wed 05 Jan 2005 06:05:25 PM EST, Key ID 219180cddb42a60e
    Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
    Summary     : Root crontab files used to schedule the execution of programs.
    Description : The crontabs package contains root crontab files. Crontab is the
    program used to install, uninstall, or list the tables used to drive the
    cron daemon. The cron daemon checks the crontab files to see when
    particular commands are scheduled to be executed. If commands are
    scheduled, then it executes them.
  • Perhaps you now want to see what files the crontabs RPM installs. You would enter the following:
    rpm -qlp crontabs-1.10-5.noarch.rpm
    出力は以下のようになります。
    /etc/cron.daily
    /etc/cron.hourly
    /etc/cron.monthly
    /etc/cron.weekly
    /etc/crontab
    /usr/bin/run-parts
These are just a few examples. As you use RPM, you may find more uses for it.

11.5. その他のリソース

RPM は、パッケージの問い合わせ、インストール、アップグレード、 削除を実行するためのたくさんのオプションや方法がある 非常に複雑なユーティリティです。RPM の詳細については、 以下のリソースを参照してください。

11.5.1. インストールされているドキュメント

  • rpm --help — This command displays a quick reference of RPM parameters.
  • man rpm — The RPM man page gives more detail about RPM parameters than the rpm --help command.

11.5.2. 役に立つWebサイト

第12章 Package Management Tool

If you prefer to use a graphical interface to view and manage packages in your system, you can use the Package Management Tool, better known as pirut. This tool allows you to perform basic package management of your system through an easy-to-use interface to remove installed packages or download (and install) packages compatible to your system. It also allows you to view what packages are installed in your system and which ones are available for download from Red Hat Network. In addition, the Package Management Tool also automatically resolves any critical dependencies when you install or remove packages in the same way that the rpm command does.

Note

While the Package Management Tool can automatically resolve dependencies during package installation and removal, it cannot perform a forced install / remove the same way that rpm -e --nodeps or rpm -U --nodeps can.
The X Window System is required to run the Package Management Tool. To start the application, go to Applications (the main menu on the panel) > Add/Remove Software. Alternatively, you can type the commands system-config-packages or pirut at shell prompt.
Package Management Tool
Package Management Tool
図12.1 Package Management Tool

12.1. Listing and Analyzing Packages

You can use the Package Management Tool to search and list all packages installed in your system, as well as any packages available for you to download. The Browse, Search, and List tabs present different options in viewing, analyzing, installing or removing packages.
The Browse tab allows you to view packages by group. In 図12.1「Package Management Tool」, the left window shows the different package group types you can choose from (for example, Desktop Environments, Applications, Development and more). When a package group type is selected, the right window displays the different package groups of that type.
To view what packages are included in a package group, click Optional packages. Installed packages are checked.
Optional Packages
Optional Packages
図12.2 Optional Packages

The List tab displays a list of packages installed or available for download. Packages already installed in your system are marked with a green check ( ).
By default, the All packages option above the main window is selected; this specifies that all packages be displayed. Use the Installed packages option to display only packages that are already installed in your system, and the Available packages option to view what packages you can download and install.
The Search tab allows you to use keywords to search for particular packages. This tab also allows you to view a short description of a package. To do so, simply select a package and click the Package Details button below the main window.

12.2. Installing and Removing Packages

To install a package available for download, click the checkbox beside the package name. When you do so, an installation icon ( ) appears beside its checkbox. This indicates that the package is queued for download and installation. You can select multiple packages to download and install; once you have made your selection, click the Apply button.
Package installation
Package installation
図12.3 Package installation

If there are any package dependencies for your selected downloads, the Package Management Tool will notify you accordingly. Click Details to view what additional packages are needed. To proceed with downloading and installing the package (along with all other dependent packages) click Continue.
Package dependencies: installation
Package dependencies: installation
図12.4 Package dependencies: installation

Removing a package can be done in a similar manner. To remove a package installed in your system, click the checkbox beside the package name. The green check appearing beside the package name will be replaced by a package removal icon ( ). This indicates that the package is queued for removal; you can also select multiple packages to be removed at the same time. Once you have selected the packages you want to remove, click the Apply button.
Package removal
Package removal
図12.5 Package removal

Note that if any other installed packages are dependent on the package you are removing, they will be removed as well. The Package Management Tool will notify you if there are any such dependencies. Click Details to view what packages are dependent on the one you are removing. To proceed with removing your selected package/s (along with all other dependent packages) click Continue.
Package dependencies: removal
Package dependencies: removal
図12.6 Package dependencies: removal

You can install and remove multiple packages by selecting packages to be installed / removed and then clicking Apply. The Package selections window displays the number of packages to be installed and removed.
Installing and removing packages simultaneously
Installing and removing packages simultaneously
図12.7 Installing and removing packages simultaneously

第13章 YUM (Yellowdog Updater Modified)

Yellowdog Update, Modified (YUM) is a package manager that was developed by Duke University to improve the installation of RPMs. yum searches numerous repositories for packages and their dependencies so they may be installed together in an effort to alleviate dependency issues. Red Hat Enterprise Linux 5.8 uses yum to fetch packages and install RPMs.
up2date is now deprecated in favor of yum (Yellowdog Updater Modified). The entire stack of tools which installs and updates software in Red Hat Enterprise Linux 5.8 is now based on yum. This includes everything, from the initial installation via Anaconda to host software management tools like pirut.
yum also allows system administrators to configure a local (i.e. available over a local network) repository to supplement packages provided by Red Hat. This is useful for user groups that use applications and packages that are not officially supported by Red Hat.
Aside from being able to supplement available packages for local users, using a local yum repository also saves bandwidth for the entire network. Further, clients that use local yum repositories do not need to be registered individually to install or update the latest packages from Red Hat Network.

13.1. Setting Up a Yum Repository

To set up a repository for Red Hat Enterprise Linux packages, follow these steps:
  1. Install the createrepo package:
    ~]# yum install createrepo
  2. Copy all the packages you want to provide in the repository into one directory (/mnt/local_repo for example).
  3. Run createrepo on that directory (for example, createrepo /mnt/local_repo). This will create the necessary metadata for your Yum repository.

13.2. yum Commands

yum commands are typically run as yum <command> <package name/s> . By default, yum will automatically attempt to check all configured repositories to resolve all package dependencies during an installation/upgrade.
The following is a list of the most commonly-used yum commands. For a complete list of available yum commands, refer to man yum.
yum install <package name/s>
Used to install the latest version of a package or group of packages. If no package matches the specified package name(s), they are assumed to be a shell glob, and any matches are then installed.
yum update <package name/s>
Used to update the specified packages to the latest available version. If no package name/s are specified, then yum will attempt to update all installed packages.
If the --obsoletes option is used (i.e. yum --obsoletes <package name/s> , yum will process obsolete packages. As such, packages that are obsoleted across updates will be removed and replaced accordingly.
yum check-update
This command allows you to determine whether any updates are available for your installed packages. yum returns a list of all package updates from all repositories if any are available.
yum remove <package name/s>
Used to remove specified packages, along with any other packages dependent on the packages being removed.
yum provides <file name>
Used to determine which packages provide a specific file or feature.
yum search <keyword>
This command is used to find any packages containing the specified keyword in the description, summary, packager and package name fields of RPMs in all repositories.
yum localinstall <absolute path to package name/s>
Used when using yum to install a package located locally in the machine.

13.3. yum Options

yum options are typically stated before specific yum commands; i.e. yum <options> <command> <package name/s> . Most of these options can be set as default using the configuration file.
The following is a list of the most commonly-used yum options. For a complete list of available yum options, refer to man yum.
-y
Answer "yes" to every question in the transaction.
-t
Sets yum to be "tolerant" of errors with regard to packages specified in the transaction. For example, if you run yum update package1 package2 and package2 is already installed, yum will continue to install package1.
--exclude=<package name>
Excludes a specific package by name or glob in a specific transaction.

13.4. Configuring yum

By default, yum is configured through /etc/yum.conf. The following is an example of a typical /etc/yum.conf file:
[main]
cachedir=/var/cache/yum
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
distroverpkg=redhat-release
tolerant=1
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
metadata_expire=1800
[myrepo]
name=RHEL 5 $releasever - $basearch
baseurl=http://local/path/to/yum/repository/
enabled=1
A typical /etc/yum.conf file is made up of two types of sections: a [main] section, and a repository section. There can only be one [main] section, but you can specify multiple repositories in a single /etc/yum.conf.

13.4.1. [main] Options

The [main] section is mandatory, and there must only be one. For a complete list of options you can use in the [main] section, refer to man yum.conf.
The following is a list of the most commonly-used options in the [main] section.
cachedir
This option specifies the directory where yum should store its cache and database files. By default, the cache directory of yum is /var/cache/yum.
keepcache=<1 or 0>
Setting keepcache=1 instructs yum to keep the cache of headers and packages after a successful installation. keepcache=1 is the default.
reposdir=<absolute path to directory of .repo files>
This option allows you to specify a directory where .repo files are located. .repo files contain repository information (similar to the [repository] section of /etc/yum.conf).
yum collects all repository information from .repo files and the [repository] section of the /etc/yum.conf file to create a master list of repositories to use for each transaction. Refer to [repository] Options」 for more information about options you can use for both the [repository] section and .repo files.
If reposdir is not set, yum uses the default directory /etc/yum.repos.d.
gpgcheck=<1 or 0>
This disables/enables GPG signature checking on packages on all repositories, including local package installation. The default is gpgcheck=0, which disables GPG checking.
If this option is set in the [main] section of the /etc/yum.conf file, it sets the GPG checking rule for all repositories. However, you can also set this on individual repositories instead; i.e., you can enable GPG checking on one repository while disabling it on another.
assumeyes=<1 or 0>
This determines whether or not yum should prompt for confirmation of critical actions. The default if assumeyes=0, which means yum will prompt you for confirmation.
If assumeyes=1 is set, yum behaves in the same way that the command line option -y does.
tolerant=<1 or 0>
When enabled (tolerant=1), yum will be tolerant of errors on the command line with regard to packages. This is similar to the yum command line option -t.
The default value for this is tolerant=0 (not tolerant).
exclude=<package name/s>
This option allows you to exclude packages by keyword during installation/updates. If you are specifying multiple packages, this is a space-delimited list. Shell globs using wildcards (for example, * and ?) are allowed.
retries=<number of retries>
This sets the number of times yum should attempt to retrieve a file before returning an error. Setting this to 0 makes yum retry forever. The default value is 6.

13.4.2. [repository] Options

The [repository] section of the /etc/yum.conf file contains information about a repository yum can use to find packages during package installation, updating and dependency resolution. A repository entry takes the following form:
[repository ID]
name=repository name
baseurl=url, file or ftp://path to repository
You can also specify repository information in a separate .repo files (for example, rhel5.repo). The format of repository information placed in .repo files is identical with the [repository] of /etc/yum.conf.
.repo files are typically placed in /etc/yum.repos.d, unless you specify a different repository path in the [main] section of /etc/yum.conf with reposdir=. .repo files and the /etc/yum.conf file can contain multiple repository entries.
Each repository entry consists of the following mandatory parts:
[repository ID]
The repository ID is a unique, one-word string that serves as a repository identifier.
name=repository name
This is a human-readable string describing the repository.
baseurl=http, file or ftp://path
This is a URL to the directory where the repodatadirectory of a repository is located. If the repository is local to the machine, use baseurl=file://path to local repository . If the repository is located online using HTTP, use baseurl=http://link . If the repository is online and uses FTP, use baseurl=ftp://link .
If a specific online repository requires basic HTTP authentication, you can specify your username and password in the baseurl line by prepending it as username:password@link. For example, if a repository on http://www.example.com/repo/ requires a username of "user" and a password os "password", then the baseurl link can be specified as baseurl=http://user:password@www.example.com/repo/.
The following is a list of options most commonly used in repository entries. For a complete list of repository entries, refer to man yum.conf.
gpgcheck=<1 or 0>
This disables/enables GPG signature checking a specific repository. The default is gpgcheck=0, which disables GPG checking.
gpgkey=URL
This option allows you to point to a URL of the ASCII-armoured GPG key file for a repository. This option is normally used if yum needs a public key to verify a package and the required key was not imported into the RPM database.
If this option is set, yum will automatically import the key from the specified URL. You will be prompted before the key is installed unless you set assumeyes=1 (in the [main] section of /etc/yum.conf) or -y (in a yum transaction).
exclude=<package name/s>
This option is similar to the exclude option in the [main] section of /etc/yum.conf. However, it only applies to the repository in which it is specified.
includepkgs=<package name/s>
This option is the opposite of exclude. When this option is set on a repository, yum will only be able to see the specified packages in that repository. By default, all packages in a repository are visible to yum.

13.5. Useful yum Variables

The following is a list of variables you can use for both yum commands and yum configuration files (i.e. /etc/yum.conf and .repo files).
$releasever
This is replaced with the package's version, as listed in distroverpkg. This defaults to the version of the redhat-release package.
$arch
This is replaced with your system's architecture, as listed by os.uname() in Python.
$basearch
This is replaced with your base architecture. For example, if $arch=i686 then $basearch=i386.
$YUM0-9
This is replaced with the value of the shell environment variable of the same name. If the shell environment variable does not exist, then the configuration file variable will not be replaced.

第14章 Product Subscriptions and Entitlements

14.1. An Overview of Managing Subscriptions and Content
14.1.1. The Purpose of Subscription Management
14.1.2. Defining Subscriptions, Entitlements, and Products
14.1.3. Subscription Management Tools
14.1.4. Subscription and Content Architecture
14.1.5. Advanced Content Management: Extended Update Support
14.1.6. RHN Classic v. Certificate-based Red Hat Network
14.2. Using Red Hat Subscription Manager Tools
14.2.1. Launching Red Hat Subscription Manager
14.2.2. About subscription-manager
14.2.3. Looking at RHN Subscription Management
14.2.4. Looking at Subscription Asset Manager
14.3. Managing Special Deployment Scenarios
14.3.1. Local Subscription Services, Local Content Providers, and Multi-Tenant Organizations
14.3.2. Virtual Guests and Hosts
14.3.3. Domains
14.4. Registering, Unregistering, and Reregistering a System
14.4.1. Registering Consumers in the Hosted Environment
14.4.2. Registering Consumers to a Local Organization
14.4.3. Registering an Offline Consumer
14.4.4. Registering from the Command Line
14.4.5. Unregistering
14.4.6. Restoring a Registration
14.5. Migrating Systems from RHN Classic to Certificate-based Red Hat Network
14.5.1. Installing the Migration Tools
14.5.2. Migrating from RHN Classic to Certificate-based Red Hat Network
14.5.3. Unregistering from RHN Classic Only
14.5.4. Migrating a Disconnected System
14.5.5. Looking at Channel and Certificate Mappings
14.6. Handling Subscriptions
14.6.1. Subscribing and Unsubscribing through the Red Hat Subscription Manager GUI
14.6.2. Handling Subscriptions through the Command Line
14.6.3. Stacking Subscriptions
14.6.4. Manually Adding a New Subscription
14.7. Redeeming Subscriptions on a Machine
14.7.1. Redeeming Subscriptions through the GUI
14.7.2. Redeeming Subscriptions on a Machine through the Command Line
14.8. Viewing Available and Used Subscriptions
14.8.1. Viewing Subscriptions in the GUI
14.8.2. Listing Subscriptions with the Command Line
14.8.3. Viewing Subscriptions Used in Both RHN Classic and Certificate-based Red Hat Network
14.9. Working with Subscription yum Repos
14.10. Responding to Subscription Notifications
14.11. Healing Subscriptions
14.11.1. Enabling Healing
14.11.2. Changing the Healing Check Frequency
14.12. Working with Subscription Asset Manager
14.12.1. Configuring Subscription Manager to Work with Subscription Asset Manager
14.12.2. Viewing Organization Information
14.13. Updating Entitlements Certificates
14.13.1. Updating Entitlement Certificates
14.13.2. Updating Subscription Information
14.14. Configuring the Subscription Service
14.14.1. Red Hat Subscription Manager Configuration Files
14.14.2. Using the config Command
14.14.3. Using an HTTP Proxy
14.14.4. Changing the Subscription Server
14.14.5. Configuring Red Hat Subscription Manager to Use a Local Content Provider
14.14.6. Managing Secure Connections to the Subscription Server
14.14.7. Starting and Stopping the Subscription Service
14.14.8. Checking Logs
14.14.9. Showing and Hiding Incompatible Subscriptions
14.14.10. Checking and Adding System Facts
14.14.11. Regenerating Identity Certificates
14.14.12. Getting the System UUID
14.14.13. Viewing Package Profiles
14.14.14. Retrieving the Consumer ID, Registration Tokens, and Other Information
14.15. About Certificates and Managing Entitlements
14.15.1. The Structure of Identity Certificates
14.15.2. The Structure of Entitlement Certificates
14.15.3. The Structure of Product Certificates
14.15.4. Anatomy of Satellite Certificates
Effective asset management requires a mechanism to handle the software inventory — both the type of products and the number of systems that the software is installed on. The subscription service provides that mechanism and gives transparency into both global allocations of subscriptions for an entire organization and the specific subscriptions assigned to a single system.
Red Hat Subscription Manager works with yum to unit content delivery with subscription management. The Subscription Manager handles only the subscription-system associations. yum or other package management tools handle the actual content delivery. 13章YUM (Yellowdog Updater Modified) describes how to use yum.
This chapter provides an overview of subscription management in Red Hat Enterprise Linux and the Red Hat Subscription Manager tools which are available.

14.1. An Overview of Managing Subscriptions and Content

Red Hat Enterprise Linux and other Red Hat products are sold through subscriptions, which make packages available and provide support for a set number of systems. Subscription management clarifies the relationships between local systems and available software resources because it gives a view into where software subscriptions are assigned, apart from installing the packages.

14.1.1. The Purpose of Subscription Management

New government and industry regulations are setting new mandates for businesses to track how their infrastructure assets are used. These changes include legislation like Sarbanes-Oxley in the United States, standards like Payment Card Industry Data Security Standard (PCI-DSS), or accreditation like SAS-70. Software inventory maintenance is increasingly important to meet accounting and governmental standards.
That means that there is increasing pressure on IT administrators to have an accurate, current accounting of the software used on their systems. Generally, this is called software license management; with Red Hat's subscription model, this is subscription management.
Managing Subscriptions for Software Inventory
図14.1 Managing Subscriptions for Software Inventory

Effective subscription management helps organizations achieve four primary goals:
  • Maintain regulatory compliance. One of the key responsibilities of administrators is software compliance in conformance with legal or industry requirements. Subscription management helps track both subscription assignments and contract expirations, which helps administrators manage both systems and software inventories in accordance to their regulatory requirements.
  • Simplify IT audits. Having a central and clear inventory of both current subscriptions and current systems, IT administrators can monitor and report on their infrastructure better.
  • Get better performance by doing better at assigning subscriptions. The subscription service maintains dual inventories of available product subscriptions and registered server systems, with clear associations between subscriptions and systems. This makes it easier for IT administrators to assign relevant subscriptions to systems, because they have a view of what is in the inventory and what the system is currently subscribed to.
  • Lower costs and streamline procurement. While under-subscribing systems can run afoul of regulations, over- subscribing systems can cause a significant impact on IT budgets. Subscription management helps subscriptions be assigned most efficiently, so costs could actually be lowered.
With Red Hat's commitment to free and open software, subscription management is focused on delivering tools that help IT administrators monitor their software/systems inventory for their own benefit. Subscription management does not enforce or restrict access to products.

Important

Most Red Hat products are licensed under a GNU General Public License (GPL), which allows free use of the software or code; this a different license than the Red Hat license agreement. A Red Hat license provides access to Red Hat services, like the Customer Portal and Content Delivery Network.
The Red Hat subscription requires that, as long as there is any active subscription for a product, then every system which uses the Red Hat product must have an active subscription assigned to it. Otherwise, the subscription is violated. See http://www.redhat.com/subscriptions/ and http://www.redhat.com/rhel/renew/faqs/#6 for more information on Red Hat's subscription model and terms.

14.1.2. Defining Subscriptions, Entitlements, and Products

The basis of everything is a subscription. A subscription contains both the products that are available, the support levels, and the quantities, or number of servers, that the product can be installed on.
Subscriptions are managed though the Certificate-Based Red Hat Network service, which ties into the Subscription and Content Delivery Network (CDN).
The subscription service maintains a complete list of subscriptions for an organization, identified by a unique ID (called a pool ID). A system is registered, or added, to the subscription service to allow it to manage the subscriptions for that system. Like the subscription, the system is also added to the subscription service inventory and is assigned a unique ID within the service. The subscriptions and system entries, together, comprise the inventory.
A system allocates one of the quantities of a product in a subscription to itself. When a subscription is consumed, it is an entitlement. (An entitlement is roughly analogous to a user license, in that it grants all of the rights to that product to that system. Unlike a user license, an entitlement does not grant the right to use the software; with the subscription model, an entitlement grants the ability to download the packages and receive updates.) Because the available quantity in a subscription lowers once a system subscribes to it, the system consumes the subscription.
Managing Subscriptions, Illustrated
図14.2 Managing Subscriptions, Illustrated

The repository where the product software is located is organized according to the product. Each product group within the repository may contain the primary software packages and then any required dependencies or associated packages. Altogether, the product and its associated packages are called a content set. (A content set for a product even includes other versions of the product.) When a subscription grants access to a product, it includes access to all of the associated packages in that content set.
A single subscription can have multiple products, and each system can have multiple different subscriptions, depending on how many entitlement certificates are loaded on the machine.
Any number of products, for any number of different architectures, can be contained in a single subscription. The subscription options that are visible to a consumer are filtered, by default, according to whether the architecture for the product matches the architecture of the system. This is compatibility. Depending on compatible subscriptions makes sure that subscriptions are allocated efficiently, only to systems which can actually use the products.
The subscription tools can display even incompatible entitlements. Alternatively, the architecture definition for the system can be overridden by defining custom system facts for the subscription tools to use.
It's important to distinguish between subscribing to a product and installing a product. A subscription is essentially a statement of whatever products an organization has purchased. The act of subscribing to a subscription means that a system is allowed to install the product with a valid certificate, but subscribing doesn't actually perform any installation or updates. In the reverse, a product can also be installed apart from any entitlements for the system; the system is just does not have a valid product certificate. Certificate-Based Red Hat Network and the Content Delivery Network harmonize with content delivery and installation by using yum plug-ins that come with the Subscription Manager tools.

14.1.3. Subscription Management Tools

Subscriptions are managed through GUI and CLI tools called Red Hat Subscription Manager. The Subscription Manager tracks and displays what entitlements are available to the local system and what entitlements have been consumed by the local system. The Subscription Manager works as a conduit back to the subscription service to synchronize changes like available product quantities or subscription expiration and renewals.

Note

The Red Hat Subscription Manager tools are always run as root because of the nature of the changes to the system. However, Red Hat Subscription Manager connects to the subscription service as a user account for the Customer Service Portal.
The Subscription Manager handles both registration and subscriptions for a system. The Subscription Manager is part of the firstboot process for configuring content and updates, but the system can be registered at any time through the Red Hat Subscription Manager GUI or CLI. New subscriptions, new products, and updates can be viewed and applied to a system through the Red Hat Subscription Manager tools.
The different Subscription Manager clients are covered in 「Using Red Hat Subscription Manager Tools」.

14.1.4. Subscription and Content Architecture

Content includes new downloads, ISOs, updates, and errata, anything that can be installed on a system.
Subscription management helps to clarify and to define the relationships between local server infrastructure and the content delivery systems. Subscription management and content delivery are tightly associated. Entitlements (assigned subscriptions) identify what a system is allowed to install and update. In other words, entitlements define access to content. The content delivery system actually provides the software packages.
There are three parties that are involved in subscriptions and content:
  • The subscription service
  • The Content Delivery Network
  • The system which uses the content
Relationship Among Systems, the Subscription Service, and Content Delivery Network
図14.3 Relationship Among Systems, the Subscription Service, and Content Delivery Network

The subscription service handles the system registration (verifying that the system is allowed to access the content). It also supplies the system with information on what products are available and handles a central list of entitlements and remaining quantities for the entire organization.
The content delivery network is responsible for delivering the content to the system when requested. The content server is configured in the Red Hat Subscription Manager configuration and then tied into the system's yum service through the Red Hat Subscription Manager yum plug-in.
Both the subscription service and the content server used by a system's Red Hat Subscription Manager tools can be customized. The default settings use the public subscription service and Content Delivery Network, but either one can be changed to use organization-specific services.

Note

Systems have the option of using the older Red Hat Network and Satellite 5.x systems to deliver content. These content delivery mechanisms bypass the subscription service in Certificate-Based Red Hat Network, so there is no entitlement management. This is allowed for legacy infrastructures, but Red Hat strongly recommends registering new systems with the latest Certificate-based Red Hat Network.

14.1.5. Advanced Content Management: Extended Update Support

Sometimes software product installations are straightforward — you want to install a Red Hat Enterprise Linux server, so you install Red Hat Enterprise Linux. However, products can have dependencies with each other (product B is only worthwhile if product A is also installed) or products can interact with each other to provide extended functionality. There are two categories of these kinds of product interactions:
  • Dependencies, where one product requires or relies on another product directly
  • Modifiers, where a product provides enhanced functionality or services for existing products
Dependencies are common and can be handled directly when processing content through tools like yum.
Modifiers can be more subtle. A modifier subscription extends another entitlement and provides different repository access and support than the product entitlement alone.
If the system is subscribed to that product entitlement or combination of products, then the modifier subscription brings an enhanced content set for that product. The content set can include additional new products, new functionality, or extended service and support, depending on the product being modified.
One simple example of a modifier is extended update support (EUS), which extends support for a minor release of Red Hat Enterprise Linux from six months to 24 months. An EUS subscription provides an enhanced support path, rather than a new product. EUS works only in conjunction with another product, to extend its support profile; it does not stand alone.

Red Hat Enterprise Linux Add-ons and EUS Subscriptions

Red Hat Enterprise Linux add-ons have access to EUS streams as long as the underlying Red Hat Enterprise Linux product has an EUS subscription. For example, if an administrator has a Red Hat Enterprise Linux 2 Socket subscription, a File System subscription, and a Red Hat Enterprise Linux 2 Socket EUS subscription, then the system can access both non-EUS and EUS content for both the Red Hat Enterprise Linux server and the File System product.

14.1.6. RHN Classic v. Certificate-based Red Hat Network

During the firstboot process, there are two options given for the content server: (Certificate-based) Red Hat Network and RHN Classic. These systems are mutually exclusive, but they both handle software content and updates as well as subscriptions and system inventory.
In 5.7 and later versions, entitlements and subscriptions are defined by available and installed products. However, in older versions of Red Hat Enterprise Linux, subscriptions were defined by channel access. These are two different approaches to content and entitlement access. Red Hat Network uses the product-based subscription model, while RHN Classic uses the channel-based model.
Certificate-based Red Hat Network is focused on two things:
  • Subscription management
  • Content delivery
Certificate-based Red Hat Network integrates the Customer Portal, Content Delivery Network, and subscription service (subscription management). It uses simple and streamlined local tools (the Red Hat Subscription Manager client) to give greater visibility into how entitlements and subscriptions are used and assigned and to help control software subscriptions as they are added and expire.
Since the client tools for subscription management (the focus of Certificate-based Red Hat Network) are only available in Red Hat Enterprise Linux 5.7 systems and later, Certificate-based Red Hat Network can only be utilized by 5.7 and later systems.
RHN Classic uses the traditional channel entitlement model, which provides a global view of content access but does not provide insight into system-level subscription uses. Along with content and global subscription management, RHN Classic also provides some systems management functions:
  • Kickstarting systems
  • Managing configuration files
  • Running scripts
  • Taking system snapshots
Satellite 5.x systems use a channel-based model similar to RHN Classic.
While RHN Classic has an expanded systems management feature set, RHN Classic does not provide the system-level view into installed and subscribed products that the enhanced Red Hat Network and subscription service do. RHN Classic is provided for older Red Hat Enterprise Linux systems (Red Hat Enterprise Linux 4.x, Red Hat Enterprise Linux 5.x, and Satellite 5.x) to migrate systems over to Red Hat Enterprise Linux 5.7 and later versions.
The two subscription services are mututally exclusive, with separate inventories and using separate client tools. Both the RHN Classic and Red Hat Subscription Manager tools correctly identify which service a system is registered with. When a system is registered with RHN Classic, then the Red Hat Subscription Manager shows an error that the system is already registered and cannot be managed by the Subscription Manager tools. Likewise, similar errors are returned in the RHN Classic tools if a system is registered with Red Hat Network and the subscription service.
For information on migrating from RHN Classic to Certificate-based Red Hat Network, see 「Migrating Systems from RHN Classic to Certificate-based Red Hat Network」.

14.2. Using Red Hat Subscription Manager Tools

The Red Hat Subscription Manager tool set encompasses three different tools:
  • A GUI-based local client to manage the local machine
  • A CLI client for advanced users and administrators to manage a local machine (and which can be tied into other applications and actions, like kickstarting machines)
  • A web-based client for organizational, multi-system views of the subscriptions and inventoried resources
All of these tools, both local clients and the web-based tools, allow administrators to perform three major tasks directly related to managing subscriptions: registering machines, assigning subscriptions to systems, and updating the certificates required for authentication. Some minor operations, like updating system facts, are available to help display and track what subscriptions are available.

Note

Both the Red Hat Subscription Manager GUI and CLI must be run as root.

14.2.1. Launching Red Hat Subscription Manager

Red Hat Subscription Manager is listed as one of the administrative tools in the System => Administration menu in the top management bar.
Red Hat Subscription Manager Menu Option
図14.4 Red Hat Subscription Manager Menu Option

Alternatively, the Red Hat Subscription Manager GUI can be opened from the command line with a single command:
[root@server1 ~]# subscription-manager-gui
The Red Hat Subscription Manager UI has a single window with tabbed sections that offer quick views into the current state of the system, showing installed products, subscriptions for the system, and available subscriptions the system has access to. These tabs also allow administrators to manage subscriptions by subscribing and unsubscribing the system.
The Red Hat Subscription Manager has three main areas to manage products and subscriptions:
  • The My Subscriptions area shows all of the current entitlements that the system is subscribed to.
  • The All Available Subscriptions area shows all of the subscriptions that are available to the system. The default displays only entitlements that are compatible with the hardware, but these can be filtered to show entitlements corresponding to other installed programs, only subscriptions that have not been installed, and subscriptions based on date.
  • The My Installed Software area shows the currently installed products on the system, along with their subscription status. This does not allow administrators to install software, only to view installed software.
Red Hat Subscription Manager Main Screen
図14.5 Red Hat Subscription Manager Main Screen

The top right box contains the tools required to perform maintenance tasks like changing the registration connection information and viewing system facts.

14.2.2. About subscription-manager

Any of the operations that can be performed through the Red Hat Subscription Manager UI can also be performed by running the subscription-manager tool. This tools has the following format:
[root@server1 ~]# subscription-manager command [options]
Each command has its own set of options that are used with it. The subscription-manager help and manpage have more information.
表14.1 subscription-manager Commands
Command Description
register Registers or identifies a new system to the subscription service.
unregister Unregisters a machine, which strips its subscriptions and removes the machine from the subscription service.
subscribe Allocates a specific subscription to the machine.
redeem Autosubscribes a machine to a pre-specified subscription that was purchased from a vendor, based on its hardware and BIOS information.
refresh Pulls the latest entitlement data from the server. Normally, the system polls the entitlement server at a set interval (4 hours by default) to check for any changes in the available subscriptions. The refresh command checks with the entitlement server right then, outside the normal interval.
unsubscribe Removes a specific subscription or all subscriptions from the machine.
list Lists all of the subscriptions that are compatible with a machine, either subscriptions that are actually consumed by the machine or unused subscriptions that are available to the machine.
identity Handles the identity certificate and registration ID for a system. This command can be used to return the current UUID or generate a new identity certificate.
facts Lists the system information, like the release version, number of CPUs, and other architecture information.
clean Removes all of the subscription and identity data from the local system, without affecting the consumer information in the subscription service. Any of the subscriptions consumed by the system are still consumed and are not available for other systems to use. The clean command is useful in cases where the local entitlement information is corrupted or lost somehow, and the system will be reregistered using the register --consumerid=EXISTING_ID command.
orgs, repos, environments Lists all of the configured organizations, environments, and content repositories that are available to the given user account or system. These commands are used to view information in a multi-org infrastructure. They are not used to configure the local machine or multi-org infrastructure.

14.2.3. Looking at RHN Subscription Management

The ultimate goal of entitlement management is to allow administrators to identify the relationship between their systems and the subscriptions used by those systems. This can be done from two different perspectives: from the perspective of the local system looking externally to potential subscriptions and from the perspective of the organization, looking down at the total infrastructure of systems and all subscriptions.
The Red Hat Subscription Manager GUI and CLI are both local clients which manage only the local machine. These tools are somewhat limited in their view; they only disclose information (such as available entitlements) from the perspective of that one system, so expired and depleted subscriptions or subscriptions for other architectures aren't displayed.
RHN Subscription Management in the Customer Portal is a global tool which is intended to give complete, organization-wide views into subscriptions and systems. It shows all subscriptions and all consumers for the entire organization. RHN Subscription Management can perform many of the tasks of the local tools, like registering consumers, assigning subscriptions, and viewing system facts and UUID. It can also manage the subscriptions themselves, such as viewing contract information and renewing subscriptions — a task not possible in the local clients.
RHN Subscription Management in the Customer Portal
図14.6 RHN Subscription Management in the Customer Portal

Note

RHN Subscription Management gives a global view of all consumers, of all types, for an organization, which is crucial for planning and effectively assigning subscriptions. However, it does not provide any insight into what products are installed on a system and whether subscriptions are assigned for those products. To track the validity of installed products, you must use the local Subscription Manager tools.
RHN Subscription Management also provides a view of systems and subscriptions managed under RHN Classic and provides access to the RHN Classic web tools.
All of the subscriptions for an entire organization — the subscriptions that have been purchased and the systems to which they have been allocated — are viewable through the account pages at https://access.redhat.com/. Additional information about RHN Subscription Management is available with the portal documentation at https://access.redhat.com/knowledge/docs/Red_Hat_Customer_Portal/.

14.2.4. Looking at Subscription Asset Manager

Subscription Asset Manager provides a local site not only to view subscriptions and systems for an infrastructure (as with the Customer Portal) but also to manage all of those systems. Subscription Asset Manager has three major functional areas:
  • Works with the client machine's Subscription Manager to manage subscriptions and content. In that way, it is a centralized, global, web-based Subscription Manager.
  • Helps manage the subscriptions themselves. It receives a subscription manifest from Red Hat Network. The manifest allocates that Subscription Asset Manager service a subset of all of an organization's subscriptions. From there, the Subscription Asset Manager locally assigns subscriptions to individual systems and can create activation keys.
  • Works as a real-time proxy between the local system assets and the Red Hat content delivery network.
Subscription Asset Manager handles both client-side, local system management and backend subscription management. This allows Subscription Asset Manager to provide more in-depth information on the status of products and certificates through tools like its dashboard and activity reports.
Subscription Asset Manager Dashboard
図14.7 Subscription Asset Manager Dashboard

Because of the insight Subscription Asset Manager has into the local server assets, it can be used to define multi-tenant organizations. Multi-tentant organizations allow completely separate silos of assets (organizations). Organizations can then be subdivided into environments; since a system can belong to multiple environments, it is possible to organize systems into overlapping circles according to the real-world infrastructure. This is covered more in 「Local Subscription Services, Local Content Providers, and Multi-Tenant Organizations」.
Subscription Asset Manager is available with Red Hat Enterprise Linux, but it must be installed and configured before it can be used to manage assets.
For more information on configuring and using Subscription Asset Manager, see the documentation at http://docs.redhat.com/docs/en-US/Red_Hat_Subscription_Asset_Manager/1.0/html/Installation_Guide/index.html.

14.3. Managing Special Deployment Scenarios

There are different types of consumers and different ways of organizing consumers. The simplest environment has physical machines grouped together in one single, homogeneous group, connecting to Red Hat's hosted content and subscription services. While this is an easy arrangement to maintain, it does not accurately describe many enterprise environments, which have a lively mix of physical and virtual machines, divided across disparate organizational units and even subunits within those organizations and accessing locally-controlled content and subscription services.
The first change is the ability to group systems into divisions and subdivisions. This is called multi-tenancy, the ability create unrelated groups beneath the primary umbrella account. Multi-tenant (or multi-org) structures are for infrastructures which may have multiple content repositories or subscription services, and systems within the organization need to be grouped according to access to those repositories and services.
The other part of heterogeneous environments is recognizing consumers other than physical machines. Two special consumer types are common: virtual guests and server domains. The difference between these consumer types and physical, single-machine consumers is only in the type of information that the Red Hat Subscription Service uses and stores — not in any special configuration or management tasks.

14.3.1. Local Subscription Services, Local Content Providers, and Multi-Tenant Organizations

As 「Subscription and Content Architecture」 outlines, the subscription service, content repository, and client tools and inventory all work together to define the entitlements structure for a customer. The way that these elements are organized depends on a lot of factors, like who is maintaining the individual services, how systems in the inventory are group, and how user access to the different services is controlled.
The most simplistic structure is the hosted structure. The content and subscription services are hosted by Red Hat, and all systems within the inventory are contained in one monolithic group. User access is defined only by Red Hat Customer Portal account access.
Hosted Structure
図14.8 Hosted Structure

The next step allows a customer to have its own, local subscription service (Subscription Asset Manager), while still using Red Hat's hosted content delivery network. At this point, user access can be defined locally, within the Subscription Asset Manager configuration. Subscription Asset Manager can define independent groups, called organizations. Systems belong to those organizations, and users are granted access to those organizations. Systems and users in one organization are essentially invisible to systems and users in other organizations.
Hosted Content/Local Subscriptions Structure
図14.9 Hosted Content/Local Subscriptions Structure

The last style of infrastructure is almost entirely local, with a Subscription Asset Manager that provides locally-hosted content providers and an integrated local subscription service.
Local Subscriptions and Local Content Provider Structure
図14.10 Local Subscriptions and Local Content Provider Structure

This allows the most control over how systems are grouped within the subscriptions/content. A customer's main account can be divided into separate and independent organizations. These organizations can use different content provider, can have different subscriptions allocated to them, and can have different users assigned to them with levels of access set per organization. Access control in this scenario is controlled entirely locally. The local Subscription Asset Manager, not the remote Red Hat Customer Portal, processes user authentication requests and applies local access control policies.
A system is assigned to one organization. Within an organization, there can be different environments which define access to product versions and content sets. There can be overlap between environments, with a system belonging to multiple environments.
Multi-Org
図14.11 Multi-Org

When there is only one organization — such as a hosted environment (where the single organization is implicit) — then the systems all default to use that one organization. When there are multiple organizations, then the organization for a system to use must be defined for that system. This affects register operations, where the system is registered to subscription service and then joined to the organization. It also affects other operations tangentially. It may affect subscribe operations because it affects repository availability and subscription allocations, and it affects redeem operations (activation of existing subscriptions) because subscriptions must be redeemed from the organization which issued the subscription.
For more information on configuring and managing organizations, environments, and content repositories, see the Subscription Asset Manager documentation.

14.3.2. Virtual Guests and Hosts

When the Red Hat Subscription Manager process checks the system facts, it attempts to identify whether the system is a physical machine or a virtual guest. The Subscription Manager can detect guests for several different virtualization services, including:
  • KVM
  • Xen
  • HyperV
  • VMWare ESX
Subscription Manager records a unique identifier called a guest ID as one of the system facts for a virtual guest. A special process, libvirt-rhsm, checks VMWare, KVM, and Xen processes and then relays that information to Subscription Manager and any configured subscription service (Certificate-based Red Hat Network or a local Subscription Asset Manager). Each guest machine on a host is assigned a guest ID, and that guest ID is both associated with the host and used to generate the identity certificate for the guest when it is registered.
Some Red Hat Enterprise Linux variants are specifically planned for virtual hosts and guests. The corresponding subscriptions are divided into a certain quantity of physical hosts and then a quantity of allowed guests. Red Hat Enterprise Linux add-ons may even be inherited, so that when a host machine is subscribed to that entitlement, all of its guests are automatically included in that subscription. (Red Hat layered products usually do not draw any distinction between virtual and physical systems; the same type of subscription is used for both.) If the system is a guest, then virtual entitlements are listed with the available subscriptions. If no more virtual entitlements are available, then the subscription service will apply physical entitlements.
Virtual and physical subscriptions are identified in the Type column.
Virtual and Physical Subscription
図14.12 Virtual and Physical Subscription

注記

The distinction of being a physical machine versus virtual machine matters only in the priority of how entitlements are consumed. Virtual machines are recorded in the subscription service inventory as a regular system type of consumer.
Virtual guests are registered to the subscription service inventory as regular systems and subscribe to entitlements just like any other consumer.
Virtual entitlements can only be used by virtual machines. Physical entitlements can be used by both physical and virtual machines. When ascertaining what subscriptions are available for autosubscription, preference is given first to virtual entitlements (which are more restrictive in the type of consumer which can use them), and then to physical entitlements.

14.3.3. Domains

Consumers in the subscription service inventory are identified by type. Most consumers will have a type of system, meaning that each individual server subscribes to its own entitlements for its own use. There is another type of consumer, though, which is available for server groups, the domain type. domain-based entitlements are not allocated to a single system; they are distributed across the group of servers to govern the behavior of that group of servers. (That server group is called a domain.)
There are two things to keep in mind about domain entitlements:
  • Each member of the domain is still registered to the subscription service as a system consumer and added to the inventory individually.
  • The domain entitlements apply to the behavior of the entire server group, not to any one system.
The domain entitlement simply governs the behavior of the domain. A domain entitlement is not limited to a specific type of behavior. Domain entitlements can describe a variety of types of behavior, such as storage quotas or the maximum number of messages to process per day. The entire domain is bound to the subscriptions when one of the domain servers subscribes to the domain entitlements using the Red Hat Subscription Manager tools, and the entitlement certificate is replicated between the domain servers.

14.4. Registering, Unregistering, and Reregistering a System

Entitlements are managed by organizing and maintaining the systems which use entitlement subscriptions. The entitlements and subscriptions are managed by Red Hat through the subscription service. A system is recognized to the subscription service by being registered with the service. The subscription service assigns the system (called a consumer) a unique ID (essentially as an inventory number) and issues that system an identifying certificate (with the UUID in its subject CN) to identify that system.
Whenever a subscription is purchased by an organization, the consumer can subscribe to that subscription. This means that a portion of the subscription is allocated to that consumer ID; when the consumer contacts the content delivery network and downloads the software, the licenses have been already assigned to the system. The system has valid certificates for its subscriptions.
Systems can be registered with an subscription service during the firstboot process or as part of the kickstart setup (both described in the Installation Guide). Systems can also be registered after they've been configured or removed from the subscription service inventory (unregistered) if they will no longer be managed within that entitlement system.

14.4.1. Registering Consumers in the Hosted Environment

For infrastructures which use Red Hat's hosted subscription and content delivery network, all that is required to register the system is the username and password of the Red Hat Network account.
  1. Launch the Red Hat Subscription Manager GUI. For example:
    subscription-manager-gui
  2. If the system is not already registered, then there will be a Register button at the top of the window in the Tools area.
  3. Enter the username and password of the user account on the subscription service; this is the account used to access the Customer Portal.
  4. Optionally, select the Automatically subscribe... checkbox, so that the system is subscribed to the best matched subscription when it is registered. Otherwise, the system must be subscribed manually, as in 「Handling Subscriptions」.

14.4.2. Registering Consumers to a Local Organization

Infrastructures which manage their own local content repository and subscription service must have a defined organization. This organization is essentially a group definition, and systems must be assigned to that group as part of the registration process. This allows there to be multiple, discrete organizations or tenants within the infrastructure.
When a system is registered using the Subscription Manager GUI, Subscription Manager automatically scans the local subscription and content service to see what organizations are configured.
  1. Make sure that the rhsm.conf configuration file points to the local subscription service (in the hostname parameter) and the local content server (in the baseurl parameter). The Subscription Manager configuration is described in 「Configuring the Subscription Service」.
  2. Launch the Red Hat Subscription Manager GUI. For example:
    subscription-manager-gui
  3. Click the Register button at the top of the window in the Tools area.
  4. Enter the username and password of the user account on the subscription service; this is the account used to access the Customer Portal.
  5. Subscription Manager scans the network for available organizations.
    When the configured organizations are detected, Subscription Manager prompts for the organization for the system to join. It is only possible to register with one organization.
  6. If the selected organization has multiple environments available, then the Subscription Manager will detect them and provide a list. It is possible to join multiple environments. Use the Ctrl key to select multiple environments from the list.
    If no environment is selected, then Subscription Manager uses the default environment for the organization.

    NOTE

    It is only possible to join an environment during registration. The environments cannot be changed after registration.
  7. Optionally, select the Automatically subscribe... checkbox, so that the system is subscribed to the best matched subscription when it is registered. Otherwise, the system must be subscribed manually, as in 「Handling Subscriptions」.

14.4.3. Registering an Offline Consumer

Some systems may not have internet connectivity, but administrators still want to assign and track the subscriptions for that system. This can be done by manually registering the system, rather than depending on Subscription Manager to perform the registration. This has two major steps, first to create an entry on the subscriptions service and then to configure the system.
  1. Open the Subscriptions tab in the Customer Portal, and select the Overview item under the Certificate-Based Management area.
  2. In the summary of consumers, click the Register New System link to create the new inventory entry.
  3. Fill in the required information for the new consumer type. A system requires information about the architecture and hardware in order to ascertain what subscriptions are available to that system.
  4. Once the system is created, assign the appropriate subscriptions to that system.
    1. Open the Available Subscriptions tab.
    2. Click the check boxes by all of the subscriptions to assign, and then click the Add button.
  5. Once the subscriptions are added, open the Applied Subscriptions tab.
  6. Click the Download All Certificates button. This exports all of the entitlements certificates, for each product, to a single .zip file. Save the file to some kind of portable media, like a flash drive.
  7. Optionally, click the Download Identity Certificate button. This saves the identity certificate for the registered consumer and could be used by the consumer to connect to the subscription service. If the consumer will permanently be offline, then this is not necessary, but if the consumer could ever be brought onto the network, then this is useful.
  8. Copy the entitlements certificates from the media device over to the consumer.
  9. If all entitlement certificates were downloaded in an archive file, then there are multiple archives in the downloaded certificates.zip file. Unzip the directories until the PEM files for the entitlement certificates are available.
  10. Import the entitlement certificates. This can be done using the Import Certificates button in the Subscription Manager GUI or using the import command. For example:
    # subscription-manager import --certificate=/tmp/export/entitlement_certificates/596576341785244687.pem --certificate=/tmp/export/entitlement_certificates/3195996649750311162.pem
    Successfully imported certificate 596576341785244687.pem
    Successfully imported certificate 3195996649750311162.pem
  11. If you downloaded an identity certificate, copy the cert.pem file directly into the /etc/pki/consumer directory. For example:
    cp /tmp/downloads/cert.pem /etc/pki/consumer

14.4.4. Registering from the Command Line

The simplest way to register a machine is to pass the register command with the user account information required to authenticate to the Certificate-Based Red Hat Network (the credentials used to access subscription service or the Customer Portal). When the system is successfully authenticated, it echoes back the newly-assigned consumer ID and the user account name which registered it.
The register options are listed in 表14.2「register Options」.
例14.1 Registering a New Consumer
[root@server1 ~]# subscription-manager register --username admin-example --password secret

7d133d55-876f-4f47-83eb-0ee931cb0a97 admin-example (the new consumer UUID and the account used for registration)

In a multi-org environment, it is required that you specify which organization (essentially an independent group or unit within the main account) to join the system to. This is done by using the --org option in addition to the username and password. The given user must also have the access permissions to add systems to that organization. (See 「Working with Subscription Asset Manager」 for information about organizations and Subscription Asset Manager.)
例14.2 Registering a New Consumer with an Organization
If there is more than one organization, then the system must be assigned to one specific organization:
[root@server1 ~]# subscription-manager register --username admin-example --password secret --org="IT Department"

7d133d55-876f-4f47-83eb-0ee931cb0a97 admin-example (the new consumer UUID and the account used for registration)
Organizations can be subdivided into environments, which define access to content based on repositories, product versions, and content sets. While a consumer can only belong to a single organization, it can be assigned to multiple environments within that organization. If no environment is given, the subscription service uses the default environment. See 「Working with Subscription Asset Manager」 for information about organizations and Subscription Asset Manager.
A system can only be added to an environment during registration.
[root@server1 ~]# subscription-manager register --username admin-example --password secret --org="IT Department" --environment=Dev1,ITall

注記

If the system is in a multi-org environment and no organization is given, the register command returns a Remote Server error.
The register command has an option, --autosubscribe, which allows the system to be registered to the subscription service and immediately subscribed to the subscription which best matches its architecture in a single step.
例14.3 Automatically Subscribing While Registering
[root@server1 ~]# subscription-manager register --username admin-example --password secret --autosubscribe

例14.4 Applying Subscriptions During Registration
When using the command-line tools to register the system, there is an option that can pass the activation key to apply existing, already-assigned certificates along with the other registration information. The activation keys are set, in a comma-separated list, in the --activationkey option.
With an activation key, it is not necessary to give a username and password because the authentication is implicit in the activation key.
In hosted or single organization environments, it is not necessary to specify an organization with the --org option, but in multi-org environments, the --org option is required. The organization is not defined as part of the activation key. See 「Working with Subscription Asset Manager」 for information about activation keys and Subscription Asset Manager.
For example:
# subscription-manager register --activationkey=1234abcd --org="IT Dept"

表14.2 register Options
Options Description Required
--username=name Gives the content server user account name. Required
--password=password Gives the password for the user account. Required
--org=name Gives the organization to which to join the system. Required, except for hosted environments
--environment=name Registers the consumer to an environment within an organization. Optional
--name=machine_name Sets the name of the consumer (machine) to register. This defaults to be the same as the hostname. Optional
--autosubscribe Automatically subscribes this system to the best-matched compatible subscription. This is good for automated setup operations, since the system can be configured in a single step. Optional
--activation_key Applies existing subscriptions as part of the registration process. The subscriptions are pre-assigned by a vendor or by a systems administrator using Subscription Asset Manager. Optional
--force Registers the system even if it is already registered. Normally, any register operations will fail if the machine is already registered. Optional

14.4.5. Unregistering

The only thing required to unregister a machine is to run the unregister command. This removes the system's entry from the subscription service, unsubscribes it from any subscriptions, and, locally, deletes its identity and entitlement certificates.
In the Red Hat Subscription Manager GUI, there is an Unregister button at the top of the window in the Tools area.
From the command line, this requires only the unregister.
例14.5 Unregistering a Consumer
[root@server1 ~]# subscription-manager unregister

14.4.6. Restoring a Registration

There are times when the local registration and subscription information could be lost or corrupted. There could be a hardware failure or system crash. Or other IT considerations may require that a system be moved to a different machine. Whatever the reason, the local subscription configuration is lost.
A system can be registered against an existing system entry in the Red Hat subscription service, which essentially restores or reregisters that consumer. The reregister operation uses the original consumer ID with the registration request, so that all of the previous subscriptions associated with the consumer entry are restored along with the registration.
Reregistering a system uses the register command. This command passes the original UUID for a system to issue a request to the subscription service to receive a new certificate using the same UUID. This essentially renews its previous registration.
例14.6 Registering a System Against an Existing Identity Certificate
The register command uses the original ID to identify itself to the subscription service and restore its previous subscriptions.
[root@server1 ~]# subscription-manager register --username admin-example --password secret --consumerid=7d133d55-876f-4f47-83eb-0ee931cb0a97

表14.3 register Options to Reregister the System
Options Description Required
--consumerid Gives the consumer UUID used by an existing consumer. The system's consumer entry must exist in the Red Hat subscription service for the reregister operation to succeed. Required
--username=name Gives the content server user account name. Optional
--password=password Gives the password for the user account. Optional

14.5. Migrating Systems from RHN Classic to Certificate-based Red Hat Network

As described in 「RHN Classic v. Certificate-based Red Hat Network」 and https://access.redhat.com/kb/docs/DOC-45987, there are differences in how RHN Classic and Certificate-based Red Hat Network define and manage subscriptions.
As part of migration, the RHN Classic channels are mapped to Certificate-based Red Hat Network X.509 product certificates for every installed product. Subscription Manager can use those certificates to subscribe or autosubscribe the system to the appropriate subscriptions once it is registered.
Migration tools are available to transition system registration from RHN Classic to Certificate-based Red Hat Network and then re-apply its previous subscriptions. Product certificates in general are described in 「The Structure of Product Certificates」.
There are two migration paths supported:
  • From being registered with RHN Classic Hosted to being registered with Certificate-based Red Hat Network, using rhn-migrate-classic-to-rhsm
  • From a disconnected (offline) system using RHN Classic-style channels to using Certificate-based Red Hat Network X.509 certificates for installed products, using install-num-migrate-to-rhsm

Important

There is no migration path from a Satellite system to Certificate-based Red Hat Network.

14.5.1. Installing the Migration Tools

The migration tools are contained in the subscription-manager-migration package. An additional package, subscription-manager-migration-data, is required to map the RHN Classic channels to Certificate-based Red Hat Network product certificates.
  1. The migration tools and data are in supplementary channels. If necessary, enable the supplementary repositories, as described in 「Working with Subscription yum Repos」.
  2. Install the migration tool packages.
    [root@server ~]# yum install subscription-manager-migration subscription-manager-migration-data

14.5.2. Migrating from RHN Classic to Certificate-based Red Hat Network

A system which was registered against the hosted subscription service, RHN Classic, can be migrated to Certificate-based Red Hat Network using the rhn-migrate-classic-to-rhsm script.
The general action is that it unregisters the system from RHN Classic, registers it with Certificate-based Red Hat Network, and opens Subscription Manager (either GUI or CLI) to assign subscriptions.
The rhn-migrate-classic-to-rhsm script has this syntax:
rhn-migrate-classic-to-rhsm [--force|--cli-only|--help|--no-auto]
After running migration, the system facts list what script was used for migration and what the previous system ID was.
[root@server ~]# subscription-manager facts --list | grep migr
migration.classic_system_id: 09876
migration.migrated_from: rhn_hosted_classic
This makes it easy to track the migration process for systems within the infrastructure.
例14.7 Basic RHN Classic to Certificate-based Red Hat Network Migration
Simply running the rhn-migrate-classic-to-rhsm tool migrates the system profile and then opens the Subscription Manager GUI so that administrators can assign subscriptions to the system.
While administrators only have to run the command, the script itself runs through a series of steps to migrate the account.
[root@server ~]# rhn-migrate-classic-to-rhsm
RHN Username: jsmith@example.com
Password:
The script prompts for the username and password to use to connect to Red Hat Network. It uses these credentials to authenticate to both Red Hat Network Classic and Certificatebased Red Hat Network, to verify the account settings.
Once the account is verified, the script creates a channel list for the system.
Retrieving existing RHN classic subscription information ...
+----------------------------------+
System is currently subscribed to:
+----------------------------------+
rhel-i386-client-5
Each discovered channel is then mapped to a corresponding product certificate (「Looking at Channel and Certificate Mappings」). Not every product has a product certificate, so not every channel may have a map. Only the channels with a certificate channel to a corresponding certificate map.
The matching certificates are copied into the /etc/pki/product directory.
List of channels for which certs are being copied
rhel-i386-client-5

Product Certificates copied successfully to /etc/pki/product !!
Then, the script unregisters the system from RHN Classic.
Preparing to unregister system from RHN classic ...
System successfully unregistered from RHN Classic.
Then, it registers the system with Certificate-based Red Hat Network.
Attempting to register system to Certificate-based RHN ...
The system has been registered with id: abcd1234
System server.example.com successfully registered to Certificate-based RHN.

Launching the GUI tool to manually subscribe the system ...
The last step opens the Subscription Manager GUI to the All Available Subscriptions tab so that the administrator can manually assign the subscriptions to the system.

Alternatively, the rhn-migrate-classic-to-rhsm can automatically subscribe the system to matching subscriptions.
例14.8 All CLI-Based Migration
The --cli-only option tells the rhn-migrate-classic-to-rhsm to register the system with the autosubscribe option, so all of the migration process occurs in the command line.
The overall process is identical to the one in 例14.7「Basic RHN Classic to Certificate-based Red Hat Network Migration」 until the final step.
[root@server ~]# rhn-migrate-classic-to-rhsm --cli-only
RHN Username: jsmith@example.com
Password:

....

Attempting to auto-subscribe to appropriate subscriptions ...
Installed Product Current Status:
ProductName:            Red Hat Enterprise Linux Desktop
Status:                 Subscribed

Please visit https://access.redhat.com/management/consumers/abcd1234 to view the details, and to make changes if necessary.

14.5.3. Unregistering from RHN Classic Only

There may be an instance where a system should be unregistered from RHN Classic but is not yet ready to be registered to Certificate-based Red Hat Network. The rhn-migrate-classic-to-rhsm tool can be used simply to unregister a system from RHN Classic. This still copies over the product certificates for the classic channels to configure the system in the style of certificate-based subscriptions, but it does not register the machine with subscription service.
To unregister the system only, use the --no-auto option.
[root@server ~]# rhn-migrate-classic-to-rhsm --no-auto
RHN Username: jsmith@example.com
Password:

Retrieving existing RHN classic subscription information ...
+----------------------------------+
System is currently subscribed to:
+----------------------------------+
rhel-i386-client-5

List of channels for which certs are being copied
rhel-i386-client-5

Product Certificates copied successfully to /etc/pki/product !!

Preparing to unregister system from RHN classic ...
System successfully unregistered from RHN Classic.
Because there are product certificates, Subscription Manager will show a red, invalid status for the system and issue notifications until the system is registered and subscriptions applied.

14.5.4. Migrating a Disconnected System

Some systems may never be connected to an external network or may be prevented from accessing Red Hat Network or a Satellite system. These systems still require valid subscriptions and product certificates, though.
The rhn-migrate-classic-to-rhsm uses the information in /etc/sysconfig/rhn/systemid to get the previous registration information and map channels to certificates. If a system is disconnected, it may not have a systemid file.
Most systems, even ones never registered with RHN Classic, do have an installation number. When Red Hat software is purchased through a vendor, the purchased software is identified in an installation number or subscription number (described in https://access.redhat.com/kb/docs/DOC-15408) in the /etc/sysconfig/rhn/install-num file.
The installation number is in essence a code which contains all of the information about the products and versions purchased for the system. For example, this installation number shows that it is valid for RHEL Client and RHEL Workstation channels.
[root@server ~]# python /usr/lib/python2.4/site-packages/instnum.py da3122afdb7edd23
Product: RHEL Client
Type: Installer Only
Options: Eval FullProd Workstation
Allowed CPU Sockets: Unlimited
Allowed Virtual Instances: Unlimited
Package Repositories: Client Workstation

key: 14299426 "da3122"
checksum: 175 "af"
options: 4416 "Eval FullProd Workstation"
socklimit: -1 "Unlimited"
virtlimit: -1 "Unlimited"
type: 2 "Installer Only"
product: 1 "client"

{"Workstation": "Workstation", "Base": "Client"}
For a system which is not connected to either RHN Classic or a Satellite system, the installation number can be used to transition the product information from the older channel-based subscription model to the X.509 certificate model, managed by Subscription Manager.
The install-num-migrate-to-rhsm script identifies the channels that a disconnected system is subscribed to and then copies in the appropriate product certificates. Simply run the command:
[root@server ~]# install-num-migrate-to-rhsm
The script copies in the product certificates for the channels into the /etc/pki/product directory.
Once the system is migrated, it can be registered remotely and have entitlement certificates installed as described in 「Registering an Offline Consumer」.
Even though the system is not registered, the system facts display what script was used for migration.
[root@server ~]# subscription-manager facts --list | grep migr
migration.migrated_from: install_number
Because the system was not previously registered with RHN Classic, the migration facts do not include a system ID number.

14.5.5. Looking at Channel and Certificate Mappings

The subscription-manager-migration-data package contains a mapping file that maps RHN Classic channels to Certificate-based Red Hat Network product certificates. This file (/usr/share/rhsm/product/RHEL-5/channel-cert-mapping.txt) uses simple keys to map the values:
channel_name: product_name-hash-product_cert.pem
For example, this maps the Red Hat Enterprise Linux Client channel to the corresponding product certificate:
rhel-i386-client-workstation-5: Client-Workstation-i386-b0d4c042-6e31-45a9-bd94-ff0b82e43b1a-71.pem
During migration, that mapping is translated into product_cert.pem and the product certificate is copied into the /etc/pki/product directory. For the rhel-i386-client-workstation-5, this migrates to the 71.pem product certificate (the last two digits of the mapping).
However, many channels are available for legacy systems only or have not yet released an X.509 product certificate. In that case, the channel has no mapping.
jbappplatform-4.3.0-fp-i386-server-5-rpm: none
This can create a situation where not all channels are migrated over to Certificate-based Red Hat Network or where products are not fully subscribed.

14.6. Handling Subscriptions

Assigning a subscription to a system gives the system the ability to install and update any Red Hat product in that subscription. A subscription is a list of all of the products, in all variations, that were purchased at one time, and it defines both the products and the number of times that subscription can be used (the quantity of that product). The quantity is roughly the number of user licenses available. When one of those licenses is allocated to a system, that system is subscribed to the subscription.
A subscription is available to a system based on the system's architecture and other installed products. Subscriptions that are available for a platform (based on its hardware and operating system) are compatible. When the subscription is actually assigned to the machine, the subscription is consumed.
A system can be subscribed to multiple subscriptions, a single subscription, or a single product. Subscribing a system requires the ID number of the subscription or the subscription key for the product.
Unsubscribing a machine removes the entitlement to any of the products in the subscription, but the machine remains registered with the subscription service. Unsubscribing one system frees the subscription so that it can be allocated to another system.

14.6.1. Subscribing and Unsubscribing through the Red Hat Subscription Manager GUI

14.6.1.1. Subscribing to a Product

  1. Launch the Red Hat Subscription Manager GUI. For example:
    subscription-manager-gui
  2. Open the All Available Subscriptions tab.
  3. Set the filters to use to search for available entitlements. Subscriptions can be filtered by their active date and by their name. The checkboxes provide more fine-grained filtering:
    • match my system shows only subscriptions which match the system architecture.
    • match my installed products shows subscriptions which work with currently installed products on the system.
    • have no overlap with existing subscriptions excludes subscriptions with duplicate products. If a system is already subscribed to an entitlement for a specific product or if multiple entitlements supply the same product, then the subscription service filters those subscriptions and shows only the best fit.
  4. Select the available entitlements. To select multiple subscriptions, use the Ctrl key.
  5. Click the Subscribe button.

14.6.1.2. Unsubscribing through the GUI

  1. Launch the Red Hat Subscription Manager GUI. For example:
    subscription-manager-gui
  2. Open the My Subscriptions tab.
    All of the active subscriptions to which the system is currently subscribed are listed. (The products available through the subscription may or may not be installed.)
  3. Select the entitlements to unsubscribe. To select multiple subscriptions, use the Ctrl key.
  4. Click the Unsubscribe button in the bottom right of the window.

14.6.2. Handling Subscriptions through the Command Line

14.6.2.1. Subscribing from the Command Line

Subscribing a machine through the command line requires specifying the individual product or subscription to subscribe to, using the --pool option.
[root@server1 ~]# subscription-manager subscribe --pool=XYZ01234567
The options for the subscribe command are listed in 表14.4「subscribe Options」.
The ID of the subscription pool for the purchased product must be specified, and this pool ID is listed with the product subscription information, from running the list command:
[root@server1 ~]# subscription-manager list --available

+-------------------------------------------+
    Available Subscriptions
+-------------------------------------------+


ProductName:            RHEL for Physical Servers
ProductId:              MKT-rhel-server
PoolId:                 ff8080812bc382e3012bc3845ca000cb
Quantity:               10
Expires:                2011-09-20
Alternatively, the system can be subscribed to the best-fitting subscriptions, as identified by the subscription service, by using the --auto option (which is analogous to the --autosubscribe option with the register command).
[root@server1 ~]# subscription-manager subscribe --auto
表14.4 subscribe Options
Options Description Required
--pool=pool-id Gives the ID for the subscription to subscribe the machine to. Required, unless --auto is used
--auto Automatically subscribes the system to the best-match subscription or subscriptions. Optional
--quantity Subscribes multiple counts of an entitlement to the system. This is used to cover subscriptions that define a count limit, like using two 2-socket server subscriptions to cover a 4-socket machine. Optional

14.6.2.2. Unsubscribing from the Command Line

A system can be subscribed to multiple subscriptions and products. The system can be unsubscribed from a single subscription or product or from every subscribed product.
Running the unsubscribe command with the --all unsubscribes the system from every product and subscription pool it is currently subscribed to.
[root@server1 ~]# subscription-manager unsubscribe --all
It is also possible to unsubscribe from a single product. Each product has an identifying X.509 certificate installed with it, and the product to unsubscribe from can be identified with the unsubscribe command to remove only that product subscription.
  1. Get the serial number for the product certificate, if you are unsubscribing from a single product. The serial number can be obtained from the cert.pem file or by using the list command. For example:
    [root@server1 ~]# subscription-manager list --consumed
    
    +-------------------------------------------+
        Consumed Product Subscriptions
    +-------------------------------------------+
    
    
    ProductName:         High availability (cluster suite)
    ContractNumber:      0
    SerialNumber:        11287514358600162
    Active:              True
    Begins:              2010-09-18
    Expires:             2011-11-18
  2. Run the subscription-manager tool with the --serial option to specify the certificate.
    [root@server1 ~]# subscription-manager unsubscribe --serial=11287514358600162

14.6.3. Stacking Subscriptions

Some subscriptions define a count which works as a restriction on the subscription. For example, counts can be set on the number of sockets or CPUs on a machine, the number of virtual guests on a host, or the number of clients in a domain.
The entire count must be covered for the system to be fully entitled. If there are four sockets on a machine, then the server subscriptions must cover four sockets, or if there are eight guests, then there must be enough to cover all eight guests.
Many subscriptions can be combined together to cover the count on the system. Two subscriptions for RHEL Server for 2-Sockets can be combined together to cover a four-socket machine. These subscriptions can be stacked.
There are some rules on what subscriptions can be stacked:
  • Subscriptions can be stacked by using multiple quantities from the same subscription set.
  • Subscriptions from different contracts can be stacked together.
  • Only the same product subscription can be stacked. RHEL Server for 2-Sockets can be stacked with another RHEL Server for 2-Sockets subscription, but not with RHEL Server for Virtualization, even if they both cover the socket count.
  • Stackable entitlements are indicated in the Subscription Manager UI with an asterisk (*). In the UI, available subscriptions are grouped first by what subscriptions are compatible for stacking, and then by other available subscriptions.
To stack subscriptions in the Subscription Manager UI, simply set the Quantity field to the required quantity to cover the count.
Stacking Quantities
図14.13 Stacking Quantities

To stack subscriptions from the command line, use the --quantity option. The quantity taken applies to the product in the --pool option:
[root@server1 ~]# subscription-manager subscribe --pool=XYZ01234567 --quantity=2

14.6.4. Manually Adding a New Subscription

In certain situations, new product subscriptions can be added by uploading the X.509 entitlements certificate directly rather than polling the subscription service. For example, consumers which are offline must have subscriptions manually added because they cannot connect to the subscription service directly.
  1. Retrieve the certificate information for the consumer from the Customer Portal.
    1. Open the Subscriptions tab in the Customer Portal, and select the Overview item under the Certificate-Based Management area.
    2. In the summary of consumers, click the name of the offline consumer.
    3. If necessary, assign the subscriptions to the consumer.
    4. Open the Applied Subscriptions tab.
    5. Click the Download All Certificates button. This exports all of the entitlements certificates, for each product, to a single .zip file. Save the file to some kind of portable media, like a flash drive.
      To download individual entitlement certificates, click the Download link on the row for the subscription.
  2. Copy the certificates over to the consumer machine.
  3. If all certificates were downloaded in an archive file, then there are multiple archives in the downloaded certificates.zip file. Unzip the directories until the PEM files for the subscription certificates are available.
  4. Import the certificates.
    This can be done from the command line using the import command:
    # subscription-manager import --certificate=/tmp/export/entitlement_certificates/596576341785244687.pem --certificate=/tmp/export/entitlement_certificates/3195996649750311162.pem
    Successfully imported certificate 596576341785244687.pem
    Successfully imported certificate 3195996649750311162.pem
    This can also be performed through the Subscription Manager GUI:
    1. Launch the Red Hat Subscription Manager GUI. For example:
      subscription-manager-gui
    2. In the Tools area, click the Import Certificate button.
    3. Click the file folder icon at the right of the field to navigate to the .pem file of the product certificate.
    4. Click the Import Certificate button.
The consumer is then entitled for all of the subscription that were uploaded.

14.7. Redeeming Subscriptions on a Machine

Systems can be set up with pre-existing subscriptions already available to that system. For some systems which were purchased through third-party vendors, a subscription to Red Hat products is included with the purchase of the machine. Companies using the Subscription Asset Manager can allocate subscriptions to their own systems by creating activation keys which are used to claim those assigned subscriptions.
Red Hat Subscription Manager pulls information about the system hardware and the BIOS into the system facts to recognize the hardware vendor. If the vendor and BIOS information matches a certain configuration, then the subscription can be redeemed, which will allow the system to be automatically subscribed to the entitlements purchased with the machine.
This diverges from the normal subscription process by adding an extra step:
  1. The machine is registered first (「Registering, Unregistering, and Reregistering a System」). This can be done as normal or the activation keys can be submitted with command-line registrations.
  2. The subscriptions are redeemed using the given activation keys.
  3. The system is then subscribed to its subscriptions (「Handling Subscriptions」).

注記

Activation keys may be generated by a hardware vendor (external to your organization). Activation keys may also be generated using the Subscription Asset Manager, which is a local subscription service, which is described in the Subscription Asset Manager documentation and 「Working with Subscription Asset Manager」.

14.7.1. Redeeming Subscriptions through the GUI

The Activate Subscription Button

If the machine does not have any subscriptions to be redeemed, then the Activate Subscription button is not there.
  1. Launch the Red Hat Subscription Manager GUI. For example:
    subscription-manager-gui
  2. At the top of the main window, click the Activate Subscription button.
  3. In the pop-up window, enter the email address to send the notification to when the redemption is complete.
  4. Click the Activate button.
It can take up to ten minutes for the confirmation email to arrive.

14.7.2. Redeeming Subscriptions on a Machine through the Command Line

The machine subscriptions are redeemed by running the redeem command, with an email address to send the redemption email to when the process is complete.
# subscription-manager redeem --email=jsmith@example.com
In a multi-organization environment, it is also necessary to specify the organization which issued the activation keys. For example:
# subscription-manager redeem --email=jsmith@example.com --org="IT Dept"

注記

The machine must be registered first so that the subscription service can properly identify the system and its subscriptions.

14.8. Viewing Available and Used Subscriptions

To manage subscriptions, administrators need to know both what subscriptions a system is currently consuming and what subscriptions are available to the system.

14.8.1. Viewing Subscriptions in the GUI

The Red Hat Subscription Manager tools give a more detailed view of subscriptions and entitlements than is available through the global tools of the Customer Portal. Three tabs summarize each of the subscriptions and products for the specific machine: installed products (with subscriptions), subscribed entitlements, and available subscriptions.
These summaries are always displayed in the Red Hat Subscription Manager UI.
Subscribed Entitlements
The My Subscriptions area shows all of the current entitlements that the system is subscribed to.
My Subscriptions Tab
図14.14 My Subscriptions Tab

Available Subscriptions
The All Available Subscriptions area shows all of the subscriptions that are available to the system. The default displays only entitlements that are compatible with the hardware, but these can be filtered to show entitlements corresponding to other installed programs, only subscriptions that have not been installed, and subscriptions based on date.
All Available Subscriptions Tab
図14.15 All Available Subscriptions Tab

The filters dynamically search for available entitlements. Subscriptions can be filtered by their active date and by their name. The checkboxes provide more fine-grained filtering:
  • match my system shows only subscriptions which match the system architecture.
  • match my installed products shows subscriptions which work with currently installed products on the system.
  • have no overlap with existing subscriptions excludes subscriptions with duplicate products. If a system is already subscribed to an entitlement for a specific product or if multiple entitlements supply the same product, then the subscription service filters those subscriptions and shows only the best fit.
My Installed Software
The My Installed Software area shows the currently installed products on the system, along with their subscription status. This doesn't allow administrators to install software, only to view installed software.
My Installed Software Tab
図14.16 My Installed Software Tab

14.8.2. Listing Subscriptions with the Command Line

As with the three tabs in the UI, there are three different ways to use the list command to display different areas of the subscriptions and products on the system.
表14.5 subscription-manager list Options
Option Description
--installed (or nothing) Lists all of the installed and subscribed product on the system. If no option is given with list, it is the same as using the --installed argument.
--consumed Lists all of the subscriptions allocated to the system.
--available [--all] Using --available alone lists all of the compatible, active subscriptions for the system. Using --available --all lists all options, even ones not compatible with the system or with no more available quantities.
--ondate=YYYY-MM-DD Shows subscriptions which are active and available on the specified date. This is only used with the --available option. If this is not used, then the command uses the current date.
--installed Lists all of the products that are installed on the system (and whether they have a subscription) and it lists all of the product subscriptions which are assigned to the system (and whether those products are installed).

The list command shows all of the subscriptions that are currently allocated to the system by using the --consumed option.
[root@server1 ~]# subscription-manager list --consumed

+-------------------------------------------+
    Consumed Product Subscriptions
+-------------------------------------------+


ProductName:        	Red Hat Enterprise Linux Server
ContractNumber:     	1458961
SerialNumber:       	171286550006020205
Active:             	True
Begins:             	2009-01-01
Expires:            	2011-12-31
The list command shows all of the subscriptions that are compatible with and available to the system using the --available option. To include every subscription the organization has — both the ones that are compatible with the system and others for other platforms — use the --all option with the --available. The --ondate option shows only subscriptions which are active on that date, based on their activation and expiry dates.
[root@server1 ~]# subscription-manager list --available --all

+-------------------------------------------+
    Available Subscriptions
+-------------------------------------------+


ProductName:            RHEL for Physical Servers
ProductId:              MKT-rhel-server
PoolId:                 ff8080812bc382e3012bc3845ca000cb
Quantity:               10
Expires:                2011-09-20


ProductName:            RHEL Workstation
ProductId:              MKT-rhel-workstation-mkt
PoolId:                 5e09a31f95885cc4
Quantity:               10
Expires:                2011-09-20

[snip]
The --installed option correlates the products that are actually installed on the system (and their subscription status) and the products which could be installed on the system based on the assigned subscriptions (and whether those products are installed).
[root@server1 ~]# subscription-manager list --installed

+-------------------------------------------+
    Installed Product Status
+-------------------------------------------+
ProductName:         Red Hat Enterprise Linux
Status:              Not Subscribed
Expires:
Subscription:
ContractNumber:
AccountNumber:


ProductName:         Awesome OS Server
Status:              Not Installed
Expires:             2012-02-20
Subscription:        54129829316535230
ContractNumber:      39
AccountNumber:       12331131231

14.8.3. Viewing Subscriptions Used in Both RHN Classic and Certificate-based Red Hat Network

Administrators need to have a sense of all of the subscriptions allocated for their organization, altogether, regardless of whether the system is managed in RHN Classic or Certificate-based Red Hat Network. The Customer Portal provides a way of looking at the total consumed subscriptions.
In the Subscriptions Overview page, the Subscription Utilization area at the top gives the current count for every active subscription for the entire organization, and a total count of every used subscription, regardless of whether it is used in RHN Classic or Certificate-based Red Hat Network. These numbers are updated whenever the subscription count changes in the subscription server. (The subsequent Certificate-based Red Hat Network and RHN Classic sections gives usage subcounts based on system which are registered to that specific subscription service.)
Total Counts of Subscriptions for All Subscription Services
図14.17 Total Counts of Subscriptions for All Subscription Services

NOTE

RHN Classic is provided for legacy systems. Red Hat Enterprise Linux 5.7 and 6.1 and later systems should use Certificate-based Red Hat Network to manage subscriptions for systems.

14.9. Working with Subscription yum Repos

As 「Subscription and Content Architecture」 says, Red Hat Subscription Manager works with package management tools like yum. Subscription Manager has its own yum plug-ins: product-id for subscription-related information for products and subscription-manager which is used for the content repositories.
As systems are subscribed to products, the associated content repositories (identified in the entitlement certificate) are made available to the system. The content repositories are based on the product and on the content delivery network, defined in the baseurl parameter of the rhsm.conf file.
A subscription may include access to optional content channels along with the default channels. This optional channels must be enabled before the packages in them can be installed (even if the system is fully entitled to the products in those channels).
  1. List all available repos for the system, including disabled repos.
    [root@server ~]# yum repolist all
    repo id                      repo name                           status
    rhel-5-server                Red Hat Enterprise Linux 5Server -  enabled:    1,749
    rhel-5-server-beta           Red Hat Enterprise Linux 5Server Be enabled:      869
    rhel-5-server-optional-rpms  Red Hat Enterprise Linux 5Server Op disabled
    rhel-5-server-supplementary  Red Hat Enterprise Linux 5Server Su disabled
    The optional and supplementary channels are named rhel-5-server-optional-rpms and rhel-5-server-supplementary, respectively.
  2. The repositories can be enabled using the yum-config-manager command:
    [root@server ~]# yum-config-manager --enable rhel-5-server-optional-rpms
Alternatively, simply specify the optional or supplementary repository when installing a package with yum. This uses the --enablerepo repo_name option. For example:
# yum install rubygems --enablerepo=rhel-5-server-optional-rpms
Loaded plugins: product-id, refresh-packagekit, subscription-manager
Updating Red Hat repositories.
....
Using yum is described in 13章YUM (Yellowdog Updater Modified).

14.10. Responding to Subscription Notifications

The Red Hat Subscription Manager provides a series of log and UI messages that indicate any changes to the valid certificates of any installed products for a system. In the Subscription Manager GUI, the status of the system entitlements is color-coded, where green means all products are fully subscribed, yellow means that some products may not be subscribed but updates are still in effect, and red means that updates are disabled.
Color-Coded Status Views
図14.18 Color-Coded Status Views

The command-line tools also indicate that status of the machine. The green-yellow-red codes translate to text status messages of subscribed, partially subscribed, and expired/not subscribed, respectively.
[root@server ~]# subscription-manager list
+-------------------------------------------+
    Installed Product Status
+-------------------------------------------+

ProductName:            Red Hat Enterprise Linux Server
Status: Not Subscribed
Expires:
SerialNumber:
ContractNumber:
AccountNumber:
Whenever there is a warning about subscription changes, a small icon appears in the top menu bar, similar to a fuel gauge.
Subscription Notification Icon
図14.19 Subscription Notification Icon

As any installed product nears the expiration date of the subscription, the Subscription Manager daemon will issue a warning. A similar message is given when the system has products without a valid certificate, meaning either the system is not subscribed to a subscription that entitles that product or the product is installed past the expiration of the subscription. Clicking the Manage My Subscriptions... button in the subscription notification window opens the Red Hat Subscription Manager GUI to view and update subscriptions.
Subscription Warning Message
図14.20 Subscription Warning Message

When the Subscription Manager UI opens, whether it was opened through a notification or just opened normally, there is a box in the upper left corner that shows the number of products that lack a valid certificate. The easiest way to allocate subscriptions which match invalidated products is to click the Update Certificates button.
Update Certificates Button
図14.21 Update Certificates Button

The Subscription Assistant pop-up window shows a targeted list of available subscriptions that apply to the specific products that do not have valid certificates (assuming subscriptions are available).
Subscription Assistant
図14.22 Subscription Assistant

Alternatively, you can respond to entitlements notifications by managing subscriptions generally:

14.11. Healing Subscriptions

Subscription Manager can monitor all of the active entitlements for a system. Along with passively warning that a subscription is close to expiration (「Responding to Subscription Notifications」), Subscription Manager can be configured to re-subscribe to subscriptions, automatically and actively, as one nears its expiry. This is system healing.
System healing prevents a system from having unentitled products as long as any valid subscription is available for it.
System healing is configured as part of the Subscription Manager daemon, rhsmcertd. This daemon checks the certificate validity dates daily. If a subscription is within 24 hours of expiring, then Subscription Manager will check for any available compatible subscriptions and automatically re-subscribes the system, much like auto-subscribing during registration.

14.11.1. Enabling Healing

System healing is disabled by default. It can be enabled by manually adding the autoheal parameter to the Subscription Manager configuration.
  1. Open the Subscription Manager configuration file.
    vim /etc/rhsm/rhsm.conf
  2. In the [rhsmcertd] area, add the autoheal line, and set the value to true.
    [rhsmcertd]
    certFrequency = 240
    healFrequency = 1440
    autoheal = true
The configuration can also be updated using the config command:
[root@server1 ~]# subscription-manager config --rhsmcertd.autoheal=true

14.11.2. Changing the Healing Check Frequency

NOTE

Healing cannot be disabled by changing the time interval. Setting the healFrequency parameter to zero means that Subscription Manager simply uses the default time setting.
  1. Open the Subscription Manager configuration file:
    # vim /etc/rhsm/rhsm.conf
  2. In the [rhsmcertd] section, set the healFrequency parameter to the time, in minutes, to check for changed subscriptions.
    [rhsmcertd]
    certFrequency = 240
    healFrequency = 1440
  3. Restart the rhsmcertd daemon to reload the configuration.
    # service rhsmcertd start

14.12. Working with Subscription Asset Manager

Subscription Asset Manager works with the local Subscription Manager tools, but the local Subscription Manager must be configured to work with the given Subscription Asset Manager service.
This section covers the procedures for setting up Subscription Manager to work with Subscription Asset Manager.
The Subscription Asset Manager documentation details all the tasks for managing the infrastructure:
  • Creating organizations and environments.
  • Creating activation keys.
  • Managing subscription manifests from Red Hat.
  • Viewing notification and system reports.

14.12.1. Configuring Subscription Manager to Work with Subscription Asset Manager

Subscription Asset Manager performs two backend management functions:
  • Allocate subscriptions as a subscription service
  • Work as a real-time proxy for the content delivery network
That means that the local Subscription Manager client needs to be configured to use Subscription Asset Manager as its subcription service and content provider, rather than using the default Red Hat Network (hosted) configuration.
The subscription service URL is configured in the hostname parameter in the [server] area in the rhsm.conf configuration file. The content delivery network URL is configured in the baseurl parameter in the [rhsm] area. These values can be reset using the config command. For example:
[root@server1 ~]# subscription-manager config --server.hostname=sam.example.com --rhsm.baseurl=sam.example.com
Changing the Subscription Manager configuration with the config command is covered in 「Using the config Command」.

14.12.2. Viewing Organization Information

Infrastructures that have their own local content and subscription services, such as Subscription Asset Manager, can define groups that organize their systems. The primary division is organizations, which create independent units. The systems and users in one organization are invisible to the systems and users in another organization. Organizations can be subdivided into environments, which provide associations with content repositories and allowed products, versions, and content sets. A system can belong to multiple environments.
Organizations, environments, and repositories are created and configured in the service application, such as Subscription Asset Manager. However, the organization structure for a system or for a user account can be viewed using the Subscription Manager command-line tools. The orgs, environments, and repos commands list the organization, environment, and repository information for the system, depending on the organization and environments it belongs to.
For example:
[root@server1 ~]# subscription-manager orgs --username=jsmith --password=secret
+-------------------------------------------+
           admin Organizations
+-------------------------------------------+

OrgName:         Admin Owner
OrgKey:         admin

OrgName:         Dev East
OrgKey:         deveast

OrgName:         Dev West
OrgKey:         devwest


[root@server1 ~]# subscription-manager environments --username=jsmith --password=secret --org=admin
+-------------------------------------------+
           Environments
+-------------------------------------------+

Name:                        Locker
Description:                 None

Name:                        Dev
Description:

Name:                        Prod
Description:


[root@server1 ~]# subscription-manager repos --list
+----------------------------------------------------------+
     Entitled Repositories in /etc/yum.repos.d/redhat.repo
+----------------------------------------------------------+

RepoName:                    never-enabled-content
RepoId:                      never-enabled-content
RepoUrl:                     https://content.example.com/repos/optional
Enabled:                     0


RepoName:                    always-enabled-content
RepoId:                      always-enabled-content
RepoUrl:                     https://content.example.com/repos/dev
Enabled:                     1


RepoName:                    content
RepoId:                      content-label
RepoUrl:                     https://content.example.com/repos/prod
Enabled:                     1

14.13. Updating Entitlements Certificates

An entitlement certificate represents a subscription that has been consumed by a given system. It includes all of the products which are included in the subscription for service and support, the subscription's start and end dates, and the number of entitlements included for each product. An entitlement certificate does not list products that are currently installed on the system; rather, it lists all of that products that are available to the system.
The entitlement certificate is an X.509 certificate and is stored in a base 64-encoded blob in a .pem file.
When a subscription expires or is changed, then the entitlement certificate must be updated to account for the changes. The Red Hat Subscription Manager polls the subscription service periodically to check for updated entitlement certificates; this can also be updated immediately or pulled down from the Customer Portal. The entitlement certificates are updated by revoking the previous entitlement certificate and generating a new one to replace it.

14.13.1. Updating Entitlement Certificates

  1. Open the Red Hat Customer Portal.
    https://access.redhat.com/
  2. Click the Subscriptions tab to open the subscriptions menu, and select the Consumers List option under Certificate-Based Management.
  3. Click the system name in the list of consumers.
  4. Open the Applied Subscriptions tab for the list of all active, assigned subscriptions for the consumer.
  5. Click the Download All Certificates button above the list of subscriptions. If there is only one subscription, then click the Download button by the certificate.
    To retrieve an individual entitlement certificate, click the Download link in the subscription row.
  6. If all entitlement certificates were downloaded in an archive file, then there are multiple archives in the downloaded certificates.zip file. Unzip the directories until the PEM files for the entitlement certificates are available.
  7. Import the certificate PEM file. This can be done using the Import Certificates button in the Subscription Manager GUI or using the import command:
    # subscription-manager import --certificate=/tmp/export/entitlement_certificates/596576341785244687.pem --certificate=/tmp/export/entitlement_certificates/3195996649750311162.pem
    Successfully imported certificate 596576341785244687.pem
    Successfully imported certificate 3195996649750311162.pem

14.13.2. Updating Subscription Information

The refresh command updates all of the subscription information that is available to the consumer. This removes expired subscriptions and adds new subscriptions to the list. This does not subscribe the machine, but it does pull in the newest data for administrators to use.
[root@server1 ~]# subscription-manager refresh

14.14. Configuring the Subscription Service

By default, Red Hat Subscription Manager (both GUI and CLI) talk to the subscription service and the Customer Portal for their subscription services and content delivery, respectively. Red Hat Subscription Manager can be configured to use different content servers or subscription services. Other aspects of the Red Hat Subscription Manager — like the locations to look for system and product certificates or the system information used by Red Hat Subscription Manager to identify compatible entitlements — can also be customized to fit the network environment.

14.14.1. Red Hat Subscription Manager Configuration Files

The primary configuration file for Red Hat Subscription Manager, both the GUI and CLI tools, is the rhsm.conf configuration file. There are other support files that either influence the Red Hat Subscription Manager service or can help administrators better use the Subscription Manager.

14.14.1.1. All Files Used by Red Hat Subscription Manager

All of the files related to the configuration of Red Hat Subscription Manager are used by both the GUI and CLI; there's no separate configuration.
表14.6 Red Hat Subscription Manager Files and Directories
File or Directory Description
/etc/rhsm The primary Red Hat Subscription Manager configuration directory.
/etc/rhsm/rhsm.conf The Red Hat Subscription Manager configuration file. This is used by both the GUI and the CLI.
/etc/rhsm/facts Any user-defined JSON files that override or add system facts to determine entitlement compatibility. Any facts files must end in .facts.
/var/lib/rhsm/cache/installed_products.json A master list of installed products, which is sent by Subscription Manager to a hosted content service, such as Subscription Asset Manager.
/var/lib/rhsm/facts/facts.facts The default system facts filed, gathered by the Subscription Manager.
/var/lib/rhsm/packages/ The package profile cache (a list of installed products) which is gathered and periodically updated by the Subscription Manager.
/var/log/rhsm The Red Hat Subscription Manager log directory.
/var/log/rhsm/rhsm.log The log for the Red Hat Subscription Manager tools.
/var/log/rhsm/rhsmcertd.log The log for the Red Hat Subscription Manager daemon, rhsmcertd.
/etc/pki/consumer The directory which contains the identity certificates used by the system to identify itself to the subscription service.
/etc/pki/consumer/cert.pem The base-64 consumer identity certificate file.
/etc/pki/consumer/key.pem The base-64 consumer identity key file.
/etc/pki/entitlement The directory which contains the entitlement certificates for the available subscriptions.
/etc/pki/product/product_serial#.pem The product certificates for installed software products.
/var/run/subsys/rhsm Runtime files for Red Hat Subscription Manager
/etc/init.d/rhsmcertd The subscription certificate daemon.
/etc/cron.daily/rhsm-complianced and /usr/libexec/rhsm-complianced Files to run daily checks and notifications for subscription validity.
/etc/yum/pluginconf.d/rhsmplugin.conf The configuration file to include the Red Hat Subscription Manager plug-in in the yum configuration.
/usr/share/rhsm All of the Python and script files used by both Red Hat Subscription Manager tool to perform subscription tasks.
/usr/share/rhsm/gui All of the Python script and image files used to render the Red Hat Subscription Manager GUI.

14.14.1.2. About the rhsm.conf File

The main configuration file for the Subscription Manager is rhsm.conf. This file configures several important aspects of how Red Hat Subscription Manager interacts with both entitlements and content services:
  • The subscription service connection information, including the server host and port
  • The content service to use, in the form of a web address
  • The location of all of the different certificates used by the subscription service, including CA certificates for SSL authentication, identity certificates for the system, and entitlement and product certificates
The rhsm.conf file is divided into three sections. Two major sections defined the subscription service ([server]) and content and product delivery ([rhsm]). The third section relates to the rhsmcertd daemon. Each assertion is a simple attribute= value pair. Any of the default values can be edited; all possible attributes are present and active in the default rhsm.conf file.
例14.9 Default rhsm.conf File
# Red Hat Subscription Manager Configuration File:

# Unified Entitlement Platform Configuration
[server]
# Server hostname:
hostname = subscription.rhn.redhat.com

# Server prefix:
prefix = /subscription

# Server port:
port = 443

# Set to 1 to disable certificate validation:
insecure = 0

# Set the depth of certs which should be checked
# when validating a certificate
ssl_verify_depth = 3

# Server CA certificate location:
ca_cert_dir = /etc/rhsm/ca/

# an http proxy server to use
proxy_hostname =

# port for http proxy server
proxy_port =

# user name for authenticating to an http proxy, if needed
proxy_user =

# password for basic http proxy auth, if needed
proxy_password =

[rhsm]
# Content base URL:
baseurl= https://cdn.redhat.com

# Default CA cert to use when generating yum repo configs:
repo_ca_cert = %(ca_cert_dir)sredhat-uep.pem

# Where the certificates should be stored
productCertDir = /etc/pki/product
entitlementCertDir = /etc/pki/entitlement
consumerCertDir = /etc/pki/consumer

[rhsmcertd]
# Frequency of certificate refresh (in minutes):
certFrequency = 240
# Frequency of autoheal check (1440 min = 1 day):
healFrequency = 1440

表14.7 rhsm.conf Parameters
Parameter Description Default Value
[server] Parameters
hostname Gives the IP address or fully-qualified domain name of the subscription service. subscription.rhn.redhat.com
prefix Gives the directory, in the URL, to use to connect to the subscription service. /subscription
port Gives the port to use to connect to the subscription service. 443
insecure Sets whether to use a secure (0) or insecure (1) connection for connections between the Subscription Manager clients and the subscription service. 0
ssl_verify_depth Sets how far back in the certificate chain to verify the certificate. 3
proxy_hostname Gives the hostname of the proxy server. This is required.
proxy_port Gives the port of the proxy server. This is required.
proxy_user Gives the user account to use to access the proxy server. This may not be required, depending on the proxy server configuration.
proxy_password Gives the password credentials to access the proxy server. This may not be required, depending on the proxy server configuration.
ca_cert_dir Gives the location for the CA certificate for the CA which issued the subscription service's certificates. This allows the client to identify and trust the subscription service for authentication for establishing an SSL connection. /etc/rhsm/ca
[rhsm] Parameters
baseurl Gives the full URL to access the content delivery system. https://cdn.redhat.com
repo_ca_cert Identifies the default CA certificate to use to set the yum repo configuration. %(ca_cert_dir)sredhat-uep.pem
showIncompatiblePools
Sets whether to display subscription pools which are not compatible with the system's architecture but which have been purchased by an organization. By default, Subscription Manager only displays subscriptions which are compatible with, and therefore available to, the system.
This parameter only applies to the Subscription Manager GUI. Incompatible subscriptions can be displayed in the CLI by using the --all option with the list command.
0
productCertDir Sets the root directory where the product certificates are stored and can be accessed by Subscription Manager. /etc/pki/product
consumerCertDir Sets the directory where the identity certificate for the system is stored and can be accessed by Subscription Manager. /etc/pki/consumer
entitlementCertDir Sets the directory where the entitlement certificates for the system are stored and can be accessed by Subscription Manager. Each subscription has its own entitlement certificate. /etc/pki/entitlement
[rhsmcertd] Parameters
certFrequency Sets the interval, in minutes, to check and update entitlement certificates used by Subscription Manager. 240
healFrequency Sets the interval, in minutes, to check for change subscriptions and installed products and to allocate subscriptions, as necessary, to maintain subscription status for all products. 240

14.14.2. Using the config Command

subscription-manager has a subcommand that can change the rhsm.conf configuration file. Almost all of the connection information used by Subscription Manager to access the subscription server, content server, and any proxies is set in the configuration file, as well as general configuration parameters like the frequency Subscription Manager checks for entitlements updates. There are major divisions in the rhsm.conf file, such as [server] which is used to configure the subscription server. When changing the Subscription Manager configuration, the settings are identified with the format section.parameter and then the new value. For example:
server.hostname=newsubscription.example.com
When changing the value for a parameter, the parameter is passed as an argument to the config command:
[root@server1 ~]# subscription-manager config --section.parameter=newValue
For example, to change the hostname of the subscription service:
[root@server1 ~]# subscription-manager config --server.hostname=subscription.example.com
All of the rhsm.conf file parameters are listed in 表14.7「rhsm.conf Parameters」. This is most commonly used to change connection settings:
  • server.hostname (subscription server)
  • server.proxy
  • server.proxy_port
  • server.proxy_user
  • server.proxy_password
  • rhsm.baseurl (content server)
  • rhsm.certFrequency
The config command also has a --remove option. This deletes the the current value for the parameter without supplying a new parameter. A blank value tells Subscription Manager to use any default values that are set for that parameter rather than a user-defined value. For example:
[root@server1 ~]# subscription-manager config --remove=rhsm.certFrequency

The default value for rhsm.certFrequency will now be used.
If a value does not have a default, then the command returns simply that the value has been removed:
[root@server1 ~]# subscription-manager config --remove=server.proxy

You have removed the value in section server for parameter proxy.

14.14.3. Using an HTTP Proxy

Some network environments may only allow external Internet access or access to content servers by going through an HTTP proxy.

14.14.3.1. Configuring an HTTP Proxy for GUI Use

The Red Hat Subscription Manager GUI can be configured to use an HTTP proxy for all of its connections to the subscription service. (This is also an advanced configuration option at firstboot.) To configure the proxy:
  1. Launch the Red Hat Subscription Manager GUI. For example:
    subscription-manager-gui
  2. Click the Proxy Configuration button at the top of the window in the Tools area.
  3. Check the ...Connect to Red Hat Network via an HTTP Proxy checkbox and enter the server location, in the format hostname:port.
  4. If the proxy requires a username/password to allow access, then also select the User authentication checkbox and fill in the user credentials.
  5. The configuration is automatically applied, so when the proxy is configured, simply close the window.

14.14.3.2. Configuring HTTP Proxy in the rhsm.conf File

The HTTP proxy settings can be configured in the rhsm.conf file; this is the same as configuring it in the Subscription Manager GUI. The proxy configuration is stored and used for every connection between the subscription service and the local system.
  1. Open the Subscription Manager configuration file.
    vim /etc/rhsm/rhsm.conf
  2. Change the settings in the [server] section that relate to the HTTP proxy. All parameters are described in 表14.7「rhsm.conf Parameters」. There are four parameters directly related to the proxy:
    • proxy_hostname for the IP address or fully-qualified domain name of the proxy server; this is required.

      Note

      Leaving the proxy_hostname argument blank means that no HTTP proxy is used.
    • proxy_port for the proxy server port.
    • proxy_user for the user account to connect to the proxy; this may not be required, depending on the proxy server's configuration.
    • proxy_password for the password for the user account to connect to the proxy; this may not be required, depending on the proxy server's configuration.
    [server]
    
    # an http proxy server to use
    proxy_hostname = proxy.example.com
    
    # port for http proxy server
    proxy_port = 443
    
    # user name for authenticating to an http proxy, if needed
    proxy_user =
    
    # password for basic http proxy auth, if needed
    proxy_password =

14.14.3.3. Passing HTTP Proxy Information with subscription-manager Commands

Rather than using a permanently-configured HTTP proxy, as the GUI does, HTTP proxy information can be passed with a command invocations. The arguments listed in 表14.8「Proxy Arguments」 are available to every command used with subscription-manager.
表14.8 Proxy Arguments
Argument Description Required for a Proxy Connection?
--proxy Gives the proxy server to connect to, in the format hostname:port. Yes
--proxyuser Gives the username to use to authenticate. This is only required if user authentication is required. No
--proxypass Gives the password to use with the user account. This is only required if user authentication is required. No

The proxy information can be passed with any subscription-manager operation. For example:
[root@server1 ~]# subscription-manager subscribe --pool=ff8080812bc382e3012bc3845ca000cb --proxy=proxy.example.com:8443 --proxyuser=jsmith --proxypass=secret

14.14.4. Changing the Subscription Server

The Subscription Manager usually connects to the subscription service, and the public server is configured in the rhsm.conf file. The subscription service connection settings are in the [server] section of the configuration file.
  1. Open the Subscription Manager configuration file.
    vim /etc/rhsm/rhsm.conf
  2. Change the settings in the [server] section that relate to the subscription service connection. All parameters are described in 表14.7「rhsm.conf Parameters」. There are three parameters directly related to the connection:
    • hostname for the IP address or fully-qualified domain name of the machine
    • prefix for the subscription service directory
    • port for the subscription service port
    [server]
    hostname=entitlements.server.example.com
    prefix=/candlepin
    port=8443

14.14.5. Configuring Red Hat Subscription Manager to Use a Local Content Provider

By default, the Subscription Manager is configured to use Red Hat's content delivery service, which is available at https://cdn.redhat.com. This can be changed to use a different external content delivery system or to use an organization-managed content system, such as Subscription Asset Manager.
  1. Open the Subscription Manager configuration file.
    vim /etc/rhsm/rhsm.conf
  2. Change the baseurl directive in the [rhsm] section. This is the full URL to the service.
    [rhsm]
    # Content base URL:
    baseurl= http://content.example.com/content

14.14.6. Managing Secure Connections to the Subscription Server

Red Hat Subscription Manager assumes, by default, that the subscription clients connect to the subscription service using a secure (SSL) connection. This requires that the CA certificate of the subscription service be downloaded and available locally for the client and that the appropriate connections be configured.
  1. Open the Subscription Manager configuration file.
    vim /etc/rhsm/rhsm.conf
  2. Change the settings in the [server] section that relate to a secure connection. All parameters are described in 表14.7「rhsm.conf Parameters」. There are three parameters directly related to the connection:
    • insecure to set whether to use a secure (0) or insecure (1) connection
    • ca_cert_dir for the directory location for the CA certificate for authentication and verification
    • port for the subscription service port; this should be an SSL port if a secure connection is required
    [server]
    port=8443
    insecure = 1
    ca_cert = /etc/rhsm/ca

14.14.7. Starting and Stopping the Subscription Service

The Red Hat Subscription Manager daemon, rhsmcertd, runs as a service on the system. The daemon, by default, starts with the system, and it can be started, stopped, or checked with the service command.
service rhsmcertd status
rhsmcertd (pid 13084) is running...
Red Hat Enterprise Linux has a tool called chkconfig which manages the automatic startup and shutdown settings for each process on the server, described in chkconfig. When a system reboots, some services can be automatically restarted. chkconfig also defines startup settings for different run levels of the server.
The Red Hat Subscription Manager service, which runs routinely to check for changes in the entitlements for an organization, can be controlled by chkconfig. By default, the Red Hat Subscription Manager daemon, rhsmcertd, is configured to run at levels 3, 4, and 5, so that the service is started automatically when the server reboots.
The run level settings can be reset using chkconfig. For example, to enable run level 2:
chkconfig --level 2345 rhsmcertd on
To remove the rhsmcertd from the start list, change the run level settings off:
chkconfig --level 2345 rhsmcertd off
Red Hat Enterprise Linux also has a GUI console that can manage the service and chkconfig settings.
  1. In the main menu, select the System link and open the Administration submenu.
  2. Open the Services link.

    Note

    The system-config-services package must be installed for the Services wizard to be available.
  3. Scroll to the rhsmcertd item in the list of services on the left, and then edit the service as desired.

14.14.8. Checking Logs

There are two log files maintained for Red Hat Subscription Manager in the /var/log/rhsm directory:
  • rhsm.log shows every invocation and result of running the Subscription Manager GUI or CLI
  • rhsmcertd.log shows every time a new certificate is generated, which happens on a schedule defined by the certFrequency parameter in the rhsm.conf file.
The rhsm.log log contains the sequence of every Python call for every operation invoked through the Subscription Manager tools. Each entry has this format:
YYYY-MM-DD HH:MM:SS,process_id [MESSAGE_TYPE] call python_script response
The response in the log entry can be very complex, spanning multiple lines, or relatively simply, with just a status code.
Because each log entry in rhsm.log relates to the Python script or function that was called, there can be multiple log entries for a single operation.
例14.10 rhsm.log Entry
2010-10-01 17:27:57,874 [INFO] _request() @connection.py:97 - status code: 200
2010-10-01 17:27:57,875 [INFO] perform() @certlib.py:132 - updated:
Total updates: 0
Found (local) serial# []
Expected (UEP) serial# []
Added (new)
  <NONE>
Deleted (rogue):
  <NONE>
Expired (not deleted):
  <NONE>
Expired (deleted):
  <NONE>
2010-10-01 17:27:57,878 [INFO] __init__() @connection.py:193 - Using certificate authentication: key = /etc/pki/consumer/key.pem, cert = /etc/pki/consumer/cert.pem, ca = /etc/pki/CA/candlepin.pem, insecure = True
2010-10-01 17:27:57,878 [INFO] __init__() @connection.py:196 - Connection Established: host: candlepin1.devlab.phx1.redhat.com, port: 443, handler: /candlepin

The entries in the rhsmcertd.log file are much simpler. The log only records when the rhsmcertd daemon starts or stops and every time a certificate is updated.
例14.11 rhsmcertd.log Entry
Fri Oct  1 13:27:44 2010: started: interval = 240 minutes
Fri Oct  1 13:27:50 2010: certificates updated

14.14.9. Showing and Hiding Incompatible Subscriptions

The entitlements that are made available to a consumer are filtered, by default, according to whether the architecture for the product matches the architecture of the system. This is compatibility. The Red Hat Subscription Manager can be configured to display even incompatible entitlements.
When running the command-line tools, the incompatible facts can be displayed simply by using the --all option:
[root@server1 ~]# subscription-manager list --available --all
To have the incompatible subscriptions displayed in the GUI and through the command-line by default, edit the rhsm.conf configuration file.
  1. Open the Subscription Manager configuration file.
    vim /etc/rhsm/rhsm.conf
  2. Change the showIncompatiblePools directive in the [rhsm] section. A value of 0 shows only compatible entitlements.
    [rhsm]
    # Content base URL:
    showIncompatiblePools = 1

14.14.10. Checking and Adding System Facts

Entitlements are available to a system based on whether the software is compatible with the system's architecture. For example, there are different products and subscriptions for 32-bit and 64-bit platforms. Red Hat Subscription Manager determines compatibility by collecting a range of facts about the system's hardware and architecture and then comparing it with all available entitlements.
The collected facts can be viewed, updated to acknowledge a hardware or configuration change, or overridden to force compatibility in the specified areas.
The system facts are very similar to the information in /etc/redhat-release or /etc/sysconfig. In both the Red Hat Subscription Manager GUI and CLI, the facts are represented as simple attribute: value pairs.

Tip

Updating the facts resends the information about the system to the Red Hat subscription service so that it can update the list of subscriptions which match the system architecture. Updating the facts is a very good thing to do after hardware upgrades or other important system changes.

14.14.10.1. Checking Facts from the Red Hat Subscription Manager UI

  1. Launch the Red Hat Subscription Manager GUI. For example:
    subscription-manager-gui
  2. In the Tools at the top of the window, click the View System Facts button.
  3. All of the current facts for the system are listed in the table, broken down into categories. Each category is in a closed list; to reveal all of the facts in that category, click the arrow by the category name.
    To update the facts, click the Update Facts button in the bottom right of the window.

14.14.10.2. Checking Facts with subscription-manager

To simply list the facts, run the facts with the --list option.
[root@server1 ~]# subscription-manager facts --list

cpu.architecture: i686
cpu.core(s)_per_socket: 4
cpu.cpu(s): 4
cpu.cpu_family: 6
cpu.cpu_mhz: 2000.010
cpu.cpu_op-mode(s): 32-bit, 64-bit
cpu.cpu_socket(s): 1
cpu.l1d_cache: 32K
cpu.l1i_cache: 32K
cpu.l2_cache: 6144K
cpu.model: 23
cpu.stepping: 6
cpu.thread(s)_per_core: 1
cpu.vendor_id: GenuineIntel
cpu.virtualization: VT-x
distribution.id: Santiago
distribution.name: Red Hat Enterprise Linux Workstation
distribution.version: 5
dmi.baseboard.manufacturer: IBM
dmi.baseboard.product_name: Server Blade
... [snip] ...
To update the facts after a system change, use the --update option with the facts command.
[root@server1 ~]# subscription-manager facts --update

14.14.10.3. Overriding the Default System Facts

The system facts, as collected, are stored in /var/lib/rhsm/facts/facts.facts. These facts are stored as attribute: value pairs, in a comma-separated list.
{"fact1": "value1","fact2": "value2"}
The primary file is generated and maintained by the Subscription Manager service. However, these values can be overridden to force architecture or platform compatibility (and thereby widening the available compatible subscriptions) by creating additional JSON facts files and dropping them in the /etc/rhsm/facts directory. These JSON files can override existing facts or even add new facts to be used by the subscription service.
例14.12 Example Facts Override File
vim /etc/rhsm/facts/my-example.facts

{"uname.machine": "x86","kernel_version": "2.6.32","physical_location": "MTV colo rack 5"}

14.14.11. Regenerating Identity Certificates

To regenerate the consumer's identity certificate (meaning it is revoked and replaced), use the identity command. Although not required, using the --force option will require the username and password and will cause the Subscription Manager to prompt for the credentials if they are not passed in the command:
[root@server1 ~]# subscription-manager identity --regenerate --force
Username: jsmith@example.com
Password:
Identity certificate has been regenerated.

14.14.12. Getting the System UUID

The consumer or system UUID is a unique identifier used in the inventory subscription service. This UUID can be used to re-register the system if there is some kind of corruption or for internal tracking. In the GUI (「Checking Facts from the Red Hat Subscription Manager UI」), this is listed as one of the system facts, under the system category:
From the command-line, use the identity command to return the current UUID. The UUID is the Current identity is value.
[root@server1 ~]# subscription-manager identity
Current identity is: 63701087-f625-4519-8ab2-633bb50cb261
name: server1.example.com
org name: 6340056
org id: 8a85f981302cbaf201302d89931e059a

14.14.13. Viewing Package Profiles

A package profile is the list of installed packages on a system (regardless of its subscription status). Red Hat Subscription Manager maintains a local list of installed packages to track the subscription status of the system. The package profile contains some general information about each package in the list:
  • Package name
  • Package version
  • Epoch
  • Publisher
This package manifest is always visible locally in the My Installed Software tab of the UI or by using the list --installed command with the command-line tools.
The Subscription Manager daemon, rhsmcertd, checks the system periodically — once when it is first registered and then when it runs a refresh operation every four hours — to get the most current list of installed products. When the system is registered and then whenever there is a change to the package list, Subscription Manager sends an updated package profile to the subscription service.
The package profile is stored in a cache file in /var/lib/rhsm/packages/.
Having an updated package profile for a system helps the subscription service identify compatible subscriptions.

14.14.14. Retrieving the Consumer ID, Registration Tokens, and Other Information

Some pieces of information are used frequently when managing entitlements using the subscription-manager script. Information like the consumer ID or subscription pool ID is pulled up and referenced automatically in the Red Hat Subscription Manager UI, but it has to be entered manually in the command line.
表14.9「Locations and Descriptions of Entitlement Data」 lists common information that is used to manage subscriptions, the operations they're used in, and the places to find the data.
表14.9 Locations and Descriptions of Entitlement Data
Information Description Operations Used In Find It In ...
Consumer ID A unique identifier for each system that is registered to the subscription service. identity The simplest method is to use the identity command to return the current UUID.
[root@server1 ~]# subscription-manager identity
Current identity is: 63701087-f625-4519-8ab2-633bb50cb261
name: consumer-1.example.com
org name: 6340056
org id: 8a85f981302cbaf201302d89931e059a
The Subject CN element of the identity certificate for the system, /etc/pki/consumer/cert.pem. The UUID can also be returned by using openssl to pretty-print the certificate.
openssl x509 -text -in /etc/pki/consumer/cert.pem

Certificate:
... snip ...
Subject: CN=7d133d55 876f 4f47 83eb 0ee931cb0a97
Pool ID An identifier for a specific set of subscriptions. This set is created when subscriptions are purchased. Whenever a system needs to subscribe to a product, it references a pool ID to identify which purchased set of subscriptions to use. subscribe The PoolID value given for a product when listing available subscriptions. For example:
[root@server1 ~]# subscription-manager list --available
+----------------------+
Available Subscriptions
+----------------------+
ProductName: Red Hat Enterprise Linux, Standard (up to 2 sockets) 3 year
ProductId: MCT0346F3
PoolId: ff8080812bc382e3012bc3845ca000cb
Quantity: 2
Expires: 2011-02-28
Product certificate serial number The identification used for a specific, installed product. A certificate with a unique serial number is generated when a product is installed; this serial number is used to identify that specific product installation when managing subscriptions. unsubscribe The SerialNumber line in the product subscription information. This can be returned by running list --consumed.
[root@server1 ~]# subscription-manager list --consumed

+-----------------------------+
Consumed Product Subscriptions
+-----------------------------+

ProductName: High availability (cluster suite)
ContractNumber: 0
SerialNumber: 11287514358600162
....
Product ID The internal identifier used to identify a type of product. The ProductID value given for a product when listing available subscriptions. For example:
[root@server1 ~]# subscription-manager list --available
+----------------------+
Available Subscriptions
+----------------------+

ProductName: RHEL for Physical Servers
ProductId: MKT-rhel-server
... snip ...

14.15. About Certificates and Managing Entitlements

Part of managing subscriptions requires verifying the identity of everything involved, such as the system, the subscription service, and the available products. The subscription service uses X.509 certificates to handle the identity and authentication aspects of the subscription service. These X.509 certificates also contain the actual data about available subscriptions and installed products.
The first time a system is subscribed to a subscription, it downloads a certificate from the subscription service. The entitlement certificate contains all of the information about products that are available through that subscription. The entitlement certificate is revoked and reissued any time there is a change in the subscriptions for an organization. Once a product is actually installed on a machine, then another certificate is issued to manage the entitlements for the product on the system.
Each certificate issued and used by the Subscription Manager services is a .pem formatted file. This file format stores both keys and certificates in a base-64 blob. For example:
-----BEGIN CERTIFICATE-----
MIIDaTCCAtKgAwIBAgICBZYwDQYJKoZIhvcNAQEFBQAwSzEqMCgGA1UEAxMhY2Fu
ZGxlcGluMS5kZXZsYWIucGh4MS5yZWRoYXQuY29tMQswCQYDVQQGEwJVUzEQMA4G
A1UEBxMHUmFsZWlnaDAeFw0xMDEwMDYxNjMyMDVaFw0xMTEwMDYyMzU5NTlaMC8x
LTArBgNVBAMMJDQ4ODFiZDJmLTg2OGItNDM4Yy1hZjk2LThiMWQyODNkYWZmYzCC
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKNyLw6+IMtjY03F7Otxj2GL
GTz5VKx1kfWY7q4OD4w+XlBHTkt+2tQV9S+4TFkUZ7XoI80LDL/BONpy/gq5c5cw
yKvjv2gjSS/pihgYNXc5zUOIfSj1vb3fHGHOkzdCcZMyWq1z0N/zaLClp/zP/pcM
og4NTAg2niNPjFYvkQ+oIl16WmQpefM0y0SY7N7oJd2T8dZjOiuLV2cVZLfwjrwG
9UpkT2J03g+n1ZA9q95ibLD5NVOdTy9+2lfRhdDViZaVoFiQXvg86qBHQ0ieENuF
a6bCvGgpTxcBuVXmsnl2+9dnMiwoDqPZp1HB6G2uNmyNe/IvkTOPFJ/ZVbtBTYUC
AwEAAaOB8zCB8DARBglghkgBhvhCAQEEBAMCBaAwCwYDVR0PBAQDAgSwMHsGA1Ud
IwR0MHKAFGiY1N2UtulxcMFy0j6gQGLTyo6CoU+kTTBLMSowKAYDVQQDEyFjYW5k
bGVwaW4xLmRldmxhYi5waHgxLnJlZGhhdC5jb20xCzAJBgNVBAYTAlVTMRAwDgYD
VQQHEwdSYWxlaWdoggkA1s54sVacN0EwHQYDVR0OBBYEFGbB5fqOzh32g4Wqrwhc
/96IupIgMBMGA1UdJQQMMAoGCCsGAQUFBwMCMB0GA1UdEQQWMBSkEjAQMQ4wDAYD
VQQDDAV4ZW9wczANBgkqhkiG9w0BAQUFAAOBgQANxHRsev4fYfnHO9kYcHo4UeK7
owN+fq92gl76iRHRnhzkPlhWL+uV2tyqGG9zJASOX+qEDOqN5sVAB4iNQTDGiUbK
z757igD2hsQ4ewv9Vq3QtnajWnfdaUZH919GgWs09Etg6ucsKwgfx1fqjSRLBbOo
lZuvBTYROOX6W2vKXw==
-----END CERTIFICATE-----
Tools like openssl or pk12util can be used to extract and view information from these certificates, in a pretty-print format. The product- and subscription-related information is extracted and viewable in the Red Hat Subscription Manager GUI or command-line tools.
This section describes the different certificates used by the subscription service and the entitlement information contained in those certificates. A much more detailed description of X.509 certificates and a public key infrastructure (PKI) is given in the Red Hat Certificate System documentation in chapter 1, "Introduction to Public-Key Cryptography," in the Red Hat Certificate System Deployment Guide.
表14.10 Types of Certificates Used for Content and Entitlements
Certificate Type Description Default Location
Consumer Identity Certificate Used to identify the system (consumer) to the subscription service. This contains a unique ID which is assigned to the system when it is registered to the system. The identity certificate itself is generated by the subscription service when the system is registered and then sent to the consumer. /etc/pki/consumer
Entitlement Certificate Contains a list of products that are available to a system to install, based on the subscriptions that the system has been subscribed to. The entitlement certificate defines the software products, the content delivery location, and validity dates. The presence of an entitlement certificate means that the system has consumed one of the quantities from the subscription. /etc/pki/entitlement
Product Certificate Contains the information about a product after it has been installed. /etc/pki/product/product_serial#.pem
CA Certificate A certificate for the certificate authority which issued the SSL server certificate used by the subscription service. This must be installed on a system for the system to use SSl to connect to the subscription service. /etc/rhsm/ca/candlepin-ca.pem
Satellite Certificate An XML-formatted certificate which contains a product list. This is used by local Satellite 5.x systems, not the newer subscription service.

14.15.1. The Structure of Identity Certificates

An identity certificate is a standard SSL client certificate. This certificate is issued by the subscription service when the system registers to it. The system consumer subsequently uses this certificate to authenticate to the subscription service whenever it contacts the service after registration.
The certificate contains three important pieces of information:
  • The consumer UUID, in the subject CN of the certificate
  • The subscription service which the system is registered to, in the issuer field of the certificate
  • The user account which registered the system, as the DirName value in the Subject Alt Name
The validity period of this certificate is associated with the time when the system was registered, not to any subscription contract periods or user account settings.
例14.13 Identity Certificate
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1430 (0x596)
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: CN=entitlement.server.example.com, C=US, L=Raleigh  
        Validity
            Not Before: Oct  6 16:32:05 2010 GMT
            Not After : Oct  6 23:59:59 2011 GMT
        Subject: CN=4881bd2f-868b-438c-af96-8b1d283daffc  
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:a3:72:2f:0e:be:20:cb:63:63:4d:c5:ec:eb:71:
                    8f:61:8b:19:3c:f9:54:ac:75:91:f5:98:ee:ae:0e:
                    0f:8c:3e:5e:50:47:4e:4b:7e:da:d4:15:f5:2f:b8:
                    4c:59:14:67:b5:e8:23:cd:0b:0c:bf:c1:38:da:72:
                    fe:0a:b9:73:97:30:c8:ab:e3:bf:68:23:49:2f:e9:
                    8a:18:18:35:77:39:cd:43:88:7d:28:f5:bd:bd:df:
                    1c:61:ce:93:37:42:71:93:32:5a:ad:73:d0:df:f3:
                    68:b0:a5:a7:fc:cf:fe:97:0c:a2:0e:0d:4c:08:36:
                    9e:23:4f:8c:56:2f:91:0f:a8:22:5d:7a:5a:64:29:
                    79:f3:34:cb:44:98:ec:de:e8:25:dd:93:f1:d6:63:
                    3a:2b:8b:57:67:15:64:b7:f0:8e:bc:06:f5:4a:64:
                    4f:62:74:de:0f:a7:d5:90:3d:ab:de:62:6c:b0:f9:
                    35:53:9d:4f:2f:7e:da:57:d1:85:d0:d5:89:96:95:
                    a0:58:90:5e:f8:3c:ea:a0:47:43:48:9e:10:db:85:
                    6b:a6:c2:bc:68:29:4f:17:01:b9:55:e6:b2:79:76:
                    fb:d7:67:32:2c:28:0e:a3:d9:a7:51:c1:e8:6d:ae:
                    36:6c:8d:7b:f2:2f:91:33:8f:14:9f:d9:55:bb:41:
                    4d:85
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            Netscape Cert Type:
                SSL Client, S/MIME
            X509v3 Key Usage:
                Digital Signature, Key Encipherment, Data Encipherment
            X509v3 Authority Key Identifier:
                keyid:68:98:D4:DD:94:B6:E9:71:70:C1:72:D2:3E:A0:40:62:D3:CA:8E:82
                DirName:/CN=entitlement.server.example.com/C=US/L=Raleigh
                serial:D6:CE:78:B1:56:9C:37:41

            X509v3 Subject Key Identifier:
                66:C1:E5:FA:8E:CE:1D:F6:83:85:AA:AF:08:5C:FF:DE:88:BA:92:20
            X509v3 Extended Key Usage:
                TLS Web Client Authentication
            X509v3 Subject Alternative Name:  
                DirName:/CN=admin-example  
    Signature Algorithm: sha1WithRSAEncryption
        0d:c4:74:6c:7a:fe:1f:61:f9:c7:3b:d9:18:70:7a:38:51:e2:
        bb:a3:03:7e:7e:af:76:82:5e:fa:89:11:d1:9e:1c:e4:3e:58:
        56:2f:eb:95:da:dc:aa:18:6f:73:24:04:8e:5f:ea:84:0c:ea:
        8d:e6:c5:40:07:88:8d:41:30:c6:89:46:ca:cf:be:7b:8a:00:
        f6:86:c4:38:7b:0b:fd:56:ad:d0:b6:76:a3:5a:77:dd:69:46:
        47:f7:5f:46:81:6b:34:f4:4b:60:ea:e7:2c:2b:08:1f:c7:57:
        ea:8d:24:4b:05:b3:a8:95:9b:af:05:36:11:38:e5:fa:5b:6b:
        ca:5f

14.15.2. The Structure of Entitlement Certificates

An entitlement is analogous to an assigned software license. Entitlement certificates contain a list of available products for a system — software that the system has been granted rights to download and update. When a system is subscribed to a subscription pool, the system pulls down the entitlement certificate from the subscription service, which contains all of the information about available products.
An entitlement certificate contains a list of every potential product from every potential content source. The structure of the entitlement certificate, then, allows multiple namespaces, each, for products, content servers, roles, orders, and systems. An entitlement certificate also contains complete information about the subscribed pool, even for products which may not be compatible with the specific system. In an entitlement certificate, the architecture and version definitions contain all of the allowed architectures and versions.

Note

The local Subscription Manager polls the subscription service routinely (every four hours by default) to check for changes in the entitlements. When a subscription is changed in some way, then the original entitlement certificate is revoked and is replaced with a new entitlement certificate.
The entitlement certificate is a *.pem file stored in the entitlement certificates directory, /etc/pki/entitlement. The name of the *.pem file is a generated numeric identifier that is generated by the subscription service. This ID is an inventory number that is used to associate a subscription quantity with the system in the software inventory.
The heading of the certificate contains the name of the subscription service which issued it, the validity period of the certificate (which is tied to the installation date of the product), and then the serial number of the installation of the product.
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            3c:da:6c:06:90:7f:ff
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: CN=candlepin1.devlab.phx1.redhat.com, C=US, L=Raleigh
        Validity
            Not Before: Oct  8 17:55:28 2010 GMT
            Not After : Oct  2 23:59:59 2011 GMT
        Subject: CN=8a878c912b875189012b8cfbc3f2264a
... [snip] ...
The key definition of the product is given in custom certificate extensions that are appended to the certificate. Each namespace defines certain information about a product, including its name, content servers which can deliver it, the format of delivery, and a GPG key to identify the release. Every individual entry is identified by a numeric object identifier (OID) with the same basic format:
1.3.6.1.4.1.2312.9.2.product_#.config_#:
   ..config_value
The 2 indicates that it is a product entry. product_# is a unique ID which identifies the specific product or variant. config_# relates to the installation information for that product, like its content server or the quantity available.

Note

Every entitlements-related extension begins with the OID base 1.3.6.1.4.1.2312.9. The subsequent numbers identify different subscription areas:
  • .2. is the product-specific information
  • .1. is the subscription information
  • .4. contains the contract information, like its ID number and start and end dates
  • .5. contains the consumer information, like the consumer ID which installed a product
A product definition contains a series of entries which configure all of the information required to identify and install the product. Each type of information has its own ID, the config_# in the OID, that is used consistently for all products. An example product is listed in 例14.14「Annotated Red Hat Enterprise Linux High Availability Product Extensions in an Entitlement Certificate」.
例14.14 Annotated Red Hat Enterprise Linux High Availability Product Extensions in an Entitlement Certificate
            content repository type  
            1.3.6.1.4.1.2312.9.2.30393.1:
                ..yum
            product  
            1.3.6.1.4.1.2312.9.2.30393.1.1:
                .HRed Hat Enterprise Linux High Availability (for RHEL Entitlement) (RPMs)
            channel name  
            1.3.6.1.4.1.2312.9.2.30393.1.2:
                .Dred-hat-enterprise-linux-high-availability-for-rhel-entitlement-rpms
            vendor  
            1.3.6.1.4.1.2312.9.2.30393.1.5:
                ..Red Hat
            download URL  
            1.3.6.1.4.1.2312.9.2.30393.1.6:
                .Q/content/dist/rhel/entitlement/releases/$releasever/$basearch/highavailability/os
            key download URL  
            1.3.6.1.4.1.2312.9.2.30393.1.7:
                .2file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
            flex quantity  
            1.3.6.1.4.1.2312.9.2.30393.1.4:
                ..0
            quantity  
            1.3.6.1.4.1.2312.9.2.30393.1.3:
                ..25
            repo enabled setting  
            1.3.6.1.4.1.2312.9.2.30393.1.8:
                ..1

14.15.3. The Structure of Product Certificates

The products that are installed on a system through the subscriptions assigned to a system are identified by X.509 certificates. When an available product is installed, the subscription service generates a product certificate, which contains the information about the product contract and the specific installation.
Structurally, entitlement certificates and product certificates are very similar, because they both provide much of the same information about products. The main difference is that a product certificate contains information about a single product that has been installed, so no other subscription information (like other available products or other product versions) is included in a product certificate the way that it is in an entitlement certificate.
A product certificate contains a single product namespace (meaning, a single product definition) which shows only what is actually installed on the system. The architecture and version definitions in a product certificate reflect the architecture and version of the product that is actually installed.
The product certificate is a *.pem file stored in the entitlement certificates directory, /etc/pki/product/product_serial#.pem. The name of the *.pem file is a generated numeric identifier that is generated by the subscription service. As with entitlement tracking, the generated ID is an inventory number, used to track installed products and associate them with systems within the subscription service.

14.15.4. Anatomy of Satellite Certificates

Important

Satellite certificates are used by Satellite 5.x deployments. They are not used on Red Hat Enterprise Linux 5.7 or by the subscription service.
Every system has to have a secure, authoritative way to identify what subscriptions are available. For Satellite 5.x systems, this identification is done through a digitally-signed XML document that lists the products and quantities that a customer has purchased.
As with entitlement certificates, a Satellite certificate contains the information about the subscription that was purchased, including the total number of systems that can be registered against that subscription and its start and end dates.
There are two types of subscriptions:
  • System entitlements are subscriptions for services that can be performed, such as monitoring, provisioning, and virtualization.
  • Channel entitlements, or content entitlements, provide access to the different software product download channels on Red Hat Network. These include Red Hat Enterprise Linux add-ons like Supplementary and FastTrack and layered products like Red Hat Directory Server.
Both types can be included in a single Satellite certificate.
A system entitlement and the metadata for an entitlement are both configured similarly in the certificate:
<rhn-cert-field name="configuration_area">value</rhn-cert-field>
The name argument identifies what entity is being configured. This can be the organization which ordered the subscription (name="owner"), the start and end dates for the entitlement (name="issued" and name="expires"), or the entitlement itself. A system entitlement uses the name argument to set the service being entitled; every content entitlement is set as a name="channel-family" type, with the specific product identified in an additional family argument.
The first section of the Satellite certificate is the metadata. The metadata identifies the organization which purchased it and the start and end dates of the entitlement. The field being set is in the name argument, while the value is between the tags. The last lines of the certificate also set metadata for the subscription, including the version of the Satellite and the signature that signs the XML document (and allows the XML file to be used as a certificate).
  <rhn-cert-field name="product">RHN-SATELLITE-001</rhn-cert-field>
  <rhn-cert-field name="owner">Example Corp</rhn-cert-field>
  <rhn-cert-field name="issued">2009-04-07 10:18:33</rhn-cert-field>
  <rhn-cert-field name="expires">2009-11-25 00:00:00</rhn-cert-field>

... [snip] ...

  <rhn-cert-field name="satellite-version">5.3</rhn-cert-field>
  <rhn-cert-field name="generation">2</rhn-cert-field>
  <rhn-cert-signature>
-----BEGIN PGP SIGNATURE-----
Version: Crypt::OpenPGP 1.03

iQBGBAARAwAGBQJJ22C+AAoJEJ5ynaAAAAkyyZ0An18+4hK5Ozt4HWieFvahsTnF
aPcaAJ0e5neOfdDZRLOgDE+Tp/Im3Hc3Rg==
=gqP7
-----END PGP SIGNATURE-----
</rhn-cert-signature>
The name="slot" field lists how many total systems are allowed to use this Satellite certificate to receive content. It is a global quantity.
  <rhn-cert-field name="slots">119</rhn-cert-field>
The system entitlements are set by identifying the service type in the name argument and then setting the quantity as the value within the tags.
  <rhn-cert-field name="provisioning-slots">117</rhn-cert-field>
  <rhn-cert-field name="monitoring-slots">20</rhn-cert-field>
  <rhn-cert-field name="virtualization_host">67</rhn-cert-field>
The content entitlements can include any combination of products, including base Red Hat Enterprise Linux subscriptions, variations of Red Hat Enterprise Linux, Red Hat Enterprise Linux add-ons, and general software products. General Red Hat Enterprise Linux server subscriptions are listed in the rhel-server family, while a specific Virtualization Server subscription provides an additional rhel-server-vt family..
  <rhn-cert-field name="channel-families" quantity="95" family="rhel-server"/>
  <rhn-cert-field name="channel-families" quantity="67" family="rhel-server-vt"/>
Add-ons and products for Red Hat Enterprise Linux systems (but not necessarily operating system products) are also in a rhel-* family, because that refers to the platform the product is supported on. In this example, Red Hat Directory Server is in the rhel-rhdirserv family.
  <rhn-cert-field name="channel-families" quantity="3" family="rhel-rhdirserv"/>
Most subscriptions will also include a subscription tool set to manage and enable within clients features such as provisioning or configuration management when registered to RHN Classic or Satellite 5.x.
  <rhn-cert-field name="channel-families" quantity="212" family="rhn-tools"/>

パート IV. システム設定

Part of a system administrator's job is configuring the system for various tasks, types of users, and hardware configurations. This section explains how to configure a Red Hat Enterprise Linux system.

目次

29. コンソールのアクセス
29.1. Disabling Shutdown Via Ctrl+Alt+Del
29.2. コンソールプログラムアクセスの無効化
29.3. コンソールの定義
29.4. コンソールからファイルにアクセスできるようにする方法
29.5. ほかのアプリケーションに対するコンソールアクセスの有効化
29.6. The floppy Group
30. The sysconfig Directory
30.1. Files in the /etc/sysconfig/ Directory
30.1.1. /etc/sysconfig/amd
30.1.2. /etc/sysconfig/apmd
30.1.3. /etc/sysconfig/arpwatch
30.1.4. /etc/sysconfig/authconfig
30.1.5. /etc/sysconfig/autofs
30.1.6. /etc/sysconfig/clock
30.1.7. /etc/sysconfig/desktop
30.1.8. /etc/sysconfig/dhcpd
30.1.9. /etc/sysconfig/exim
30.1.10. /etc/sysconfig/firstboot
30.1.11. /etc/sysconfig/gpm
30.1.12. /etc/sysconfig/hwconf
30.1.13. /etc/sysconfig/i18n
30.1.14. /etc/sysconfig/init
30.1.15. /etc/sysconfig/ip6tables-config
30.1.16. /etc/sysconfig/iptables-config
30.1.17. /etc/sysconfig/irda
30.1.18. /etc/sysconfig/keyboard
30.1.19. /etc/sysconfig/kudzu
30.1.20. /etc/sysconfig/named
30.1.21. /etc/sysconfig/network
30.1.22. /etc/sysconfig/nfs
30.1.23. /etc/sysconfig/ntpd
30.1.24. /etc/sysconfig/radvd
30.1.25. /etc/sysconfig/samba
30.1.26. /etc/sysconfig/selinux
30.1.27. /etc/sysconfig/sendmail
30.1.28. /etc/sysconfig/spamassassin
30.1.29. /etc/sysconfig/squid
30.1.30. /etc/sysconfig/system-config-securitylevel
30.1.31. /etc/sysconfig/system-config-selinux
30.1.32. /etc/sysconfig/system-config-users
30.1.33. /etc/sysconfig/system-logviewer
30.1.34. /etc/sysconfig/tux
30.1.35. /etc/sysconfig/vncservers
30.1.36. /etc/sysconfig/xinetd
30.2. Directories in the /etc/sysconfig/ Directory
30.3. その他のリソース
30.3.1. インストールされているドキュメント
31. 日付と時刻の設定
31.1. Time and Date Properties
31.2. ネットワークタイムプロトコル (Network Time Protocol=NTP) のプロパティ
31.3. タイムゾーンの設定
32. Keyboard Configuration
33. X Window System
33.1. X11R7.1 リリース
33.2. デスクトップ環境とウィンドウマネージャ
33.2.1. デスクトップ環境
33.2.2. ウィンドウマネージャ
33.3. X サーバー設定ファイル
33.3.1. xorg.conf
33.4. フォント
33.4.1. Fontconfig
33.4.2. コア X フォントシステム
33.5. ランレベルと X
33.5.1. ランレベル 3
33.5.2. ランレベル 5
33.6. その他のリソース
33.6.1. インストールされているドキュメント
33.6.2. 役に立つ Web サイト
34. X Window System の設定
34.1. Display Settings
34.2. Display Hardware Settings
34.3. Dual Head Display Settings
35. ユーザーとグループ
35.1. ユーザーとグループの管理
35.1.1. 新規ユーザーを追加する
35.1.2. ユーザーのプロパティを変更する
35.1.3. 新規グループを追加する
35.1.4. グループのプロパティを変更する
35.2. ユーザーとグループの管理ツール
35.2.1. コマンドライン管理
35.2.2. ユーザーを追加する
35.2.3. グループを追加する
35.2.4. パスワードエージング
35.2.5. 手順の説明
35.3. 標準的なユーザー
35.4. 標準的なグループ
35.5. ユーザープライベートグループ
35.5.1. グループディレクトリ
35.6. シャドウパスワード
35.7. その他のリソース
35.7.1. インストールされているドキュメント
36. プリンタの設定
36.1. ローカルプリンタの追加
36.2. IPP プリンタの追加
36.3. Samba (SMB) プリンタの追加
36.4. Adding a JetDirect Printer
36.5. プリンタモデルの選択と終了
36.5.1. プリンタ設定の確認
36.6. テストページの印刷
36.7. 既存プリンタの変更
36.7.1. 設定 タブ
36.7.2. ポリシー タブ
36.7.3. アクセス制御 タブ
36.7.4. プリンタ 及び ジョブオプション タブ
36.8. 印刷ジョブの管理
36.9. その他のリソース
36.9.1. インストールされているドキュメント
36.9.2. 役に立つ Web ページ
37. Automated Tasks
37.1. Cron
37.1.1. cron タスクの設定
37.1.2. Cron へのアクセスの制御
37.1.3. サービスの起動と停止
37.2. at コマンドと batch コマンド
37.2.1. At ジョブの設定
37.2.2. batch ジョブの設定
37.2.3. 保留ジョブの表示
37.2.4. その他のコマンドラインオプション
37.2.5. at と batch へのアクセスの制御
37.2.6. サービスの起動と停止
37.3. その他のリソース
37.3.1. インストールされているドキュメント
38. ログファイル
38.1. ログファイルを探す
38.2. ログファイルの表示
38.3. Adding a Log File
38.4. ログファイルを監視する

第29章 コンソールのアクセス

root 以外の一般ユーザーがコンピュータにローカルからログインすると、2種類の特殊な権限が与えられます。
  1. ユーザーは、他では実行できないような特定のプログラムを実行できます。
  2. ユーザーは、他ではアクセスできないような特定のファイル (通常はディスケット、 CD-ROM などへのアクセスに使用される特別なデバイスファイル) にアクセスできます。
1台のコンピュータ上に複数のコンソールがあり、複数のユーザーが同時にローカルにコンピュータへログインできるため、ユーザーのうちの1人がこのファイルにアクセスする競争に「勝つ」ことになります。最初にコンソールにログインするユーザーがファイルの所有権を取得します。最初のユーザーがログアウトすると、ファイルはログインしている次のユーザーの権利となります。
In contrast, every user who logs in at the console is allowed to run programs that accomplish tasks normally restricted to the root user. If X is running, these actions can be included as menu items in a graphical user interface. As shipped, these console-accessible programs include halt, poweroff, and reboot.

29.1. Disabling Shutdown Via Ctrl+Alt+Del

By default, /etc/inittab specifies that your system is set to shutdown and reboot in response to a Ctrl+Alt+Del key combination used at the console. To completely disable this ability, comment out the following line in /etc/inittab by putting a hash mark (#) in front of it:
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
Alternatively, you may want to allow certain non-root users the right to shutdown or reboot the system from the console using Ctrl+Alt+Del . You can restrict this privilege to certain users, by taking the following steps:
  1. Add the -a option to the /etc/inittab line shown above, so that it reads:
    ca::ctrlaltdel:/sbin/shutdown -a -t3 -r now
    The -a flag tells shutdown to look for the /etc/shutdown.allow file.
  2. Create a file named shutdown.allow in /etc. The shutdown.allow file should list the usernames of any users who are allowed to shutdown the system using Ctrl+Alt+Del . The format of the shutdown.allow file is a list of usernames, one per line, like the following:
    stephen
    jack
    sophie
According to this example shutdown.allow file, the users stephen, jack, and sophie are allowed to shutdown the system from the console using Ctrl+Alt+Del . When that key combination is used, the shutdown -a command in /etc/inittab checks to see if any of the users in /etc/shutdown.allow (or root) are logged in on a virtual console. If one of them is, the shutdown of the system continues; if not, an error message is written to the system console instead.
For more information on shutdown.allow, refer to the shutdown man page.

29.2. コンソールプログラムアクセスの無効化

コンソールプログラムへのユーザーのアクセスを無効にするには、以下のコマンドを root として実行してください。
rm -f /etc/security/console.apps/*
In environments where the console is otherwise secured (BIOS and boot loader passwords are set, Ctrl+Alt+Delete is disabled, the power and reset switches are disabled, and so forth), you may not want to allow any user at the console to run poweroff, halt, and reboot, which are accessible from the console by default.
これらの機能を解除するには、 root として次のコマンドを実行します。
rm -f /etc/security/console.apps/poweroff
rm -f /etc/security/console.apps/halt
rm -f /etc/security/console.apps/reboot

29.3. コンソールの定義

The pam_console.so module uses the /etc/security/console.perms file to determine the permissions for users at the system console. The syntax of the file is very flexible; you can edit the file so that these instructions no longer apply. However, the default file has a line that looks like this:
<console>=tty[0-9][0-9]* vc/[0-9][0-9]* :[0-9]\.[0-9] :[0-9]
When users log in, they are attached to some sort of named terminal, which can be either an X server with a name like :0 or mymachine.example.com:1.0, or a device like /dev/ttyS0 or /dev/pts/2. The default is to define that local virtual consoles and local X servers are considered local, but if you want to consider the serial terminal next to you on port /dev/ttyS1 to also be local, you can change that line to read:
<console>=tty[0-9][0-9]* vc/[0-9][0-9]* :[0-9]\.[0-9] :[0-9] /dev/ttyS1

29.4. コンソールからファイルにアクセスできるようにする方法

個別デバイスクラスや権限定義のデフォルト設定は、 /etc/security/console.perms.d/50-default.perms の中で定義されています。ファイルやデバイスの権限を編集するには、指定のファイルやデバイスのための好みの設定を含めた新しいデフォルトファイルを /etc/security/console.perms.d/ に作成することが推奨されています。新しいデフォルトファイルの名前は、 50-default.perms をオーバーライドするために、 50 よりも大きな数字で始まる必要があります (例えば、 51-default.perms) 。
これを行なうには、 /etc/security/console.perms.d/51-default.perms という新しいファイルを作成します。
touch /etc/security/console.perms.d/51-default.perms
オリジナルのデフォルトの perms ファイル、 50-default.perms を開いてください。はじめのセクションは、以下と似たような行で device classes を定義します。
<floppy>=/dev/fd[0-1]* \
          /dev/floppy/* /mnt/floppy*
<sound>=/dev/dsp* /dev/audio* /dev/midi* \ 
	  /dev/mixer* /dev/sequencer \ 
	  /dev/sound/* /dev/beep \ 
	  /dev/snd/*
<cdrom>=/dev/cdrom* /dev/cdroms/* /dev/cdwriter* /mnt/cdrom*
Items enclosed in brackets name the device; in the above example, <cdrom> refers to the CD-ROM drive. To add a new device, do not define it in the default 50-default.perms file; instead, define it in 51-default.perms. For example, to define a scanner, add the following line to 51-default.perms:
<scanner>=/dev/scanner /dev/usb/scanner*
Of course, you must use the appropriate name for the device. Ensure that /dev/scanner is really your scanner and not some other device, such as your hard drive.
デバイスやファイルを適切に設定したら、次のステップは、その permission definitions を指定することです。 /etc/security/console.perms.d/50-default.perms の2番目のセクションが、以下と似たような行でこれを定義します。
<console> 0660 <floppy> 0660 root.floppy
<console> 0600 <sound>  0640 root
<console> 0600 <cdrom>  0600 root.disk
スキャナーに権限を定義するには、 51-default.perms にある下記のような行を追加してください。
<console> 0600 <scanner> 0600 root
Then, when you log in at the console, you are given ownership of the /dev/scanner device with the permissions of 0600 (readable and writable by you only). When you log out, the device is owned by root, and still has the permissions 0600 (now readable and writable by root only).

警告

デフォルトの 50-default.perms ファイルを、 決して 編集しないでください。デバイスの権限が既に定義されている 50-default.perms を編集するには、 51-default.perms のデバイスに必要な権限定義を追加してください。これは 50-default.perms で設定されている、いかなる権限もオーバーライドします。

29.5. ほかのアプリケーションに対するコンソールアクセスの有効化

コンソールユーザーがほかのアプリケーションにアクセスできるようするには、もう少し作業が必要になります。
First of all, console access only works for applications which reside in /sbin/ or /usr/sbin/, so the application that you wish to run must be there. After verifying that, perform the following steps:
  1. Create a link from the name of your application, such as our sample foo program, to the /usr/bin/consolehelper application:
    cd /usr/bin
    ln -s consolehelper foo
  2. Create the file /etc/security/console.apps/foo:
    touch /etc/security/console.apps/foo
  3. Create a PAM configuration file for the foo service in /etc/pam.d/. An easy way to do this is to copy the PAM configuration file of the halt service, and then modify the copy if you want to change the behavior:
    cp /etc/pam.d/halt /etc/pam.d/foo
Now, when /usr/bin/foo is executed, consolehelper is called, which authenticates the user with the help of /usr/sbin/userhelper. To authenticate the user, consolehelper asks for the user's password if /etc/pam.d/foo is a copy of /etc/pam.d/halt (otherwise, it does precisely what is specified in /etc/pam.d/foo) and then runs /usr/sbin/foo with root permissions.
In the PAM configuration file, an application can be configured to use the pam_timestamp module to remember (or cache) a successful authentication attempt. When an application is started and proper authentication is provided (the root password), a timestamp file is created. By default, a successful authentication is cached for five minutes. During this time, any other application that is configured to use pam_timestamp and run from the same session is automatically authenticated for the user — the user does not have to enter the root password again.
This module is included in the pam package. To enable this feature, add the following lines to your PAM configuration file in etc/pam.d/:
auth            include         config-util
account         include         config-util
session         include         config-util
These lines can be copied from any of the /etc/pam.d/system-config-* configuration files. Note that these lines must be added below any other auth sufficient session optional lines in your PAM configuration file.
If an application configured to use pam_timestamp is successfully authenticated from the Applications (the main menu on the panel), the icon is displayed in the notification area of the panel if you are running the GNOME or KDE desktop environment. After the authentication expires (the default is five minutes), the icon disappears.
ユーザーは、アイコンをクリックして、認証を無視するオプションを選択することによりキャッシュにある認証を無視できます。

29.6. The floppy Group

If, for whatever reason, console access is not appropriate for you and your non-root users require access to your system's diskette drive, this can be done using the floppy group. Add the user(s) to the floppy group using the tool of your choice. For example, the gpasswd command can be used to add user fred to the floppy group:
gpasswd -a fred floppy
Now, user fred is able to access the system's diskette drive from the console.

第30章 The sysconfig Directory

The /etc/sysconfig/ directory contains a variety of system configuration files for Red Hat Enterprise Linux.
This chapter outlines some of the files found in the /etc/sysconfig/ directory, their function, and their contents. The information in this chapter is not intended to be complete, as many of these files have a variety of options that are only used in very specific or rare circumstances.

30.1. Files in the /etc/sysconfig/ Directory

The following sections offer descriptions of files normally found in the /etc/sysconfig/ directory. Files not listed here, as well as extra file options, are found in the /usr/share/doc/initscripts-<version-number>/sysconfig.txt file (replace <version-number> with the version of the initscripts package). Alternatively, looking through the initscripts in the /etc/rc.d/ directory can prove helpful.

注記

If some of the files listed here are not present in the /etc/sysconfig/ directory, then the corresponding program may not be installed.

30.1.1. /etc/sysconfig/amd

The /etc/sysconfig/amd file contains various parameters used by amd; these parameters allow for the automatic mounting and unmounting of file systems.

30.1.2. /etc/sysconfig/apmd

The /etc/sysconfig/apmd file is used by apmd to configure what power settings to start/stop/change on suspend or resume. This file configures how apmd functions at boot time, depending on whether the hardware supports Advanced Power Management (APM) or whether the user has configured the system to use it. The apm daemon is a monitoring program that works with power management code within the Linux kernel. It is capable of alerting users to low battery power on laptops and other power-related settings.

30.1.3. /etc/sysconfig/arpwatch

The /etc/sysconfig/arpwatch file is used to pass arguments to the arpwatch daemon at boot time. The arpwatch daemon maintains a table of Ethernet MAC addresses and their IP address pairings. By default, this file sets the owner of the arpwatch process to the user pcap and sends any messages to the root mail queue. For more information regarding available parameters for this file, refer to the arpwatch man page.

30.1.4. /etc/sysconfig/authconfig

The /etc/sysconfig/authconfig file sets the authorization to be used on the host. It contains one or more of the following lines:
  • USEMD5=<value>, where <value> is one of the following:
    • yes — MD5 is used for authentication.
    • no — MD5 is not used for authentication.
  • USEKERBEROS=<value>, where <value> is one of the following:
    • yes — Kerberos is used for authentication.
    • no — Kerberos is not used for authentication.
  • USELDAPAUTH=<value>, where <value> is one of the following:
    • yes — LDAP is used for authentication.
    • no — LDAP is not used for authentication.

30.1.5. /etc/sysconfig/autofs

The /etc/sysconfig/autofs file defines custom options for the automatic mounting of devices. This file controls the operation of the automount daemons, which automatically mount file systems when you use them and unmount them after a period of inactivity. File systems can include network file systems, CD-ROMs, diskettes, and other media.
The /etc/sysconfig/autofs file may contain the following:
  • LOCALOPTIONS="<value>", where <value> is a string for defining machine-specific automount rules. The default value is an empty string ("").
  • DAEMONOPTIONS="<value>", where <value> is the timeout length in seconds before unmounting the device. The default value is 60 seconds ("--timeout=60").
  • UNDERSCORETODOT=<value>, where <value> is a binary value that controls whether to convert underscores in file names into dots. For example, auto_home to auto.home and auto_mnt to auto.mnt. The default value is 1 (true).
  • DISABLE_DIRECT=<value>, where <value> is a binary value that controls whether to disable direct mount support, as the Linux implementation does not conform to the Sun Microsystems' automounter behavior. The default value is 1 (true), and allows for compatibility with the Sun automounter options specification syntax.

30.1.6. /etc/sysconfig/clock

The /etc/sysconfig/clock file controls the interpretation of values read from the system hardware clock.
その正しい値は次のようになります :
  • UTC=<value>, where <value> is one of the following boolean values:
    • true or yes — The hardware clock is set to Universal Time.
    • false or no — The hardware clock is set to local time.
  • ARC=<value>, where <value> is the following:
    • false or no — This value indicates that the normal UNIX epoch is in use. Other values are used by systems not supported by Red Hat Enterprise Linux.
  • SRM=<value>, where <value> is the following:
    • false or no — This value indicates that the normal UNIX epoch is in use. Other values are used by systems not supported by Red Hat Enterprise Linux.
  • ZONE=<filename> — The time zone file under /usr/share/zoneinfo that /etc/localtime is a copy of. The file contains information such as:
    ZONE="America/New York"
    ZONE パラメータは Time and Date Properties Tool (system-config-date) によって読みこまれますので、手動で編集してもシステムタイムゾーンは変更できません。
以前のリリースの Red Hat Enterprise Linux は以下の値を使用していました (現在無視されています):
  • CLOCKMODE=<value>, where <value> is one of the following:
    • GMT — The clock is set to Universal Time (Greenwich Mean Time).
    • ARC — The ARC console's 42-year time offset is in effect (for Alpha-based systems only).

30.1.7. /etc/sysconfig/desktop

The /etc/sysconfig/desktop file specifies the desktop for new users and the display manager to run when entering runlevel 5.
その正しい値は次のようになります。
  • DESKTOP="<value>", where "<value>" is one of the following:
    • GNOME — Selects the GNOME desktop environment.
    • KDE — Selects the KDE desktop environment.
  • DISPLAYMANAGER="<value>", where "<value>" is one of the following:
    • GNOME — Selects the GNOME Display Manager.
    • KDE — Selects the KDE Display Manager.
    • XDM — Selects the X Display Manager.
For more information, refer to 33章X Window System.

30.1.8. /etc/sysconfig/dhcpd

The /etc/sysconfig/dhcpd file is used to pass arguments to the dhcpd daemon at boot time. The dhcpd daemon implements the Dynamic Host Configuration Protocol (DHCP) and the Internet Bootstrap Protocol (BOOTP). DHCP and BOOTP assign hostnames to machines on the network. For more information about what parameters are available in this file, refer to the dhcpd man page.

30.1.9. /etc/sysconfig/exim

The /etc/sysconfig/exim file allows messages to be sent to one or more clients, routing the messages over whatever networks are necessary. The file sets the default values for exim to run. Its default values are set to run as a background daemon and to check its queue each hour in case something has backed up.
その値は以下を含みます:
  • DAEMON=<value>, where <value> is one of the following:
    • yesexim should be configured to listen to port 25 for incoming mail. yes implies the use of the Exim's -bd options.
    • noexim should not be configured to listen to port 25 for incoming mail.
  • QUEUE=1h which is given to exim as -q$QUEUE. The -q option is not given to exim if /etc/sysconfig/exim exists and QUEUE is empty or undefined.

30.1.10. /etc/sysconfig/firstboot

The first time the system boots, the /sbin/init program calls the etc/rc.d/init.d/firstboot script, which in turn launches the Setup Agent. This application allows the user to install the latest updates as well as additional applications and documentation.
The /etc/sysconfig/firstboot file tells the Setup Agent application not to run on subsequent reboots. To run it the next time the system boots, remove /etc/sysconfig/firstboot and execute chkconfig --level 5 firstboot on.

30.1.11. /etc/sysconfig/gpm

The /etc/sysconfig/gpm file is used to pass arguments to the gpm daemon at boot time. The gpm daemon is the mouse server which allows mouse acceleration and middle-click pasting. For more information about what parameters are available for this file, refer to the gpm man page. By default, the DEVICE directive is set to /dev/input/mice.

30.1.12. /etc/sysconfig/hwconf

The /etc/sysconfig/hwconf file lists all the hardware that kudzu detected on the system, as well as the drivers used, vendor ID, and device ID information. The kudzu program detects and configures new and/or changed hardware on a system. The /etc/sysconfig/hwconf file is not meant to be manually edited. If edited, devices could suddenly show up as being added or removed.

30.1.13. /etc/sysconfig/i18n

The /etc/sysconfig/i18n file sets the default language, any supported languages, and the default system font. For example:
LANG="en_US.UTF-8"
SUPPORTED="en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"

30.1.14. /etc/sysconfig/init

The /etc/sysconfig/init file controls how the system appears and functions during the boot process.
次のような値を使用することが出来ます:
  • BOOTUP=<value>, where <value> is one of the following:
    • color — The standard color boot display, where the success or failure of devices and services starting up is shown in different colors.
    • verbose — An old style display which provides more information than purely a message of success or failure.
    • それ以外は、新しいディスプレイとなります。しかし ANSI-形式はありません。
  • RES_COL=<value>, where <value> is the number of the column of the screen to start status labels. The default is set to 60.
  • MOVE_TO_COL=<value>, where <value> moves the cursor to the value in the RES_COL line via the echo -en command.
  • SETCOLOR_SUCCESS=<value>, where <value> sets the success color via the echo -en command. The default color is set to green.
  • SETCOLOR_FAILURE=<value>, where <value> sets the failure color via the echo -en command. The default color is set to red.
  • SETCOLOR_WARNING=<value>, where <value> sets the warning color via the echo -en command. The default color is set to yellow.
  • SETCOLOR_NORMAL=<value>, where <value> resets the color to "normal" via the echo -en.
  • LOGLEVEL=<value>, where <value> sets the initial console logging level for the kernel. The default is 3; 8 means everything (including debugging), while 1 means only kernel panics. The syslogd daemon overrides this setting once started.
  • PROMPT=<value>, where <value> is one of the following boolean values:
    • yes — Enables the key check for interactive mode.
    • no — Disables the key check for interactive mode.

30.1.15. /etc/sysconfig/ip6tables-config

The /etc/sysconfig/ip6tables-config file stores information used by the kernel to set up IPv6 packet filtering at boot time or whenever the ip6tables service is started.
Do not modify this file by hand unless familiar with how to construct ip6tables rules. Rules also can be created manually using the /sbin/ip6tables command. Once created, add the rules to the /etc/sysconfig/ip6tables file by typing the following command:
service ip6tables save
このファイルが存在すると、そこに保存されたファイアウォールルールはシステムの再起動やサービスの再スタートの後でも継続されます。
For more information on ip6tables, refer to 「IPTables」.

30.1.16. /etc/sysconfig/iptables-config

The /etc/sysconfig/iptables-config file stores information used by the kernel to set up packet filtering services at boot time or whenever the service is started.
Do not modify this file by hand unless you are familiar with constructing iptables rules. The easiest way to add rules is to use the Security Level Configuration Tool (system-config-securitylevel) application to create a firewall. These applications automatically edit this file at the end of the process.
Rules can also be created manually using the /sbin/iptables command. Once created, add the rule(s) to the /etc/sysconfig/iptables file by typing the following command:
service iptables save
このファイルが存在すると、そこに保存されたファイアウォールルールはシステムの再起動やサービスの再スタートの後でも継続されます。
For more information on iptables, refer to 「IPTables」.

30.1.17. /etc/sysconfig/irda

The /etc/sysconfig/irda file controls how infrared devices on the system are configured at startup.
次のような値を使用することが出来ます:
  • IRDA=<value>, where <value> is one of the following boolean values:
    • yesirattach runs and periodically checks to see if anything is trying to connect to the infrared port, such as another notebook computer trying to make a network connection. For infrared devices to work on the system, this line must be set to yes.
    • noirattach does not run, preventing infrared device communication.
  • DEVICE=<value>, where <value> is the device (usually a serial port) that handles infrared connections. A sample serial device entry could be /dev/ttyS2.
  • DONGLE=<value>, where <value> specifies the type of dongle being used for infrared communication. This setting exists for people who use serial dongles rather than real infrared ports. A dongle is a device that is attached to a traditional serial port to communicate via infrared. This line is commented out by default because notebooks with real infrared ports are far more common than computers with add-on dongles. A sample dongle entry could be actisys+.
  • DISCOVERY=<value>, where <value> is one of the following boolean values:
    • yes — Starts irattach in discovery mode, meaning it actively checks for other infrared devices. This must be turned on for the machine to actively look for an infrared connection (meaning the peer that does not initiate the connection).
    • no — Does not start irattach in discovery mode.

30.1.18. /etc/sysconfig/keyboard

The /etc/sysconfig/keyboard file controls the behavior of the keyboard. The following values may be used:
  • KEYBOARDTYPE="sun|pc" where sun means a Sun keyboard is attached on /dev/kbd, or pc means a PS/2 keyboard connected to a PS/2 port.
  • KEYTABLE="<file>", where <file> is the name of a keytable file.
    For example: KEYTABLE="us". The files that can be used as keytables start in /lib/kbd/keymaps/i386 and branch into different keyboard layouts from there, all labeled <file>.kmap.gz. The first file found beneath /lib/kbd/keymaps/i386 that matches the KEYTABLE setting is used.

30.1.19. /etc/sysconfig/kudzu

The /etc/sysconfig/kuzdu file triggers a safe probe of the system hardware by kudzu at boot time. A safe probe is one that disables serial port probing.
  • SAFE=<value>, where <value> is one of the following:
    • yeskuzdu does a safe probe.
    • nokuzdu does a normal probe.

30.1.20. /etc/sysconfig/named

The /etc/sysconfig/named file is used to pass arguments to the named daemon at boot time. The named daemon is a Domain Name System (DNS) server which implements the Berkeley Internet Name Domain (BIND) version 9 distribution. This server maintains a table of which hostnames are associated with IP addresses on the network.
現在、次の値だけが使用できます:
  • ROOTDIR="</some/where>", where </some/where> refers to the full directory path of a configured chroot environment under which named runs. This chroot environment must first be configured. Type info chroot for more information.
  • OPTIONS="<value>", where <value> is any option listed in the man page for named except -t. In place of -t, use the ROOTDIR line above.
For more information about available parameters for this file, refer to the named man page. For detailed information on how to configure a BIND DNS server, refer to 18章Berkeley Internet Name Domain (BIND). By default, the file contains no parameters.

30.1.21. /etc/sysconfig/network

The /etc/sysconfig/network file is used to specify information about the desired network configuration. The following values may be used:
  • NETWORKING=<value>, where <value> is one of the following boolean values:
    • yes — Networking should be configured.
    • no — Networking should not be configured.
  • HOSTNAME=<value>, where <value> should be the Fully Qualified Domain Name (FQDN), such as hostname.expample.com, but can be whatever hostname is necessary.
  • GATEWAY=<value>, where <value> is the IP address of the network's gateway.
  • GATEWAYDEV=<value>, where <value> is the gateway device, such as eth0. Configure this option if you have multiple interfaces on the same subnet, and require one of those interfaces to be the preferred route to the default gateway.
  • NISDOMAIN=<value>, where <value> is the NIS domain name.
  • NOZEROCONF=<value>, where setting <value> to true disables the zeroconf route.
    By default, the zeroconf route (169.254.0.0) is enabled when the system boots. For more information about zeroconf, refer to http://www.zeroconf.org/.

Warning

Do not use custom initscripts to configure network settings. When performing a post-boot network service restart, custom initscripts configuring network settings that are run outside of the network init script lead to unpredictable results.

30.1.22. /etc/sysconfig/nfs

NFS requires portmap, which dynamically assigns ports for RPC services. This causes problems for configuring firewall rules. To overcome this problem, use the /etc/sysconfig/nfs file to control which ports the required RPC services run on.
The /etc/sysconfig/nfs may not exist by default on all systems. If it does not exist, create it and add the following variables (alternatively, if the file exists, un-comment and change the default entries as required):
MOUNTD_PORT=x
control which TCP and UDP port mountd (rpc.mountd) uses. Replace x with an unused port number.
STATD_PORT=x
control which TCP and UDP port status (rpc.statd) uses. Replace x with an unused port number.
LOCKD_TCPPORT=x
control which TCP port nlockmgr (rpc.lockd) uses. Replace x with an unused port number.
LOCKD_UDPPORT=x
control which UDP port nlockmgr (rpc.lockd) uses. Replace x with an unused port number.
If NFS fails to start, check /var/log/messages. Normally, NFS will fail to start if you specify a port number that is already in use. After editing /etc/sysconfig/nfs restart the NFS service by running the service nfs restart command. Run the rpcinfo -p command to confirm the changes.
To configure a firewall to allow NFS:
  1. Allow TCP and UDP port 2049 for NFS.
  2. Allow TCP and UDP port 111 (portmap/sunrpc).
  3. Allow the TCP and UDP port specified with MOUNTD_PORT="x"
  4. Allow the TCP and UDP port specified with STATD_PORT="x"
  5. Allow the TCP port specified with LOCKD_TCPPORT="x"
  6. Allow the UDP port specified with LOCKD_UDPPORT="x"

30.1.23. /etc/sysconfig/ntpd

The /etc/sysconfig/ntpd file is used to pass arguments to the ntpd daemon at boot time. The ntpd daemon sets and maintains the system clock to synchronize with an Internet standard time server. It implements version 4 of the Network Time Protocol (NTP). For more information about what parameters are available for this file, use a Web browser to view the following file: /usr/share/doc/ntp-<version>/ntpd.htm (where <version> is the version number of ntpd). By default, this file sets the owner of the ntpd process to the user ntp.

30.1.24. /etc/sysconfig/radvd

The /etc/sysconfig/radvd file is used to pass arguments to the radvd daemon at boot time. The radvd daemon listens for router requests and sends router advertisements for the IP version 6 protocol. This service allows hosts on a network to dynamically change their default routers based on these router advertisements. For more information about available parameters for this file, refer to the radvd man page. By default, this file sets the owner of the radvd process to the user radvd.

30.1.25. /etc/sysconfig/samba

The /etc/sysconfig/samba file is used to pass arguments to the smbd and the nmbd daemons at boot time. The smbd daemon offers file sharing connectivity for Windows clients on the network. The nmbd daemon offers NetBIOS over IP naming services. For more information about what parameters are available for this file, refer to the smbd man page. By default, this file sets smbd and nmbd to run in daemon mode.

30.1.26. /etc/sysconfig/selinux

The /etc/sysconfig/selinux file contains the basic configuration options for SELinux. This file is a symbolic link to /etc/selinux/config.

30.1.27. /etc/sysconfig/sendmail

The /etc/sysconfig/sendmail file allows messages to be sent to one or more clients, routing the messages over whatever networks are necessary. The file sets the default values for the Sendmail application to run. Its default values are set to run as a background daemon and to check its queue each hour in case something has backed up.
値は次を含みます:
  • DAEMON=<value>, where <value> is one of the following:
    • yesSendmail should be configured to listen to port 25 for incoming mail. yes implies the use of Sendmail's -bd options.
    • noSendmail should not be configured to listen to port 25 for incoming mail.
  • QUEUE=1h which is given to Sendmail as -q$QUEUE. The -q option is not given to Sendmail if /etc/sysconfig/sendmail exists and QUEUE is empty or undefined.

30.1.28. /etc/sysconfig/spamassassin

The /etc/sysconfig/spamassassin file is used to pass arguments to the spamd daemon (a daemonized version of Spamassassin) at boot time. Spamassassin is an email spam filter application. For a list of available options, refer to the spamd man page. By default, it configures spamd to run in daemon mode, create user preferences, and auto-create whitelists (allowed bulk senders).
For more information about Spamassassin, refer to 「スパムフィルタ」.

30.1.29. /etc/sysconfig/squid

The /etc/sysconfig/squid file is used to pass arguments to the squid daemon at boot time. The squid daemon is a proxy caching server for Web client applications. For more information on configuring a squid proxy server, use a Web browser to open the /usr/share/doc/squid-<version>/ directory (replace <version> with the squid version number installed on the system). By default, this file sets squid to start in daemon mode and sets the amount of time before it shuts itself down.

30.1.30. /etc/sysconfig/system-config-securitylevel

The /etc/sysconfig/system-config-securitylevel file contains all options chosen by the user the last time the Security Level Configuration Tool (system-config-securitylevel) was run. Users should not modify this file by hand. For more information about the Security Level Configuration Tool, refer to 「基本的なファイアウォールの設定」.

30.1.31. /etc/sysconfig/system-config-selinux

The /etc/sysconfig/system-config-selinux file contains all options chosen by the user the last time the SELinux Administration Tool (system-config-selinux) was run. Users should not modify this file by hand. For more information about the SELinux Administration Tool and SELinux in general, refer to 「SELinux への入門」.

30.1.32. /etc/sysconfig/system-config-users

The /etc/sysconfig/system-config-users file is the configuration file for the graphical application, User Manager. This file is used to filter out system users such as root, daemon, or lp. This file is edited by the Preferences > Filter system users and groups pull-down menu in the User Manager application and should never be edited by hand. For more information on using this application, refer to 「ユーザーとグループの管理」.

30.1.33. /etc/sysconfig/system-logviewer

The /etc/sysconfig/system-logviewer file is the configuration file for the graphical, interactive log viewing application, Log Viewer. This file is edited by the Edit > Preferences pull-down menu in the Log Viewer application and should not be edited by hand. For more information on using this application, refer to 38章ログファイル.

30.1.34. /etc/sysconfig/tux

The /etc/sysconfig/tux file is the configuration file for the Red Hat Content Accelerator (formerly known as TUX), the kernel-based Web server. For more information on configuring the Red Hat Content Accelerator, use a Web browser to open the /usr/share/doc/tux-<version>/tux/index.html file (replace <version> with the version number of TUX installed on the system). The parameters available for this file are listed in /usr/share/doc/tux-<version>/tux/parameters.html.

30.1.35. /etc/sysconfig/vncservers

The /etc/sysconfig/vncservers file configures the way the Virtual Network Computing (VNC) server starts up.
VNC を使用するとユーザーは実行中のマシン上の環境だけでなく、各種アーキテクチャの別のネットワークを通したマシンのデスクトップ環境もリモート表示できます。
以下のような項目が該当します:
  • VNCSERVERS=<value>, where <value> is set to something like "1:fred", to indicate that a VNC server should be started for user fred on display :1. User fred must have set a VNC password using the vncpasswd command before attempting to connect to the remote VNC server.

30.1.36. /etc/sysconfig/xinetd

The /etc/sysconfig/xinetd file is used to pass arguments to the xinetd daemon at boot time. The xinetd daemon starts programs that provide Internet services when a request to the port for that service is received. For more information about available parameters for this file, refer to the xinetd man page. For more information on the xinetd service, refer to 「xinetd」.

30.2. Directories in the /etc/sysconfig/ Directory

The following directories are normally found in /etc/sysconfig/.
apm-scripts/
This directory contains the APM suspend/resume script. Do not edit the files directly. If customization is necessary, create a file called /etc/sysconfig/apm-scripts/apmcontinue which is called at the end of the script. It is also possible to control the script by editing /etc/sysconfig/apmd.
cbq/
This directory contains the configuration files needed to do Class Based Queuing for bandwidth management on network interfaces. CBQ divides user traffic into a hierarchy of classes based on any combination of IP addresses, protocols, and application types.
networking/
This directory is used by the Network Administration Tool (system-config-network), and its contents should not be edited manually. For more information about configuring network interfaces using the Network Administration Tool, refer to 16章ネットワーク設定.
network-scripts/
This directory contains the following network-related configuration files:
  • Network configuration files for each configured network interface, such as ifcfg-eth0 for the eth0 Ethernet interface.
  • Scripts used to bring network interfaces up and down, such as ifup and ifdown.
  • Scripts used to bring ISDN interfaces up and down, such as ifup-isdn and ifdown-isdn.
  • 直接編集すべきではない各種共有のネットワーク機能スクリプト。
For more information on the network-scripts directory, refer to 15章ネットワークインターフェース.
rhn/
Deprecated. This directory contains the configuration files and GPG keys used by the RHN Classic content service. No files in this directory should be edited by hand.
This directory is available for legacy systems which are still managed by RHN Classic. Systems which are registered against the Certificate-Based Red Hat Network do not use this directory.

30.3. その他のリソース

This chapter is only intended as an introduction to the files in the /etc/sysconfig/ directory. The following source contains more comprehensive information.

30.3.1. インストールされているドキュメント

  • /usr/share/doc/initscripts-<version-number>/sysconfig.txt — This file contains a more authoritative listing of the files found in the /etc/sysconfig/ directory and the configuration options available for them. The <version-number> in the path to this file corresponds to the version of the initscripts package installed.

第31章 日付と時刻の設定

The Time and Date Properties Tool allows the user to change the system date and time, to configure the time zone used by the system, and to setup the Network Time Protocol (NTP) daemon to synchronize the system clock with a time server.
このツールを使用するには、 X Window システムを実行していて、 root 権限を持っている必要があります。このアプリケーションは次の三つの方法で開始できます:
  • From the desktop, go to Applications (the main menu on the panel) > System Settings > Date & Time
  • From the desktop, right-click on the time in the toolbar and select Adjust Date and Time.
  • Type the command system-config-date, system-config-time, or dateconfig at a shell prompt (for example, in an XTerm or a GNOME terminal).

31.1. Time and Date Properties

As shown in 図31.1「Time and Date Properties」, the first tabbed window that appears is for configuring the system date and time.
Time and Date Properties
Time and Date Properties
図31.1 Time and Date Properties

日付変更をするには、「月」の左右矢印を使って月を変更し、「年」の左右の矢印を使って年を変更し、週の中の日付をクリックすると日付を変更できます。
To change the time, use the up and down arrow buttons beside the Hour, Minute, and Second in the Time section.
Clicking the OK button applies any changes made to the date and time, the NTP daemon settings, and the time zone settings. It also exits the program.

31.2. ネットワークタイムプロトコル (Network Time Protocol=NTP) のプロパティ

As shown in 図31.2「NTP Properties」, the second tabbed window that appears is for configuring NTP.
NTP Properties
NTP Properties
図31.2 NTP Properties

The Network Time Protocol (NTP) daemon synchronizes the system clock with a remote time server or time source. The application allows you to configure an NTP daemon to synchronize your system clock with a remote server. To enable this feature, select Enable Network Time Protocol. This enables the NTP Servers list and other options. You can choose one of the predefined servers, edit a predefined server by clicking the Edit or add a new server name by clicking Add. Your system does not start synchronizing with the NTP server until you click OK. After clicking OK, the configuration is saved and the NTP daemon is started (or restarted if it is already running).
Clicking the OK button applies any changes made to the date and time, the NTP daemon settings, and the time zone settings. It also exits the program.

31.3. タイムゾーンの設定

As shown in 図31.3「Timezone Properties」, the third tabbed window that appears is for configuring the system time zone.
To configure the system time zone, click the Time Zone tab. The time zone can be changed by either using the interactive map or by choosing the desired time zone from the list below the map. To use the map, click on the desired region. The map zooms into the region selected, after which you may choose the city specific to your time zone. A red X appears and the time zone selection changes in the list below the map.
別の方法としては、マップ下のリストを使用することもできます。マップが地域に都市の選択選択を可能にするのと同様に、タイムゾーンリストでも指定大陸の中でグループ化された国と都市が表示されて、タイムゾーンがツリーリストで出ます。ここには、科学調査コミュニティの需要に応じて地図上区別のないゾーンも追加されています。
Click OK to apply the changes and exit the program.
Timezone Properties
Timezone Properties
図31.3 Timezone Properties

If your system clock is set to use UTC, select the System clock uses UTC option. UTC stands for the Universal Time, Coordinated, also known as Greenwich Mean Time (GMT). Other time zones are determined by adding or subtracting from the UTC time.

第32章 Keyboard Configuration

The installation program allows you to configure a keyboard layout for your system. To configure a different keyboard layout after installation, use the Keyboard Configuration Tool.
To start the Keyboard Configuration Tool, select System (on the panel) > Administration > Keyboard, or type the command system-config-keyboard at a shell prompt.
Keyboard Configuration Tool
Keyboard Configuration Tool
図32.1 Keyboard Configuration Tool

Select a keyboard layout from the list (for example, U.S. English) and click OK.
Changes take effect immediately.

第33章 X Window System

Red Hat Enterprise Linuxの心臓部と言えるのがカーネルであり、多くのユーザーにとっては、オペレーティングシステムの顔となるのが X Window System または X とも呼ばれるグラフィカル環境です。
1984 年の X Window System リリースより以前のウィンドウ環境も含めて、 UNIX の世界では各種のウィンドウ環境が存在してきました。それでもなお、 X は Red Hat Enterprise Linux を含めてほとんどの UNIX ライクなオペレーティングシステムで長年デフォルトのグラフィカル環境となってきています。
Red Hat Enterprise Linux のグラフィカル環境は、 X Window System 及び関連テクノロジーの開発と方針の管理を行うために設立されたオープンソース機関である X.Org Foundation によって供給されています。 X.Org は世界中に散らばる何百人もの開発者によって急速な成長を遂げている大規模なプロジェクトです。各種ハードウェアデバイスとアーキテクチャへの幅広いサポートを特徴とし、様々なオペレーティングシステムやプラットホームで動作することができます。特に、本 Red Hat Enterprise Linux リリースには X Window System の X11R7.1 リリースが含まれています。
The X Window System uses a client-server architecture. The X server (the Xorg binary) listens for connections from X client applications via a network or local loopback interface. The server communicates with the hardware, such as the video card, monitor, keyboard, and mouse. X client applications exist in the user-space, creating a graphical user interface (GUI) for the user and passing user requests to the X server.

33.1. X11R7.1 リリース

Red Hat Enterprise Linux 5.8 では X11R7.1 リリースをベースの X Window System として使用するようになります。特に、ビデオドライバ、 EXA 、及び以前のリリースに対するプラットフォームサポートの機能強化が含まれています。また、本リリースには X サーバー用に複数の自動設定機能が含まれています。
X11R7.1 is the first release to take specific advantage of the modularization of the X Window System. This modularization, which splits X into logically distinct modules, makes it easier for open source developers to contribute code to the system.

重要

Red Hat Enterprise Linux no longer provides the XFree86™ server packages. Before upgrading a system to the latest version of Red Hat Enterprise Linux, be sure that the system's video card is compatible with the X11R7.1 release by checking the Red Hat Hardware Compatibility List located online at http://hardware.redhat.com/.
In the X11R7.1 release, all libraries, headers, and binaries now live under /usr/ instead of /usr/X11R6. The /etc/X11/ directory contains configuration files for X client and server applications. This includes configuration files for the X server itself, the xfs font server, the X display managers, and many other base components.
The configuration file for the newer Fontconfig-based font architecture is still /etc/fonts/fonts.conf. For more on configuring and adding fonts, refer to 「フォント」.
X サーバーはさまざまなハードウェア上で高度なタスクを実行するため、動作するハードウェアに関する詳細情報を必要とします。 X サーバーは自動的にこうした情報のいくつかを検出してきます。その他の詳細情報については設定を行う必要があります。
The installation program installs and configures X automatically, unless the X11R7.1 release packages are not selected for installation. However, if there are any changes to the monitor, video card or other devices managed by the X server, X must be reconfigured. The best way to do this is to use the X Configuration Tool (system-config-display), particularly for devices that are not detected manually.
In Red Hat Enterprise Linux's default graphical environment, the X Configuration Tool is available at System (on the panel) > Administration > Display.
Changes made with the X Configuration Tool take effect after logging out and logging back in.
For more information about X Configuration Tool, refer to 34章X Window System の設定.
In some situations, reconfiguring the X server may require manually editing its configuration file, /etc/X11/xorg.conf. For information about the structure of this file, refer to 「X サーバー設定ファイル」.

33.2. デスクトップ環境とウィンドウマネージャ

X サーバーが実行されると、 X クライアントアプリケーションはそれに接続して、ユーザー用の GUI を作成します。 Red Hat Enterprise Linux では、ごく基本的な タブウィンドウマネージャ から高度に開発された対話式の GNOME デスクトップ環境まで、ほとんどの Red Hat Enterprise Linux ユーザーにお馴染みの幅広い GUI が利用できます。
後者のより包括的な GUI を構成するには、 X クライアントアプリケーションの 2 つの主要クラスである デスクトップ環境ウィンドウマネージャ が X サーバーに接続される必要があります。

33.2.1. デスクトップ環境

デスクトップ環境は、各種の X クライアントを統合して共通のグラフィカルユーザー環境と開発プラットフォームを構築します。
デスクトップ環境は、幾つかの高度な機能を持ち、これにより X クライアントと他の実行中プロセスが次々に交信できるようになり、またその環境で動作するように書き込まれているすべてのアプリケーションがドラッグアンドドロップ操作などの高度なタスクを実行できるようになります。
Red Hat Enterprise Linux は 2 種類のデスクトップ環境を提供しています。
  • GNOME — GTK+ 2 グラフィカルツールキットをベースにした Red Hat Enterprise Linux 用のデフォルトのデスクトップ環境です。
  • KDE — Qt 3 グラフィカルツールキットをベースにした代替用デスクトップ環境です。
GNOME と KDE はいずれもワープロ、表計算、 Web ブラウザなどの高度な作業効率を向上させるアプリケーションを持っており、また GUI の外観をカスタマイズできるツールも提供しています。さらには、 GTK+ 2 と Qt の両方のライブラリが揃っている場合、 KDE アプリケーションを GNOME の中で実行することができ、またその逆も可能になります。

33.2.2. ウィンドウマネージャ

ウィンドウマネージャ は、 X クライアントプログラムであり、デスクトップ環境の一部、または場合によってはスタンドアローンのこともあります。その主要目的はグラフィカルウィンドウの配置、サイズ変更、移動などを制御することです。ウィンドウマネージャは、タイトルバー、ウィンドウの焦点調節、ユーザー設定のキーやマウスボタンの連携なども制御します。
4 種類のウィンドウマネージャが Red Hat Enterprise Linux に収納されています。
kwin
KWin ウィンドウマネージャは KDE のデフォルトウィンドウマネージャです。カスタムのテーマをサポートしている効率的なウィンドウマネージャです。
metacity
Metacity ウィンドウマネージャは、 GNOME のデフォルトウィンドウマネージャです。こちらもカスタムテーマをサポートするシンプルで効率的なウィンドウマネージャです。このウィンドウマネージャを実行するには、 metacity パッケージをインストールする必要があります。
mwm
Motif ウィンドウマネージャ (mwm) は、基本的なスタンドアローンのウィンドウマネージャです。単独で機能するように設計されているため、 GNOME や KDE と一緒に使用するべきではありません。このウィンドウマネージャを実行するには、 openmotif パッケージをインストールする必要があります。
twm
すべてのウィンドウマネージャの中で最も基本的なツールセット、必要最小限の機能を提供する タブウィンドウマネージャ は、単独または別のデスクトップ環境との併用でも使用できます。 X11R7.1 リリースの一部としてインストールされています。
To run any of the aforementioned window managers, you will first need to boot into Runlevel 3. For instructions on how to do this, refer to 「ランレベル」.
Once you are logged in to Runlevel 3, you will be presented with a terminal prompt, not a graphical environment. To start a window manager, type xinit -e <path-to-window-manager> at the prompt.
<path-to-window-manager> is the location of the window manager binary file. The binary file can be located by typing which window-manager-name, where window-manager-name is the name of the window manager you want to run.
例えば、
~]# which twm
/usr/bin/twm
~]# xinit -e /usr/bin/twm
上記の 1 番目のコマンドは twm ウィンドウマネージャへの絶対パスを返し、 2 番目のコマンドは twm を起動します。
ウィンドウマネージャを終了するには、最後のウィンドウを閉じるか Ctrl+Alt+Backspace の組み合わせを押します。ウィンドウマネージャを終了したら、プロンプトで startx と入力してランレベル 5 で再度ログインし直すことができます。

33.3. X サーバー設定ファイル

X サーバーは単一のバイナリ実行可能ファイル (/usr/bin/Xorg) です。関連する設定ファイルは /etc/X11/ ディレクトリに格納されています (/usr/bin/Xorg を指すシンボリックリンク — X — のため)。 X サーバーの設定ファイルは /etc/X11/xorg.conf にあります。
ディレクトリ /usr/lib/xorg/modules/ は起動時に動的にロード可能な X サーバーのモジュールが格納されています。デフォルトでは、 X サーバーによってロードされるのは /usr/lib/xorg/modules/ にあるいくつかのモジュールのみです。
To load optional modules, they must be specified in the X server configuration file, /etc/X11/xorg.conf. For more information about loading modules, refer to Module.
When Red Hat Enterprise Linux 5.8 is installed, the configuration files for X are created using information gathered about the system hardware during the installation process.

33.3.1. xorg.conf

While there is rarely a need to manually edit the /etc/X11/xorg.conf file, it is useful to understand the various sections and optional parameters available, especially when troubleshooting.

33.3.1.1. 構造

The /etc/X11/xorg.conf file is comprised of many different sections which address specific aspects of the system hardware.
Each section begins with a Section "<section-name>" line (where <section-name> is the title for the section) and ends with an EndSection line. Each section contains lines that include option names and one or more option values. These are sometimes enclosed in double quotes (").
Lines beginning with a hash mark (#) are not read by the X server and are used for human-readable comments.
Some options within the /etc/X11/xorg.conf file accept a boolean switch which turns the feature on or off. Acceptable boolean values are:
  • 1, on, true, or yes — Turns the option on.
  • 0, off, false, or no — Turns the option off.
The following are some of the more important sections in the order in which they appear in a typical /etc/X11/xorg.conf file. More detailed information about the X server configuration file can be found in the xorg.conf man page.

33.3.1.2. ServerFlags

The optional ServerFlags section contains miscellaneous global X server settings. Any settings in this section may be overridden by options placed in the ServerLayout section (refer to ServerLayout for details).
Each entry within the ServerFlags section is on its own line and begins with the term Option followed by an option enclosed in double quotation marks (").
The following is a sample ServerFlags section:
Section "ServerFlags"
	Option "DontZap" "true"
EndSection
特に役立つオプションの幾つかを以下に一覧表示します:
  • "DontZap" "<boolean>" — When the value of <boolean> is set to true, this setting prevents the use of the Ctrl+Alt+Backspace key combination to immediately terminate the X server.
  • "DontZoom" "<boolean>" — When the value of <boolean> is set to true, this setting prevents cycling through configured video resolutions using the Ctrl+Alt+Keypad-Plus and Ctrl+Alt+Keypad-Minus key combinations.

33.3.1.3. ServerLayout

The ServerLayout section binds together the input and output devices controlled by the X server. At a minimum, this section must specify one output device and one input device. By default, a monitor (output device) and keyboard (input device) are specified.
The following example illustrates a typical ServerLayout section:
Section  "ServerLayout"
	Identifier     "Default Layout"
	Screen      0  "Screen0" 0 0
	InputDevice    "Mouse0" "CorePointer"
	InputDevice    "Keyboard0" "CoreKeyboard"
EndSection
The following entries are commonly used in the ServerLayout section:
  • Identifier — Specifies a unique name for this ServerLayout section.
  • Screen — Specifies the name of a Screen section to be used with the X server. More than one Screen option may be present.
    The following is an example of a typical Screen entry:
    Screen      0  "Screen0" 0 0
    The first number in this example Screen entry (0) indicates that the first monitor connector or head on the video card uses the configuration specified in the Screen section with the identifier "Screen0".
    An example of a Screen section with the identifier "Screen0" can be found in Screen.
    If the video card has more than one head, another Screen entry with a different number and a different Screen section identifier is necessary .
    The numbers to the right of "Screen0" give the absolute X and Y coordinates for the upper-left corner of the screen (0 0 by default).
  • InputDevice — Specifies the name of an InputDevice section to be used with the X server.
    It is advisable that there be at least two InputDevice entries: one for the default mouse and one for the default keyboard. The options CorePointer and CoreKeyboard indicate that these are the primary mouse and keyboard.
  • Option "<option-name>" — An optional entry which specifies extra parameters for the section. Any options listed here override those listed in the ServerFlags section.
    Replace <option-name> with a valid option listed for this section in the xorg.conf man page.
/etc/X11/xorg.conf ファイルに複数の ServerLayout セクションを置くことができます。デフォルトでは、ただし、サーバーは一番最初に拾うセクションしか読み込みません。
代替となる ServerLayout セクションがある場合、 X セッション起動時にコマンドライン引数として指定することができます。

33.3.1.4. Files

The Files section sets paths for services vital to the X server, such as the font path. This is an optional section, these paths are normally detected automatically. This section may be used to override any automatically detected defaults.
The following example illustrates a typical Files section:
Section "Files"
	RgbPath      "/usr/share/X11/rgb.txt"
	FontPath     "unix/:7100"
EndSection
The following entries are commonly used in the Files section:
  • RgbPath — Specifies the location of the RGB color database. This database defines all valid color names in X and ties them to specific RGB values.
  • FontPath — Specifies where the X server must connect to obtain fonts from the xfs font server.
    By default, the FontPath is unix/:7100. This tells the X server to obtain font information using UNIX-domain sockets for inter-process communication (IPC) on port 7100.
    Refer to 「フォント」 for more information concerning X and fonts.
  • ModulePath — An optional parameter which specifies alternate directories which store X server modules.

33.3.1.5. Module

デフォルトでは、 X サーバーは自動的に次のモジュールを /usr/lib/xorg/modules/ ディレクトリからロードします。
  • extmod
  • dbe
  • glx
  • freetype
  • type1
  • record
  • dri
The default directory for loading these modules can be changed by specifying a different directory with the optional ModulePath parameter in the Files section. Refer to Files for more information on this section.
Module セクションを /etc/X11/xorg.conf に追加すると、 X サーバーにデフォルトのモジュールではなくこのセクションに記載されているモジュールをロードするよう指示することになります。
For example, the following typical Module section:
Section "Module"
	Load  "fbdevhw"
EndSection
instructs the X server to load the fbdevhw instead of the default modules.
このように、 Module セクションを /etc/X11/xorg.conf に追加すると、ロードしたいデフォルトモジュールの他、追加モジュールも指定する必要があります。

33.3.1.6. InputDevice

Each InputDevice section configures one input device for the X server. Systems typically have at least one InputDevice section for the keyboard. It is perfectly normal to have no entry for a mouse, as most mouse settings are automatically detected.
The following example illustrates a typical InputDevice section for a keyboard:
Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "kbd"
        Option      "XkbModel" "pc105"
        Option      "XkbLayout" "us"
EndSection
The following entries are commonly used in the InputDevice section:
  • Identifier — Specifies a unique name for this InputDevice section. This is a required entry.
  • Driver — Specifies the name of the device driver X must load for the device.
  • Option — Specifies necessary options pertaining to the device.
    マウスを指定してデバイス用に自動検出されるデフォルトを上書きすることもできます。 xorg.conf にマウスを追加する場合、次のようなオプションが一般的に含まれます。
    • Protocol — Specifies the protocol used by the mouse, such as IMPS/2.
    • Device — Specifies the location of the physical device.
    • Emulate3Buttons — Specifies whether to allow a two-button mouse to act like a three-button mouse when both mouse buttons are pressed simultaneously.
    Consult the xorg.conf man page for a list of valid options for this section.

33.3.1.7. Monitor

Each Monitor section configures one type of monitor used by the system. This is an optional entry as well, as most monitors are now automatically detected.
The easiest way to configure a monitor is to configure X during the installation process or by using the X Configuration Tool. For more information about using the X Configuration Tool, refer to 34章X Window System の設定.
This example illustrates a typical Monitor section for a monitor:
Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Monitor Vendor"
	ModelName    "DDC Probed Monitor - ViewSonic G773-2"
	DisplaySize  320	240
	HorizSync    30.0 - 70.0
	VertRefresh  50.0 - 180.0
EndSection

警告

Be careful when manually editing values in the Monitor section of /etc/X11/xorg.conf. Inappropriate values can damage or destroy a monitor. Consult the monitor's documentation for a listing of safe operating parameters.
The following are commonly entries used in the Monitor section:
  • Identifier — Specifies a unique name for this Monitor section. This is a required entry.
  • VendorName — An optional parameter which specifies the vendor of the monitor.
  • ModelName — An optional parameter which specifies the monitor's model name.
  • DisplaySize — An optional parameter which specifies, in millimeters, the physical size of the monitor's picture area.
  • HorizSync — Specifies the range of horizontal sync frequencies compatible with the monitor in kHz. These values help the X server determine the validity of built-in or specified Modeline entries for the monitor.
  • VertRefresh — Specifies the range of vertical refresh frequencies supported by the monitor, in kHz. These values help the X server determine the validity of built in or specified Modeline entries for the monitor.
  • Modeline — An optional parameter which specifies additional video modes for the monitor at particular resolutions, with certain horizontal sync and vertical refresh resolutions. Refer to the xorg.conf man page for a more detailed explanation of Modeline entries.
  • Option "<option-name>" — An optional entry which specifies extra parameters for the section. Replace <option-name> with a valid option listed for this section in the xorg.conf man page.

33.3.1.8. Device

Each Device section configures one video card on the system. While one Device section is the minimum, additional instances may occur for each video card installed on the machine.
The best way to configure a video card is to configure X during the installation process or by using the X Configuration Tool. For more about using the X Configuration Tool, refer to 34章X Window System の設定.
The following example illustrates a typical Device section for a video card:
Section "Device"
	Identifier  "Videocard0"
	Driver      "mga"
	VendorName  "Videocard vendor"
	BoardName   "Matrox Millennium G200"
	VideoRam    8192
	Option      "dpms"
EndSection
The following entries are commonly used in the Device section:
  • Identifier — Specifies a unique name for this Device section. This is a required entry.
  • Driver — Specifies which driver the X server must load to utilize the video card. A list of drivers can be found in /usr/share/hwdata/videodrivers, which is installed with the hwdata package.
  • VendorName — An optional parameter which specifies the vendor of the video card.
  • BoardName — An optional parameter which specifies the name of the video card.
  • VideoRam — An optional parameter which specifies the amount of RAM available on the video card in kilobytes. This setting is only necessary for video cards the X server cannot probe to detect the amount of video RAM.
  • BusID — An entry which specifies the bus location of the video card. On systems with only one video card a BusID entry is optional and may not even be present in the default /etc/X11/xorg.conf file. On systems with more than one video card, however, a BusID entry must be present.
  • Screen — An optional entry which specifies which monitor connector or head on the video card the Device section configures. This option is only useful for video cards with multiple heads.
    If multiple monitors are connected to different heads on the same video card, separate Device sections must exist and each of these sections must have a different Screen value.
    Values for the Screen entry must be an integer. The first head on the video card has a value of 0. The value for each additional head increments this value by one.
  • Option "<option-name>" — An optional entry which specifies extra parameters for the section. Replace <option-name> with a valid option listed for this section in the xorg.conf man page.
    One of the more common options is "dpms" (for Display Power Management Signaling, a VESA standard), which activates the Service Star energy compliance setting for the monitor.

33.3.1.9. Screen

Each Screen section binds one video card (or video card head) to one monitor by referencing the Device section and the Monitor section for each. While one Screen section is the minimum, additional instances may occur for each video card and monitor combination present on the machine.
The following example illustrates a typical Screen section:
Section "Screen"
	Identifier "Screen0"
	Device     "Videocard0"
	Monitor    "Monitor0"
	DefaultDepth     16
	SubSection "Display"
		Depth     24
		Modes    "1280x1024" "1280x960" "1152x864" "1024x768" "800x600" "640x480"
	EndSubSection
	SubSection "Display"
		Depth     16
		Modes    "1152x864" "1024x768" "800x600" "640x480"
	EndSubSection
EndSection
The following entries are commonly used in the Screen section:
  • Identifier — Specifies a unique name for this Screen section. This is a required entry.
  • Device — Specifies the unique name of a Device section. This is a required entry.
  • Monitor — Specifies the unique name of a Monitor section. This is only required if a specific Monitor section is defined in the xorg.conf file. Normally, monitors are automatically detected.
  • DefaultDepth — Specifies the default color depth in bits. In the previous example, 16 (which provides thousands of colors) is the default. Only one DefaultDepth is permitted, although this can be overridden with the Xorg command line option -depth <n>,where <n> is any additional depth specified.
  • SubSection "Display" — Specifies the screen modes available at a particular color depth. The Screen section can have multiple Display subsections, which are entirely optional since screen modes are automatically detected.
    このサブセクションは通常、自動検出されたモードの上書きに使用します。
  • Option "<option-name>" — An optional entry which specifies extra parameters for the section. Replace <option-name> with a valid option listed for this section in the xorg.conf man page.

33.3.1.10. DRI

The optional DRI section specifies parameters for the Direct Rendering Infrastructure (DRI). DRI is an interface which allows 3D software applications to take advantage of 3D hardware acceleration capabilities built into most modern video hardware. In addition, DRI can improve 2D performance via hardware acceleration, if supported by the video card driver.
DRI Group と Mode は自動的にデフォルト値に初期化されるため、このセクションはめったに現われません。別の Group または Mode にする場合に、このセクションを xorg.conf ファイルに追加するとデフォルト値を上書きします。
The following example illustrates a typical DRI section:
Section "DRI"
	Group        0
	Mode         0666
EndSection
異なるビデオカードは、異なる方法で DRI を使用しますので、最初に http://dri.sourceforge.net/ を参照するまでは、このセクションに変更を行わないでください。

33.4. フォント

Red Hat Enterprise Linux uses two subsystems to manage and display fonts under X: Fontconfig and xfs.
より新しい Fontconfig フォントサブシステムはフォント管理を単純化し、 anti-aliasing などの高度な表示機能を提供します。このシステムは、 Qt 3 または GTK+ 2 グラフィカルツールキットを使用してプログラムされたアプリケーションに対して自動的に利用されます。
互換性を保つために Red Hat Enterprise Linux にはコア X フォントサブシステムと呼ばれるオリジナルのフォントサブシステムが含まれています。このシステムは 15 年の歴史を持ち、 X Font Server (xfs) をベースにしています。
このセクションでは、上記の両方のシステムを使用して X の為のフォントの設定法を説明していきます。

33.4.1. Fontconfig

Fontconfig フォントサブシステムを使用すると、アプリケーションがシステム上のフォントに直接アクセスできるようになり、 Xft 又は他のレンダリング機構を使って高度な anti-aliasingでのFontconfig フォントを描写できます。グラフィカルアプリケーションは Fontconfig と共に Xft ライブラリを使用してテキストを画面に描くことが出来ます。
そのうち、 Fontconfig/Xft フォントサブシステムがコア X フォントサブシステムに取って替ることになります。

重要

The Fontconfig font subsystem does not yet work for OpenOffice.org, which uses its own font rendering technology.
It is important to note that Fontconfig uses the /etc/fonts/fonts.conf configuration file, which should not be edited by hand.

Tip

Due to the transition to the new font system, GTK+ 1.2 applications are not affected by any changes made via the Font Preferences dialog (accessed by selecting System (on the panel) > Preferences > Fonts). For these applications, a font can be configured by adding the following lines to the file ~/.gtkrc.mine:
style "user-font" {
	fontset = "<font-specification>"
}

widget_class "*" style "user-font"
Replace <font-specification> with a font specification in the style used by traditional X applications, such as -adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*. A full list of core fonts can be obtained by running xlsfonts or created interactively using the xfontsel command.

33.4.1.1. Fontconfig へのフォントの追加

新しいフォントを Fontconfig サブシステムに追加することは簡単明快なプロセスです。
  1. To add fonts system-wide, copy the new fonts into the /usr/share/fonts/ directory. It is a good idea to create a new subdirectory, such as local/ or similar, to help distinguish between user-installed and default fonts.
    To add fonts for an individual user, copy the new fonts into the .fonts/ directory in the user's home directory.
  2. Use the fc-cache command to update the font information cache, as in the following example:
    fc-cache <path-to-font-directory>
    In this command, replace <path-to-font-directory> with the directory containing the new fonts (either /usr/share/fonts/local/ or /home/<user>/.fonts/).

Tip

Individual users may also install fonts graphically, by typing fonts:/// into the Nautilus address bar, and dragging the new font files there.

重要

If the font file name ends with a .gz extension, it is compressed and cannot be used until uncompressed. To do this, use the gunzip command or double-click the file and drag the font to a directory in Nautilus.

33.4.2. コア X フォントシステム

For compatibility, Red Hat Enterprise Linux provides the core X font subsystem, which uses the X Font Server (xfs) to provide fonts to X client applications.
The X server looks for a font server specified in the FontPath directive within the Files section of the /etc/X11/xorg.conf configuration file. Refer to Files for more information about the FontPath entry.
The X server connects to the xfs server on a specified port to acquire font information. For this reason, the xfs service must be running for X to start. For more about configuring services for a particular runlevel, refer to 17章サービスへのアクセスの制御.

33.4.2.1. xfs Configuration

The /etc/rc.d/init.d/xfs script starts the xfs server. Several options can be configured within its configuration file, /etc/X11/fs/config.
次は一般的なオプションの一覧です:
  • alternate-servers — Specifies a list of alternate font servers to be used if this font server is not available. A comma must separate each font server in a list.
  • catalogue — Specifies an ordered list of font paths to use. A comma must separate each font path in a list.
    Use the string :unscaled immediately after the font path to make the unscaled fonts in that path load first. Then specify the entire path again, so that other scaled fonts are also loaded.
  • client-limit — Specifies the maximum number of clients the font server services. The default is 10.
  • clone-self — Allows the font server to clone a new version of itself when the client-limit is hit. By default, this option is on.
  • default-point-size — Specifies the default point size for any font that does not specify this value. The value for this option is set in decipoints. The default of 120 corresponds to a 12 point font.
  • default-resolutions — Specifies a list of resolutions supported by the X server. Each resolution in the list must be separated by a comma.
  • deferglyphs — Specifies whether to defer loading glyphs (the graphic used to visually represent a font). To disable this feature use none, to enable this feature for all fonts use all, or to turn this feature on only for 16-bit fonts use 16.
  • error-file — Specifies the path and file name of a location where xfs errors are logged.
  • no-listen — Prevents xfs from listening to particular protocols. By default, this option is set to tcp to prevent xfs from listening on TCP ports for security reasons.

    Tip

    If xfs is used to serve fonts over the network, remove this line.
  • port — Specifies the TCP port that xfs listens on if no-listen does not exist or is commented out.
  • use-syslog — Specifies whether to use the system error log.

33.4.2.2. Adding Fonts to xfs

To add fonts to the core X font subsystem (xfs), follow these steps:
  1. If it does not already exist, create a directory called /usr/share/fonts/local/ using the following command as root:
    mkdir /usr/share/fonts/local/
    If creating the /usr/share/fonts/local/ directory is necessary, it must be added to the xfs path using the following command as root:
    chkfontpath --add /usr/share/fonts/local/
  2. Copy the new font file into the /usr/share/fonts/local/ directory
  3. ルートとして次のコマンドを発行して、フォント情報を更新します:
    ttmkfdir -d /usr/share/fonts/local/ -o /usr/share/fonts/local/fonts.scale
  4. Reload the xfs font server configuration file by issuing the following command as root:
    service xfs reload

33.5. ランレベルと X

ほとんどの場合、 Red Hat Enterprise Linux のインストーラーは ランレベル 5 として知られるグラフィカルなログイン環境でマシンが起動するよう設定します。ただし、 ランレベル 3 と呼ばれるテキストのみの複数ユーザーモードで起動して、そこから X のセッションを開始することも可能です。
For more information about runlevels, refer to 「ランレベル」.
次のサブセクションでは、 X がランレベル 3 及びランレベル 5 でどのようにスタートするかを説明します。

33.5.1. ランレベル 3

When in runlevel 3, the best way to start an X session is to log in and type startx. The startx command is a front-end to the xinit command, which launches the X server (Xorg) and connects X client applications to it. Because the user is already logged into the system at runlevel 3, startx does not launch a display manager or authenticate users. Refer to 「ランレベル 5」 for more information about display managers.
When the startx command is executed, it searches for the .xinitrc file in the user's home directory to define the desktop environment and possibly other X client applications to run. If no .xinitrc file is present, it uses the system default /etc/X11/xinit/xinitrc file instead.
The default xinitrc script then searches for user-defined files and default system files, including .Xresources, .Xmodmap, and .Xkbmap in the user's home directory, and Xresources, Xmodmap, and Xkbmap in the /etc/X11/ directory. The Xmodmap and Xkbmap files, if they exist, are used by the xmodmap utility to configure the keyboard. The Xresources file is read to assign specific preference values to applications.
After setting these options, the xinitrc script executes all scripts located in the /etc/X11/xinit/xinitrc.d/ directory. One important script in this directory is xinput.sh, which configures settings such as the default language.
Next, the xinitrc script attempts to execute .Xclients in the user's home directory and turns to /etc/X11/xinit/Xclients if it cannot be found. The purpose of the Xclients file is to start the desktop environment or, possibly, just a basic window manager. The .Xclients script in the user's home directory starts the user-specified desktop environment in the .Xclients-default file. If .Xclients does not exist in the user's home directory, the standard /etc/X11/xinit/Xclients script attempts to start another desktop environment, trying GNOME first and then KDE followed by twm.
ランレベル 3 の場合、 X セッションを終了するとユーザーはテキストモードのユーザーセッションに戻ります。

33.5.2. ランレベル 5

システムがランレベル 5 で起動すると、 ディスプレイマネージャ と呼ばれる特殊な X クライアントアプリケーションが起動します。ユーザーは、デスクトップ環境またはウィンドウマネージャが起動する前にディスプレイマネージャを使用して認証する必要があります。
システム上にインストールされているデスクトップ環境によっては 3 種類のディスプレイマネージャがユーザー認証に利用できます。
  • GNOME — The default display manager for Red Hat Enterprise Linux, GNOME allows the user to configure language settings, shutdown, restart or log in to the system.
  • KDE — KDE's display manager which allows the user to shutdown, restart or log in to the system.
  • xdm — A very basic display manager which only lets the user log in to the system.
When booting into runlevel 5, the prefdm script determines the preferred display manager by referencing the /etc/sysconfig/desktop file. A list of options for this file is available in this file:
/usr/share/doc/initscripts-<version-number>/sysconfig.txt
where <version-number> is the version number of the initscripts package.
Each of the display managers reference the /etc/X11/xdm/Xsetup_0 file to set up the login screen. Once the user logs into the system, the /etc/X11/xdm/GiveConsole script runs to assign ownership of the console to the user. Then, the /etc/X11/xdm/Xsession script runs to accomplish many of the tasks normally performed by the xinitrc script when starting X from runlevel 3, including setting system and user resources, as well as running the scripts in the /etc/X11/xinit/xinitrc.d/ directory.
Users can specify which desktop environment they want to utilize when they authenticate using the GNOME or KDE display managers by selecting it from the Sessions menu item (accessed by selecting System (on the panel) > Preferences > More Preferences > Sessions). If the desktop environment is not specified in the display manager, the /etc/X11/xdm/Xsession script checks the .xsession and .Xclients files in the user's home directory to decide which desktop environment to load. As a last resort, the /etc/X11/xinit/Xclients file is used to select a desktop environment or window manager to use in the same way as runlevel 3.
When the user finishes an X session on the default display (:0) and logs out, the /etc/X11/xdm/TakeConsole script runs and reassigns ownership of the console to the root user. The original display manager, which continues running after the user logged in, takes control by spawning a new display manager. This restarts the X server, displays a new login window, and starts the entire process over again.
ユーザーがランレベル 5 からX のログアウトをすると、ディスプレイマネージャに戻ります。
For more information on how display managers control user authentication, refer to the /usr/share/doc/gdm-<version-number>/README (where <version-number> is the version number for the gdm package installed) and the xdm man page.

33.6. その他のリソース

X サーバー、このサーバーに接続されているクライアント、及びさまざまなデスクトップ環境とウィンドウマネージャについては他にも多量の詳細情報があります。

33.6.1. インストールされているドキュメント

  • /usr/share/X11/doc/ — contains detailed documentation on the X Window System architecture, as well as how to get additional information about the Xorg project as a new user.
  • man xorg.conf — Contains information about the xorg.conf configuration files, including the meaning and syntax for the different sections within the files.
  • man Xorg — Describes the Xorg display server.

33.6.2. 役に立つ Web サイト

  • http://www.X.org/ — X.Org Foundation のホームページです。 X Window System の X11R7.1 リリースを製作しています。 X11R7.1 リリースは、必須ハードウェアの制御、及び GUI 環境を提供するため Red Hat Enterprise Linux に同梱されています。
  • http://dri.sourceforge.net/ — DRI(Direct Rendering Infrastructure) プロジェクトのホームページ。 DRI は、 X のコアハードウェア 3D アクセラレーションコンポーネントです。
  • http://www.gnome.org/ — GNOME プロジェクトのホームページ。
  • http://www.kde.org/ — KDE デスクトップ環境のホームページ。

第34章 X Window System の設定

During installation, the system's monitor, video card, and display settings are configured. To change any of these settings after installation, use the X Configuration Tool.
To start the X Configuration Tool, go to System (on the panel) > Administration > Display, or type the command system-config-display at a shell prompt (for example, in an XTerm or GNOME terminal). If the X Window System is not running, a small version of X is started to run the program.
設定を変更したら、一旦、グラフィックデスクトップをログアウトしてからログインし直すと変更が反映されます。

34.1. Display Settings

The Settings tab allows users to change the resolution and color depth. The display of a monitor consists of tiny dots called pixels. The number of pixels displayed at one time is called the resolution. For example, the resolution 1024x768 means that 1024 horizontal pixels and 768 vertical pixels are used. The higher the resolution values, the more images the monitor can display at one time.
ディスプレイの色の深さは、表示可能な色の数を決定します。色の深さが大きいほど、色彩のコントラストが豊かになります。
Display Settings
Display Settings
図34.1 Display Settings

34.2. Display Hardware Settings

When the X Configuration Tool is started, it probes the monitor and video card. If the hardware is probed properly, the information for it is shown on the Hardware tab as shown in 図34.2「Display Hardware Settings」.
Display Hardware Settings
Display Hardware Settings
図34.2 Display Hardware Settings

To change the monitor type or any of its settings, click the corresponding Configure button. To change the video card type or any of its settings, click the Configure button beside its settings.

34.3. Dual Head Display Settings

If multiple video cards are installed on the system, dual head monitor support is available and is configured via the Dual head tab, as shown in 図34.3「Dual Head Display Settings」.
Dual Head Display Settings
Dual Head Display Settings
図34.3 Dual Head Display Settings

To enable use of Dual head, check the Use dual head checkbox.
To configure the second monitor type, click the corresponding Configure button. You can also configure the other Dual head settings by using the corresponding drop-down list.
For the Desktop layout option, selecting Spanning Desktops allows both monitors to use an enlarged usable workspace. Selecting Individual Desktops shares the mouse and keyboard among the displays, but restricts windows to a single display.

第35章 ユーザーとグループ

ユーザーグループ の管理は、 Red Hat Enterprise Linux システム管理の中核をなします。
ユーザー とは、特定のアプリケーションを使用する人 (実在のユーザーと連結するアカウントの意) またはアカウントのことです。
グループ は、共通の目的の為にユーザーを統合して組織を論理的に表したものです。同一グループのユーザーにはそのグループ所有ファイルの読み込み、書き込み、又は実行が可能です。
各ユーザーとグループは、 userid (UID) と groupid (GID) という数字で表される固有の識別番号をそれぞれ持っています。
あるファイルを作成するユーザーは、そのファイルの所有者でありグループとしての所有者でもあります。ファイルは、所有者、グループ、その他に対して読み込み、書き込み、実行の権限をそれぞれ別々に割り当てられます。ファイルの所有者を変更できるのは root ユーザーだけで、またアクセス権限を変更できるのは root ユーザーとファイルの所有者のみになります。
Red Hat Enterprise Linux also supports access control lists (ACLs) for files and directories which allow permissions for specific users outside of the owner to be set. For more information about ACLs, refer to 9章Access Control Lists.

35.1. ユーザーとグループの管理

The User Manager allows you to view, modify, add, and delete local users and groups.
To use the User Manager, you must be running the X Window System, have root privileges, and have the system-config-users RPM package installed. To start the User Manager from the desktop, go to System (on the panel) > Administration > Users & Groups. You can also type the command system-config-users at a shell prompt (for example, in an XTerm or a GNOME terminal).
User Manager
User Manager
図35.1 User Manager

To view a list of local users on the system, click the Users tab. To view a list of local groups on the system, click the Groups tab.
To find a specific user or group, type the first few letters of the name in the Search filter field. Press Enter or click the Apply filter button. The filtered list is displayed.
ユーザーまたはグループを分類するには、目的の欄をクリックします。その欄の値に応じてユーザーまたはグループが分類されます。
Red Hat Enterprise Linux reserves user IDs below 500 for system users. By default, User Manager does not display system users. To view all users, including the system users, go to Edit > Preferences and uncheck Hide system users and groups from the dialog box.

35.1.1. 新規ユーザーを追加する

To add a new user, click the Add User button. A window as shown in 図35.2「新規ユーザー」 appears. Type the username and full name for the new user in the appropriate fields. Type the user's password in the Password and Confirm Password fields. The password must be at least six characters.

Tip

できるだけこれより長いパスワードを使用することをお勧めします。長いパスワードを使うことにより、侵入者にとってはパスワードを推測してパーミッションなしにアカウントにアクセスするのが難しくなるためです。また、辞書に載っているような単語をベースとするパスワードは避け、文字と数字、特殊文字を組み合わせて作成してください。
Select a login shell. If you are not sure which shell to select, accept the default value of /bin/bash. The default home directory is /home/<username>/. You can change the home directory that is created for the user, or you can choose not to create the home directory by unselecting Create home directory.
If you select to create the home directory, default configuration files are copied from the /etc/skel/ directory into the new home directory.
Red Hat Enterprise Linux uses a user private group (UPG) scheme. The UPG scheme does not add or change anything in the standard UNIX way of handling groups; it offers a new convention. Whenever you create a new user, by default, a unique group with the same name as the user is created. If you do not want to create this group, unselect Create a private group for the user.
To specify a user ID for the user, select Specify user ID manually. If the option is not selected, the next available user ID above 500 is assigned to the new user. Because Red Hat Enterprise Linux reserves user IDs below 500 for system users, it is not advisable to manually assign user IDs 1-499.
Click OK to create the user.
新規ユーザー
新規ユーザーを作成する
図35.2 新規ユーザー

To configure more advanced user properties, such as password expiration, modify the user's properties after adding the user. Refer to 「ユーザーのプロパティを変更する」 for more information.

35.1.2. ユーザーのプロパティを変更する

To view the properties of an existing user, click on the Users tab, select the user from the user list, and click Properties from the menu (or choose File > Properties from the pulldown menu). A window similar to 図35.3「ユーザーのプロパティ」 appears.
ユーザーのプロパティ
ユーザーのプロパティを修正する
図35.3 ユーザーのプロパティ

The User Properties window is divided into multiple tabbed pages:
  • User Data — Shows the basic user information configured when you added the user. Use this tab to change the user's full name, password, home directory, or login shell.
  • Account Info Select Enable account expiration if you want the account to expire on a certain date. Enter the date in the provided fields. Select Local password is locked to lock the user account and prevent the user from logging into the system.
  • Password Info — Displays the date that the user's password last changed. To force the user to change passwords after a certain number of days, select Enable password expiration and enter a desired value in the Days before change required: field. The number of days before the user's password expires, the number of days before the user is warned to change passwords, and days before the account becomes inactive can also be changed.
  • Groups — Allows you to view and configure the Primary Group of the user, as well as other groups that you want the user to be a member of.

35.1.3. 新規グループを追加する

To add a new user group, click the Add Group button. A window similar to 図35.4「新規グループ」 appears. Type the name of the new group to create. To specify a group ID for the new group, select Specify group ID manually and select the GID. Note that Red Hat Enterprise Linux also reserves group IDs lower than 500 for system groups.
新規グループ
新規グループの作成
図35.4 新規グループ

Click OK to create the group. The new group appears in the group list.

35.1.4. グループのプロパティを変更する

To view the properties of an existing group, select the group from the group list and click Properties from the menu (or choose File > Properties from the pulldown menu). A window similar to 図35.5「グループのプロパティ」 appears.
グループのプロパティ
グループのプロパティを変更する
図35.5 グループのプロパティ

The Group Users tab displays which users are members of the group. Use this tab to add or remove users from the group. Click OK to save your changes.

35.2. ユーザーとグループの管理ツール

ユーザーとグループの管理は退屈な作業になり得るため、 Red Hat Enterprise Linux は管理が行いやすいようツールや取り決めを提供しています。
The easiest way to manage users and groups is through the graphical application, User Manager (system-config-users). For more information on User Manager, refer to 「ユーザーとグループの管理」.
次のコマンドラインツールを使用してユーザーとグループを管理することもできます:
  • useradd, usermod, and userdel — Industry-standard methods of adding, deleting and modifying user accounts
  • groupadd, groupmod, and groupdel — Industry-standard methods of adding, deleting, and modifying user groups
  • gpasswd — Industry-standard method of administering the /etc/group file
  • pwck, grpck — Tools used for the verification of the password, group, and associated shadow files
  • pwconv, pwunconv — Tools used for the conversion of passwords to shadow passwords and back to standard passwords

35.2.1. コマンドライン管理

コマンドラインツールを使用したい、または X Window System がインストールされていない場合、このセクションを使ってユーザーとグループの管理を行ってください。

35.2.2. ユーザーを追加する

システムにユーザーを追加するには、
  1. Issue the useradd command to create a locked user account:
    useradd <username>
  2. Unlock the account by issuing the passwd command to assign a password and set password aging guidelines:
    passwd <username>
Command line options for useradd are detailed in 表35.1「useradd Command Line Options」.
表35.1 useradd Command Line Options
オプション 説明
-c '<comment>' <comment> can be replaced with any string. This option is generally used to specify the full name of a user.
-d <home-dir> Home directory to be used instead of default /home/<username>/
-e <date> YYYY-MM-DD の形式でアカウントを無効にする日付を指定します。
-f <days> Number of days after the password expires until the account is disabled. If 0 is specified, the account is disabled immediately after the password expires. If -1 is specified, the account is not be disabled after the password expires.
-g <group-name> Group name or group number for the user's default group. The group must exist prior to being specified here.
-G <group-list> ユーザーがメンバーとなる追加グループ (デフォルト以外) のグループ名とグループ番号をコンマで区切って入れます。グループはここに指定される以前から存在していなければなりません。
-m 存在しない場合に、ホームディレクトリを作成します。
-M ホームディレクトリを作成しません。
-n ユーザー用のユーザープライベートグループを作成しません。
-r UID が 500 未満のシステムアカウントを作成してホームディレクトリを作成しません。
-p <password> The password encrypted with crypt
-s User's login shell, which defaults to /bin/bash
-u <uid> ユーザーのユーザー ID です。固有の番号で 499 より大きい数でなければなりません。

35.2.3. グループを追加する

To add a group to the system, use the command groupadd:
groupadd <group-name>
Command line options for groupadd are detailed in 表35.2「groupadd Command Line Options」.
表35.2 groupadd Command Line Options
オプション 説明
-g <gid> グループのグループ ID です。固有の番号で 499 より大きい数でなければなりません。
-r GID が 500 未満のシステムグループを作成します。
-f When used with -g <gid> and <gid> already exists, groupadd will choose another unique <gid> for the group.

35.2.4. パスワードエージング

For security reasons, it is advisable to require users to change their passwords periodically. This can be done when adding or editing a user on the Password Info tab of the User Manager.
To configure password expiration for a user from a shell prompt, use the chage command with an option from 表35.3「chage Command Line Options」, followed by the username.

重要

Shadow passwords must be enabled to use the chage command. For more information, see 「シャドウパスワード」.
表35.3 chage Command Line Options
オプション 説明
-m <days> ユーザーがパスワードを変更できる最小日数を指定します。値が 0 ならパスワードはいつでも変更が可能になります。
-M <days> パスワードが有効である最大日数を指定します。このオプションで指定された日数と -d オプションで指定された日数の和が過去になる場合、ユーザーはこのアカウントを使用する前にパスワードを変更する必要があります。
-d <days> 1970 年 1 月 1 日から起算して指定した日数がパスワードの変更が行われた日付とします。
-I <days> パスワードが失効してからアカウントがロックされるまでのアクティブな日数を指定します。値が 0 ならパスワードが失効してもアカウントはロックされません。
-E <date> アカウントがロックされる日付を YYYY-MM-DD の形式で指定します。日付を指定する代わりに、 1970 年 1 月 1 日からの起算日数で指定することも可能です。
-W <days> ユーザーにパスワード失効の日付を警告するまでの日数を指定します。
-l Lists current account aging settings.

Tip

If the chage command is followed directly by a username (with no options), it displays the current password aging values and allows them to be changed interactively.
You can configure a password to expire the first time a user logs in. This forces users to change passwords immediately.
  1. Set up an initial password — There are two common approaches to this step. The administrator can assign a default password or assign a null password.
    To assign a default password, use the following steps:
    • Start the command line Python interpreter with the python command. It displays the following:
      Python 2.4.3 (#1, Jul 21 2006, 08:46:09)
      [GCC 4.1.1 20060718 (Red Hat 4.1.1-9)] on linux2
      Type "help", "copyright", "credits" or "license" for more information.
      >>>
    • At the prompt, type the following commands. Replace <password> with the password to encrypt and <salt> with a random combination of at least 2 of the following: any alphanumeric character, the slash (/) character or a dot (.):
      import crypt
      print crypt.crypt("<password>","<salt>")
      The output is the encrypted password, similar to '12CsGd8FRcMSM'.
    • Press Ctrl-D to exit the Python interpreter.
    • At the shell, enter the following command (replacing <encrypted-password> with the encrypted output of the Python interpreter):
      usermod -p "<encrypted-password>" <username>
    代わりに、初期パスワードではなく空のパスワードを割り当てることもできます。これを行うには、次のコマンドを実行します。
    usermod -p "" username

    注意

    空のパスワードは便利ですが、安全性のないユーザー名を使用しているシステムへのアクセスにサードパーティが最初にログインしてしまう恐れがあるため非常に危険な行為でもあります。空パスワードのアカウントのロックを解除する前には、必ず、ユーザーのログイン準備が整っていることを確認します。
  2. 直ちにパスワードを強制的に失効させる — 次のコマンドを入力します。
    chage -d 0 username
    このコマンドは、パスワードが最後に変更された日付の値を 1970 年 1 月 1 日に設定します。この値は、いかなるパスワードエージングのポリシーが設定されていようと関係なく、直ちにパスワードを強制的に失効させます。
Upon the initial log in, the user is now prompted for a new password.

35.2.5. 手順の説明

The following steps illustrate what happens if the command useradd juan is issued on a system that has shadow passwords enabled:
  1. A new line for juan is created in /etc/passwd. The line has the following characteristics:
    • It begins with the username juan.
    • There is an x for the password field indicating that the system is using shadow passwords.
    • 499 より大きい数の UID が作成される。 (Red Hat Enterprise Linux 環境下では、 500 未満の UID 及び GID はシステムが使用するため保留される)
    • 499 より大きい GID が作成される。
    • オプションの GECOS 情報は空白のままになっている。
    • The home directory for juan is set to /home/juan/.
    • The default shell is set to /bin/bash.
  2. A new line for juan is created in /etc/shadow. The line has the following characteristics:
    • It begins with the username juan.
    • Two exclamation points (!!) appear in the password field of the /etc/shadow file, which locks the account.

      注記

      If an encrypted password is passed using the -p flag, it is placed in the /etc/shadow file on the new line for the user.
    • パスワードは失効期限無しに設定される。
  3. A new line for a group named juan is created in /etc/group. A group with the same name as a user is called a user private group. For more information on user private groups, refer to 「新規ユーザーを追加する」.
    The line created in /etc/group has the following characteristics:
    • It begins with the group name juan.
    • An x appears in the password field indicating that the system is using shadow group passwords.
    • The GID matches the one listed for user juan in /etc/passwd.
  4. A new line for a group named juan is created in /etc/gshadow. The line has the following characteristics:
    • It begins with the group name juan.
    • An exclamation point (!) appears in the password field of the /etc/gshadow file, which locks the group.
    • その他フィールドはすべて空白になっている。
  5. A directory for user juan is created in the /home/ directory. This directory is owned by user juan and group juan. However, it has read, write, and execute privileges only for the user juan. All other permissions are denied.
  6. The files within the /etc/skel/ directory (which contain default user settings) are copied into the new /home/juan/ directory.
At this point, a locked account called juan exists on the system. To activate it, the administrator must next assign a password to the account using the passwd command and, optionally, set password aging guidelines.

35.3. 標準的なユーザー

表35.4「標準的なユーザー」 lists the standard users configured in the /etc/passwd file by an Everything installation. The groupid (GID) in this table is the primary group for the user. See 「標準的なグループ」 for a listing of standard groups.
表35.4 標準的なユーザー
ユーザー UID GID ホームディレクトリ シェル
root 0 0 /root /bin/bash
bin 1 1 /bin /sbin/nologin
daemon 2 2 /sbin /sbin/nologin
adm 3 4 /var/adm /sbin/nologin
lp 4 7 /var/spool/lpd /sbin/nologin
sync 5 0 /sbin /bin/sync
shutdown 6 0 /sbin /sbin/shutdown
halt 7 0 /sbin /sbin/halt
mail 8 12 /var/spool/mail /sbin/nologin
news 9 13 /etc/news
uucp 10 14 /var/spool/uucp /sbin/nologin
operator 11 0 /root /sbin/nologin
games 12 100 /usr/games /sbin/nologin
gopher 13 30 /var/gopher /sbin/nologin
ftp 14 50 /var/ftp /sbin/nologin
nobody 99 99 / /sbin/nologin
rpm 37 37 /var/lib/rpm /sbin/nologin
vcsa 69 69 /dev /sbin/nologin
dbus 81 81 / /sbin/nologin
ntp 38 38 /etc/ntp /sbin/nologin
canna 39 39 /var/lib/canna /sbin/nologin
nscd 28 28 / /sbin/nologin
rpc 32 32 / /sbin/nologin
postfix 89 89 /var/spool/postfix /sbin/nologin
mailman 41 41 /var/mailman /sbin/nologin
named 25 25 /var/named /bin/false
amanda 33 6 var/lib/amanda/ /bin/bash
postgres 26 26 /var/lib/pgsql /bin/bash
exim 93 93 /var/spool/exim /sbin/nologin
sshd 74 74 /var/empty/sshd /sbin/nologin
rpcuser 29 29 /var/lib/nfs /sbin/nologin
nsfnobody 65534 65534 /var/lib/nfs /sbin/nologin
pvm 24 24 /usr/share/pvm3 /bin/bash
apache 48 48 /var/www /sbin/nologin
xfs 43 43 /etc/X11/fs /sbin/nologin
gdm 42 42 /var/gdm /sbin/nologin
htt 100 101 /usr/lib/im /sbin/nologin
mysql 27 27 /var/lib/mysql /bin/bash
webalizer 67 67 /var/www/usage /sbin/nologin
mailnull 47 47 /var/spool/mqueue /sbin/nologin
smmsp 51 51 /var/spool/mqueue /sbin/nologin
squid 23 23 /var/spool/squid /sbin/nologin
ldap 55 55 /var/lib/ldap /bin/false
netdump 34 34 /var/crash /bin/bash
pcap 77 77 /var/arpwatch /sbin/nologin
radiusd 95 95 / /bin/false
radvd 75 75 / /sbin/nologin
quagga 92 92 /var/run/quagga /sbin/login
wnn 49 49 /var/lib/wnn /sbin/nologin
dovecot 97 97 /usr/libexec/dovecot /sbin/nologin

35.4. 標準的なグループ

表35.5「標準的なグループ」 lists the standard groups configured by an Everything installation. Groups are stored in the /etc/group file.
表35.5 標準的なグループ
グループ GID メンバー
root 0 root
bin 1 root, bin, daemon
daemon 2 root, bin, daemon
sys 3 root, bin, adm
adm 4 root, adm, daemon
tty 5
disk 6 root
lp 7 daemon, lp
mem 8
kmem 9
wheel 10 root
mail 12 mail, postfix, exim
news 13 news
uucp 14 uucp
man 15
games 20
gopher 30
dip 40
ftp 50
lock 54
nobody 99
users 100
rpm 37
utmp 22
floppy 19
vcsa 69
dbus 81
ntp 38
canna 39
nscd 28
rpc 32
postdrop 90
postfix 89
mailman 41
exim 93
named 25
postgres 26
sshd 74
rpcuser 29
nfsnobody 65534
pvm 24
apache 48
xfs 43
gdm 42
htt 101
mysql 27
webalizer 67
mailnull 47
smmsp 51
squid 23
ldap 55
netdump 34
pcap 77
quaggavt 102
quagga 92
radvd 75
slocate 21
wnn 49
dovecot 97
radiusd 95

35.5. ユーザープライベートグループ

Red Hat Enterprise Linux は ユーザープライベートグループ (UPG) 体系を使用しているので UNIX のグループ管理が楽になります。
UPG は新規のユーザーがシステムに追加される度に、生成されます。 UPG はそれが生成される元であるユーザーと同名を持っており、そのユーザーのみが UPG のメンバーです。
UPG の使用により、新規のファイルやディレクトリに対し安全にデフォルトの権限を設定することが可能なため、ユーザー及び そのユーザーのグループ の両者がそれらのファイルやディレクトリに修正を加えることができるようになります。
The setting which determines what permissions are applied to a newly created file or directory is called a umask and is configured in the /etc/bashrc file. Traditionally on UNIX systems, the umask is set to 022, which allows only the user who created the file or directory to make modifications. Under this scheme, all other users, including members of the creator's group, are not allowed to make any modifications. However, under the UPG scheme, this "group protection" is not necessary since every user has their own private group.

35.5.1. グループディレクトリ

Many IT organizations like to create a group for each major project and then assign people to the group if they need to access that project's files. Using this traditional scheme, managing files has been difficult; when someone creates a file, it is associated with the primary group to which they belong. When a single person works on multiple projects, it is difficult to associate the right files with the right group. Using the UPG scheme, however, groups are automatically assigned to files created within a directory with the setgid bit set. The setgid bit makes managing group projects that share a common directory very simple because any files a user creates within the directory are owned by the group which owns the directory.
Let us say, for example, that a group of people need to work on files in the /usr/share/emacs/site-lisp/ directory. Some people are trusted to modify the directory, but certainly not everyone is trusted. First create an emacs group, as in the following command:
groupadd emacs
To associate the contents of the directory with the emacs group, type:
chown -R root.emacs /usr/share/emacs/site-lisp
Now, it is possible to add the proper users to the group with the gpasswd command:
gpasswd -a <username> emacs
ユーザーに、ディレクトリ内でファイルを作成する権限を与えるには次のコマンドを使用します:
chmod 775 /usr/share/emacs/site-lisp
When a user creates a new file, it is assigned the group of the user's default private group. Next, set the setgid bit, which assigns everything created in the directory the same group permission as the directory itself (emacs). Use the following command:
chmod 2775 /usr/share/emacs/site-lisp
At this point, because the default umask of each user is 002, all members of the emacs group can create and edit files in the /usr/share/emacs/site-lisp/ directory without the administrator having to change file permissions every time users write new files.

35.6. シャドウパスワード

In multiuser environments it is very important to use shadow passwords (provided by the shadow-utils package). Doing so enhances the security of system authentication files. For this reason, the installation program enables shadow passwords by default.
従来の UNIX ベースのシステムでパスワードを保存する方法より優れたシャドウパスワードの利点を以下の一覧で示します:
  • Improves system security by moving encrypted password hashes from the world-readable /etc/passwd file to /etc/shadow, which is readable only by the root user.
  • パスワードエージングに関連する情報を保存。
  • Allows the use the /etc/login.defs file to enforce security policies.
Most utilities provided by the shadow-utils package work properly whether or not shadow passwords are enabled. However, since password aging information is stored exclusively in the /etc/shadow file, any commands which create or modify password aging information do not work.
最初にシャドウパスワードを有効にしないと動作しないコマンドを以下の一覧でしめします:
  • chage
  • gpasswd
  • /usr/sbin/usermod -e or -f options
  • /usr/sbin/useradd -e or -f options

35.7. その他のリソース

ユーザーとグループについての詳細、及びユーザーとグループを管理するツールについては、次のリソースを参照してください。

35.7.1. インストールされているドキュメント

  • 関連の man ページ — ユーザーとグループの管理に関連する各種アプリケーションや設定ファイルに関する man ページが数多くあります。より重要な man ページの幾つかをここに示します:
    ユーザーとグループ管理アプリケーション
    • man chage — A command to modify password aging policies and account expiration.
    • man gpasswd — A command to administer the /etc/group file.
    • man groupadd — A command to add groups.
    • man grpck — A command to verify the /etc/group file.
    • man groupdel — A command to remove groups.
    • man groupmod — A command to modify group membership.
    • man pwck — A command to verify the /etc/passwd and /etc/shadow files.
    • man pwconv — A tool to convert standard passwords to shadow passwords.
    • man pwunconv — A tool to convert shadow passwords to standard passwords.
    • man useradd — A command to add users.
    • man userdel — A command to remove users.
    • man usermod — A command to modify users.
    設定ファイル
    • man 5 group — The file containing group information for the system.
    • man 5 passwd — The file containing user information for the system.
    • man 5 shadow — The file containing passwords and account expiration information for the system.

第36章 プリンタの設定

ユーザーは Printer Configuration Tool を使用してプリンタを設定することができます。このツールはプリンタ設定ファイル、印刷スプールディレクトリ、印刷フィルタ、プリンタクラスの管理に役立ちます。
Red Hat Enterprise Linux 5.8 uses the Common Unix Printing System (CUPS). If a system was upgraded from a previous Red Hat Enterprise Linux version that used CUPS, the upgrade process preserves the configured queues.
Using Printer Configuration Tool requires root privileges. To start the application, select System (on the panel) > Administration > Printing, or type the command system-config-printer at a shell prompt.
Printer Configuration Tool
メインウィンドウ
図36.1 Printer Configuration Tool

以下のようなタイプの印刷キューを設定できます。
  • AppSocket/HP JetDirect — コンピュータにではなく、 HP JetDirect または Appsocket インターフェース経由でネットワークに直接接続されているプリンタ。
  • インターネット印刷プロトコル (IPP) — インターネット印刷プロトコル (IPP) を経由して TCP/IP ネットワーク上でアクセスできるプリンタ (例えば、ネットワーク上で CUPS を実行している別の Red Hat Enterprise Linux システムに接続されているプリンタ)。
  • LPD/LPR ホストまたはプリンタ — TCP/IP ネットワーク上でアクセスできる別の UNIX システムに接続されたプリンタ (例えば、ネットワーク上で LPD を実行している別の Red Hat Enterprise Linux に接続されているプリンタ)。
  • ネットワーク上の Windows (SMB) — SMB ネットワークでプリンタを共有する別のシステムに接続されているプリンタ (例えば、 Microsoft Windows™ マシンに接続されているプリンタ)。
  • ネットワーク上の JetDirect — コンピュータにではなく、 HP JetDirect 経由でネットワークに直接接続されているプリンタ。

重要

新規の印刷キューを追加したり、既存のキューを変更する場合、その変更を有効にするにはそれを「適用」する必要があります。
Apply ボタンをクリックすると、設定した変更で再起動させるためにプリンタデーモンが表示されます。
戻る ボタンをクリックすると適用されていない変更を破棄します。

36.1. ローカルプリンタの追加

To add a local printer, such as one attached through a parallel port or USB port on your computer, click the New Printer button in the main Printer Configuration Tool window to display the window in 図36.2「Adding a Printer.
Adding a Printer
プリンタの追加
図36.2 Adding a Printer

進む をクリックして続けます。
プリンタ名 フィールドにプリンタ用の固有の名前を入力します。プリンタ名は文字、数字、ハイフン(-)、下線 (_) を含むことができます。 空白を含むことはできません。
説明場所 フィールドを使ってさらにシステムに設定されている別のプリンタとこのプリンタを区別させることもできます。いずれのフィールドもオプションになり、また空白を含ませることができます。
Click Forward to open the New Printer dialogue (refer to 図36.3「ローカルプリンタの追加」). If the printer has been automatically detected, the printer model appears in Select Connection. Select the printer model and click Forward to continue.
デバイスが自動的に表示されない場合、 接続の選択 でプリンタが接続されるデバイスを選択します (LPT #1Serial Port #1 など)。
ローカルプリンタの追加
ローカルプリンタの追加
図36.3 ローカルプリンタの追加

Next, select the printer type. Refer to 「プリンタモデルの選択と終了」 for details.

36.2. IPP プリンタの追加

IPP プリンタは同じ TCP/IP ネットワーク上にある別のシステムに接続されたプリンタです。このプリンタが接続されるシステムは CUPS を実行しているか単純に IPP を使用するよう設定されているかのどちらかです。
プリンタサーバーでファイアウォールを有効にしている場合、ファイアウォールは受信の UDP ポート 631 で送受信の接続を許可するよう設定する必要があります。クライアント (印刷要求を送るシステム)でファイアウォールを有効にしている場合、ファイアウォールはポート 631 を通じた接続で受信及び生成を許可される必要があります。
You can add a networked IPP printer by clicking the New Printer button in the main Printer Configuration Tool window to display the window in 図36.2「Adding a Printer. Enter the Printer Name (printer names cannot contain spaces and may contain letters, numbers, dashes (-), and underscores (_)), Description, and Location to distinguish this printer from others that you may configure on your system. Click Forward to proceed.
In the window shown in 図36.4「IPP プリンタの追加」, enter the hostname of the IPP printer in the Hostname field as well as a unique name for the printer in the Printername field.
IPP プリンタの追加
ネットワーク上の IPP プリンタ
図36.4 IPP プリンタの追加

進む をクリックして続行します。
Next, select the printer type. Refer to 「プリンタモデルの選択と終了」 for details.

36.3. Samba (SMB) プリンタの追加

You can add a Samba (SMB) based printer share by clicking the New Printer button in the main Printer Configuration Tool window to display the window in 図36.2「Adding a Printer. Enter a unique name for the printer in the Printer Name field. The printer name can contain letters, numbers, dashes (-), and underscores (_); it must not contain any spaces.
説明場所 フィールドを使ってさらにシステムに設定されている別のプリンタとこのプリンタを区別させることもできます。いずれのフィールドもオプションになり、また空白を含ませることができます。
SMB プリンタの追加
SMB プリンタ
図36.5 SMB プリンタの追加

As shown in 図36.5「SMB プリンタの追加」, available SMB shares are automatically detected and listed in the Share column. Click the arrow ( ) beside a Workgroup to expand it. From the expanded list, select a printer.
If the printer you are looking for does not appear in the list, enter the SMB address in the smb:// field. Use the format computer name/printer share. In 図36.5「SMB プリンタの追加」, the computer name is dellbox, while the printer share is r2.
ユーザー名 フィールドには、プリンタにアクセスするユーザー名を入力します。このユーザーは SMB システム上に存在していなければならず、またこのプリンタへのアクセス権を有していなければなりません。デフォルトのユーザー名は、 Windows サーバーなら guest、 Samba サーバーなら nobody が一般的なユーザー名になります。
ユーザー名 フィールドに指定したユーザーの パスワード を (必要であれば) 入力します。
これで 確認 をクリックすると接続確認のテストを行うことができます。確認に成功すると、ダイアログボックスが表示されプリンタ共有へのアクセスが確認されます。
Next, select the printer type. Refer to 「プリンタモデルの選択と終了」 for details.

警告

Samba プリンタのユーザー名とパスワードは root 及び lpd によって読み取り可能な暗号化されていないファイルとしてプリンタサーバーに格納されます。したがって、プリンタサーバーに root アクセスを有するユーザーであれば他のユーザーが Samba プリンタへのアクセスに使用するユーザー名とパスワードを閲覧することができます。
このように、 Samba プリンタへのアクセスに使用するユーザー名とパスワードを選択する際は、ローカルの Red Hat Enterprise Linux システムへのアクセスに使用するものとは異なるパスワードを選択することをお勧めします。
また、 Samba プリンタサーバー上に共有されるファイルがある場合も同様にプリントキューで使用されるものとは異なるパスワードを使用することを推奨します。

36.4. Adding a JetDirect Printer

To add a JetDirect or AppSocket connected printer share, click the New Printer button in the main Printer Configuration Tool window to display the window in 図36.2「Adding a Printer. Enter a unique name for the printer in the Printer Name field. The printer name can contain letters, numbers, dashes (-), and underscores (_); it must not contain any spaces.
説明場所 フィールドを使ってさらにシステムに設定されている別のプリンタとこのプリンタを区別させることもできます。いずれのフィールドもオプションになり、また空白を含ませることができます。
Adding a JetDirect Printer
Adding a JetDirect Printer
図36.6 Adding a JetDirect Printer

進む をクリックして続行します。
次のオプションを持つテキストフィールドが表示されます:
  • ホスト名 — JetDirect プリンタのホスト名または IP アドレスになります。
  • ポート番号 — 印刷ジョブを監視する JetDirect プリンタのポートです。デフォルトでは 9100 になっています。
Next, select the printer type. Refer to 「プリンタモデルの選択と終了」 for details.

36.5. プリンタモデルの選択と終了

適切なプリンタキューのタイプを選択したら、次のいずれかのオプションを選択できます。
  • データーベースからプリンタを選択する - このオプションを選択する場合、 製造元 の一覧からプリンタの製造元を選択します。ご使用のプリンタの製造元が一覧にない場合は 汎用 を選択してください。
  • PPD ファイルを入力する - PostScript Printer Description (PPD) ファイルはプリンタによって 用意されることもあります。このファイルは通常、メーカーによって提供されています。 PPD ファイルがある場合には、このオプションを選択してオプション詳細の下にあるブラウザバーを使い PPD ファイルを選択することができます。
Selecting a Printer Model
Selecting a Printer Model
図36.7 Selecting a Printer Model

After choosing an option, click Forward to continue. 図36.7「Selecting a Printer Model」 appears. You now have to choose the corresponding model and driver for the printer.
推奨のプリンタドライバーは、選択したプリンタモデルを元にして自動的に選択されます。プリンタドライバーは、印刷したいデータをプリンタが理解できる形式に処理します。ローカルプリンタは直接コンピュータに接続されているため、プリンタに送られるデータを処理するためのプリンタドライバーが必要になります。
デバイス用の PPD ファイルがある場合 (通常はメーカーによって提供される)、 PPD ファイルを提供する を選択してそのファイルを選ぶことができます。次に、 ブラウズする をクリックするとファイルシステム内で PPD ファイルの検索を行うことができます。

36.5.1. プリンタ設定の確認

最後のステップはプリンタ設定の確認です。設定内容が正しければ 適用 ボタンをクリックして印刷キューを追加します。 戻る ボタンをクリックするとプリンタ設定を修正できます。
After applying the changes, print a test page to ensure the configuration is correct. Refer to 「テストページの印刷」 for details.

36.6. テストページの印刷

After you have configured your printer, you should print a test page to make sure the printer is functioning properly. To print a test page, select the printer that you want to try out from the printer list, then click Print Test Page from the printer's Settings tab.
プリンタドライバーを変更したり又は、ドライバーオプションを修正したりする場合、テストページを印刷して異なった設定をテストする必要があります。

36.7. 既存プリンタの変更

既存のプリンタを削除するには、そのプリンタを選択してツールバーの 削除 ボタンをクリックします。プリンタ設定の削除を確認するとプリンタ一覧からこのプリンタは削除されます。
デフォルトのプリンタを設定するには、プリンタ一覧からプリンタを選択し 設定 タブの デフォルトのプリンタにする ボタンをクリックします。

36.7.1. 設定 タブ

プリンタドライバの設定を変更するには、 プリンタ 一覧内の該当名をクリックして 設定 をクリックします。
製造元とモデル、デフォルトのプリンタにする、テストページの印刷、デバイスの場所の変更 (URI) などさまざまなプリンタの設定を修正することができます。
Settings Tab
Settings Tab
図36.8 Settings Tab

36.7.2. ポリシー タブ

印刷出力の設定を変更するには、 ポリシー タブをクリックします。
例えば、 バナーページ (送信元プリンタ、ジョブ発信元のユーザー名、印刷中ドキュメントのセキュリティ状態などの印刷ジョブの特徴を説明するページ) を作成するには、ドロップメニューの 開始バナー または 終了バナー をクリックして印刷ジョブの性質を最も適切に説明しているオプションを選択します (topsecretclassifiedconfidential など)。
Policies Tab
Policies Tab
図36.9 Policies Tab

また、ドロップダウンメニューからオプションを選択するとプリンタの エラーポリシー を設定することもできます。印刷ジョブの中断、再試行、停止を選択できます。

36.7.3. アクセス制御 タブ

アクセス制御 タブをクリックすると設定プリンタへのユーザーレベルのアクセスを変更することができます。
テキストボックスを使ってユーザーを追加し、横にある 追加 ボタンをクリックします。次に、そのサブセットのユーザーに対してのみプリンタの使用を許可または拒否の選択をすることができます。
Access Control Tab
Access Control Tab
図36.10 Access Control Tab

36.7.4. プリンタ 及び ジョブオプション タブ

プリンタオプション タブにはプリンタメディア及び出力に関する各種の設定オプションがあります。
プリンタオプションのタブ
プリンタジョブのタブ
図36.11 プリンタオプションのタブ

  • ページサイズ — 用紙サイズの選択ができます。 US Letter、 US Legal、 A3、 A4 などの選択オプションがあります。
  • メディアソース — デフォルトでは 自動 に設定されています。別のトレイの用紙を使用するにはこのオプションを変更します。
  • メディアタイプ — 用紙タイプの変更ができます。プレーン、厚紙、ボンド紙、 OHP などの選択オプションがあります。
  • 解像度 — 印刷の画質やきめ細かさを設定します 300 ドット/インチ(dpi) がデフォルトです。
  • トナー節約 — トナー節約のためプリンタによる消費量を少くするかを選択します。
また、 ジョブオプション タブを使ってプリンタのジョブオプションを設定することもできます。ドロップメニューを使って 横長 モード (水平または垂直の印刷)、 両面拡大縮小 (印刷可能領域のサイズを拡大または縮小する、印刷領域を超えてしまうものを印刷媒体となる用紙などに合うよう縮小させる) など使用したいジョブオプションを選択します。

36.8. 印刷ジョブの管理

When you send a print job to the printer daemon, such as printing a text file from Emacs or printing an image from The GIMP, the print job is added to the print spool queue. The print spool queue is a list of print jobs that have been sent to the printer and information about each print request, such as the status of the request, the job number, and more.
During the printing process, the Printer Status icon appears in the Notification Area on the panel. To check the status of a print job, double click the Printer Status, which displays a window similar to 図36.12「GNOME Print Status」.
GNOME Print Status
GNOME Print Status
図36.12 GNOME Print Status

To cancel a specific print job listed in the GNOME Print Status, select it from the list and select Edit > Cancel Documents from the pulldown menu.
シェルプロンプトでプリントスプールの印刷ジョブ一覧を表示するには、コマンド lpq を入力します。一覧の最後の方は次のような表示なります。
例36.1 lpq 出力の例
Rank   Owner/ID              Class  Job Files       Size Time 
active user@localhost+902    A      902 sample.txt  2050 01:20:46

If you want to cancel a print job, find the job number of the request with the command lpq and then use the command lprm job number. For example, lprm 902 would cancel the print job in 例36.1「lpq 出力の例」. You must have proper permissions to cancel a print job. You can not cancel print jobs that were started by other users unless you are logged in as root on the machine to which the printer is attached.
シェルプロンプトから直接、ファイルを印刷することもできます。例えば、コマンド lpr sample.txt はテキストファイル sample.txt を印刷します。印刷フィルタがファイルの種類を判別し、プリンタに対応する形式に変換します。

36.9. その他のリソース

Red Hat Enterprise Linux 環境での印刷に関する詳細は、以下のリソースを参照してください。

36.9.1. インストールされているドキュメント

  • map lpr — The manual page for the lpr command that allows you to print files from the command line.
  • man lprm — 印刷キューから印刷ジョブを削除するコマンドラインユーティリティのマニュアルページです。
  • man mpage — 1 枚の紙面に複数ページを印刷するコマンドラインユーティリティのマニュアルページです。
  • man cupsd — CUPS プリンタデーモンのマニュアルページです。
  • man cupsd.conf — CUPS プリンタデーモン設定ファイルのマニュアルページです。
  • man classes.conf — CUPS 用クラス設定ファイルのマニュアルページです。

36.9.2. 役に立つ Web ページ

  • http://www.linuxprinting.orgGNU/Linux Printingには、 Linux での印刷に関する大量の情報が含まれています。
  • http://www.cups.org/ — CUPS に付いてのドキュメント、良く有る質問、ニュースグループなどです。

第37章 Automated Tasks

In Linux, tasks can be configured to run automatically within a specified period of time, on a specified date, or when the system load average is below a specified number. Red Hat Enterprise Linux is pre-configured to run important system tasks to keep the system updated. For example, the slocate database used by the locate command is updated daily. A system administrator can use automated tasks to perform periodic backups, monitor the system, run custom scripts, and more.
Red Hat Enterprise Linux comes with several automated tasks utilities: cron, at, and batch.

37.1. Cron

Cron は、繰り返し行われるタスクを実行するためのデーモンで、時刻、日付、月、曜日、週の組み合わせに従ってタスクを実行します。
Cron assumes that the system is on continuously. If the system is not on when a task is scheduled, it is not executed. To schedule one-time tasks, refer to 「at コマンドと batch コマンド」.
To use the cron service, the vixie-cron RPM package must be installed and the crond service must be running. To determine if the package is installed, use the rpm -q vixie-cron command. To determine if the service is running, use the command /sbin/service crond status.

37.1.1. cron タスクの設定

The main configuration file for cron, /etc/crontab, contains the following lines:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
The first four lines are variables used to configure the environment in which the cron tasks are run. The SHELL variable tells the system which shell environment to use (in this example the bash shell), while the PATH variable defines the path used to execute commands. The output of the cron tasks are emailed to the username defined with the MAILTO variable. If the MAILTO variable is defined as an empty string (MAILTO=""), email is not sent. The HOME variable can be used to set the home directory to use when executing commands or scripts.
Each line in the /etc/crontab file represents a task and has the following format:
minute   hour   day   month   dayofweek   command
  • minute — any integer from 0 to 59
  • hour — any integer from 0 to 23
  • day — any integer from 1 to 31 (must be a valid day if a month is specified)
  • month — any integer from 1 to 12 (or the short name of the month such as jan or feb)
  • dayofweek — any integer from 0 to 7, where 0 or 7 represents Sunday (or the short name of the week such as sun or mon)
  • command — the command to execute (the command can either be a command such as ls /proc >> /tmp/proc or the command to execute a custom script)
上記のいずれの値にも、アスタリスク (*) を使用すると、すべての有効な値が指定されます。たとえば、月の値にアスタリスクを使用すると、コマンドはその他の値による制約の範囲内で毎月実行されます。
A hyphen (-) between integers specifies a range of integers. For example, 1-4 means the integers 1, 2, 3, and 4.
A list of values separated by commas (,) specifies a list. For example, 3, 4, 6, 8 indicates those four specific integers.
The forward slash (/) can be used to specify step values. The value of an integer can be skipped within a range by following the range with /<integer>. For example, 0-59/2 can be used to define every other minute in the minute field. Step values can also be used with an asterisk. For instance, the value */3 can be used in the month field to run the task every third month.
先頭がシャープ記号 (#) の行はコメント行で処理の対象外です。
As shown in the /etc/crontab file, the run-parts script executes the scripts in the /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/, and /etc/cron.monthly/ directories on an hourly, daily, weekly, or monthly basis respectively. The files in these directories should be shell scripts.
If a cron task is required to be executed on a schedule other than hourly, daily, weekly, or monthly, it can be added to the /etc/cron.d/ directory. All files in this directory use the same syntax as /etc/crontab. Refer to 例37.1「crontab の例」 for examples.
例37.1 crontab の例
# record the memory usage of the system every monday
# at 3:30AM in the file /tmp/meminfo
30 3 * * mon cat /proc/meminfo >> /tmp/meminfo
# run custom script the first day of every month at 4:10AM
10 4 1 * * /root/scripts/backup.sh

Users other than root can configure cron tasks by using the crontab utility. All user-defined crontabs are stored in the /var/spool/cron/ directory and are executed using the usernames of the users that created them. To create a crontab as a user, login as that user and type the command crontab -e to edit the user's crontab using the editor specified by the VISUAL or EDITOR environment variable. The file uses the same format as /etc/crontab. When the changes to the crontab are saved, the crontab is stored according to username and written to the file /var/spool/cron/username.
The cron daemon checks the /etc/crontab file, the /etc/cron.d/ directory, and the /var/spool/cron/ directory every minute for any changes. If any changes are found, they are loaded into memory. Thus, the daemon does not need to be restarted if a crontab file is changed.

37.1.2. Cron へのアクセスの制御

The /etc/cron.allow and /etc/cron.deny files are used to restrict access to cron. The format of both access control files is one username on each line. Whitespace is not permitted in either file. The cron daemon (crond) does not have to be restarted if the access control files are modified. The access control files are read each time a user tries to add or delete a cron task.
アクセスコントロールファイルにリストされているユーザー名に関係なく、 root ユーザーはいつでも cron を使用できます。
If the file cron.allow exists, only users listed in it are allowed to use cron, and the cron.deny file is ignored.
If cron.allow does not exist, users listed in cron.deny are not allowed to use cron.

37.1.3. サービスの起動と停止

To start the cron service, use the command /sbin/service crond start. To stop the service, use the command /sbin/service crond stop. It is recommended that you start the service at boot time. Refer to 17章サービスへのアクセスの制御 for details on starting the cron service automatically at boot time.

37.2. at コマンドと batch コマンド

While cron is used to schedule recurring tasks, the at command is used to schedule a one-time task at a specific time and the batch command is used to schedule a one-time task to be executed when the systems load average drops below 0.8.
To use at or batch, the at RPM package must be installed, and the atd service must be running. To determine if the package is installed, use the rpm -q at command. To determine if the service is running, use the command /sbin/service atd status.

37.2.1. At ジョブの設定

To schedule a one-time job at a specific time, type the command at time, where time is the time to execute the command.
引数 time は次のいずれかを指定できます。
  • HH:MM 形式 — 例えば、04:00 は 4:00 a.m を表します。その時刻がすでに過ぎてしまっている場合、次の日の同時刻に実行されます。
  • midnight — 12:00 a.m を表します。
  • noon — 正午 (12:00 p.m) を表します。
  • teatime — 4:00 p.m を表します。
  • month-name day year 形式 — たとえば、「January 15 2002」は 2002 年 1 月 15 日を表します。年は省略できます。
  • MMDDYY 、MM/DD/YY 、または MM.DD.YY 形式 — たとえば、「011502」は 2002 年 1 月 15 日を表します。
  • now + time — time は minutes (分)、 hours (時)、 days (日)、 weeks (週) などの単位で指定します。たとえば、「now + 5 days」はこのコマンドが今から5日後の同時刻に実行されることを表します。
The time must be specified first, followed by the optional date. For more information about the time format, read the /usr/share/doc/at-<version>/timespec text file.
After typing the at command with the time argument, the at> prompt is displayed. Type the command to execute, press Enter, and type Ctrl+D . Multiple commands can be specified by typing each command followed by the Enter key. After typing all the commands, press Enter to go to a blank line and type Ctrl+D . Alternatively, a shell script can be entered at the prompt, pressing Enter after each line in the script, and typing Ctrl+D on a blank line to exit. If a script is entered, the shell used is the shell set in the user's SHELL environment, the user's login shell, or /bin/sh (whichever is found first).
標準出力に情報を表示するコマンドやスクリプトを入力した場合、この出力はユーザーに電子メールで送信されます。
Use the command atq to view pending jobs. Refer to 「保留ジョブの表示」 for more information.
Usage of the at command can be restricted. For more information, refer to 「at と batch へのアクセスの制御」 for details.

37.2.2. batch ジョブの設定

To execute a one-time task when the load average is below 0.8, use the batch command.
After typing the batch command, the at> prompt is displayed. Type the command to execute, press Enter, and type Ctrl+D . Multiple commands can be specified by typing each command followed by the Enter key. After typing all the commands, press Enter to go to a blank line and type Ctrl+D . Alternatively, a shell script can be entered at the prompt, pressing Enter after each line in the script, and typing Ctrl+D on a blank line to exit. If a script is entered, the shell used is the shell set in the user's SHELL environment, the user's login shell, or /bin/sh (whichever is found first). As soon as the load average is below 0.8, the set of commands or script is executed.
標準出力に情報を表示するコマンドやスクリプトを入力した場合、この出力はユーザーに電子メールで送信されます。
Use the command atq to view pending jobs. Refer to 「保留ジョブの表示」 for more information.
Usage of the batch command can be restricted. For more information, refer to 「at と batch へのアクセスの制御」 for details.

37.2.3. 保留ジョブの表示

To view pending at and batch jobs, use the atq command. The atq command displays a list of pending jobs, with each job on a line. Each line follows the job number, date, hour, job class, and username format. Users can only view their own jobs. If the root user executes the atq command, all jobs for all users are displayed.

37.2.4. その他のコマンドラインオプション

Additional command line options for at and batch include:
表37.1 at and batch Command Line Options
オプション 説明
-f コマンドやシェルスクリプトはプロンプトで指定するのではなく、ファイルから読み込む
-m ジョブが完了したら、ユーザーに電子メールを送信する
-v ジョブが実行される時刻を表示する

37.2.5. at と batch へのアクセスの制御

The /etc/at.allow and /etc/at.deny files can be used to restrict access to the at and batch commands. The format of both access control files is one username on each line. Whitespace is not permitted in either file. The at daemon (atd) does not have to be restarted if the access control files are modified. The access control files are read each time a user tries to execute the at or batch commands.
The root user can always execute at and batch commands, regardless of the access control files.
If the file at.allow exists, only users listed in it are allowed to use at or batch, and the at.deny file is ignored.
If at.allow does not exist, users listed in at.deny are not allowed to use at or batch.

37.2.6. サービスの起動と停止

To start the at service, use the command /sbin/service atd start. To stop the service, use the command /sbin/service atd stop. It is recommended that you start the service at boot time. Refer to 17章サービスへのアクセスの制御 for details on starting the cron service automatically at boot time.

37.3. その他のリソース

自動化タスクに関する詳細は、次のリソースを参照してください。

37.3.1. インストールされているドキュメント

  • cron man page — overview of cron.
  • crontab man pages in sections 1 and 5 — The man page in section 1 contains an overview of the crontab file. The man page in section 5 contains the format for the file and some example entries.
  • /usr/share/doc/at-<version>/timespec contains more detailed information about the times that can be specified for cron jobs.
  • at man page — description of at and batch and their command line options.

第38章 ログファイル

ログファイル は、システム上で動作しているカーネル、サービス、アプリケーションなどのシステムに関するメッセージが入っているファイルです。情報ごとに異なるログファイルがあります。例えば、デフォルトシステムログファイル、セキュリティメッセージだけのログファイル、 cron タスク用のログファイルなどがあります。
ログファイルは、カーネルドライバをロードするなどで問題を解決しようとしているとき、システムに無許可のログインがあったかをさがすとき、などに大変役に立ちます。この章は、ログファイルの場所、ログファイルの見方、ログファイルで見るべき項目などについて説明します。
Some log files are controlled by a daemon called syslogd. A list of log messages maintained by syslogd can be found in the /etc/syslog.conf configuration file.

38.1. ログファイルを探す

Most log files are located in the /var/log/ directory. Some applications such as httpd and samba have a directory within /var/log/ for their log files.
You may notice multiple files in the log file directory with numbers after them. These are created when the log files are rotated. Log files are rotated so their file sizes do not become too large. The logrotate package contains a cron task that automatically rotates log files according to the /etc/logrotate.conf configuration file and the configuration files in the /etc/logrotate.d/ directory. By default, it is configured to rotate every week and keep four weeks worth of previous log files.

38.2. ログファイルの表示

Most log files are in plain text format. You can view them with any text editor such as Vi or Emacs. Some log files are readable by all users on the system; however, root privileges are required to read most log files.
To view system log files in an interactive, real-time application, use the System Log Viewer. To start the application, go to Applications (the main menu on the panel) > System > System Logs, or type the command gnome-system-log at a shell prompt.
The application only displays log files that exist; thus, the list might differ from the one shown in 図38.1「System Log Viewer.
System Log Viewer
System Log Viewer
図38.1 System Log Viewer

To filter the contents of the selected log file, click on View from the menu and select Filter as illustrated below.
System Log Viewer - View Menu
System Log Viewer - View Menu
図38.2 System Log Viewer - View Menu

Selecting the Filter menu item will display the Filter text field where you can type the keywords you wish to use for your filter. To clear your filter click on the Clear button.The figure below illustrates a sample filter.
System Log Viewer - Filter
System Log Viewer - Filter
図38.3 System Log Viewer - Filter

38.3. Adding a Log File

To add a log file you wish to view in the list, select File > Open. This will display the Open Log window where you can select the directory and filename of the log file you wish to view.The figure below illustrates the Open Log window.
Adding a Log File
Adding a Log File
図38.4 Adding a Log File

Click on the Open button to open the file. The file is immediately added to the viewing list where you can select it and view the contents.
Please also note that the System Log Viewer also allows you to open zipped logs whose filenames end in ".gz".

38.4. ログファイルを監視する

System Log Viewer monitors all opened logs by default. If a new line is added to a monitored log file, the log name appears in bold in the log list. If the log file is selected or displayed, the new lines appear in bold at the bottom of the log file and after five seconds are displayed in normal format. This is illustrated in the figures below. The figure below illustrates a new alert in the messages log file. The log file is listed in bold text.
Log File Alert
Log File Alert
図38.5 Log File Alert

Clicking on the messages log file displays the logs in the file with the new lines in bold as illustrated below.
Log file contents
Log file contents
図38.6 Log file contents

新しい行は 5 秒間太字で表示された後、通常の表示形式に戻ります。
Log file contents after five seconds
Log file contents after five seconds
図38.7 Log file contents after five seconds

パート V. システム監視

第39章 SystemTap

39.1. はじめに

SystemTap は、コマンドラインインターフェイスとスクリプト言語を提供して、Linux カーネルの 情報収集を簡単にするため、更なる解析が可能になります。データの抽出、フィルター、及び 要約が素早く安全に実行できる為、複雑なパフォーマンスや機能問題への診断が実現できます。
SystemTap を使用すると、スクリプトを SystemTap のスクリプト言語で書き込むことが出来て、 それが、C-コードのカーネルモジュールにコンパイルされてカーネルに挿入されるようになります。
systemtap スクリプトの根本的アイデアはイベントのネーム化と、それにハンドラーを与える ことです。指定されたイベントが発生する度に、Linux カーネルは素早いサブルーティンのように ハンドラーを実行して、その後、復元します。関数の進入や退出、タイマー期限切れ、又は システムマップセッション全体の開始と終了など数種類のイベントがあります。ハンドラーとは イベントが発生する度になされるべき仕事を指定するスクリプト言語のステートメントの連続です。 この仕事には通常、データをイベントのコンテキストからの抽出、それらを内部変数に保存、又は 結果の表示などが含まれます。

39.2. Implementation

SystemTap takes a compiler-oriented approach to generating instrumentation. Refer to 図39.1「Flow of Data in SystemTap」 "Flow of data in SystemTap" for an overall diagram of SystemTap used in this discussion. In the upper right hand corner of the diagram is the probe.stp, the probe script the developer has written. This is parsed by the translator into parse trees. During this time the input is checked for syntax errors. The translator then performs elaboration, pulling in additional code from the script library and determining locations of probe points and variables from the debug information. After the elaboration is complete the translator can generate the probe.c, the kernel module in C.
The probe.c file is compiled into a regular kernel module, probe.ko, using the GCC compiler. The compilation may pull in support code from the runtime libraries. After GCC has generated the probe.ko, the SystemTap daemon is started to collect the output of the instrumentation module. The instrumentation module is loaded into the kernel, and data collection is started. Data from the instrumentation module is transferred to user-space via relayfs and displayed by the daemon. When the user hits Control-C the daemon unloads the module, which also shuts down the data collection process.
Flow of Data in SystemTap
Flow of data in SystemTap.
図39.1 Flow of Data in SystemTap

39.3. Using SystemTap

Systemtap works by translating a SystemTap script to C, running the system C compiler to create a kernel module from that. When the module is loaded, it activates all the probed events by hooking into the kernel. Then, as events occur on any processor, the compiled handlers run. Eventually, the session stops, the hooks are disconnected, and the module removed. This entire process is driven from a single command-line program, stap.

39.3.1. Tracing

The simplest kind of probe is simply to trace an event. This is the effect of inserting strategically located print statements into a program. This is often the first step of problem solving: explore by seeing a history of what has happened.
This style of instrumentation is the simplest. It just asks systemtap to print something at each event. To express this in the script language, you need to say where to probe and what to print there.

39.3.1.1. Where to Probe

Systemtap supports a number of built-in events. The library of scripts that comes with systemtap, each called a "tapset", may define additional ones defined in terms of the built-in family. See the stapprobes man page for details. All these events are named using a unified syntax that looks like dot-separated parameterized identifiers:
表39.1 SystemTap Events
Event Description
begin The startup of the systemtap session.
end The end of the systemtap session.
kernel.function("sys_open") The entry to the function named sys_open in the kernel.
syscall.close.return The return from the close system call..
module("ext3").statement(0xdeadbeef) The addressed instruction in the ext3 filesystem driver.
timer.ms(200) A timer that fires every 200 milliseconds.

We will use as a demonstration case that you would like to trace all function entries and exits in a source file, for example net/socket.c in the kernel. The kernel.function probe point lets you express that easily, since systemtap examines the kernel's debugging information to relate object code to source code. It works like a debugger: if you can name or place it, you can probe it. Use kernel.function("*@net/socket.c") for the function entries, and kernel.function("*@net/socket.c").return for the exits. Note the use of wildcards in the function name part, and the subsequent @FILENAME part. You can also put wildcards into the file name, and even add a colon (:) and a line number, if you want to restrict the search that precisely. Since systemtap will put a separate probe in every place that matches a probe point, a few wildcards can expand to hundreds or thousands of probes, so be careful what you ask for.
Once you identify the probe points, the skeleton of the systemtap script appears. The probe keyword introduces a probe point, or a comma-separated list of them. The following { and } braces enclose the handler for all listed probe points.
You can run this script as is, though with empty handlers there will be no output. Put the two lines into a new file. Run stap -v FILE. Terminate it any time with ^C. (The -v option tells systemtap to print more verbose messages during its processing. Try the -h option to see more options.)

39.3.1.2. What to Print

Since you are interested in each function that was entered and exited, a line should be printed for each, containing the function name. In order to make that list easy to read, systemtap should indent the lines so that functions called by other traced functions are nested deeper. To tell each single process apart from any others that may be running concurrently, systemtap should also print the process ID in the line.

第40章 システム情報の収集

システム設定の方法を考える前に、まず基本的なシステム情報を収集する方法を考えなければいけません。たとえば、未使用のメモリがどれだけ残っているか、ハードディスクドライブの使用可能なスペースの大きさはどの程度か、ハードディスクドライブのパーティションがどうなっているか、どんなプロセスが作動しているかといったことを知っておく必要があります。この章では、いくつかの簡単なコマンドやプログラムを使って Red Hat Enterprise Linux システムからこのような情報を収集する方法を説明します。

40.1. システムプロセス

The ps ax command displays a list of current system processes, including processes owned by other users. To display the owner alongside each process, use the ps aux command. This list is a static list; in other words, it is a snapshot of what was running when you invoked the command. If you want a constantly updated list of running processes, use top as described below.
The ps output can be long. To prevent it from scrolling off the screen, you can pipe it through less:
ps aux | less
You can use the ps command in combination with the grep command to see if a process is running. For example, to determine if Emacs is running, use the following command:
ps ax | grep emacs
The top command displays currently running processes and important information about them including their memory and CPU usage. The list is both real-time and interactive. An example of output from the top command is provided as follows:
top - 15:02:46 up 35 min,  4 users,  load average: 0.17, 0.65, 1.00
Tasks: 110 total,   1 running, 107 sleeping,   0 stopped,   2 zombie
Cpu(s): 41.1% us,  2.0% sy,  0.0% ni, 56.6% id,  0.0% wa,  0.3% hi,  0.0% si
Mem:    775024k total,   772028k used,     2996k free,    68468k buffers
Swap:  1048568k total,      176k used,  1048392k free,   441172k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 4624 root      15   0 40192  18m 7228 S 28.4  2.4   1:23.21 X
 4926 mhideo    15   0 55564  33m 9784 S 13.5  4.4   0:25.96 gnome-terminal
 6475 mhideo    16   0  3612  968  760 R  0.7  0.1   0:00.11 top
 4920 mhideo    15   0 20872  10m 7808 S  0.3  1.4   0:01.61 wnck-applet
    1 root      16   0  1732  548  472 S  0.0  0.1   0:00.23 init
    2 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
    3 root       5 -10     0    0    0 S  0.0  0.0   0:00.03 events/0
    4 root       6 -10     0    0    0 S  0.0  0.0   0:00.02 khelper
    5 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 kacpid
   29 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 kblockd/0
   47 root      16   0     0    0    0 S  0.0  0.0   0:01.74 pdflush
   50 root      11 -10     0    0    0 S  0.0  0.0   0:00.00 aio/0
   30 root      15   0     0    0    0 S  0.0  0.0   0:00.05 khubd
   49 root      16   0     0    0    0 S  0.0  0.0   0:01.44 kswapd0
To exit top, press the q key.
表40.1「Interactive top commands」 contains useful interactive commands that you can use with top. For more information, refer to the top(1) manual page.
表40.1 Interactive top commands
コマンド 説明
Space すぐに表示を更新します
h ヘルプ画面を表示します
k プロセスを kill します。プロセスIDとそれに送るシグナルの入力が求められます。
n 表示されるプロセスの数を変更します。数値を入力するよう求められます。
u ユーザーの順に並べます。
M メモリ使用量の順に並べます。
P CPU使用率の順に並べます。

If you prefer a graphical interface for top, you can use the GNOME System Monitor. To start it from the desktop, select System > Administration > System Monitor or type gnome-system-monitor at a shell prompt (such as an XTerm). Select the Process Listing tab.
The GNOME System Monitor allows you to search for a process in the list of running processes. Using the Gnome System Monitor, you can also view all processes, your processes, or active processes.
The Edit menu item allows you to:
  • プロセスの中止
  • プロセスの継続またはスタート
  • プロセスの終了
  • プロセスの中止
  • 選択されたプロセスの優先順位を変更する
  • システムモニタの設定を編集します。これらはリストを更新する秒間隔の変更、システムモニタウィンドに表示するプロセスフィールドの選択を含みます。
The View menu item allows you to:
  • アクティブプロセスのみを表示する
  • 全てのプロセスを表示する
  • プロセスを表示する
  • プロセスの従属性を表示する
  • プロセスを隠す
  • 隠しプロセスを表示
  • メモリマップの表示
  • 選択されたプロセスによって開かれたファイルの表示
To stop a process, select it and click End Process. Alternatively you can also stop a process by selecting it, clicking Edit on your menu and selecting Stop Process.
特定の欄で情報別に分類するには、その欄の名前をクリックします。これは選択された欄ごとに情報を昇順に分類します。昇順と降順の分類を切り替えるには、欄の名前を再びクリックします。
GNOME System Monitor
GNOME システムモニタのプロセス一覧
図40.1 GNOME System Monitor

40.2. メモリ使用量

The free command displays the total amount of physical memory and swap space for the system as well as the amount of memory that is used, free, shared, in kernel buffers, and cached.
             total       used       free     shared    buffers     cached
 Mem:        645712     549720      95992          0     176248     224452
 -/+ buffers/cache:     149020     496692
 Swap:      1310712          0    1310712
The command free -m shows the same information in megabytes, which are easier to read.
             total       used       free     shared    buffers     cached
Mem:           630        536         93          0        172        219
-/+ buffers/cache:        145        485
Swap:         1279          0       1279
If you prefer a graphical interface for free, you can use the GNOME System Monitor. To start it from the desktop, go to System > Administration > System Monitor or type gnome-system-monitor at a shell prompt (such as an XTerm). Click on the Resources tab.
GNOME System Monitor - Resources tab
gnome-system-monitor のリソースタブ
図40.2 GNOME System Monitor - Resources tab

40.3. ファイルシステム

The df command reports the system's disk space usage. If you type the command df at a shell prompt, the output looks similar to the following:
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                       11675568   6272120   4810348  57% / /dev/sda1
	                 100691      9281     86211  10% /boot
none                     322856         0    322856   0% /dev/shm
By default, this utility shows the partition size in 1 kilobyte blocks and the amount of used and available disk space in kilobytes. To view the information in megabytes and gigabytes, use the command df -h. The -h argument stands for human-readable format. The output looks similar to the following:
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                        12G  6.0G  4.6G  57% / /dev/sda1
			99M  9.1M   85M  10% /boot
none 			316M     0  316M   0% /dev/shm
In the list of mounted partitions, there is an entry for /dev/shm. This entry represents the system's virtual memory file system.
The du command displays the estimated amount of space being used by files in a directory. If you type du at a shell prompt, the disk usage for each of the subdirectories is displayed in a list. The grand total for the current directory and subdirectories are also shown as the last line in the list. If you do not want to see the totals for all the subdirectories, use the command du -hs to see only the grand total for the directory in human-readable format. Use the du --help command to see more options.
To view the system's partitions and disk space usage in a graphical format, use the Gnome System Monitor by clicking on System > Administration > System Monitor or type gnome-system-monitor at a shell prompt (such as an XTerm). Select the File Systems tab to view the system's partitions. The figure below illustrates the File Systems tab.
GNOME System Monitor - File Systems
gnome-system-monitor のファイルシステムタブ
図40.3 GNOME System Monitor - File Systems

40.4. ハードウェア

If you are having trouble configuring your hardware or just want to know what hardware is in your system, you can use the Hardware Browser application to display the hardware that can be probed. To start the program from the desktop, select System (the main menu on the panel) > Administration > Hardware or type hwbrowser at a shell prompt. As shown in 図40.4「Hardware Browser, it displays your CD-ROM devices, diskette drives, hard drives and their partitions, network devices, pointing devices, system devices, and video cards. Click on the category name in the left menu, and the information is displayed.
Hardware Browser
hwbrowser
図40.4 Hardware Browser

The Device Manager application can also be used to display your system hardware. This application can be started by selecting System (the main menu on the panel) > Administration > Hardware like the Hardware Browser. To start the application from a terminal, type hal-device-manager. Depending on your installation preferences, the graphical menu above may start this application or the Hardware Browser when clicked. The figure below illustrates the Device Manager window.
Device Manager
Device Manager
図40.5 Device Manager

You can also use the lspci command to list all PCI devices. Use the command lspci -v for more verbose information or lspci -vv for very verbose output.
For example, lspci can be used to determine the manufacturer, model, and memory size of a system's video card:
00:00.0 Host bridge: ServerWorks CNB20LE Host Bridge (rev 06)
00:00.1 Host bridge: ServerWorks CNB20LE Host Bridge (rev 06)
00:01.0 VGA compatible controller: S3 Inc. Savage 4 (rev 04)
00:02.0 Ethernet controller: Intel Corp. 82557/8/9 [Ethernet Pro 100] (rev 08)
00:0f.0 ISA bridge: ServerWorks OSB4 South Bridge (rev 50)
00:0f.1 IDE interface: ServerWorks OSB4 IDE Controller
00:0f.2 USB Controller: ServerWorks OSB4/CSB5 OHCI USB Controller (rev 04)
01:03.0 SCSI storage controller: Adaptec AIC-7892P U160/m (rev 02)
01:05.0 RAID bus controller: IBM ServeRAID Controller
The lspci is also useful to determine the network card in your system if you do not know the manufacturer or model number.

40.5. その他のリソース

システム情報の収集については、次の資料も参考にして ください。

40.5.1. インストールされているドキュメント

  • ps --help — Displays a list of options that can be used with ps.
  • top manual page — Type man top to learn more about top and its many options.
  • free manual page — type man free to learn more about free and its many options.
  • df manual page — Type man df to learn more about the df command and its many options.
  • du manual page — Type man du to learn more about the du command and its many options.
  • lspci manual page — Type man lspci to learn more about the lspci command and its many options.
  • /proc/ directory — The contents of the /proc/ directory can also be used to gather more detailed system information.

第41章 OProfile

OProfile is a low overhead, system-wide performance monitoring tool. It uses the performance monitoring hardware on the processor to retrieve information about the kernel and executables on the system, such as when memory is referenced, the number of L2 cache requests, and the number of hardware interrupts received. On a Red Hat Enterprise Linux system, the oprofile RPM package must be installed to use this tool.
プロセッサの多くには専用のパフォーマンス監視ハードウェアが内蔵されています。このハードによって、特定のイベント(例えば要求データがキャッシュにない場合など)の発生を検出することができます。このハードウェアは通常、イベント発生毎に増分される1つ以上のカウンタによって構成されます。カウンタ値が変わる時に割り込みを行なえるため、パフォーマンス監視によって生成される詳細情報量(とオーバーヘッド)を制御することができます。
OProfile はこのハードウェア(パフォーマンス監視ハードウェアがない場合は タイマベースの代用品)を使用して、 カウンタが割り込みをカウントするたびパフォーマンス関連データのサンプルを収集します。 サンプルは周期的にディスクに書き込みされます。 サンプルのデータは後にシステム レベル、アプリケーションレベルのパフォーマンスレポート生成に 使用されます。
OProfileは便利なツールですが、 使用の限界を認識して使用してください。
  • 共有ライブラリの使用--separate=libraryオプションを使用しないと、 共有ライブラリ のコードに対するサンプルは特定アプリケーションに帰属されません。
  • パフォーマンス監視のサンプルは不正確 — パフォーマンス監視レジスタがサンプルをトリガする場合、zero divide (ゼロで割る)例外と同様に割り込みが不正確になります。 プロセッサがアウトオブオーダーの実行を命令するため、サンプルは手近な 命令に記録される場合があります。
  • opreport does not associate samples for inline functions' properlyopreport uses a simple address range mechanism to determine which function an address is in. Inline function samples are not attributed to the inline function but rather to the function the inline function was inserted into.
  • OProfile accumulates data from multiple runs — OProfile is a system-wide profiler and expects processes to start up and shut down multiple times. Thus, samples from multiple runs accumulate. Use the command opcontrol --reset to clear out the samples from previous runs.
  • CPU制限パフォーマンス以外の問題 — OProfile はCPU制限プロセスによって問題を検出します。 休止状態のプロセスはロックなどのイベント待ち状態であるため、 Oprofileでは検出されません。(オペレーションを完了するI/O装置など)

41.1. ツール概要

表41.1「OProfileのコマンド」 provides a brief overview of the tools provided with the oprofile package.
表41.1 OProfileのコマンド
コマンド 説明
ophelp
Displays available events for the system's processor along with a brief description of each.
opimport
foreignバイナリ形式のサンプルデータベースファイルをシステムの native形式に変換します。 異なるアーキテクチャからサンプルデーターベース を分析する場合のみ、このオプション使用して下さい。
opannotate Creates annotated source for an executable if the application was compiled with debugging symbols. Refer to 「Using opannotate for details.
opcontrol
Configures what data is collected. Refer to 「OProfileの設定」 for details.
opreport
Retrieves profile data. Refer to 「Using opreport for details.
oprofiled
周期的にディスクへサンプルデーターを書き込むため、デーモンとして 実行されます。

41.2. OProfileの設定

Before OProfile can be run, it must be configured. At a minimum, selecting to monitor the kernel (or selecting not to monitor the kernel) is required. The following sections describe how to use the opcontrol utility to configure OProfile. As the opcontrol commands are executed, the setup options are saved to the /root/.oprofile/daemonrc file.

41.2.1. カーネルの指定

最初に、OProfileでのカーネル監視の有無を設定します。 この設定オプションのみがOProfileを起動する前に必要となります。外のオプションは 任意となります。
カーネルを監視するには、次のコマンドをrootとして実行して下さい。
opcontrol --setup --vmlinux=/usr/lib/debug/lib/modules/`uname -r`/vmlinux

注記

The debuginfo package must be installed (which contains the uncompressed kernel) in order to monitor the kernel.
OProfileにてカーネルを監視しないよう設定するには、 次のコマンドとrootとして実行して下さい。
opcontrol --setup --no-vmlinux
This command also loads the oprofile kernel module, if it is not already loaded, and creates the /dev/oprofile/ directory, if it does not already exist. Refer to 「Understanding /dev/oprofile/ for details about this directory.

注記

Even if OProfile is configured not to profile the kernel, the SMP kernel still must be running so that the oprofile module can be loaded from it.
Setting whether samples should be collected within the kernel only changes what data is collected, not how or where the collected data is stored. To generate different sample files for the kernel and application libraries, refer to 「カーネルプロファイルとユーザープロファイルを分離する」.

41.2.2. 監視イベントの設定

Most processors contain counters, which are used by OProfile to monitor specific events. As shown in 表41.2「OProfile プロセッサとカウンタ」, the number of counters available depends on the processor.
表41.2 OProfile プロセッサとカウンタ
プロセッサ cpu_type カウンタ数
Pentium Pro i386/ppro 2
Pentium II i386/pii 2
Pentium III i386/piii 2
Pentium 4 (Hyper-threading 非対応) i386/p4 8
Pentium 4 (hyper-threading 対応) i386/p4-ht 4
Athlon i386/athlon 4
AMD64 x86-64/hammer 4
Itanium ia64/itanium 4
Itanium 2 ia64/itanium2 4
TIMER_INT timer 1
IBM eServer iSeriesおよびpSeries timer 1
ppc64/power4 8
ppc64/power5 6
ppc64/970 8
IBM eServer S/390およびS/390x timer 1
IBM eServer zSeries timer 1

Use 表41.2「OProfile プロセッサとカウンタ」 to verify that the correct processor type was detected and to determine the number of events that can be monitored simultaneously. timer is used as the processor type if the processor does not have supported performance monitoring hardware.
If timer is used, events cannot be set for any processor because the hardware does not have support for hardware performance counters. Instead, the timer interrupt is used for profiling.
If timer is not used as the processor type, the events monitored can be changed, and counter 0 for the processor is set to a time-based event by default. If more than one counter exists on the processor, the counters other than counter 0 are not set to an event by default. The default events monitored are shown in 表41.3「デフォルトイベント」.
表41.3 デフォルトイベント
プロセッサ カウンタのデフォルトイベント 説明
Pentium Pro、Pentium II、Pentium III、Athlon、AMD64 CPU_CLK_UNHALTED The processor's clock is not halted
Pentium 4 (HT対応、HT非対応) GLOBAL_POWER_EVENTS プロセッサが停止しなかった時間
Itanium 2 CPU_CYCLES CPU サイクル
TIMER_INT (無し) 各タイマ割り込みのサンプル
ppc64/power4 CYCLES プロセッササイクル
ppc64/power5 CYCLES プロセッササイクル
ppc64/970 CYCLES プロセッササイクル

一度に監視可能なイベント数はプロセッサのカウンタ数によって決まります。 しかし、一対一の比率で決まるわけではなく、プロセッサによっては イベントを特定カウンターにマップしなければならない場合があります。 カウンタ数を調べるには次のコマンドを実行して下さい。
ls -d /dev/oprofile/[0-9]*
The events available vary depending on the processor type. To determine the events available for profiling, execute the following command as root (the list is specific to the system's processor type):
ophelp
The events for each counter can be configured via the command line or with a graphical interface. For more information on the graphical interface, refer to 「グラフィカルインターフェース」. If the counter cannot be set to a specific event, an error message is displayed.
To set the event for each configurable counter via the command line, use opcontrol:
opcontrol --event=<event-name>:<sample-rate>
Replace <event-name> with the exact name of the event from ophelp, and replace <sample-rate> with the number of events between samples.

41.2.2.1. サンプリングレート

By default, a time-based event set is selected. It creates a sample every 100,000 clock cycles per processor. If the timer interrupt is used, the timer is set to whatever the jiffy rate is and is not user-settable. If the cpu_type is not timer, each event can have a sampling rate set for it. The sampling rate is the number of events between each sample snapshot.
カウンタのイベントを設定する際にサンプルレートも指定することができます。
opcontrol --event=<event-name>:<sample-rate>
Replace <sample-rate> with the number of events to wait before sampling again. The smaller the count, the more frequent the samples. For events that do not happen frequently, a lower count may be needed to capture the event instances.

注意

サンプリングレートの設定は十分慎重に行なって下さい。 頻度が高すぎるサンプリングはシステムの過負荷につながり、システムがフリーズしたかのように重たくなったり、実際にフリーズする場合が あります。

41.2.2.2. ユニットマスク

Some user performance monitoring events may also require unit masks to further define the event.
Unit masks for each event are listed with the ophelp command. The values for each unit mask are listed in hexadecimal format. To specify more than one unit mask, the hexadecimal values must be combined using a bitwise or operation.
opcontrol --event=<event-name>:<sample-rate>:<unit-mask>

41.2.3. カーネルプロファイルとユーザープロファイルを分離する

By default, kernel mode and user mode information is gathered for each event. To configure OProfile to ignore events in kernel mode for a specific counter, execute the following command:
opcontrol --event=<event-name>:<sample-rate>:<unit-mask>:0
次のコマンドを実行し、 カウンタに対するカーネルモードのプロファイルを再起動して下さい。
opcontrol --event=<event-name>:<sample-rate>:<unit-mask>:1
To configure OProfile to ignore events in user mode for a specific counter, execute the following command:
opcontrol --event=<event-name>:<sample-rate>:<unit-mask>:<kernel>:0
次のコマンドを実行し、 カウンタに対するユーザーモードのプロファイルを再起動して下さい。
opcontrol --event=<event-name>:<sample-rate>:<unit-mask>:<kernel>:1
OProfileデーモンにてサンプルファイルにプロファイルデータが書き込まれる時、 カーネルとライブラリプロファイルデータは異なるサンプルファイルに 分離されます。デーモンによるサンプルファイルの書き込みを設定するには、 次のコマンドをrootとして実行して下さい。
opcontrol --separate=<choice>
<choice> can be one of the following:
  • none — do not separate the profiles (default)
  • library — generate per-application profiles for libraries
  • kernel — generate per-application profiles for the kernel and kernel modules
  • all — generate per-application profiles for libraries and per-application profiles for the kernel and kernel modules
--separate=libraryを使用すると、 ライブラリ名と実行可能ファイル名がサンプルファイル名に含まれます。

注記

These configuration changes will take effect when oprofile is restarted.

41.3. OProfile の起動と停止

OProfile によるシステムの監視を開始するには、 次のコマンドをrootとして実行して下さい。
opcontrol --start
次のような出力が表示されます。
Using log file /var/lib/oprofile/oprofiled.log Daemon started. Profiler running.
The settings in /root/.oprofile/daemonrc are used.
The OProfile daemon, oprofiled, is started; it periodically writes the sample data to the /var/lib/oprofile/samples/ directory. The log file for the daemon is located at /var/lib/oprofile/oprofiled.log.
プロファイラを停止するには、次のコマンドをrootとして実行して下さい。
opcontrol --shutdown

41.4. データ保存

サンプルの保存を特定時間に行なうと便利な場合があります。 例えば、実行可能ファイルをプロファイルする場合、異なる入力データセットを 基に異なるサンプルを収集すると便利です。 監視イベント数がプロセッサのカウンタ数を超える場合、OProfileを複数回実行してデータ収集することにより、毎回異なるファイルのサンプルデータを保存することができます。
To save the current set of sample files, execute the following command, replacing <name> with a unique descriptive name for the current session.
opcontrol --save=<name>
The directory /var/lib/oprofile/samples/name/ is created and the current sample files are copied to it.

41.5. データ分析

Periodically, the OProfile daemon, oprofiled, collects the samples and writes them to the /var/lib/oprofile/samples/ directory. Before reading the data, make sure all data has been written to this directory by executing the following command as root:
opcontrol --dump
Each sample file name is based on the name of the executable. For example, the samples for the default event on a Pentium III processor for /bin/bash becomes:
\{root\}/bin/bash/\{dep\}/\{root\}/bin/bash/CPU_CLK_UNHALTED.100000
収集されたサンプルデータのプロファイルには次のツールを使用して下さい。
  • opreport
  • opannotate
レポートを生成しさらに分析を行なうには、 プロファイルされたバイナリと併して このようなツールを使用して下さい。

警告

The executable being profiled must be used with these tools to analyze the data. If it must change after the data is collected, backup the executable used to create the samples as well as the sample files. Please note that the sample file and the binary have to agree. Making a backup isn't going to work if they do not match. oparchive can be used to address this problem.
Samples for each executable are written to a single sample file. Samples from each dynamically linked library are also written to a single sample file. While OProfile is running, if the executable being monitored changes and a sample file for the executable exists, the existing sample file is automatically deleted. Thus, if the existing sample file is needed, it must be backed up, along with the executable used to create it before replacing the executable with a new version. The oprofile analysis tools use the executable file that created the samples during analysis. If the executable changes the analysis tools will be unable to analyze the associated samples. Refer to 「データ保存」 for details on how to backup the sample file.

41.5.1. Using opreport

The opreport tool provides an overview of all the executables being profiled.
The following is part of a sample output:
Profiling through timer interrupt
TIMER:0|
samples|      %|
------------------
25926 97.5212 no-vmlinux
359  1.3504 pi
65  0.2445 Xorg
62  0.2332 libvte.so.4.4.0
56  0.2106 libc-2.3.4.so
34  0.1279 libglib-2.0.so.0.400.7
19  0.0715 libXft.so.2.1.2
17  0.0639 bash
8  0.0301 ld-2.3.4.so
8  0.0301 libgdk-x11-2.0.so.0.400.13
6  0.0226 libgobject-2.0.so.0.400.7
5  0.0188 oprofiled
4  0.0150 libpthread-2.3.4.so
4  0.0150 libgtk-x11-2.0.so.0.400.13
3  0.0113 libXrender.so.1.2.2
3  0.0113 du
1  0.0038 libcrypto.so.0.9.7a
1  0.0038 libpam.so.0.77
1  0.0038 libtermcap.so.2.0.8
1  0.0038 libX11.so.6.2
1  0.0038 libgthread-2.0.so.0.400.7
1  0.0038 libwnck-1.so.4.9.0
各実行可能ファイルは独自のラインに表示されます。 最初の列は、実行可能ファイルに対して記録されたサンプル数を表します。 2番目の列は 、サンプル総数に対するサンプル数を百分率で表しています。 3番目の列は実行可能ファイルの名前です。
Refer to the opreport man page for a list of available command line options, such as the -r option used to sort the output from the executable with the smallest number of samples to the one with the largest number of samples.

41.5.2. Using opreport on a Single Executable

To retrieve more detailed profiled information about a specific executable, use opreport:
opreport <mode> <executable>
<executable> must be the full path to the executable to be analyzed. <mode> must be one of the following:
-l
List sample data by symbols. For example, the following is part of the output from running the command opreport -l /lib/tls/libc-<version>.so:
samples  %        symbol name
12       21.4286  __gconv_transform_utf8_internal
5         8.9286  _int_malloc
4         7.1429  malloc
3         5.3571  __i686.get_pc_thunk.bx
3         5.3571  _dl_mcount_wrapper_check
3         5.3571  mbrtowc
3         5.3571  memcpy
2         3.5714  _int_realloc
2         3.5714  _nl_intern_locale_data
2         3.5714  free
2         3.5714  strcmp
1         1.7857  __ctype_get_mb_cur_max
1         1.7857  __unregister_atfork
1         1.7857  __write_nocancel
1         1.7857  _dl_addr
1         1.7857  _int_free
1         1.7857  _itoa_word
1         1.7857  calc_eclosure_iter
1         1.7857  fopen@@GLIBC_2.1
1         1.7857  getpid
1         1.7857  memmove
1         1.7857  msort_with_tmp
1         1.7857  strcpy
1         1.7857  strlen
1         1.7857  vfprintf
1         1.7857  write
The first column is the number of samples for the symbol, the second column is the percentage of samples for this symbol relative to the overall samples for the executable, and the third column is the symbol name.
出力をサンプル数の多いものから降順にソートするには、 -r in conjunction with the -lオプションを使用してください。
-i <symbol-name>
List sample data specific to a symbol name. For example, the following output is from the command opreport -l -i __gconv_transform_utf8_internal /lib/tls/libc-<version>.so:
samples  %        symbol name
12       100.000  __gconv_transform_utf8_internal
最初のラインはシンボル/実行可能ファイルが一体した要約です。
最初の列はメモリシンボルのサンプルの数です。2番目の列はシンボルのサンプル総数に対するメモリアドレスのサンプルを百分率で表示しています。3番目の列はシンボル名です。
-d
List sample data by symbols with more detail than -l. For example, the following output is from the command opreport -l -d __gconv_transform_utf8_internal /lib/tls/libc-<version>.so:
vma      samples  %        symbol name
00a98640 12       100.000  __gconv_transform_utf8_internal
00a98640 1         8.3333
00a9868c 2        16.6667
00a9869a 1         8.3333
00a986c1 1         8.3333
00a98720 1         8.3333
00a98749 1         8.3333
00a98753 1         8.3333
00a98789 1         8.3333
00a98864 1         8.3333
00a98869 1         8.3333
00a98b08 1         8.3333
各シンボルの仮想メモリアドレスが表示されていることを除けば データは-l オプションと変わりません。 各仮想メモリアドレスのサンプル数と、シンボルのサンプル数に対するサンプル数を百分率で 表示しています。
-x<symbol-name>
シンボルのカンマ区切りリストを出力から排除します。
session:<name>
Specify the full path to the session or a directory relative to the /var/lib/oprofile/samples/ directory.

41.5.3. Getting more detailed output on the modules

OProfile collects data on a system-wide basis for kernel- and user-space code running on the machine. However, once a module is loaded into the kernel, the information about the origin of the kernel module is lost. The module could have come from the initrd file on boot up, the directory with the various kernel modules, or a locally created kernel module. As a result when OProfile records sample for a module, it just lists the samples for the modules for an executable in the root directory, but this is unlikely to be the place with the actual code for the module. You will need to take some steps to make sure that analysis tools get the executable.
For example on an AMD64 machine the sampling is set up to record "Data cache accesses" and "Data cache misses" and assuming you would like to see the data for the ext3 module:
~]$ opreport /ext3
CPU: AMD64 processors, speed 797.948 MHz (estimated)
Counted DATA_CACHE_ACCESSES events (Data cache accesses) with a unit mask of 0x00 (No unit mask) count 500000
Counted DATA_CACHE_MISSES events (Data cache misses) with a unit mask of 0x00 (No unit mask) count 500000
DATA_CACHE_ACC...|DATA_CACHE_MIS...|
samples|      %|  samples|      %|
------------------------------------
148721 100.000      1493 100.000 ext3
To get a more detailed view of the actions of the module, you will need to either have the module unstripped (e.g. installed from a custom build) or have the debuginfo RPM installed for the kernel.
Find out which kernel is running, "uname -a", get the appropriate debuginfo rpm, and install on the machine.
Then make a symbolic link so oprofile finds the code for the module in the correct place:
~]# ln -s /lib/modules/`uname -r`/kernel/fs/ext3/ext3.ko /ext3
Then the detailed information can be obtained with:
~]# opreport image:/ext3 -l|more
warning: could not check that the binary file /ext3 has not been modified since the profile was taken. Results may be inaccurate.
CPU: AMD64 processors, speed 797.948 MHz (estimated)
Counted DATA_CACHE_ACCESSES events (Data cache accesses) with a unit mask of 0x00 (No unit mask) count 500000
Counted DATA_CACHE_MISSES events (Data cache misses) with a unit mask of 0x00 (No unit mask) count 500000
samples  %        samples  %        symbol name
16728    11.2479  7         0.4689  ext3_group_sparse
16454    11.0637  4         0.2679  ext3_count_free_blocks
14583     9.8056  51        3.4159  ext3_fill_super
8281      5.5681  129       8.6403  ext3_ioctl
7810      5.2514  62        4.1527  ext3_write_info
7286      4.8991  67        4.4876  ext3_ordered_writepage
6509      4.3767  130       8.7073  ext3_new_inode
6378      4.2886  156      10.4488  ext3_new_block
5932      3.9887  87        5.8272  ext3_xattr_block_list
...

41.5.4. Using opannotate

The opannotate tool tries to match the samples for particular instructions to the corresponding lines in the source code. The resulting files generated should have the samples for the lines at the left. It also puts in a comment at the beginning of each function listing the total samples for the function.
For this utility to work, the executable must be compiled with GCC's -g option. By default, Red Hat Enterprise Linux packages are not compiled with this option.
The general syntax for opannotate is as follows:
opannotate --search-dirs <src-dir> --source <executable>
The directory containing the source code and the executable to be analyzed must be specified. Refer to the opannotate man page for a list of additional command line options.

41.6. Understanding /dev/oprofile/

The /dev/oprofile/ directory contains the file system for OProfile. Use the cat command to display the values of the virtual files in this file system. For example, the following command displays the type of processor OProfile detected:
cat /dev/oprofile/cpu_type
A directory exists in /dev/oprofile/ for each counter. For example, if there are 2 counters, the directories /dev/oprofile/0/ and dev/oprofile/1/ exist.
カウンタのディレクトリには次のファイルが格納されています。
  • count — The interval between samples.
  • enabled — If 0, the counter is off and no samples are collected for it; if 1, the counter is on and samples are being collected for it.
  • event — The event to monitor.
  • kernel — If 0, samples are not collected for this counter event when the processor is in kernel-space; if 1, samples are collected even if the processor is in kernel-space.
  • unit_mask — Defines which unit masks are enabled for the counter.
  • user — If 0, samples are not collected for the counter event when the processor is in user-space; if 1, samples are collected even if the processor is in user-space.
The values of these files can be retrieved with the cat command. For example:
cat /dev/oprofile/0/count

41.7. 使用例

OProfileは開発者がアプリケーションパフォーマンスの分析を 行なえるだけでなく、システム管理者がシステム分析を行なうこともできます。例は次の通りです。
  • Determine which applications and services are used the most on a systemopreport can be used to determine how much processor time an application or service uses. If the system is used for multiple services but is under performing, the services consuming the most processor time can be moved to dedicated systems.
  • Determine processor usage — The CPU_CLK_UNHALTED event can be monitored to determine the processor load over a given period of time. This data can then be used to determine if additional processors or a faster processor might improve system performance.

41.8. グラフィカルインターフェース

Some OProfile preferences can be set with a graphical interface. To start it, execute the oprof_start command as root at a shell prompt. To use the graphical interface, you will need to have the oprofile-gui package installed.
After changing any of the options, save them by clicking the Save and quit button. The preferences are written to /root/.oprofile/daemonrc, and the application exits. Exiting the application does not stop OProfile from sampling.
On the Setup tab, to set events for the processor counters as discussed in 「監視イベントの設定」, select the counter from the pulldown menu and select the event from the list. A brief description of the event appears in the text box below the list. Only events available for the specific counter and the specific architecture are displayed. The interface also displays whether the profiler is running and some brief statistics about it.
OProfile設定
oprof_start interface
図41.1 OProfile設定

On the right side of the tab, select the Profile kernel option to count events in kernel mode for the currently selected event, as discussed in 「カーネルプロファイルとユーザープロファイルを分離する」. If this option is unselected, no samples are collected for the kernel.
Select the Profile user binaries option to count events in user mode for the currently selected event, as discussed in 「カーネルプロファイルとユーザープロファイルを分離する」. If this option is unselected, no samples are collected for user applications.
Use the Count text field to set the sampling rate for the currently selected event as discussed in 「サンプリングレート」.
If any unit masks are available for the currently selected event, as discussed in 「ユニットマスク」, they are displayed in the Unit Masks area on the right side of the Setup tab. Select the checkbox beside the unit mask to enable it for the event.
On the Configuration tab, to profile the kernel, enter the name and location of the vmlinux file for the kernel to monitor in the Kernel image file text field. To configure OProfile not to monitor the kernel, select No kernel image.
OProfile Configuration
OProfile Configuration
図41.2 OProfile Configuration

If the Verbose option is selected, the oprofiled daemon log includes more information.
If Per-application kernel samples files is selected, OProfile generates per-application profiles for the kernel and kernel modules as discussed in 「カーネルプロファイルとユーザープロファイルを分離する」. This is equivalent to the opcontrol --separate=kernel command. If Per-application shared libs samples files is selected, OProfile generates per-application profiles for libraries. This is equivalent to the opcontrol --separate=library command.
To force data to be written to samples files as discussed in 「データ分析」, click the Flush profiler data button. This is equivalent to the opcontrol --dump command.
To start OProfile from the graphical interface, click Start profiler. To stop the profiler, click Stop profiler. Exiting the application does not stop OProfile from sampling.

41.9. その他のリソース

この章ではOProfileの機能、設定方法、使用方法について簡単に触れます。 詳細については次のリソースを参照してください。

41.9.1. インストールされたドキュメント

  • /usr/share/doc/oprofile-<version>/oprofile.htmlOProfile Manual
  • oprofile man page — Discusses opcontrol, opreport, opannotate, and ophelp

41.9.2. 役に立つWebサイト

  • http://oprofile.sourceforge.net/ — 最新ドキュメント、メーリングリスト、IRCチャンネルなど、たくさんの情報が得られます。

パート VI. カーネルとドライバー設定

システム管理者は、カーネルに関して知識を取得してそれをカスタマイズできます。 Red Hat Enterprise Linux には、カーネルツールが含まれていますので、それが管理者のカスタム化をお手伝いします。

第42章 カーネルをアップグレードする

The Red Hat Enterprise Linux kernel is custom built by the Red Hat Enterprise Linux kernel team to ensure its integrity and compatibility with supported hardware. Before Red Hat releases a kernel, it must first pass a rigorous set of quality assurance tests.
Red Hat Enterprise Linux kernels are packaged in RPM format so that they are easy to upgrade and verify using the Package Management Tool, or the yum command. The Package Management Tool automatically queries the Red Hat Enterprise Linux servers and determines which packages need to be updated on your machine, including the kernel. This chapter is only useful for those individuals that require manual updating of kernel packages, without using the yum command.

警告

Building a custom kernel is not supported by the Red Hat Global Services Support team, and therefore is not explored in this manual.

Tip

The use of yum is highly recommended by Red Hat for installing upgraded kernels.
For more information on Red Hat Network, the Package Management Tool, and yum, refer to 14章Product Subscriptions and Entitlements.

42.1. カーネルパッケージの概要

Red Hat Enterprise Linux contains the following kernel packages (some may not apply to your architecture):
  • kernel — Contains the kernel for multi-processor systems. For x86 system, only the first 4GB of RAM is used. As such, x86 systems with over 4GB of RAM should use the kernel-PAE.
  • kernel-devel — Contains the kernel headers and makefiles sufficient to build modules against the kernel package.
  • kernel-PAE (only for i686 systems) — This package offers the following key configuration option (in addition to the options already enabled for the kernel package):
    • PAE (Physical Address Extension) support for systems with more than 4GB of RAM, and reliably up to 16GB.

      重要

      Physical Address Extension allows x86 processors to address up to 64GB of physical RAM, but due to differences between the Red Hat Enterprise Linux 4 and 5 kernels, only Red Hat Enterprise Linux 4 (with the kernel-hugemem package) is able to reliably address all 64GB of memory. Additionally, the Red Hat Enterprise Linux 5 PAE variant does not allow 4GB of addressable memory per-process like the Red Hat Enterprise Linux 4 kernel-hugemem variant does. However, the x86_64 kernel does not suffer from any of these limitations, and is the suggested Red Hat Enterprise Linux 5 architecture to use with large-memory systems.
  • kernel-PAE-devel — Contains the kernel headers and makefiles required to build modules against the kernel-PAE package.
  • kernel-doc — Contains documentation files from the kernel source. Various portions of the Linux kernel and the device drivers shipped with it are documented in these files. Installation of this package provides a reference to the options that can be passed to Linux kernel modules at load time.
    By default, these files are placed in the /usr/share/doc/kernel-doc-<version>/ directory.
  • kernel-headers — Includes the C header files that specify the interface between the Linux kernel and userspace libraries and programs. The header files define structures and constants that are needed for building most standard programs.
  • kernel-xen — Includes a version of the Linux kernel which is needed to run Virtualization.
  • kernel-xen-devel — Contains the kernel headers and makefiles required to build modules against the kernel-xen package

注意

The kernel-source package has been removed and replaced with an RPM that can only be retrieved from Red Hat Network. This *.src.rpm package must then be rebuilt locally using the rpmbuild command. For more information on obtaining and installing the kernel source package, refer to the latest updated Release Notes (including all updates) at http://www.redhat.com/docs/manuals/enterprise/

42.2. アップグレードの準備

Before upgrading the kernel, it is recommended that you take some precautionary steps. The first step is to make sure working boot media exists for the system in case a problem occurs. If the boot loader is not configured properly to boot the new kernel, the system cannot be booted into Red Hat Enterprise Linux without working boot media.
To create a boot diskette, login as root, and run the command /sbin/mkbootdisk `uname -r` at a shell prompt.

Tip

Refer to the mkbootdisk man page for more options. You can create bootable media via CD-Rs, CD-RWs, and USB flash drives, provided that your system BIOS also supports it.
次へ進む前に、ブートメディアでマシンをリブートして、作動することを確認します。
To determine which kernel packages are installed, execute the command rpm -qa | grep kernel at a shell prompt:
The output contains some or all of the following packages, depending on the system's architecture (the version numbers and packages may differ):
kernel-2.6.9-5.EL
kernel-devel-2.6.9-5.EL
kernel-utils-2.6.9-5.EL
kernel-doc-2.6.9-5.EL
kernel-smp-2.6.9-5.EL
kernel-smp-devel-2.6.9-5.EL
kernel-hugemem-devel-2.6.9-5.EL
From the output, determine which packages need to be download for the kernel upgrade. For a single processor system, the only required package is the kernel package. Refer to 「カーネルパッケージの概要」 for descriptions of the different packages.
In the file name, each kernel package contains the architecture for which the package was built. The format is kernel-<variant>-<version>.<arch>.rpm, where <variant> is one of either PAE, xen, and so forth. The <arch> is one of the following:
  • x86_64 for the AMD64 and Intel EM64T architectures
  • ia64 for the Intel® Itanium™ architecture
  • ppc64 for the IBM® eServerpSeries™ architecture
  • s390 for the IBM® S/390® architecture
  • s390x for the IBM® eServerSystem z® architecture
  • i686 for Intel® Pentium® II, Intel® Pentium® III, Intel® Pentium® 4, AMD Athlon®, and AMD Duron® systems

42.3. アップグレードされたカーネルをダウンロードする

システムに対して更新されたカーネルがあるかどうかを確認するには、いくつかの方法があります。
  • Security Errata — Refer to http://www.redhat.com/security/updates/ for information on security errata, including kernel upgrades that fix security issues.
  • Via Red Hat Network — Download and install the kernel RPM packages. Red Hat Network can download the latest kernel, upgrade the kernel on the system, create an initial RAM disk image if needed, and configure the boot loader to boot the new kernel. For more information, refer to http://www.redhat.com/docs/manuals/RHNetwork/.
If Red Hat Network was used to download and install the updated kernel, follow the instructions in 「初期RAMディスクイメージの確認」 and 「ブートローダの確認」, only do not change the kernel to boot by default. Red Hat Network automatically changes the default kernel to the latest version. To install the kernel manually, continue to 「アップグレードの実行」.

42.4. アップグレードの実行

After retrieving all of the necessary packages, it is time to upgrade the existing kernel.

重要

It is strongly recommended that you keep the old kernel in case there are problems with the new kernel.
At a shell prompt, change to the directory that contains the kernel RPM packages. Use -i argument with the rpm command to keep the old kernel. Do not use the -U option, since it overwrites the currently installed kernel, which creates boot loader problems. For example:
rpm -ivh kernel-<kernel version>.<arch>.rpm
The next step is to verify that the initial RAM disk image has been created. Refer to 「初期RAMディスクイメージの確認」 for details.

42.5. 初期RAMディスクイメージの確認

If the system uses the ext3 file system, a SCSI controller, or labels to reference partitions in /etc/fstab, an initial RAM disk is needed. The initial RAM disk allows a modular kernel to have access to modules that it might need to boot from before the kernel has access to the device where the modules normally reside.
On architectures other than IBM eServer iSeries, the initial RAM disk can be created with the mkinitrd command. However, this step is performed automatically if the kernel and its associated packages are installed or upgraded from the RPM packages distributed by Red Hat; in such cases, you do not need to create the initial RAM disk manually. To verify that an initial RAM disk already exists, use the command ls -l /boot to make sure the initrd-<version>.img file was created (the version should match the version of the kernel just installed).
On iSeries systems, the initial RAM disk file and vmlinux file are combined into one file, which is created with the addRamDisk command. This step is performed automatically if the kernel and its associated packages are installed or upgraded from the RPM packages distributed by Red Hat, Inc.; thus, it does not need to be executed manually. To verify that it was created, use the command ls -l /boot to make sure the /boot/vmlinitrd-<kernel-version> file already exists (the <kernel-version> should match the version of the kernel just installed).
The next step is to verify that the boot loader has been configured to boot the new kernel. Refer to 「ブートローダの確認」 for details.

42.6. ブートローダの確認

The kernel RPM package configures the boot loader to boot the newly installed kernel (except for IBM eServer iSeries systems). However, it does not configure the boot loader to boot the new kernel by default.
It is always a good idea to confirm that the boot loader has been configured correctly. This is a crucial step. If the boot loader is configured incorrectly, the system will not boot into Red Hat Enterprise Linux properly. If this happens, boot the system with the boot media created earlier and try configuring the boot loader again.

42.6.1. x86 のシステム

All x86 systems (including all AMD64 systems) use GRUB as the boot loader.

42.6.1.1. GRUB

Confirm that the file /boot/grub/grub.conf contains a title section with the same version as the kernel package just installed
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/hda2
#          initrd /initrd-version.img
#boot=/dev/hda
default=1 timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Enterprise Linux (2.6.9-5.EL)
         root (hd0,0)
	 kernel /vmlinuz-2.6.9-5.EL ro root=LABEL=/
	 initrd /initrd-2.6.9-5.EL.img
title Red Hat Enterprise Linux (2.6.9-1.906_EL)
         root (hd0,0)
	 kernel /vmlinuz-2.6.9-1.906_EL ro root=LABEL=/
	 initrd /initrd-2.6.9-1.906_EL.img
If a separate /boot/ partition was created, the paths to the kernel and initrd image are relative to /boot/.
Notice that the default is not set to the new kernel. To configure GRUB to boot the new kernel by default, change the value of the default variable to the title section number for the title section that contains the new kernel. The count starts with 0. For example, if the new kernel is the first title section, set default to 0.
新規カーネルのテストを開始するには、コンピュータを再起動して、 ハードウェアが正しく検出されることを確認するためにメッセージ をよく見ます。

42.6.2. Itanium のシステム

Itanium systems use ELILO as the boot loader, which uses /boot/efi/EFI/redhat/elilo.conf as the configuration file. Confirm that this file contains an image section with the same version as the kernel package just installed:
prompt timeout=50 default=old  image=vmlinuz-2.6.9-5.EL
         label=linux
	 initrd=initrd-2.6.9-5.EL.img         read-only
	 append="root=LABEL=/" image=vmlinuz-2.6.9-1.906_EL
	 label=old
	 initrd=initrd-2.6.9-1.906.img         read-only
	 append="root=LABEL=/"
Notice that the default is not set to the new kernel. To configure ELILO to boot the new kernel, change the value of the default variable to the value of the label for the image section that contains the new kernel.
新規カーネルのテストを開始するには、コンピュータを再起動して、 ハードウェアが正しく検出されることを確認するためにメッセージ をよく見ます。

42.6.3. IBM S/390 and IBM System z Systems

The IBM S/390 and IBM System z systems use z/IPL as the boot loader, which uses /etc/zipl.conf as the configuration file. Confirm that the file contains a section with the same version as the kernel package just installed:
[defaultboot] default=old target=/boot/
[linux]
         image=/boot/vmlinuz-2.6.9-5.EL
	 ramdisk=/boot/initrd-2.6.9-5.EL.img
	 parameters="root=LABEL=/"
[old]
         image=/boot/vmlinuz-2.6.9-1.906_EL
	 ramdisk=/boot/initrd-2.6.9-1.906_EL.img
	 parameters="root=LABEL=/"
Notice that the default is not set to the new kernel. To configure z/IPL to boot the new kernel by default, change the value of the default variable to the name of the section that contains the new kernel. The first line of each section contains the name in brackets.
After modifying the configuration file, run /sbin/zipl as root to enable the changes.
新規カーネルのテストを開始するには、コンピュータを再起動して、 ハードウェアが正しく検出されることを確認するためにメッセージ をよく見ます。

42.6.4. IBM eServer iSeries のシステム

The /boot/vmlinitrd-<kernel-version> file is installed when you upgrade the kernel. However, you must use the dd command to configure the system to boot the new kernel:
  1. As root, issue the command cat /proc/iSeries/mf/side to determine the default side (either A, B, or C).
  2. As root, issue the following command, where <kernel-version> is the version of the new kernel and <side> is the side from the previous command:
    dd if=/boot/vmlinitrd-<kernel-version> of=/proc/iSeries/mf/<side>/vmlinux bs=8k
新規カーネルのテストを開始するには、コンピュータを再起動して、 ハードウェアが正しく検出されることを確認するためにメッセージ をよく見ます。

42.6.5. IBM eServer pSeries のシステム

IBM eServer pSeries systems use YABOOT as the boot loader, which uses /etc/aboot.conf as the configuration file. Confirm that the file contains an image section with the same version as the kernel package just installed:
boot=/dev/sda1 init-message=Welcome to Red Hat Enterprise Linux! Hit <TAB> for boot options
partition=2 timeout=30 install=/usr/lib/yaboot/yaboot delay=10 nonvram
image=/vmlinux--2.6.9-5.EL
         label=old
	 read-only
	 initrd=/initrd--2.6.9-5.EL.img
	 append="root=LABEL=/"
image=/vmlinux-2.6.9-5.EL
	 label=linux
	 read-only
	 initrd=/initrd-2.6.9-5.EL.img
	 append="root=LABEL=/"
Notice that the default is not set to the new kernel. The kernel in the first image is booted by default. To change the default kernel to boot either move its image stanza so that it is the first one listed or add the directive default and set it to the label of the image stanza that contains the new kernel.
新規カーネルのテストを開始するには、コンピュータを再起動して、 ハードウェアが正しく検出されることを確認するためにメッセージ をよく見ます。

第43章 一般的なパラメータとモジュール

This chapter is provided to illustrate some of the possible parameters available for common hardware device drivers [9], which under Red Hat Enterprise Linux are called kernel modules. In most cases, the default parameters do work. However, there may be times when extra module parameters are necessary for a device to function properly or to override the module's default parameters for the device.
During installation, Red Hat Enterprise Linux uses a limited subset of device drivers to create a stable installation environment. Although the installation program supports installation on many different types of hardware, some drivers (including those for SCSI adapters and network adapters) are not included in the installation kernel. Rather, they must be loaded as modules by the user at boot time.
インストールが完了すると、カーネルモジュールを通じてかなりの数のデバイス用のサポートが 存在します。

重要

Red Hat provides a large number of unsupported device drivers in groups of packages called kernel-smp-unsupported-<kernel-version> and kernel-hugemem-unsupported-<kernel-version> . Replace <kernel-version> with the version of the kernel installed on the system. These packages are not installed by the Red Hat Enterprise Linux installation program, and the modules provided are not supported by Red Hat, Inc.

43.1. Kernel Module Utilities

A group of commands for managing kernel modules is available if the module-init-tools package is installed. Use these commands to determine if a module has been loaded successfully or when trying different modules for a piece of new hardware.
The command /sbin/lsmod displays a list of currently loaded modules. For example:
Module                  Size  Used by
tun                    11585  1
autofs4                21573  1
hidp                   16193  2
rfcomm                 37849  0
l2cap                  23873  10 hidp,rfcomm
bluetooth              50085  5 hidp,rfcomm,l2cap
sunrpc                153725  1
dm_mirror              29073  0
dm_mod                 57433  1 dm_mirror
video                  17221  0
sbs                    16257  0
i2c_ec                  5569  1 sbs
container               4801  0
button                  7249  0
battery                10565  0
asus_acpi              16857  0
ac                      5701  0
ipv6                  246113  12
lp                     13065  0
parport_pc             27493  1
parport                37001  2 lp,parport_pc
uhci_hcd               23885  0
floppy                 57317  1
sg                     34653  0
snd_ens1371            26721  1
gameport               16073  1 snd_ens1371
snd_rawmidi            24897  1 snd_ens1371
snd_ac97_codec         91360  1 snd_ens1371
snd_ac97_bus            2753  1 snd_ac97_codec
snd_seq_dummy           4293  0
snd_seq_oss            32705  0
serio_raw               7493  0
snd_seq_midi_event      8001  1 snd_seq_oss
snd_seq                51633  5 snd_seq_dummy,snd_seq_oss,snd_seq_midi_event
snd_seq_device          8781  4 snd_rawmidi,snd_seq_dummy,snd_seq_oss,snd_seq
snd_pcm_oss            42849  0
snd_mixer_oss          16833  1 snd_pcm_oss
snd_pcm                76485  3 snd_ens1371,snd_ac97_codec,snd_pcm_oss
snd_timer              23237  2 snd_seq,snd_pcm
snd                    52933  12 snd_ens1371,snd_rawmidi,snd_ac97_codec,snd_seq_oss,snd_seq,snd_seq_device,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer
soundcore              10145  1 snd
i2c_piix4               8909  0
ide_cd                 38625  3
snd_page_alloc         10569  1 snd_pcm
i2c_core               21697  2 i2c_ec,i2c_piix4
pcnet32                34117  0
cdrom                  34913  1 ide_cd
mii                     5825  1 pcnet32
pcspkr                  3521  0
ext3                  129737  2
jbd                    58473  1 ext3
mptspi                 17353  3
scsi_transport_spi     25025  1 mptspi
mptscsih               23361  1 mptspi
sd_mod                 20929  16
scsi_mod              134121  5 sg,mptspi,scsi_transport_spi,mptscsih,sd_mod
mptbase                52193  2 mptspi,mptscsih
For each line, the first column is the name of the module, the second column is the size of the module, and the third column is the use count.
The /sbin/lsmod output is less verbose and easier to read than the output from viewing /proc/modules.
To load a kernel module, use the /sbin/modprobe command followed by the kernel module name. By default, modprobe attempts to load the module from the /lib/modules/<kernel-version>/kernel/drivers/ subdirectories. There is a subdirectory for each type of module, such as the net/ subdirectory for network interface drivers. Some kernel modules have module dependencies, meaning that other modules must be loaded first for it to load. The /sbin/modprobe command checks for these dependencies and loads the module dependencies before loading the specified module.
For example, the command
modprobe e100
loads any module dependencies and then the e100 module.
To print to the screen all commands as /sbin/modprobe executes them, use the -v option. For example:
modprobe -v e100
Output similar to the following is displayed:
insmod /lib/modules/2.6.9-5.EL/kernel/drivers/net/e100.ko
Using /lib/modules/2.6.9-5.EL/kernel/drivers/net/e100.ko
Symbol version prefix 'smp_'
The /sbin/insmod command also exists to load kernel modules; however, it does not resolve dependencies. Thus, it is recommended that the /sbin/modprobe command be used.
To unload kernel modules, use the /sbin/rmmod command followed by the module name. The rmmod utility only unloads modules that are not in use and that are not a dependency of other modules in use.
For example, the command
rmmod e100
unloads the e100 kernel module.
Another useful kernel module utility is modinfo. Use the command /sbin/modinfo to display information about a kernel module. The general syntax is:
modinfo [options] <module>
Options include -d, which displays a brief description of the module, and -p, which lists the parameters the module supports. For a complete list of options, refer to the modinfo man page (man modinfo).

43.2. Persistent Module Loading

Kernel modules are usually loaded directly by the facility that requires them, which is given correct settings in the /etc/modprobe.conf file. However, it is sometimes necessary to explicitly force the loading of a module at boot time.
Red Hat Enterprise Linux checks for the existence of the /etc/rc.modules file at boot time, which contains various commands to load modules. The rc.modules should be used, and not rc.local because rc.modules is executed earlier in the boot process.
For example, the following commands configure loading of the foo module at boot time (as root):
echo modprobe foo >> /etc/rc.modules
chmod +x /etc/rc.modules

Tip

This approach is not necessary for network and SCSI interfaces because they have their own specific mechanisms.

43.3. モジュールパラメータの指定

場合によっては、正常に機能するようにモジュールのロード時にパラメータを指定することが 必要なこともあります。
For instance, to enable full duplex at 100Mbps connection speed for an Intel Ether Express/100 card, load the e100 driver with the e100_speed_duplex=4 option.

注意

パラメータにカンマが含まれる場合は、カンマの後にスペースを入れないでください

Tip

The modinfo command is also useful for listing various information about a kernel module, such as version, dependencies, parameter options, and aliases.

43.4. Storage parameters

表43.1 Storage Module Parameters
ハードウェア モジュール パラメータ
3ware Storage Controller and 9000 series 3w-xxxx.ko, 3w-9xxx.ko
Adaptec Advanced Raid Products, Dell PERC2, 2/Si, 3/Si, 3/Di, HP NetRAID-4M, IBM ServeRAID, and ICP SCSI driver aacraid.ko
nondasd — Control scanning of hba for nondasd devices. 0=off, 1=on
dacmode — Control whether dma addressing is using 64 bit DAC. 0=off, 1=on
commit — Control whether a COMMIT_CONFIG is issued to the adapter for foreign arrays. This is typically needed in systems that do not have a BIOS. 0=off, 1=on
startup_timeout — The duration of time in seconds to wait for adapter to have it's kernel up and running. This is typically adjusted for large systems that do not have a BIOS
aif_timeout — The duration of time in seconds to wait for applications to pick up AIFs before deregistering them. This is typically adjusted for heavily burdened systems.
numacb — Request a limit to the number of adapter control blocks (FIB) allocated. Valid values are 512 and down. Default is to use suggestion from Firmware.
acbsize — Request a specific adapter control block (FIB) size. Valid values are 512, 2048, 4096 and 8192. Default is to use suggestion from Firmware.
Adaptec 28xx、R9xx、39xx AHA-284x、AHA-29xx、AHA-394x、AHA-398x、AHA-274x、 AHA-274xT、AHA-2842、AHA-2910B、AHA-2920C、AHA-2930/U/U2、AHA-2940/W/U/UW/AU/、 U2W/U2/U2B/、U2BOEM、AHA-2944D/WD/UD/UWD、AHA-2950U2/W/B、AHA-3940/U/W/UW/、 AUW/U2W/U2B、AHA-3950U2D、AHA-3985/U/W/UW、AIC-777x、AIC-785x、AIC-786x、 AIC-787x、AIC-788x、AIC-789x、AIC-3860 aic7xxx.ko
verbose — Enable verbose/diagnostic logging
allow_memio — Allow device registers to be memory mapped
debug — Bitmask of debug values to enable
no_probe — Toggle EISA/VLB controller probing
probe_eisa_vl — Toggle EISA/VLB controller probing
no_reset — Supress initial bus resets
extended — Enable extended geometry on all controllers
periodic_otag — Send an ordered tagged transaction periodically to prevent tag starvation. This may be required by some older disk drives or RAID arrays.
tag_info:<tag_str> — Set per-target tag depth
global_tag_depth:<int> — Global tag depth for every target on every bus
seltime:<int> — Selection Timeout (0/256ms,1/128ms,2/64ms,3/32ms)
IBM ServeRAID ips.ko
LSI Logic MegaRAID Mailbox Driver megaraid_mbox.ko
unconf_disks — Set to expose unconfigured disks to kernel (default=0)
busy_wait — Max wait for mailbox in microseconds if busy (default=10)
max_sectors — Maximum number of sectors per IO command (default=128)
cmd_per_lun — Maximum number of commands per logical unit (default=64)
fast_load — Faster loading of the driver, skips physical devices! (default=0)
debug_level — Debug level for driver (default=0)
Emulex LightPulse Fibre Channel SCSI driver lpfc.ko
lpfc_poll — FCP ring polling mode control: 0 - none, 1 - poll with interrupts enabled 3 - poll and disable FCP ring interrupts
lpfc_log_verbose — Verbose logging bit-mask
lpfc_lun_queue_depth — Max number of FCP commands we can queue to a specific LUN
lpfc_hba_queue_depth — Max number of FCP commands we can queue to a lpfc HBA
lpfc_scan_down — Start scanning for devices from highest ALPA to lowest
lpfc_nodev_tmo — Seconds driver will hold I/O waiting for a device to come back
lpfc_topology — Select Fibre Channel topology
lpfc_link_speed — Select link speed
lpfc_fcp_class — Select Fibre Channel class of service for FCP sequences
lpfc_use_adisc — Use ADISC on rediscovery to authenticate FCP devices
lpfc_ack0 — Enable ACK0 support
lpfc_cr_delay — A count of milliseconds after which an interrupt response is generated
lpfc_cr_count — A count of I/O completions after which an interrupt response is generated
lpfc_multi_ring_support — Determines number of primary SLI rings to spread IOCB entries across
lpfc_fdmi_on — Enable FDMI support
lpfc_discovery_threads — Maximum number of ELS commands during discovery
lpfc_max_luns — Maximum allowed LUN
lpfc_poll_tmo — Milliseconds driver will wait between polling FCP ring
HP Smart Array cciss.ko
LSI Logic MPT Fusion mptbase.ko mptctl.ko mptfc.ko mptlan.ko mptsas.ko mptscsih.ko mptspi.ko
mpt_msi_enable — MSI Support Enable
mptfc_dev_loss_tmo — Initial time the driver programs the transport to wait for an rport to return following a device loss event.
mpt_pt_clear — Clear persistency table
mpt_saf_te — Force enabling SEP Processor
QLogic Fibre Channel Driver qla2xxx.ko
ql2xlogintimeout — Login timeout value in seconds.
qlport_down_retry — Maximum number of command retries to a port that returns a PORT-DOWN status
ql2xplogiabsentdevice — Option to enable PLOGI to devices that are not present after a Fabric scan.
ql2xloginretrycount — Specify an alternate value for the NVRAM login retry count.
ql2xallocfwdump — Option to enable allocation of memory for a firmware dump during HBA initialization. Default is 1 - allocate memory.
extended_error_logging — Option to enable extended error logging.
ql2xfdmienable — Enables FDMI registrations.
NCR, Symbios and LSI 8xx and 1010 sym53c8xx
cmd_per_lun — The maximum number of tags to use by default
tag_ctrl — More detailed control over tags per LUN
burst — Maximum burst. 0 to disable, 255 to read from registers
led — Set to 1 to enable LED support
diff — 0 for no differential mode, 1 for BIOS, 2 for always, 3 for not GPIO3
irqm — 0 for open drain, 1 to leave alone, 2 for totem pole
buschk — 0 to not check, 1 for detach on error, 2 for warn on error
hostid — The SCSI ID to use for the host adapters
verb — 0 for minimal verbosity, 1 for normal, 2 for excessive
debug — Set bits to enable debugging
settle — Settle delay in seconds. Default 3
nvram — Option currently not used
excl — List ioport addresses here to prevent controllers from being attached
safe — Set other settings to a "safe mode"

43.5. イーサネットパラメータ

重要

Most modern Ethernet-based network interface cards (NICs), do not require module parameters to alter settings. Instead, they can be configured using ethtool or mii-tool. Only after these tools fail to work should module parameters be adjusted. Module parameters can be viewed using the modinfo command.

Note

For information about using these tools, consult the man pages for ethtool, mii-tool, and modinfo.
表43.2 イーサネットモジュールパラメータ
ハードウェア モジュール パラメータ
3Com EtherLink PCI III/XL Vortex (3c590, 3c592, 3c595, 3c597) Boomerang (3c900, 3c905, 3c595) 3c59x.ko
debug — 3c59x debug level (0-6)
options — 3c59x: Bits 0-3: media type, bit 4: bus mastering, bit 9: full duplex
global_options — 3c59x: same as options, but applies to all NICs if options is unset
full_duplex — 3c59x full duplex setting(s) (1)
global_full_duplex — 3c59x: same as full_duplex, but applies to all NICs if full_duplex is unset
hw_checksums — 3c59x Hardware checksum checking by adapter(s) (0-1)
flow_ctrl — 3c59x 802.3x flow control usage (PAUSE only) (0-1)
enable_wol — 3c59x: Turn on Wake-on-LAN for adapter(s) (0-1)
global_enable_wol — 3c59x: same as enable_wol, but applies to all NICs if enable_wol is unset
rx_copybreak — 3c59x copy breakpoint for copy-only-tiny-frames
max_interrupt_work — 3c59x maximum events handled per interrupt
compaq_ioaddr — 3c59x PCI I/O base address (Compaq BIOS problem workaround)
compaq_irq — 3c59x PCI IRQ number (Compaq BIOS problem workaround)
compaq_device_id — 3c59x PCI device ID (Compaq BIOS problem workaround)
watchdog — 3c59x transmit timeout in milliseconds
global_use_mmio — 3c59x: same as use_mmio, but applies to all NICs if options is unset
use_mmio — 3c59x: use memory-mapped PCI I/O resource (0-1)
RTL8139, SMC EZ Card Fast Ethernet, RealTek cards using RTL8129, or RTL8139 Fast Ethernet chipsets 8139too.ko
Broadcom 4400 10/100 PCI ethernet driver b44.ko
b44_debug — B44 bitmapped debugging message enable value
Broadcom NetXtreme II BCM5706/5708 Driver bnx2.ko
disable_msi — Disable Message Signaled Interrupt (MSI)
Intel Ether Express/100 ドライバー e100.ko
debug — Debug level (0=none,...,16=all)
eeprom_bad_csum_allow — Allow bad eeprom checksums
Intel EtherExpress/1000 Gigabit e1000.ko
TxDescriptors — Number of transmit descriptors
RxDescriptors — Number of receive descriptors
Speed — Speed setting
Duplex — Duplex setting
AutoNeg — Advertised auto-negotiation setting
FlowControl — Flow Control setting
XsumRX — Disable or enable Receive Checksum offload
TxIntDelay — Transmit Interrupt Delay
TxAbsIntDelay — Transmit Absolute Interrupt Delay
RxIntDelay — Receive Interrupt Delay
RxAbsIntDelay — Receive Absolute Interrupt Delay
InterruptThrottleRate — Interrupt Throttling Rate
SmartPowerDownEnable — Enable PHY smart power down
KumeranLockLoss — Enable Kumeran lock loss workaround
Myricom 10G driver (10GbE) myri10ge.ko
myri10ge_fw_name — Firmware image name
myri10ge_ecrc_enable — Enable Extended CRC on PCI-E
myri10ge_max_intr_slots — Interrupt queue slots
myri10ge_small_bytes — Threshold of small packets
myri10ge_msi — Enable Message Signalled Interrupts
myri10ge_intr_coal_delay — Interrupt coalescing delay
myri10ge_flow_control — Pause parameter
myri10ge_deassert_wait — Wait when deasserting legacy interrupts
myri10ge_force_firmware — Force firmware to assume aligned completions
myri10ge_skb_cross_4k — Can a small skb cross a 4KB boundary?
myri10ge_initial_mtu — Initial MTU
myri10ge_napi_weight — Set NAPI weight
myri10ge_watchdog_timeout — Set watchdog timeout
myri10ge_max_irq_loops — Set stuck legacy IRQ detection threshold
NatSemi DP83815 Fastイーサネット natsemi.ko
mtu — DP8381x MTU (all boards)
debug — DP8381x default debug level
rx_copybreak — DP8381x copy breakpoint for copy-only-tiny-frames
options — DP8381x: Bits 0-3: media type, bit 17: full duplex
full_duplex — DP8381x full duplex setting(s) (1)
AMD PCnet32 and AMD PCnetPCI pcnet32.ko
PCnet32 and PCnetPCI pcnet32.ko
debug — pcnet32 debug level
max_interrupt_work — pcnet32 maximum events handled per interrupt
rx_copybreak — pcnet32 copy breakpoint for copy-only-tiny-frames
tx_start_pt — pcnet32 transmit start point (0-3)
pcnet32vlb — pcnet32 Vesa local bus (VLB) support (0/1)
options — pcnet32 initial option setting(s) (0-15)
full_duplex — pcnet32 full duplex setting(s) (1)
homepna — pcnet32 mode for 79C978 cards (1 for HomePNA, 0 for Ethernet, default Ethernet
RealTek RTL-8169 Gigabit Ethernet driver r8169.ko
media — force phy operation. Deprecated by ethtool (8).
rx_copybreak — Copy breakpoint for copy-only-tiny-frames
use_dac — Enable PCI DAC. Unsafe on 32 bit PCI slot.
debug — Debug verbosity level (0=none, ..., 16=all)
Neterion Xframe 10GbE Server Adapter s2io.ko
SIS 900/701G PCI Fastイーサネット sis900.ko
multicast_filter_limit — SiS 900/7016 maximum number of filtered multicast addresses
max_interrupt_work — SiS 900/7016 maximum events handled per interrupt
sis900_debug — SiS 900/7016 bitmapped debugging message level
Adaptec Starfire Ethernet driver starfire.ko
max_interrupt_work — Maximum events handled per interrupt
mtu — MTU (all boards)
debug — Debug level (0-6)
rx_copybreak — Copy breakpoint for copy-only-tiny-frames
intr_latency — Maximum interrupt latency, in microseconds
small_frames — Maximum size of receive frames that bypass interrupt latency (0,64,128,256,512)
options — Deprecated: Bits 0-3: media type, bit 17: full duplex
full_duplex — Deprecated: Forced full-duplex setting (0/1)
enable_hw_cksum — Enable/disable hardware cksum support (0/1)
Broadcom Tigon3 tg3.ko
tg3_debug — Tigon3 bitmapped debugging message enable value
ThunderLAN PCI tlan.ko
aui — ThunderLAN use AUI port(s) (0-1)
duplex — ThunderLAN duplex setting(s) (0-default, 1-half, 2-full)
speed — ThunderLAN port speen setting(s) (0,10,100)
debug — ThunderLAN debug mask
bbuf — ThunderLAN use big buffer (0-1)
Digital 21x4x Tulip PCI Ethernet cards SMC EtherPower 10 PCI(8432T/8432BT) SMC EtherPower 10/100 PCI(9332DST) DEC EtherWorks 100/10 PCI(DE500-XA) DEC EtherWorks 10 PCI(DE450) DEC QSILVER's, Znyx 312 etherarray Allied Telesis LA100PCI-T Danpex EN-9400, Cogent EM110 tulip.ko io io_port
VIA VT86c100A Rhine-II PCIか、3043 Rhine-I D-Link DFE-930-TX PCI 10/100 のいずれかを搭載するVIA Rhine PCI Fast イーサネットカード via-rhine.ko
max_interrupt_work — VIA Rhine maximum events handled per interrupt
debug — VIA Rhine debug level (0-7)
rx_copybreak — VIA Rhine copy breakpoint for copy-only-tiny-frames
avoid_D3 — Avoid power state D3 (work-around for broken BIOSes)

43.5.1. 複数のイーサネットカードの使用

It is possible to use multiple Ethernet cards on a single machine. For each card there must be an alias and, possibly, options lines for each card in /etc/modprobe.conf.
For additional information about using multiple Ethernet cards, refer to the Linux Ethernet-HOWTO online at http://www.redhat.com/mirrors/LDP/HOWTO/Ethernet-HOWTO.html.

43.5.2. チャネル ボンディング モジュール

Red Hat Enterprise Linux allows administrators to bind NICs together into a single channel using the bonding kernel module and a special network interface, called a channel bonding interface. Channel bonding enables two or more network interfaces to act as one, simultaneously increasing the bandwidth and providing redundancy.
管理者は次の手順にて 複数のネットワークインターフェースをチャネル ボンディングしてください。
  1. Add the following line to /etc/modprobe.conf:
    alias bond<N> bonding
    Replace <N> with the interface number, such as 0. For each configured channel bonding interface, there must be a corresponding entry in /etc/modprobe.conf.
  2. Configure a channel bonding interface as outlined in 「チャンネルボンディングインターフェース」.
  3. To enhance performance, adjust available module options to ascertain what combination works best. Pay particular attention to the miimon or arp_interval and the arp_ip_target parameters. Refer to 「bonding Module Directives」 for a list of available options and how to quickly determine the best ones for your bonded interface.

43.5.2.1. bonding Module Directives

It is a good idea to test which channel bonding module parameters work best for your bonded interfaces before adding them to the BONDING_OPTS="<bonding parameters>" directive in your bonding interface configuration file (ifcfg-bond0 for example). Parameters to bonded interfaces can be configured without unloading (and reloading) the bonding module by manipulating files in the sysfs file system.
sysfs is a virtual file system that represents kernel objects as directories, files and symbolic links. sysfs can be used to query for information about kernel objects, and can also manipulate those objects through the use of normal file system commands. The sysfs virtual file system has a line in /etc/fstab, and is mounted under /sys. All bonded interfaces can be configured dynamically by interacting with and manipulating files under the /sys/class/net/ directory.
After you have created a channel bonding interface file such as ifcfg-bond0 and inserted SLAVE=yes and MASTER=bond0 directives in the bonded interfaces following the instructions in 「チャンネルボンディングインターフェース」, you can proceed to testing and determining the best parameters for your bonded interface.
First, bring up the bond you created by running ifconfig bond<N>  up as root:
ifconfig bond0 up
If you have correctly created the ifcfg-bond0 bonding interface file, you will be able to see bond0 listed in the output of running ifconfig (without any options):
~]# ifconfig
bond0     Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
eth0      Link encap:Ethernet  HWaddr 52:54:00:26:9E:F1
          inet addr:192.168.122.251  Bcast:192.168.122.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:ff:fe26:9ef1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:207 errors:0 dropped:0 overruns:0 frame:0
          TX packets:205 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:70374 (68.7 KiB)  TX bytes:25298 (24.7 KiB)
[output truncated]
To view all existing bonds, even if they are not up, run:
~]# cat /sys/class/net/bonding_masters
bond0
You can configure each bond individually by manipulating the files located in the /sys/class/net/bond<N>/bonding/ directory. First, the bond you are configuring must be taken down:
ifconfig bond0 down
As an example, to enable MII monitoring on bond0 with a 1 second interval, you could run (as root):
echo 1000 > /sys/class/net/bond0/bonding/miimon
To configure bond0 for balance-alb mode, you could run either:
echo 6 > /sys/class/net/bond0/bonding/mode
...or, using the name of the mode:
echo balance-alb > /sys/class/net/bond0/bonding/mode
After configuring some options for the bond in question, you can bring it up and test it by running ifconfig bond<N> up . If you decide to change the options, take the interface down, modify its parameters using sysfs, bring it back up, and re-test.
Once you have determined the best set of parameters for your bond, add those parameters as a space-separated list to the BONDING_OPTS= directive of the /etc/sysconfig/network-scripts/ifcfg-bond<N> file for the bonded interface you are configuring. Whenever that bond is brought up (for example, by the system during the boot sequence if the ONBOOT=yes directive is set), the bonding options specified in the BONDING_OPTS will take effect for that bond. For more information on configuring bonded interfaces (and BONDING_OPTS), refer to 「チャンネルボンディングインターフェース」.
The following is a list of available channel bonding module parameters for the bonding module. For more in-depth information on configuring channel bonding and the exhaustive list of bonding module parameters, install the kernel-doc package and then locating and opening the included bonding.txt file:
yum -y install kernel-doc
nano -w $(rpm -ql kernel-doc | grep bonding.txt)
Bonding Interface Parameters
arp_interval=<time_in_milliseconds>
Specifies (in milliseconds) how often ARP monitoring occurs.

重要

It is essential that both arp_interval and arp_ip_target parameters are specified, or, alternatively, the miimon parameter is specified. Failure to do so can cause degradation of network performance in the event that a link fails.
If using this setting while in mode=0 or mode=1 (the two load-balancing modes), the network switch must be configured to distribute packets evenly across the NICs. For more information on how to accomplish this, refer to /usr/share/doc/kernel-doc-<kernel_version>/Documentation/networking/bonding.txt
The value is set to 0 by default, which disables it.
arp_ip_target=<ip_address> [,<ip_address_2>,...<ip_address_16> ]
Specifies the target IP address of ARP requests when the arp_interval parameter is enabled. Up to 16 IP addresses can be specified in a comma separated list.
arp_validate=<value>
Validate source/distribution of ARP probes; default is none. Other valid values are active, backup, and all.
debug=<number>
Enables debug messages. Possible values are:
  • 0 — Debug messages are disabled. This is the default.
  • 1 — Debug messages are enabled.
downdelay=<time_in_milliseconds>
Specifies (in milliseconds) how long to wait after link failure before disabling the link. The value must be a multiple of the value specified in the miimon parameter. The value is set to 0 by default, which disables it.
lacp_rate=<value>
Specifies the rate at which link partners should transmit LACPDU packets in 802.3ad mode. Possible values are:
  • slow or 0 — Default setting. This specifies that partners should transmit LACPDUs every 30 seconds.
  • fast or 1 — Specifies that partners should transmit LACPDUs every 1 second.
miimon=<time_in_milliseconds>
Specifies (in milliseconds) how often MII link monitoring occurs. This is useful if high availability is required because MII is used to verify that the NIC is active. To verify that the driver for a particular NIC supports the MII tool, type the following command as root:
ethtool <interface_name> | grep "Link detected:"
In this command, replace <interface_name> with the name of the device interface, such as eth0, not the bond interface. If MII is supported, the command returns:
Link detected: yes
If using a bonded interface for high availability, the module for each NIC must support MII. Setting the value to 0 (the default), turns this feature off. When configuring this setting, a good starting point for this parameter is 100.

重要

It is essential that both arp_interval and arp_ip_target parameters are specified, or, alternatively, the miimon parameter is specified. Failure to do so can cause degradation of network performance in the event that a link fails.
mode=<value>
...where <value> is one of:
  • balance-rr or 0 — Sets a round-robin policy for fault tolerance and load balancing. Transmissions are received and sent out sequentially on each bonded slave interface beginning with the first one available.
  • active-backup or 1 — Sets an active-backup policy for fault tolerance. Transmissions are received and sent out via the first available bonded slave interface. Another bonded slave interface is only used if the active bonded slave interface fails.
  • balance-xor or 2 — Sets an XOR (exclusive-or) policy for fault tolerance and load balancing. Using this method, the interface matches up the incoming request's MAC address with the MAC address for one of the slave NICs. Once this link is established, transmissions are sent out sequentially beginning with the first available interface.
  • broadcast or 3 — Sets a broadcast policy for fault tolerance. All transmissions are sent on all slave interfaces.
  • 802.3ad or 4 — Sets an IEEE 802.3ad dynamic link aggregation policy. Creates aggregation groups that share the same speed and duplex settings. Transmits and receives on all slaves in the active aggregator. Requires a switch that is 802.3ad compliant.
  • balance-tlb or 5 — Sets a Transmit Load Balancing (TLB) policy for fault tolerance and load balancing. The outgoing traffic is distributed according to the current load on each slave interface. Incoming traffic is received by the current slave. If the receiving slave fails, another slave takes over the MAC address of the failed slave.
  • balance-alb or 6 — Sets an Active Load Balancing (ALB) policy for fault tolerance and load balancing. Includes transmit and receive load balancing for IPV4 traffic. Receive load balancing is achieved through ARP negotiation.
num_unsol_na=<number>
Specifies the number of unsolicited IPv6 Neighbor Advertisements to be issued after a failover event. One unsolicited NA is issued immediately after the failover.
The valid range is 0 - 255; the default value is 1. This option affects only the active-backup mode.
primary=<interface_name>
Specifies the interface name, such as eth0, of the primary device. The primary device is the first of the bonding interfaces to be used and is not abandoned unless it fails. This setting is particularly useful when one NIC in the bonding interface is faster and, therefore, able to handle a bigger load.
This setting is only valid when the bonding interface is in active-backup mode. Refer to /usr/share/doc/kernel-doc-<kernel-version>/Documentation/networking/bonding.txt for more information.
primary_reselect=<value>
Specifies the reselection policy for the primary slave. This affects how the primary slave is chosen to become the active slave when failure of the active slave or recovery of the primary slave occurs. This option is designed to prevent flip-flopping between the primary slave and other slaves. Possible values are:
  • always or 0 (default) — The primary slave becomes the active slave whenever it comes back up.
  • better or 1 — The primary slave becomes the active slave when it comes back up, if the speed and duplex of the primary slave is better than the speed and duplex of the current active slave.
  • failure or 2 — The primary slave becomes the active slave only if the current active slave fails and the primary slave is up.
The primary_reselect setting is ignored in two cases:
  • If no slaves are active, the first slave to recover is made the active slave.
  • When initially enslaved, the primary slave is always made the active slave.
Changing the primary_reselect policy via sysfs will cause an immediate selection of the best active slave according to the new policy. This may or may not result in a change of the active slave, depending upon the circumstances
updelay=<time_in_milliseconds>
Specifies (in milliseconds) how long to wait before enabling a link. The value must be a multiple of the value specified in the miimon parameter. The value is set to 0 by default, which disables it.
use_carrier=<number>
Specifies whether or not miimon should use MII/ETHTOOL ioctls or netif_carrier_ok() to determine the link state. The netif_carrier_ok() function relies on the device driver to maintains its state with netif_carrier_on/off ; most device drivers support this function.
The MII/ETHROOL ioctls tools utilize a deprecated calling sequence within the kernel. However, this is still configurable in case your device driver does not support netif_carrier_on/off .
Valid values are:
  • 1 — Default setting. Enables the use of netif_carrier_ok().
  • 0 — Enables the use of MII/ETHTOOL ioctls.

Tip

If the bonding interface insists that the link is up when it should not be, it is possible that your network device driver does not support netif_carrier_on/off .
xmit_hash_policy=<value>
Selects the transmit hash policy used for slave selection in balance-xor and 802.3ad modes. Possible values are:
  • 0 or layer2 — Default setting. This option uses the XOR of hardware MAC addresses to generate the hash. The formula used is:
    (<source_MAC_address> XOR <destination_MAC>) MODULO <slave_count>
    This algorithm will place all traffic to a particular network peer on the same slave, and is 802.3ad compliant.
  • 1 or layer3+4 — Uses upper layer protocol information (when available) to generate the hash. This allows for traffic to a particular network peer to span multiple slaves, although a single connection will not span multiple slaves.
    The formula for unfragmented TCP and UDP packets used is:
    ((<source_port> XOR <dest_port>) XOR
      ((<source_IP> XOR <dest_IP>) AND 0xffff)
        MODULO <slave_count>
    For fragmented TCP or UDP packets and all other IP protocol traffic, the source and destination port information is omitted. For non-IP traffic, the formula is the same as the layer2 transmit hash policy.
    This policy intends to mimic the behavior of certain switches; particularly, Cisco switches with PFC2 as well as some Foundry and IBM products.
    The algorithm used by this policy is not 802.3ad compliant.
  • 2 or layer2+3 — Uses a combination of layer2 and layer3 protocol information to generate the hash.
    Uses XOR of hardware MAC addresses and IP addresses to generate the hash. The formula is:
    (((<source_IP> XOR <dest_IP>) AND 0xffff) XOR
      ( <source_MAC> XOR <destination_MAC> ))
        MODULO <slave_count>
    This algorithm will place all traffic to a particular network peer on the same slave. For non-IP traffic, the formula is the same as for the layer2 transmit hash policy.
    This policy is intended to provide a more balanced distribution of traffic than layer2 alone, especially in environments where a layer3 gateway device is required to reach most destinations.
    This algorithm is 802.3ad compliant.

43.6. Additional Resources

For more information on kernel modules and their utilities, refer to the following resources.

43.6.1. Installed Documentation

  • lsmod man page — description and explanation of its output.
  • insmod man page — description and list of command line options.
  • modprobe man page — description and list of command line options.
  • rmmod man page — description and list of command line options.
  • modinfo man page — description and list of command line options.
  • /usr/share/doc/kernel-doc-<version>/Documentation/kbuild/modules.txt — how to compile and use kernel modules. Note you must have the kernel-doc package installed to read this file.

43.6.2. Useful Websites



[9] A driver is software which enables Linux to use a particular hardware device. Without a driver, the kernel cannot communicate with attached devices.

第44章 The kdump Crash Recovery Service

kdump is an advanced crash dumping mechanism. When enabled, the system is booted from the context of another kernel. This second kernel reserves a small amount of memory, and its only purpose is to capture the core dump image in case the system crashes. Since being able to analyze the core dump helps significantly to determine the exact cause of the system failure, it is strongly recommended to have this feature enabled.
This chapter explains how to configure, test, and use the kdump service in Red Hat Enterprise Linux, and provides a brief overview of how to analyze the resulting core dump using the crash debugging utility.

44.1. Configuring the kdump Service

Note

To use the kdump service, you must have the kexec-tools package installed. Refer to パートII「パッケージ管理」 for more information on how to install new packages in Red Hat Enterprise Linux.
This section covers three common means of configuring the kdump service: at the first boot, using the Kernel Dump Configuration graphical utility, and doing so manually on the command line. It also describes how to test the configuration to verify that everything works as expected.

44.1.1. Configuring the kdump at First Boot

When the system boots for the first time, a firstboot application is launched allowing you to perform a basic configuration. This includes the kdump service.
The kdump configuration screen
The kdump configuration screen
図44.1 The kdump configuration screen

Important

Unless the system has enough memory, this option will not be available. For the information on minimum memory requirements, refer to the Required minimums section of the Red Hat Enterprise Linux comparison chart. Note that when the kdump crash recovery is enabled, the minimum memory requirements increase by the amount of memory reserved for it. This value is determined by a user, and defaults to 128 MB.

44.1.1.1. Enabling the Service

To start the kdump daemon at boot time, select the Enable kdump? check box. This will enable the service for runlevels 2, 3, 4, and 5, and start it for the current session. Similarly, unselecting the check box will disable it for all runlevels and stop the service immediately.

44.1.1.2. Configuring the Memory Usage

To configure the amount of memory that is reserved for the kdump kernel, click the up and down arrow buttons next to the Kdump Memory field to increase or decrease the value. Notice that the Usable System Memory field changes accordingly showing you the remaining memory that will be available to the system.

44.1.2. Using the Kernel Dump Configuration Utility

To start the Kernel Dump Configuration utility, select ApplicationsSystem ToolsKdump from the panel, or type system-config-kdump at a shell prompt (for example, xterm or GNOME Terminal). Unless you are already authenticated, you will be prompted to enter the superuser password.
The Kernel Dump Configuration utility
Kernel Dump Configuration
図44.2 The Kernel Dump Configuration utility

The utility allows you to configure kdump as well as to enable or disable starting the service at boot time. When you are done, click OK to save the changes. The system reboot will be requested.

Important

Unless the system has enough memory, the utility will not start, and you will be presented with an error message. For the information on minimum memory requirements, refer to the Required minimums section of the Red Hat Enterprise Linux comparison chart. Note that when the kdump crash recovery is enabled, the minimum memory requirements increase by the amount of memory reserved for it. This value is determined by a user, and defaults to 128 MB.

44.1.2.1. Enabling the Service

To start the kdump daemon at boot time, select the Enable kdump check box. This will enable the service for runlevels 2, 3, 4, and 5, and start it for the current session. Similarly, unselecting the check box will disable it for all runlevels and stop the service immediately.

44.1.2.2. Configuring the Memory Usage

To configure the amount of memory that is reserved for the kdump kernel, click the up and down arrow buttons next to the New kdump Memory field to increase or decrease the value. Notice that the Usable Memory field changes accordingly showing you the remaining memory that will be available to the system.

44.1.2.3. Configuring the Target Type

When a kernel crash is captured, the core dump can be either stored as a file in a local file system, written directly to a device, or sent over a network using the NFS (Network File System) or SSH (Secure Shell) protocol. To change this, click the Edit Location button, and select a location type as described below.
The Edit Location dialog
Edit Location
図44.3 The Edit Location dialog

To save the dump to the local file system, select file from the pulldown list. Optionally, if you wish to write the file to a different partition, select ext3 or ext2 from the pulldown list according to the file system you are using, and enter a valid device name to the Enter location field. Note that after clicking OK, you can then customize the destination directory by changing the value in the Path field at the bottom.
To write the dump directly to a device, select raw from the pulldown list, and enter a valid device name (for example, /dev/sdb1). When you are done, click OK to confirm your choice.
To store the dump to a remote machine using the NFS protocol, select nfs from the pulldown list, and enter a valid target in the hostname:directory form (for example, penguin.example.com:/export). Clicking the OK button will confirm your changes. Finally, edit the value of the Path field to customize the destination directory (for instance, cores).
To store the dump to a remote machine using the SSH protocol, select ssh from the pulldown list, and enter a valid username and hostname in the username@hostname form (for example, john@penguin.example.com). Clicking the OK button will confirm your changes. Finally, edit the value of the Path field to customize the destination directory (for instance, /export/cores).
Refer to 19章OpenSSH for information on how to configure an SSH server, and how to set up a key-based authentication.

44.1.2.4. Configuring the Core Collector

To reduce the size of the vmcore dump file, kdump allows you to specify an external application (that is, a core collector) to compress the data, and optionally leave out all irrelevant information. Currently, the only fully supported core collector is makedumpfile.
To enable the dump file compression, make sure the -c parameter is listed after the makedumpfile command in the Core Collector field (for example, makedumpfile -c).
To remove certain pages from the dump, add the -d value parameter after the makedumpfile command in the Core Collector field. The value is a sum of values of pages you want to omit as described in 表44.1「Supported filtering levels」. For example, to remove both zero and free pages, use makedumpfile -d 17.
Refer to the manual page for makedumpfile for a complete list of available options.

44.1.2.5. Changing the Default Action

To choose what action to perform when kdump fails to create a core dump, select the appropriate option from the Default Action pulldown list. Available options are mount rootfs and run /sbin/init (the default action), reboot (to reboot the system), shell (to present a user with an interactive shell prompt), and halt (to halt the system).

44.1.3. Configuring kdump on the Command Line

To perform actions described in this section, you have to be logged in as a superuser:
~]$ su -
Password:

44.1.3.1. Configuring the Memory Usage

To configure the amount of memory that is reserved for the kdump kernel, open the /boot/grub/grub.conf file in a text editor and add the crashkernel=<size>M@16M parameter to the list of kernel options as shown in 例44.1「A sample /boot/grub/grub.conf file」.
例44.1 A sample /boot/grub/grub.conf file
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda3
#          initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-274.3.1.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-274.3.1.el5 ro root=/dev/sda3 crashkernel=128M@16M
        initrd /initrd-2.6.18-274.3.1.el5.img

Important

When the kdump crash recovery is enabled, the minimum memory requirements increase by the amount of memory reserved for it. This value is determined by a user, and defaults to 128 MB, as lower values proved to be unreliable. For more information on minimum memory requirements for Red Hat Enterprise Linux, refer to the Required minimums section of the Red Hat Enterprise Linux comparison chart.

44.1.3.2. Configuring the Target Type

When a kernel crash is captured, the core dump can be either stored as a file in a local file system, written directly to a device, or sent over a network using the NFS (Network File System) or SSH (Secure Shell) protocol. Note that only one of these options can be set at the moment. The default option is to store the vmcore file in the /var/crash/ directory of the local file system. To change this, open the /etc/kdump.conf configuration file in a text editor and edit the options as described below.
To change the local directory in which the core dump is to be saved, remove the hash sign (#) from the beginning of the #path /var/crash line, and replace the value with a desired directory path. Optionally, if you wish to write the file to a different partition, follow the same procedure with the #ext3 /dev/sda3 line as well, and change both the file system type and the device (a device name, a file system label, and UUID are all supported) accordingly. For example:
ext3 /dev/sda4
path /usr/local/cores
To write the dump directly to a device, remove the hash sign (#) from the beginning of the #raw /dev/sda5 line, and replace the value with a desired device name. For example:
raw /dev/sdb1
To store the dump to a remote machine using the NFS protocol, remove the hash sign (#) from the beginning of the #net my.server.com:/export/tmp line, and replace the value with a valid hostname and directory path. For example:
net penguin.example.com:/export/cores
To store the dump to a remote machine using the SSH protocol, remove the hash sign (#) from the beginning of the #net user@my.server.com line, and replace the value with a valid username and hostname. For example:
net john@penguin.example.com
Refer to 19章OpenSSH for information on how to configure an SSH server, and how to set up a key-based authentication.

44.1.3.3. Configuring the Core Collector

To reduce the size of the vmcore dump file, kdump allows you to specify an external application (that is, a core collector) to compress the data, and optionally leave out all irrelevant information. Currently, the only fully supported core collector is makedumpfile.
To enable the core collector, open the /etc/kdump.conf configuration file in a text editor, remove the hash sign (#) from the beginning of the #core_collector makedumpfile -c --message-level 1 line, and edit the command line options as described below.
To enable the dump file compression, add the -c parameter. For example:
core_collector makedumpfile -c
To remove certain pages from the dump, add the -d value parameter, where value is a sum of values of pages you want to omit as described in 表44.1「Supported filtering levels」. For example, to remove both zero and free pages, use the following:
core_collector makedumpfile -d 17 -c
Refer to the manual page for makedumpfile for a complete list of available options.
表44.1 Supported filtering levels
Option Description
1 Zero pages
2 Cache pages
4 Cache private
8 User pages
16 Free pages

44.1.3.4. Changing the Default Action

By default, when kdump fails to create a core dump, the root file system is mounted and /sbin/init is run. To change this behavior, open the /etc/kdump.conf configuration file in a text editor, remove the hash sign (#) from the beginning of the #default shell line, and replace the value with a desired action as described in 表44.2「Supported actions」. For example:
default halt
表44.2 Supported actions
Option Action
reboot Reboot the system, losing the core in the process.
halt After failing to capture a core, halt the system.
shell Run the msh session from within the initramfs, allowing a user to record the core manually.

44.1.3.5. Enabling the Service

To start the kdump daemon at boot time, type the following at a shell prompt:
~]# chkconfig kdump on
This will enable the service for runlevels 2, 3, 4, and 5. Similarly, typing chkconfig kdump off will disable it for all runlevels. To start the service in the current session, use the following command:
~]# service kdump start
No kdump initial ramdisk found.                            [WARNING]
Rebuilding /boot/initrd-2.6.18-194.8.1.el5kdump.img
Starting kdump:                                            [  OK  ]
For more information on runlevels and configuring services in general, refer to 17章サービスへのアクセスの制御.

44.1.4. Testing the Configuration

Caution

The commands below will cause the kernel to crash. Use caution when following these steps, and by no means use them on a production machine.
To test the configuration, reboot the system with kdump enabled, and make sure that the service is running:
~]# service kdump status
Kdump is operational
Then type the following commands at a shell prompt:
~]# echo 1 > /proc/sys/kernel/sysrq
~]# echo c > /proc/sysrq-trigger
This will force the Linux kernel to crash, and the YYYY-MM-DD-HH:MM/vmcore file will be copied to the location you have selected in the configuration (that is, to /var/crash/ by default).

44.2. Analyzing the Core Dump

Note

To analyze the vmcore dump file, you must have the crash and kernel-debuginfo packages installed. To do so, type the following at a shell prompt:
~]# yum install --enablerepo=rhel-debuginfo crash kernel-debuginfo
Refer to パートII「パッケージ管理」 for more information on how to install new packages in Red Hat Enterprise Linux.
To determine the cause of the system crash, you can use the crash utility. This utility allows you to interactively analyze a running Linux system as well as a core dump created by netdump, diskdump, xendump, or kdump. When started, it presents you with an interactive prompt very similar to the GNU Debugger (GDB).
To start the utility, type the command in the following form at a shell prompt:
crash /var/crash/timestamp/vmcore /usr/lib/debug/lib/modules/kernel/vmlinux
Note that the kernel version should be the same as the one that was captured by kdump. To find out which kernel you are currently running, use the uname -r command.
例44.2 Running the crash utility
~]# crash /var/crash/2010-08-04-17\:55/vmcore \
/usr/lib/debug/lib/modules/2.6.18-194.8.1.el5/vmlinux

crash 4.1.2-4.el5_5.1
Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009  Red Hat, Inc.
Copyright (C) 2004, 2005, 2006  IBM Corporation
Copyright (C) 1999-2006  Hewlett-Packard Co
Copyright (C) 2005, 2006  Fujitsu Limited
Copyright (C) 2006, 2007  VA Linux Systems Japan K.K.
Copyright (C) 2005  NEC Corporation
Copyright (C) 1999, 2002, 2007  Silicon Graphics, Inc.
Copyright (C) 1999, 2000, 2001, 2002  Mission Critical Linux, Inc.
This program is free software, covered by the GNU General Public License,
and you are welcome to change it and/or distribute copies of it under
certain conditions.  Enter "help copying" to see the conditions.
This program has absolutely no warranty.  Enter "help warranty" for details.
 
GNU gdb 6.1
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...

      KERNEL: /usr/lib/debug/lib/modules/2.6.18-194.8.1.el5/vmlinux
    DUMPFILE: /var/crash/2010-08-04-17:55/vmcore
        CPUS: 1
        DATE: Wed Aug  4 17:50:41 2010
      UPTIME: 00:56:53
LOAD AVERAGE: 0.47, 0.47, 0.55
       TASKS: 128
    NODENAME: localhost.localdomain
     RELEASE: 2.6.18-194.el5
     VERSION: #1 SMP Tue Mar 16 21:52:43 EDT 2010
     MACHINE: i686  (2702 Mhz)
      MEMORY: 1 GB
       PANIC: "SysRq : Trigger a crashdump"
         PID: 6042
     COMMAND: "bash"
        TASK: f09c7000  [THREAD_INFO: e1ba9000]
         CPU: 0
       STATE: TASK_RUNNING (SYSRQ)

crash>

To exit the interactive prompt and terminate crash, type exit.

44.2.1. Displaying the Message Buffer

To display the kernel message buffer, type the log command at the interactive prompt.
例44.3 Displaying the kernel message buffer
crash> log
Linux version 2.6.18-194.el5 (mockbuild@x86-007.build.bos.redhat.com) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Tue Mar 16 21:52:43 EDT 2010
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000010000 - 000000000009fc00 (usable)
 BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
 BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 000000003fff0000 (usable)
 BIOS-e820: 000000003fff0000 - 0000000040000000 (ACPI data)
 BIOS-e820: 00000000fffc0000 - 0000000100000000 (reserved)
127MB HIGHMEM available.
896MB LOWMEM available.
Using x86 segment limits to approximate NX protection
On node 0 totalpages: 262128
  DMA zone: 4096 pages, LIFO batch:0
  Normal zone: 225280 pages, LIFO batch:31
  HighMem zone: 32752 pages, LIFO batch:7
DMI 2.5 present.
Using APIC driver default
... several lines omitted ...
SysRq : Trigger a crashdump

Type help log for more information on the command usage.

44.2.2. Displaying a Backtrace

To display the kernel stack trace, type the bt command at the interactive prompt. You can use bt pid to display the backtrace of the selected process.
例44.4 Displaying the kernel stack trace
crash> bt
PID: 6042   TASK: f09c7000  CPU: 0   COMMAND: "bash"
 #0 [e1ba9d10] schedule at c061c738
 #1 [e1ba9d28] netlink_getsockopt at c05d50bb
 #2 [e1ba9d34] netlink_queue_skip at c05d40d5
 #3 [e1ba9d40] netlink_sock_destruct at c05d506d
 #4 [e1ba9d84] sock_recvmsg at c05b6cc8
 #5 [e1ba9dd4] enqueue_task at c041eed5
 #6 [e1ba9dec] try_to_wake_up at c041f798
 #7 [e1ba9e10] vsnprintf at c04efef2
 #8 [e1ba9ec0] machine_kexec at c0419bf0
 #9 [e1ba9f04] sys_kexec_load at c04448a1
#10 [e1ba9f4c] tty_audit_exit at c0549f06
#11 [e1ba9f50] tty_audit_add_data at c0549d5d
#12 [e1ba9f84] do_readv_writev at c0476055
#13 [e1ba9fb8] system_call at c0404f10
    EAX: ffffffda  EBX: 00000001  ECX: b7f7f000  EDX: 00000002 
    DS:  007b      ESI: 00000002  ES:  007b      EDI: b7f7f000
    SS:  007b      ESP: bf83f478  EBP: bf83f498
    CS:  0073      EIP: 009ac402  ERR: 00000004  EFLAGS: 00000246

Type help bt for more information on the command usage.

44.2.3. Displaying a Process Status

To display a status of processes in the system, type the ps command at the interactive prompt. You can use ps pid to display the status of the selected process.
例44.5 Displaying status of processes in the system
crash> ps
   PID    PPID  CPU   TASK    ST  %MEM     VSZ    RSS  COMM
      0      0   0  c068a3c0  RU   0.0       0      0  [swapper]
      1      0   0  f7c81aa0  IN   0.1    2152    616  init
... several lines omitted ...
   6017      1   0  e39f6550  IN   1.2   40200  13000  gnome-terminal
   6019   6017   0  e39f6000  IN   0.1    2568    708  gnome-pty-helpe
   6020   6017   0  f0421550  IN   0.1    4620   1480  bash
   6021      1   0  f7f69aa0  ??   1.2   40200  13000  gnome-terminal
   6039   6020   0  e7e84aa0  IN   0.1    5004   1300  su
>  6042   6039   0  f09c7000  RU   0.1    4620   1464  bash

Type help ps for more information on the command usage.

44.2.4. Displaying Virtual Memory Information

To display basic virtual memory information, type the vm command at the interactive prompt. You can use vm pid to display information on the selected process.
例44.6 Displaying virtual memory information of the current context
crash> vm
PID: 6042   TASK: f09c7000  CPU: 0   COMMAND: "bash"
   MM       PGD      RSS    TOTAL_VM
e275ee40  e2b08000  1464k    4620k  
  VMA       START      END    FLAGS  FILE
e315d764    1fe000    201000     75  /lib/libtermcap.so.2.0.8
e315de9c    201000    202000 100073  /lib/libtermcap.so.2.0.8
c9b040d4    318000    46a000     75  /lib/libc-2.5.so
e315da04    46a000    46c000 100071  /lib/libc-2.5.so
e315d7b8    46c000    46d000 100073  /lib/libc-2.5.so
e315de48    46d000    470000 100073  
e315dba8    9ac000    9ad000 8040075  
c9b04a04    a2f000    a4a000    875  /lib/ld-2.5.so
c9b04374    a4a000    a4b000 100871  /lib/ld-2.5.so
e315d6bc    a4b000    a4c000 100873  /lib/ld-2.5.so
e315d908    fa1000    fa4000     75  /lib/libdl-2.5.so
e315db00    fa4000    fa5000 100071  /lib/libdl-2.5.so
e315df44    fa5000    fa6000 100073  /lib/libdl-2.5.so
e315d320    ff0000    ffa000     75  /lib/libnss_files-2.5.so
e315d668    ffa000    ffb000 100071  /lib/libnss_files-2.5.so
e315def0    ffb000    ffc000 100073  /lib/libnss_files-2.5.so
e315d374   8048000   80f5000   1875  /bin/bash
c9b045c0   80f5000   80fa000 101873  /bin/bash
... several lines omitted ...

Type help vm for more information on the command usage.

44.2.5. Displaying Open Files

To display information about open files, type the files command at the interactive prompt. You can use files pid to display files opened by the selected process.
例44.7 Displaying information about open files of the current context
crash> files
PID: 6042   TASK: f09c7000  CPU: 0   COMMAND: "bash"
ROOT: /    CWD: /root
 FD    FILE     DENTRY    INODE    TYPE  PATH
  0  e33be480  e609bf70  f0e1d880  CHR   /dev/pts/1
  1  e424d8c0  d637add8  f7809b78  REG   /proc/sysrq-trigger
  2  e33be480  e609bf70  f0e1d880  CHR   /dev/pts/1
 10  e33be480  e609bf70  f0e1d880  CHR   /dev/pts/1
255  e33be480  e609bf70  f0e1d880  CHR   /dev/pts/1

Type help files for more information on the command usage.

44.3. Additional Resources

44.3.1. Installed Documentation

man kdump.conf
The manual page for the /etc/kdump.conf configuration file containing the full documentation of available options.
man kexec
The manual page for kexec containing the full documentation on its usage.
man crash
The manual page for the crash utility containing the full documentation on its usage.
/usr/share/doc/kexec-tools-version/kexec-kdump-howto.txt
An overview of the kdump and kexec installation and usage.

44.3.2. Useful Websites

https://access.redhat.com/kb/docs/DOC-6039
The Red Hat Knowledgebase article about the kexec and kdump configuration.
http://people.redhat.com/anderson/
The crash utility homepage.

パート VII. セキュリティと認証

システム管理者がビジネスに影響するシステムサービス、又はデータをセキュアにする必要がある時はいつでも、 Red Hat Enterprise Linux は多種多様のツールと手段を総括的なセキュリティ政策の一部として提供します。
本章ではセキュリティ全般について、特に Red Hat Enterprise Linux を使用する上での全般情報について説明しています。セキュリティの査定、よくある不正アクセス、侵入やインシデントレスポンスに関するエリアについて概念的に説明しています。また、 SELinux 使用したワークステーション、サーバー、 VPN 、ファイアウォール、その他実装の強化方法について概念的な説明及び特定の設定に関して説明しています。
本章は、 IT セキュリティに関する基本的な知識を有しているユーザーを対象しているため、物理的なアクセスの制御、健全なアカウント維持ポリシー及び手順、監査などセキュリティ上の一般的な実践方法については最小限しか説明されていません。必要に応じて、外部リソースや関連情報を参照してください。

目次

45. セキュリティ概要
45.1. セキュリティの導入
45.1.1. コンピュータセキュリティとは?
45.1.2. セキュリティコントロール
45.1.3. 結論
45.2. 脆弱性の査定
45.2.1. 敵になったつもりで考える
45.2.2. 査定を決定してテストする
45.2.3. ツールを検討する
45.3. 攻撃者と脆弱性
45.3.1. ハッカーの略歴
45.3.2. ネットワークセキュリティへの脅威
45.3.3. サーバーセキュリティへの脅威
45.3.4. ワークステーションと家庭用 PC のセキュリティに対する脅威
45.4. よくある不正アクセスと攻撃
45.5. セキュリティの更新
45.5.1. パッケージを更新する
46. ネットワークの安全性を図る
46.1. ワークステーションセキュリティ
46.1.1. ワークステーションセキュリティを評価する
46.1.2. BIOS とブートローダのセキュリティ
46.1.3. パスワードのセキュリティ
46.1.4. 管理制御
46.1.5. 利用できるネットワークサービス
46.1.6. パーソナルファイアウォール
46.1.7. セキュリティ強化された通信ツール
46.2. サーバーセキュリティ
46.2.1. TCP ラッパー と xinetd を使用したサービスの安全保護
46.2.2. ポートマップの保護
46.2.3. NIS の保護
46.2.4. NFS 保護
46.2.5. Apache HTTP サーバーの保護
46.2.6. FTP の保護
46.2.7. Sendmail の保護
46.2.8. リッスンするポートの確認
46.3. Single Sign-on (SSO)
46.3.1. 導入
46.3.2. 新しいスマートカードの入門
46.3.3. スマートカードの登録の働き
46.3.4. スマートカードログインの働き
46.3.5. SSO のための Kerberos を使用するための Firefox の設定
46.4. PAM(Pluggable Authentication Modules)
46.4.1. PAM の利点
46.4.2. PAM 設定ファイル
46.4.3. PAM 設定ファイルの形式
46.4.4. PAM 設定ファイルのサンプル
46.4.5. PAM モジュールの作成
46.4.6. PAM と管理用証明書のキャッシュ
46.4.7. PAM およびデバイスの所有権
46.4.8. その他のリソース
46.5. TCP ラッパーと xinetd
46.5.1. TCP Wrappers
46.5.2. TCP ラッパーの設定ファイル
46.5.3. xinetd
46.5.4. xinetd 設定ファイル
46.5.5. その他のリソース
46.6. Kerberos
46.6.1. Kerberosとは?
46.6.2. Kerberosの用語
46.6.3. Kerberosの機能
46.6.4. Kerberos と PAM
46.6.5. Keberos 5サーバーの設定
46.6.6. Kerberos 5クライアントの設定
46.6.7. Domain-to-Realm Mapping
46.6.8. Setting Up Secondary KDCs
46.6.9. Setting Up Cross Realm Authentication
46.6.10. その他のリソース
46.7. Virtual Private Networks (VPNs)
46.7.1. VPN の仕組の説明
46.7.2. VPN と Red Hat Enterprise Linux
46.7.3. IPsec
46.7.4. IPsec 接続の作成
46.7.5. IPsec インストール
46.7.6. IPsec ホスト間 (Host-to-Host) 設定
46.7.7. IPsec ネットワーク間 (Network-to-Network) 設定
46.7.8. IPsec 接続の開始と停止
46.8. Firewalls
46.8.1. Netfilter と IPTables
46.8.2. 基本的なファイアウォールの設定
46.8.3. IPTables の使い方
46.8.4. 一般的な IPTables フィルタリング
46.8.5. FORWARDNAT のルール
46.8.6. 悪意あるソフトウェアとなりすまし IP アドレス
46.8.7. IPTables と接続トラッキング
46.8.8. IPv6
46.8.9. その他のリソース
46.9. IPTables
46.9.1. パケットフィルタリング
46.9.2. IPTables と IPChains との相違
46.9.3. IPTable 用のコマンドオプション
46.9.4. IPTables 規則の保存
46.9.5. IPTables 制御スクリプト
46.9.6. IPTables と IPv6
46.9.7. その他のリソース
47. セキュリティと SELinux
47.1. アクセス制御機構 :Access Control Mechanisms (ACM)
47.1.1. 自由アクセス制御:Discretionary Access Control (DAC)
47.1.2. アクセス制御リスト:Access Control Lists (ACL)
47.1.3. 監視アクセス制御:Mandatory Access Control (MAC)
47.1.4. 役割基準アクセス制御:Role-based Access Control (RBAC)
47.1.5. 複数レベルセキュリティ:Multi-Level Security (MLS)
47.1.6. 複数カテゴリーセキュリティ:Multi-Category Security (MCS)
47.2. SELinux への入門
47.2.1. SELinux の概要
47.2.2. SELinux に関連したファイル
47.2.3. その他の資料
47.3. SELinux の簡単な背景と歴史
47.4. Multi-Category Security (MCS)
47.4.1. Introduction
47.4.2. Applications for Multi-Category Security
47.4.3. SELinux Security Contexts
47.5. Getting Started with Multi-Category Security (MCS)
47.5.1. Introduction
47.5.2. Comparing SELinux and Standard Linux User Identities
47.5.3. Configuring Categories
47.5.4. Assigning Categories to Users
47.5.5. Assigning Categories to Files
47.6. Multi-Level Security (MLS)
47.6.1. Why Multi-Level?
47.6.2. Security Levels, Objects and Subjects
47.6.3. MLS Policy
47.6.4. LSPP Certification
47.7. SELinux Policy Overview
47.7.1. What is the SELinux Policy?
47.7.2. Where is the Policy?
47.7.3. The Role of Policy in the Boot Process
47.7.4. Object Classes and Permissions
47.8. Targeted Policy Overview
47.8.1. What is the Targeted Policy?
47.8.2. Files and Directories of the Targeted Policy
47.8.3. Understanding the Users and Roles in the Targeted Policy
48. Working With SELinux
48.1. End User Control of SELinux
48.1.1. Moving and Copying Files
48.1.2. Checking the Security Context of a Process, User, or File Object
48.1.3. Relabeling a File or Directory
48.1.4. Creating Archives That Retain Security Contexts
48.2. Administrator Control of SELinux
48.2.1. Viewing the Status of SELinux
48.2.2. Relabeling a File System
48.2.3. Managing NFS Home Directories
48.2.4. Granting Access to a Directory or a Tree
48.2.5. Backing Up and Restoring the System
48.2.6. Enabling or Disabling Enforcement
48.2.7. Enable or Disable SELinux
48.2.8. Changing the Policy
48.2.9. Specifying the Security Context of Entire File Systems
48.2.10. Changing the Security Category of a File or User
48.2.11. Running a Command in a Specific Security Context
48.2.12. Useful Commands for Scripts
48.2.13. Changing to a Different Role
48.2.14. When to Reboot
48.3. Analyst Control of SELinux
48.3.1. Enabling Kernel Auditing
48.3.2. Dumping and Viewing Logs
49. Customizing SELinux Policy
49.1. Introduction
49.1.1. Modular Policy
49.2. Building a Local Policy Module
49.2.1. Using audit2allow to Build a Local Policy Module
49.2.2. Analyzing the Type Enforcement (TE) File
49.2.3. Loading the Policy Package
50. 参考文献

第45章 セキュリティ概要

企業経営を支援し企業内各自の個人情報を記録する、強力にネットワーク化されたコンピュータへの信頼度が高まったため、企業体はネットワークとコンピュータセキュリティの実施を構成するようになってきました。企業はシステムや適合ソリューションを正しく監査し、企業の運営に必要とされる条件に合うようセキュリティ専門知識と技能を求めています。従事者が会社または組織の IT リソースにローカルにも遠隔的にもアクセスするので、ほとんどの企業や団体は事実上、動的な運営となります。これが理由で、安全なコンピュータ環境のニーズはより顕著になってきています。
しかし、ほとんどの企業や団体 (個人ユーザーも含めて) は、セキュリティを補足的なものと考えており、機能、生産性、予算関連の向上の方ばかりに目をとらわれがちです。適切なセキュリティの実施は 事後検討 (許可のない侵入が発生してしまった後) で行われています。セキュリティの専門家の一致した意見として、ほとんどの侵入試行を遮断する効果的な方法は、インターネットなどの信頼できないネットワークへ接続する前に適切な手段を講じることであると言われています。

45.1. セキュリティの導入

45.1.1. コンピュータセキュリティとは?

コンピュータセキュリティは、コンピューティングや情報処理の広義をカバーする一般的な用語です。日々のビジネストランザクションを行ったり、重要な情報にアクセスするのにコンピュータシステムやネットワークに依存している業界は、そのデータは全ての資産の中の重要な一部であると認識されています。いくつかの用語やメトリックは、 Total Cost of Ownership (TCP) や Quality of Service (QoSoSなどの) 日々のビジネス用語が入っています。これらのメトリックにおいて、業界は、計画やプロセス管理のコストの一部としてデータ整合性や高可用性などの面を計算します。 E コマースなどの業界では、データの可用性や信頼性は、成功と失敗の違いになる可能性があります。

45.1.1.1. どのようにコンピュータセキュリティは発生したのでしょうか?

情報セキュリティは、個人、ファイナンシャル、およびその他の制限されている情報を開示しないようにパブリックのネットワークの信頼性を増すために、何年もかけて進化してきました。 Mitnick や Vladimir Levin 等の事例により、全ての業界の組織は情報の伝達や開示を行う方法について再考しました。インターネットの流行は、データセキュリティにおける強化を促進する最も重要な進歩の1つです。
多くの人々がパーソナルコンピュータを使用して、インターネットが提供する情報にアクセスするようになってきました。研究や情報検索から電子メールや商取引まで、インターネットは20世紀の最も重要な発展の1つとして認められています。
しかし、インターネットとその初期のプロトコルは、 trust-based システムとして開発されました。つまり、 Internet Protocol はそれ自信がセキュアなものとしてデザインされていませんでした。 TCP/IP 通信スタックに組み込まれた、認証されたセキュリティ標準などはなく、ネットワーク間で悪意のある可能性のあるユーザーやプロセスに開かれています。近年の開発によりインターネット通信がよりセキュアになってきましたが、依然として世界的に注目を集めたりする事件があり、完全に安全なものはないという事実を私達に警告します。

45.1.1.2. 今日のセキュリティ

In February of 2000, a Distributed Denial of Service (DDoS) attack was unleashed on several of the most heavily-trafficked sites on the Internet. The attack rendered yahoo.com, cnn.com, amazon.com, fbi.gov, and several other sites completely unreachable to normal users, as it tied up routers for several hours with large-byte ICMP packet transfers, also called a ping flood. The attack was brought on by unknown assailants using specially created, widely available programs that scanned vulnerable network servers, installed client applications called Trojans on the servers, and timed an attack with every infected server flooding the victim sites and rendering them unavailable. Many blame the attack on fundamental flaws in the way routers and the protocols used are structured to accept all incoming data, no matter where or for what purpose the packets are sent.
現在のところ、およそ9億4500万人の人々が世界中でインターネットを使用しています (Computer Industry Almanac, 2004)。同時に:
  • On any given day, there are approximately 225 major incidences of security breach reported to the CERT Coordination Center at Carnegie Mellon University.[10]
  • In 2003, the number of CERT reported incidences jumped to 137,529 from 82,094 in 2002 and from 52,658 in 2001.[11]
  • The worldwide economic impact of the three most dangerous Internet Viruses of the last three years was estimated at US$13.2 Billion.[12]
コンピュータセキュリティは、全ての IT の予算で定量化と正当化できる出費になってきました。データ整合性と高可用性を要求する組織は、システム管理者、開発者、およびエンジニアのスキルを引き出し、システム、サービス、および情報の 24x7 の信頼性を確保します。悪意のあるユーザーや、プロセス、または同時攻撃などの犠牲になることは、組織の成功への脅威に結びつきます。
残念ながら、システムやネットワークのセキュリティは、組織がどのようにその情報をみなし、使用し、操作し、また転送するかという込み入った知識が必要とされるので、難しい提案になる可能性があります。組織がビジネスを実行する手法の理解 (および組織を作っている人々) が適切なセキュリティプランを実装する最優先事項です。

45.1.1.3. セキュリティの標準化

全ての業界の企業は、 American Medical Association (AMA) や Institute of Electrical and Electronics Engineers (IEEE) などの標準化を作る機関により設定された規則やルールに依存しています。同じことが情報セキュリティ当てはまります。多くのセキュリティコンサルタントやベンダーが、 CIA つまり Confidentiality, Integrity, and Availability として知られている標準セキュリティモデルに同意しています。この3層のセキュリティモデルは、繊細な情報のリスクを評価したり、セキュリティポリシーを確立したりする一般的に認識されたコンポーネントです。以下では、 CIA モデルの詳細について既述しています:
  • Confidentiality — Sensitive information must be available only to a set of pre-defined individuals. Unauthorized transmission and usage of information should be restricted. For example, confidentiality of information ensures that a customer's personal or financial information is not obtained by an unauthorized individual for malicious purposes such as identity theft or credit fraud.
  • 整合性 — 情報は、それを不完全にしたり不正確にするように変更されるべきではありません。承認されていないユーザーは、繊細な情報を変更したり破壊したりする能力から制限するべきです。
  • 可用性 — 情報はそれを必要としている承認されているユーザーからはいつでもアクセス可能にしておいてください。可用性は、情報が頻度や適時性で取り決められて入手できるという保証です。これは、しばしばパーセンテージで計算され、ネットワークサービスプロバイダやその顧客により使用される Service Level Agreement (SLA) で正式に同意されます。

45.1.2. セキュリティコントロール

コンピュータセキュリティは、一般的に コントロール として言及される3つの主要なカテゴリに分類されます:
  • Physical
  • Technical
  • Administrative
これらの3つの広いカテゴリは、適切なセキュリティ実装の主要な目的を定義します。これらのコントロール内にサブカテゴリがあり、そこでコントロールの詳細や、どのように実装するかを説明します。

45.1.2.1. Physical コントロール

Physical コントロールは、繊細なマテリアルへの未承認のアクセスを阻止したり遮断したりするのに使用される定義された構造でのセキュリティ対策の実装です。 Physical コントロールの例は以下の通りです:
  • クローズドサーキット監視カメラ
  • 動作または熱アラームシステム
  • セキュリティガード
  • ピクチャ ID
  • ロックされた安全錠のスチールドア
  • バイオメトリック (指紋、声、顏、虹彩、手書き、および個人を認識するのに使用されるその他の自動化されたメソッド)

45.1.2.2. Technical コントロール

Technical コントロールは、ネットワーク間や物理的な構造を通しての繊細なデータのアクセスや使用をコントロールする基準としてテクノロジを使用します。 Technical コントロールは、広範囲に渡るもので、以下のようなテクノロジを網羅します:
  • 暗合化
  • スマートカード
  • ネットワーク認証
  • Access Control List (ACL)
  • ファイル整合性とソフトウェアの監査

45.1.2.3. Administrative コントロール

Administrative コントロールは、セキュリティの人的要因を定義します。これは、組織内の全てのレベルの人員を含み、どのユーザーがどのリソースや情報にアクセスできるかを決定します:
  • トレーニングと認識
  • 災害への準備とリカバリプラン
  • 人員採用と分離戦略
  • 人員登録と会計

45.1.3. 結論

これまで、成り立ち、理由、およびセキュリティの概要を学んできたので、 Red Hat Enterprise Linux に関する適切な手順を決定することができます。適切な戦略を計画し実装するために、どの要因や条件がセキュリティを作るのかを知ることは重要です。この情報を念頭におき、セキュリティプロセスの詳細を深く掘り下げるにつれて、プロセスは正式化され、パスはよりクリアになります。

45.2. 脆弱性の査定

時間、リソース、そして動機があれば、クラッカーはほぼどのシステムにでも侵入することができるでしょう。結局現在利用可能なすべてのセキュリティ対策とテクノロジーをもってしても侵入に対してシステムが安全であることを保証することはできません。ルータはインターネットへのゲートウェイの安全を確保をするのに役立ちます。ファイアウォールはネットワークの末端の安全を確保するのに役立ちます。VPN(Virtual Private Network) は暗号化したストリームで安全にデータをやりとりすることができます。侵入検知システムは悪意ある活動に関して警告することができます。しかし、これらひとつひとつのテクノロジーが成功するかは次のような可変的な要素によります:
  • テクノロジーの設定、監視、管理などの責任があるスタッフの専門的知識
  • 迅速且つ効率的にサービス及びカーネルにパッチをあて、更新する能力
  • 責任を持ってネットワークの警戒を怠らないようにする能力
ダイナミックなデータシステムとテクノロジーを導入している企業で、その企業のリソースの安全を確保することはたいへん複雑なことでしょう。この複雑性ゆえに、すべてのシステムに対して熟達した人材をさがすのは大変なことかもしれません。情報セキュリティの多くのエリアで高いレベルの知識を持つ人材がいるかもしれませんが、2つまたは3つ以上の対象エリアでエキスパートとなるスタッフを持つのは難しいでしょう。情報セキュリティは常に流動しているため、情報セキュリティの各対象エリアを絶え間なく注意し監視することが要求されるからです。

45.2.1. 敵になったつもりで考える

Suppose that you administer an enterprise network. Such networks are commonly comprised of operating systems, applications, servers, network monitors, firewalls, intrusion detection systems, and more. Now imagine trying to keep current with each of these. Given the complexity of today's software and networking environments, exploits and bugs are a certainty. Keeping current with patches and updates for an entire network can prove to be a daunting task in a large organization with heterogeneous systems.
専門的知識の必要条件と最新の状態に保つ作業を合わせると、逆のインシデントが起こる、システムが侵害される、データが改ざんされる、サービスが割り込まれるなどが避けられないことです。
セキュリティのテクノロジーを強化してシステム、ネットワーク、データの保護を促進するためには、クラッカーになったつもりで考えてみて、弱点をチェックすることでシステムのセキュリティを評価します。システムとネットワークリソースに対しての予防的な脆弱性の査定によって、クラッカーが攻撃してくる前に対処が可能な起こりうる問題を明らかにしてくれます。
A vulnerability assessment is an internal audit of your network and system security; the results of which indicate the confidentiality, integrity, and availability of your network (as explained in 「セキュリティの標準化」). Typically, vulnerability assessment starts with a reconnaissance phase, during which important data regarding the target systems and resources is gathered. This phase leads to the system readiness phase, whereby the target is essentially checked for all known vulnerabilities. The readiness phase culminates in the reporting phase, where the findings are classified into categories of high, medium, and low risk; and methods for improving the security (or mitigating the risk of vulnerability) of the target are discussed.
自宅の脆弱性査定を実施しようとしたなら、おそらく、各ドアがきちんと閉まっていて鍵がかかっているかどうかを確認するでしょう。また、それぞれの窓を確認して、こちらもきちんと閉まっているか、掛け金をかけたかを確認するでしょう。これと同じ考え方をシステム、ネットワーク、電子データにも適用します。悪意あるユーザーは泥棒であり、心ないデータ破壊者です。彼らのツール、心理、動機をよく注意してみると、その行動に対して迅速に反応できるようになります。

45.2.2. 査定を決定してテストする

脆弱性の査定は2つのタイプに別けることができます。外部からのルックイン内部のルックアラウンド です。
When performing an outside looking in vulnerability assessment, you are attempting to compromise your systems from the outside. Being external to your company provides you with the cracker's viewpoint. You see what a cracker sees — publicly-routable IP addresses, systems on your DMZ, external interfaces of your firewall, and more. DMZ stands for "demilitarized zone", which corresponds to a computer or small subnetwork that sits between a trusted internal network, such as a corporate private LAN, and an untrusted external network, such as the public Internet. Typically, the DMZ contains devices accessible to Internet traffic, such as Web (HTTP ) servers, FTP servers, SMTP (e-mail) servers and DNS servers.
内部ルックアラウンド脆弱性査定の実施では、実施者が内部者であり信頼できるステータスを与えられるので優位な立場になります。自分と同僚がシステムにログオンしている視点から見ることになります。プリントサーバー、ファイルサーバー、データベース、その他のリソースなどを見ます。
この 2つの脆弱性査定には顕著な違いがあります。企業の内部者としての査定は特権を与えられることになり、外部者と比べて優位になります。今日でもいまだほとんどの企業では、外からの侵入者を防ぐというような方法でセキュリティが設定されます。ところが、企業や組織の内部の安全を確保すると言う方法はほとんど採られていません(部門別ファイアウォール、ユーザーレベルのアクセス制御、内部リソースの認証手続き、その他)。概して、ほとんどのシステムは企業に対して内部側となるため、内部ルックアラウンドにはより多くのリソースが存在します。外部者として自分を設定したら、直ちに信頼できないというステータスが与えられます。外部から利用可能となるシステムとリソースは非常に限られてしまいます。
脆弱性の査定と侵入力テストの違いを考慮して下さい。。 脆弱性の査定を侵入力テストへの最初のステップと考えます。査定で拾い集めてきた 情報はテストをする時に使われます。査定が穴開きや可能性のある脆弱性をチェック するのに対し、侵入力テストは実際にこれらの調査結果に対して不正アクセスを 試みます。
ネットワークのインフラストラクチャ査定は動的なプロセスです。 セキュリティは、情報と物理的の両方とも、動的です。 査定の実施は、false positive と false negative で表される概要を表示します。
セキュリティ管理者の仕事は使用するツールや自分の知識に依存します。現在、利用可能な査定ツールは何でも利用して、システムで実行します。少なくともいくつかの疑似症状(false positive)があることがほぼ確実になります。プログラムの 欠陥かユーザーの誤りによるものか関係なく、結果は同じです。ツールは現実には存在しない(false positive)脆弱性を発見するかもしれません。また悪くすると、ツールが実際に存在する(false negative)脆弱性を発見しないかもしれません。
さて、脆弱性の査定と侵入力テストの違いが定義されたところで、新しい最適な実行手段としての侵入力テストを開始する前に、査定の結果を注意深く見直してみましょう。

警告

業務リソース上で脆弱性への不正アクセスを試みるのは、 システムとネットワークの生産性と効率性に対して逆効果となり得ます。
以下の一覧は脆弱性の査定を実施することで利点となることをいくつかあげています。
  • 情報セキュリティに先を見越した焦点を作成する
  • クラッカーが見つける前に可能性のある不正操作を発見
  • システムが更新され、パッチが当てられた状態になります
  • スタッフの専門的知識の発達を促進、援助する
  • 財政的な損失と否定的なパブリシティを緩和します

45.2.2.1. 体系を確立する

脆弱性の査定に関するツール選択を容易にするために、脆弱性の査定体系を確立することが役に立ちます。残念ながら、事前設定された体系または産業認可を受けた体系はいまのところありません。しかし、常識と実践のくり返しが十分な指針となっていくでしょう。
対象とは何ですか? 1つのサーバーを対象としているのでしょうか。 それとも、ネットワーク全体とネットワーク内のすべてのものを対象としている のでしょうか。査定担当者は企業に対して外部者ですか、内部者ですか? これに対する答は、ツールの選択を決める手助けになる ばかりでなく、その使用方法などを決めるのにも役立つので重要です。
体系の確立についての詳細は以下のウェブサイトを参照してください。
  • http://www.isecom.org/projects/osstmm.htm The Open Source Security Testing Methodology Manual (OSSTMM)(オープンソースセキュリティテスト手法マニュアル)
  • http://www.owasp.org/ The Open Web Application Security Project (オープン Web アプリケーションセキュリティプロジェクト)

45.2.3. ツールを検討する

査定はなんらかの情報収集ツールを使用することからはじめられます。ネットワーク全体を査定するとき、レイアウトを最初にマップして実行中のホストを見つけます。見つけたら、それぞれのホストを個別に調べます。こうしたホストに焦点を置くには別のツール一式が必要となります。どのツールを使うべきかは、脆弱性を見つける上で最も重要なステップとなるでしょう。
日々の生活の中にも、同じ仕事を行う異なるツールがたくさんあります。脆弱性の査定を実施するのにも同じことが言えます。オペレーティングシステムやアプリケーションに対しても特定のツールがあり、ネットワーク(使用されるプロトコールに基づく)に対してさえ特定のツールがあります。無償のツールもあれば有償のものもあります。直感的で使いやすいツールもあれば、わかりずらく説明も少なくても、他のツールにない機能を持つツールもあります。
適切なツールを見つけるのは気が重くなりそうな仕事です。結局は経験が大切です。 できれば、テストラボを設置してできるだけ多くのツールを試して長所と短所を記録 します。ツールの README ファイルか man ページを復習します。加えて、論説、 ステップバイステップガイド、ツールに関する特定メーリングリストなどの詳細情報を インターネットで調べてください。
以下に解説するツールは利用できるツールの数種類のサンプリングにすぎません。

45.2.3.1. Nmapを使ってホストをスキャンする

Nmap は Red Hat Enterprise Linux に入っているポピュラーなツールで、 ネットワークのレイアウトを決定するのに使われます。Nmap は長い間利用されてきており、恐らく、情報を収集するときのツールとして最もよく使われるものです。man ページにはこのツールのオプションや使用方法が詳細に説明されています。管理者はネットワーク上で Nmap を使用してホストシステムとそのシステム上のオープンポートを見つけることができます。
Nmap は脆弱性の査定において有力な最初のステップとなります。ネットワーク内のすべてのホストをマップすることができ、特定ホストで実行しているオペレーティングシステムの識別を試みるオプションを渡すこともできます。Nmap は、安全なサービスの使用、及び未使用サービスの停止についての方針を確立するための適切な基礎となります。
45.2.3.1.1. Nmapを使って
Nmap はシェルプロンプトで、nmapと入力し、その後スキャン するマシンのホスト名又は IP アドレスを入力することで実行できます。
nmap foo.example.com
スキャンの結果 (ホストが見つかった場所によって2分ほどかかることもある) は以下のように表示されます。
Starting nmap V. 3.50 ( www.insecure.org/nmap/ )
Interesting ports on localhost.localdomain (127.0.0.1):
(The 1591 ports scanned but not shown below are in state: closed)
Port       State       Service
22/tcp     open        ssh
25/tcp     open        smtp
111/tcp    open        sunrpc
443/tcp    open        https
515/tcp    open        printer
950/tcp    open        oftep-rpc
6000/tcp   open        X11

Nmap run completed -- 1 IP address (1 host up) scanned in 71.825 seconds
Nmap はサービスをリッスンしているか、又は待機中の最も一般的なネットワーク 通信ポートをテストします。この知識は、不必要、又は使用しないサービスを終了 したい管理者にとって役に立ちます。
Nmapの使用方法についての詳細は、次の URL にある 公式ホームページを参照してください。

45.2.3.2. Nessus

Nessus は総合的なセキュリティスキャナーです。Nessus のプラグインアーキテ クチャでユーザーはこのスキャナーをシステムやネットワーク用にカスタマイズする ことができます。他のスキャナーと同様に、Nessus は依存する署名データベースに 左右されます。幸いにも、Nessus は頻繁に更新され、完全リポート、ホストスキャン、 リアルタイム脆弱性検索の機能を持ちます。Nessus 程に頻繁に強力で、頻繁に更新 されていても、false positive と false negative があるかもしれないので注意 してください。

注記

Nessus は Red Hat Enterprise Linux には含まれていませんので、サポートされません。ポピュラーなこのアプリケーションの使用に興味のあるユーザーの参考として このドキュメントに収納されていました。
Nessus の使用方法についての詳細は、次の URL にある公式 web サイトを参照して ください:

45.2.3.3. Nikto

Nikto は共通ゲートウェイインターフェイスの優れた CGI スキャナーです。Nikto には CGI 脆弱性のチェック機能のみならず、侵入検知システムを逃れる回避的な挙動も チェックする機能を持ちます。詳細なドキュメントも附随しています。 プログラムを実行する前によくお読み頂くべきドキュメントが付帯しています。 CGI スクリプトをサービスできる Web サーバーを所有している場合は、Nikto が こうしたサーバーのセキュリティチェックに素晴しいリソースとなり得ます。

注記

Nikto は Red Hat Enterprise Linux には含まれていませんので、サポートされません。 ポピュラーなこのアプリケーションに興味のあるユーザーの参考としてこのドキュメントに収納されていました。
Nikto についての詳細は次の URL でご覧頂けます。

45.2.3.4. VLAD the Scanner

VLAD は Bindview, Inc. の RAZOR チームによって開発された 脆弱性スキャナーです。よくあるセキュリティ問題の SANS トップ10リスト 項目を チェックします(SNMP 問題、ファイル共有の問題、など)。Nessus ほど総合機能型では ありませんが、VLAD は検討に値します。

注記

VLAD は Red Hat Enterprise Linux には含まれませんので、サポートされません。ポピュラーなこのアプリケーションに興味のあるユーザーの参考としてこのドキュメントに収納されていました。
VLADについての詳細は次の URL にある RAZOR チームのウェブサイトでご覧頂けます。

45.2.3.5. 今後のニーズを予想する

Depending upon your target and resources, there are many tools available. There are tools for wireless networks, Novell networks, Windows systems, Linux systems, and more. Another essential part of performing assessments may include reviewing physical security, personnel screening, or voice/PBX network assessment. New concepts, such as war walking scanning the perimeter of your enterprise's physical structures for wireless network vulnerabilities are some emerging concepts that you can investigate and, if needed, incorporate into your assessments. Imagination and exposure are the only limits of planning and conducting vulnerability assessments.

45.3. 攻撃者と脆弱性

有効なセキュリティ対策を計画し実施するために、まず、しつこい攻撃者が不正アクセスをしシステムの感染をさせるいくつかの問題について知っておいてください。しかし、これら問題を詳述する前に、攻撃者を識別するときに使用する用語を定義しておく必要があるでしょう。

45.3.1. ハッカーの略歴

現代の ハッカー という言葉の意味はその語原を 1960 年代までさかのぼります。マサチューセッツ工科大学の技術モデル鉄道クラブが大規模で複雑な鉄道セットを設計しました。ハッカーとは、巧妙なトリックや問題の回避方法を見つけたクラブメンバーに対して使われていた名前でした。
これ以降、ハッカーという用語はコンピュータ狂から天才プログラマーまで幅広く使われるようになりました。ほとんどのハッカーにみられる一般的な特徴は、自力でコンピュータのシステムとネットワークがどのように機能するかを詳細に探求する意欲に満ちていることです。オープンソースソフトウェアの開発者はよく自分自身と仲間をハッカーとみなしており、敬意を表してこの単語を使用します。
一般的には、ハッカーは ハッカーの倫理 を守っています。ハッカーの倫理とは、情報と専門知識の探求は不可欠であること、この知識の共有はコミュニティに対するハッカーの義務であることとなっています。この知識探求で、コンピュータシステムのセキュリティコントロールの裏をかくことに学究的な意欲を燃やし楽しむハッカーもいます。理由は、マスコミが頻繁にハッカーと言う言葉を使用して、節操なく、悪意を持って、あるいは犯罪的な意図でシステムやネットワークに不正にアクセスする者達を表現するからです。こうしたコンピュータハッカーに対する的確な呼び名は、 クラッカー になります — 2 つのコミュニティを差別化するため 1980 年代の中頃にハッカーによって作られた造語。

45.3.1.1. シェードオブグレイ

Within the community of individuals who find and exploit vulnerabilities in systems and networks are several distinct groups. These groups are often described by the shade of hat that they "wear" when performing their security investigations and this shade is indicative of their intent.
ホワイトハットハッカー とは、ネットワークやシステムをテストしてパフォーマンスを調べ、侵入に対してどのように攻撃を受けやすいかを測定する人です。通例、ホワイトハットハッカーは自分のシステム、または顧客のシステムにクラッキング行為を行ないます。顧客とはセキュリティ監査の目的でホワイトハットハッカーを雇用した人または企業・団体です。学術研究員やセキュリティコンサルタントの専門家などがその例です。
ブラックハットハッカー はクラッカーの同意語です。一般的に、クラッカーはプログラミングやシステム侵入に関する学究的な側面にはあまり焦点をおいていません。多くの場合、クラッカーはクラッキングできるプログラムをあてにしています。システムの既知の弱点に不正アクセスして、個人的な利得のためにセンシティブな情報を暴露したり、あるいは目標のシステムやネットワークに損害を与えます。
一方、 グレイハットハッカー は、ほとんどの場合、ホワイトハットハッカーの技術と意図を有しますが、ときにはあまり立派でない目的に自分の知識を活用することもあります。グレイハットハッカーとは、自分の行動予定を達成するときにはブラックハットをかぶるホワイトハットハッカーと考えてよいでしょう。
グレイハットハッカーは概して異なるハッカー倫理を持っていて、それは窃盗を働いたり機密漏洩などの違反を犯さない限り、システムに侵入するのは許容範囲とするものです。これに関しては議論のあるところですが、システムへの侵入行為それ自体は非倫理的な行為です。
侵入者の意図が何であれ、クラッカーが不正アクセスしそうな弱点を知っておくことが重要です。以降、この点に焦点をあてて解説していきます。

45.3.2. ネットワークセキュリティへの脅威

ネットワークを設定する際に次のような例は攻撃の危険性を増加させる恐れがあります。

45.3.2.1. 不安全なアーキテクチャ

ネットワークの誤った設定は許可のないユーザーにとって主要なエントリポイントとなります。信頼しているローカルネットワークの弱点をまったく安全性に欠けるインターネットに開放したままにするのは、犯罪多発地帯でドアを半開きにしたままのようなものです — すぐには何も起こらないかもしれませんが、 いずれ 誰かがこの好機に不正アクセスしてきます。
45.3.2.1.1. ブロードキャストネットワーク
システム管理者はよくセキュリティ体系におけるネットワーキングハードウェアの重要性の認識に欠けることがあります。ハブとルータのような単純なハードウエアはブロードキャストまたはノンスイッチの仕組みに依存します。つまり、ノードがネットワークを介して受信者となるノードにデータを送信するときは常に、受信者となるノードがデータを受け取り処理するまでハブまたはルーターはデータパケットのブロードキャストを送信します。この方法は、アドレス解決プロトコール (arp) またはメディアアクセスコントロール (MAC) に対する外部侵入者及びローカルノード上の無許可のユーザーいずれによるアドレススプーフィングにも最も攻撃を受けやすくなります。
45.3.2.1.2. 集中化サーバー
もうひとつのネットワーキングの落し穴は集中化コンピューティングの採用です。さまざまな企業における一般的な経費削減手段としてすべてのサービスを単一の強力なマシンに統合整理する方法があります。この手段だと、管理が楽な上、複数サーバー構成に比べて大幅な経費削減となるため都合がよいわけです。しかし、集中化サーバーはネットワーク上に単一障害ポイントをもたらします。中枢サーバーが感染した場合、ネットワークを完全に役に立たなくしてしまうか、最悪の場合データの不正操作や盗難を行ないやすくしてしまう恐れがあります。こうした場合、ひとつの中枢サーバーが侵入口となり、ネットワーク全体へのアクセスを許可してしまうことになります。

45.3.3. サーバーセキュリティへの脅威

Server security is as important as network security because servers often hold a great deal of an organization's vital information. If a server is compromised, all of its contents may become available for the cracker to steal or manipulate at will. The following sections detail some of the main issues.

45.3.3.1. 未使用のサービスとオープンポート

Red Hat Enterprise Linux のフルインストールには 1000 余りのアプリケーションとライブラリパッケージが入っています。しかし、ほとんどのサーバー管理者は製品に含まれるパッケージすべてをインストールに選択することはありません。代わりに、数種類のサーバーアプリケーションを含む、パッケージ群のベースインストールを行ないます。
A common occurrence among system administrators is to install the operating system without paying attention to what programs are actually being installed. This can be problematic because unneeded services may be installed, configured with the default settings, and possibly turned on. This can cause unwanted services, such as Telnet, DHCP, or DNS, to run on a server or workstation without the administrator realizing it, which in turn can cause unwanted traffic to the server, or even, a potential pathway into the system for crackers. Refer To 「サーバーセキュリティ」 for information on closing ports and disabling unused services.

45.3.3.2. パッチされていないサービス

デフォルトのインストールに含まれているほとんどのサーバーアプリケーションはソフトウェアの細部までテストされているので強固な作りになっています。長年に渡り実稼働環境で使用されていくに従い、コードが入念に改良されて、多くのバグが発見され修正されてきました。
しかし、完璧なソフトウェアというのはあり得ません。常に、改良点と言うのはあるものです。さらに、新しいソフトウェアには期待するほど厳格にテストされないことがよくあります。なぜなら、実稼働環境に対して最近現われたばかりのソフトウェアであったり、その他サーバーソフトウェアほど一般的ではないかもしれないからです。
開発者とシステム管理者はサーバーアプリケーションによく不正アクセスのバグを発見し、 Bugtraq メーリングリスト ( http://www.securityfocus.com) やコンピュータ緊急対応チーム (CERT) のウェブサイト (http://www.cert.org) などのバグ追跡とセキュリティ関連のウェブサイトに情報を公表します。これらの仕組みはセキュリティの脆弱性に対してコミュニティに警告する効果的な方法ですが、早急にシステムにパッチをあてるかどうかはシステム管理者次第です。なぜなら、クラッカーも同様にこれら脆弱性追跡サービスにアクセスしており、その情報を使用してパッチしていないシステムがあればいつでもクラッキングを行なうためです。有能なシステム管理者は警戒心を怠らず、絶えずバグ追跡を行ない、より安全なコンピュータ環境を確保するために適切なシステムメンテナンスを行ないます。
Refer to 「セキュリティの更新」 for more information about keeping a system up-to-date.

45.3.3.3. 怠慢な管理者

Administrators who fail to patch their systems are one of the greatest threats to server security. According to the System Administration Network and Security Institute (SANS), the primary cause of computer security vulnerability is to "assign untrained people to maintain security and provide neither the training nor the time to make it possible to do the job."[13] This applies as much to inexperienced administrators as it does to overconfident or amotivated administrators.
サーバーやワークステーションにパッチをあてることを怠る管理者もいれば、システムのカーネルやネットワーク通信からのログメッセージの監視を怠る管理者もいます。また、もうひとつ一般的な誤りは、サービスのデフォルトパスワードまたはデフォルト鍵を変更しないまま放置することです。例えば、デフォルトの管理パスワードを持っているデーターベースがありますが、これは、インストール後すぐにシステム管理者がパスワードを変更するだろうとそのデータベースの開発者が仮定しているためです。データベース管理者がこのパスワード変更を怠ると、経験のないクラッカーであっても周知のデフォルトパスワードを使ってデータベースへの管理用特権を獲得することができてしまいます。これらは管理者の不注意が糸口となってサーバーの感染につながるほんの 2、3 の例にすぎません。

45.3.3.4. 本質的に不安定なサービス

選択したネットワークサービスが本質的に不安定であれば、どんなに用心深い企業や組織であっても攻撃を受けやすい犠牲者となるかもしません。例えば、信頼できるネットワークで使用されることを仮定して開発された多くのサービスがあります。しかし、そのサービスがインターネット上で利用可能になると、この仮定条件は該当しなくなってしまいます — つまり、インターネット自身が本質的に信頼できないからです。
あるタイプの不安定なネットワークサービスは認証に暗号化されていないユーザー名とパスワードを要求します。 Telnet と FTP がこの種のサービスになります。パケットスニフィングソフトウェアがリモートユーザーとこのようなサービス間の通信を監視している場合、ユーザー名やパスワードは簡単に傍受されてしまいます。
Inherently, such services can also more easily fall prey to what the security industry terms the man-in-the-middle attack. In this type of attack, a cracker redirects network traffic by tricking a cracked name server on the network to point to his machine instead of the intended server. Once someone opens a remote session to the server, the attacker's machine acts as an invisible conduit, sitting quietly between the remote service and the unsuspecting user capturing information. In this way a cracker can gather administrative passwords and raw data without the server or the user realizing it.
Another category of insecure services include network file systems and information services such as NFS or NIS, which are developed explicitly for LAN usage but are, unfortunately, extended to include WANs (for remote users). NFS does not, by default, have any authentication or security mechanisms configured to prevent a cracker from mounting the NFS share and accessing anything contained therein. NIS, as well, has vital information that must be known by every computer on a network, including passwords and file permissions, within a plain text ASCII or DBM (ASCII-derived) database. A cracker who gains access to this database can then access every user account on a network, including the administrator's account.
By default, Red Hat Enterprise Linux is released with all such services turned off. However, since administrators often find themselves forced to use these services, careful configuration is critical. Refer to 「サーバーセキュリティ」 for more information about setting up services in a safe manner.

45.3.4. ワークステーションと家庭用 PC のセキュリティに対する脅威

Workstations and home PCs may not be as prone to attack as networks or servers, but since they often contain sensitive data, such as credit card information, they are targeted by system crackers. Workstations can also be co-opted without the user's knowledge and used by attackers as "slave" machines in coordinated attacks. For these reasons, knowing the vulnerabilities of a workstation can save users the headache of reinstalling the operating system, or worse, recovering from data theft.

45.3.4.1. 不適当なパスワード

Bad passwords are one of the easiest ways for an attacker to gain access to a system. For more on how to avoid common pitfalls when creating a password, refer to 「パスワードのセキュリティ」.

45.3.4.2. 攻撃を受けやすいクライアントアプリケーション

Although an administrator may have a fully secure and patched server, that does not mean remote users are secure when accessing it. For instance, if the server offers Telnet or FTP services over a public network, an attacker can capture the plain text usernames and passwords as they pass over the network, and then use the account information to access the remote user's workstation.
SSH などの安全なプロトコールを使用していても、リモートユーザーがクライアントアプリケーションを定期的に更新していない場合、特定の攻撃者から攻撃を受けやすいかもしれません。例えば、 v.1 SSH クライアントは悪意ある SSH サーバーからの X 転送攻撃に弱いなどです。サーバーに接続すると、攻撃者はネットワークを介してクライアントのキーストロークやマウスのクリックをそっと捕獲します。この問題は v.2 SSH プロトコールで修正されましたが、どのアプリケーションがこのような脆弱性を持ち、また必要に応じて更新していくかはユーザー次第となります。
「ワークステーションセキュリティ」 discusses in more detail what steps administrators and home users should take to limit the vulnerability of computer workstations.

45.4. よくある不正アクセスと攻撃

表45.1「よくある不正アクセス」 details some of the most common exploits and entry points used by intruders to access organizational network resources. Key to these common exploits are the explanations of how they are performed and how administrators can properly safeguard their network against such attacks.
表45.1 よくある不正アクセス
不正アクセス 詳細 注記
空白またはデフォルトのパスワード 管理用パスワードを空白のままにしたり、製品ベンダー設定のデフォルトパスワードをそのまま使用したりすることは、ルーターやファイアウォールなどのハードウェアで最もよく見られますが、 Linux 上で動作するサービスにはデフォルトの管理者用パスワードが入っているものがあるかもしれません (Red Hat Enterprise Linux 5 では、パスワードをつけたまま出荷していません)。
通常ネットワーキングハードウェアに関連しているものには、ルーター、ファイアウォール、 VPN 、及びネットワーク付属ストレージ (NAS) などがあります。
レガシー (伝統的) オペレーティングシステム、特に (UNIX や Windows のなど) 、サービスをバンドルしている OS に共通しています
管理者は、時には急いで特権ユーザーアカウントを作成し、パスワードのない状態にすることがありますが、これはこのアカウントを見つけた悪意のあるユーザーには絶好の入り口になります。
デフォルトの共有鍵 安全なサービスは時として、開発や査定テストの目的でデフォルトのセキュリティ鍵をパッケージにしていることがあります。これらの鍵を変更せずにインターネット上の実稼働環境で配置した場合、同じデフォルトの鍵を持つユーザーは 全て その共有鍵のリソースや、そこにあるすべての機密情報にアクセス権を有することになります。
ワイヤレスポイントと事前設定のセキュアサーバーアプライアンスで最も一般的なことです。
IP Spoofing (なりすまし) A remote machine acts as a node on your local network, finds vulnerabilities with your servers, and installs a backdoor program or Trojan horse to gain control over your network resources.
スプーフィング (なりすまし) には、攻撃者が目的のシステムへの接続を確立するのに TCP/IP SYN-ACK 番号を予測することが要求されるため、かなり困難ですが、そのような脆弱性のクラックに使用できる数種類のツールがあります。
IP Spoofing は、ssh あるいは SSL/TLS で使用されている PKI や他の形式の暗合化認証と比較する場合に推奨できない ソースベース の認証技術を使用するサービス (rshtelnet、 FTP 、その他) を 稼動しているターゲットシステムにより決定されます。
盗聴 2つのノード間接続を盗聴することによりネットワーク上でそのアクティブなノード間が交わすデータを収集することです。
この種の攻撃は多くの場合、 Telnet 、 FTP 、 HTTP 転送のような平文送信プロトコルで機能します。
遠隔攻撃者は、このような攻撃を実践するのに LAN 上の偽性となるシステムへアクセスを持つ必要があります。通常その攻撃者は、 LAN 上の偽性システムへアクティブ攻撃 (IP spoofing や man-in-the-middle (中間者攻撃)など) を使用することになります。
防止対策としては、暗合図式化鍵交換 (cryptographic key exchange) 、1回のみ使用のパスワード、又は、暗合化認証を使用してパスワード盗聴を防止する方法などがあります。また、送信中に強力な暗合化の使用が推奨されます。
サービスの脆弱性 攻撃者はインターネット上で実行するサービスの弱点や盲点を発見します。この脆弱性を利用して、攻撃者はそのシステム全体そして格納されているデータをすべて感染させ、ネットワーク上の他のシステムをも感染させる可能性があります。
HTTP-based services such as CGI are vulnerable to remote command execution and even interactive shell access. Even if the HTTP service runs as a non-privileged user such as "nobody", information such as configuration files and network maps can be read, or the attacker can start a denial of service attack which drains system resources or renders it unavailable to other users.
Services sometimes can have vulnerabilities that go unnoticed during development and testing; these vulnerabilities (such as buffer overflows, where attackers crash a service using arbitrary values that fill the memory buffer of an application, giving the attacker an interactive command prompt from which they may execute arbitrary commands) can give complete administrative control to an attacker.
管理者はサービスが root ユーザーとして実行されないことを確認し、 CERT 及び CVE などのベンダーやセキュリティ組織からのアプリケーション用のパッチや errata 更新に目を光らせておく必要があります。
アプリケーションの脆弱性 Attackers find faults in desktop and workstation applications (such as e-mail clients) and execute arbitrary code, implant Trojan horses for future compromise, or crash systems. Further exploitation can occur if the compromised workstation has administrative privileges on the rest of the network.
ワークステーションとデスクトップは、操作者が侵害を防止したり検出したりする技能や経験を持たない為、より多く悪用の対称となります。彼らが認可のないソフトウェアをインストールしたり、要求していない電子メールの添附ファイルを開いたりする場合には、各個人に対し、そのリスクを警告することが絶対に必要です。
電子メールソフトウェアが自動的に添附ファイルを開いたり、実行したりしないようにすると安全対策の実施となります。更には、 Red Hat Network 又はシステム管理サービス経由のワークステーションソフトウェアの自動更新は、複数席のセキュリティ配備作業負担を軽減してくれます。
サービス停止攻撃 (DoS=Denial of Service) Attacker or group of attackers coordinate against an organization's network or server resources by sending unauthorized packets to the target host (either server, router, or workstation). This forces the resource to become unavailable to legitimate users.
2000 年にはアメリカ内で報告されたケースの多くは、 DoS (サービス否定攻撃) でした。いくつかの大量通信の商用、及び政府サイトが、 zombies や転送ブロードキャストノード等の高広帯幅接続で数種の侵害システムを使用した「ping」洪水攻撃をしかけることで使用不可能にされています。
ソースパケットは通常、擬装 (更にブロードキャスト) されており、その攻撃の本来のソースの検証を困難にします。
iptables を使用したイングレスフィルタリング (ingress filtering) (IETF rfc2267) と snort などの Network IDSes の向上が、管理者の DoS 攻撃の分布の追跡や防止を支援します。

45.5. セキュリティの更新

セキュリティの脆弱性が発見された場合、セキュリティ上の危険を最小限に抑えるために、影響を受けるソフトウェアを更新する必要があります。そのソフトウェアが Red Hat Enterprise Linux 製品に入っているパッケージの一部で、現在サポートされている場合、 Red Hat, Inc. では、できる限り早急に脆弱性を修正する更新パッケージをリリースすることに献身しています。多くの場合、特定のセキュリティ不正アクセスに関する告知にはパッチ (または問題を解決するソースコード) が付いています。このパッチをその Red Hat Enterprise Linux パッケージに適用します。パッチは Red Hat 品質保証チームによって検証され、エラータ更新としてリリースされています。もしも、告知にパッチが付いていない場合は、 Red Hat の開発者がそのソフトウェアのメインテナーと共に問題の解決にあたっています。問題解決後に、パッケージをテストして、エラータ更新としてリリースします。
システムで使用しているソフトウェア用のエラータ更新がリリースされたら、影響を受けるパッケージをできるだけ早く更新し、システムが攻撃を受けやすくなる期間を最小限に抑えることを強くおすすめします。

45.5.1. パッケージを更新する

システムのソフトウェアを更新する場合は、信頼できるソースから更新をダウンロードすることが重要です。攻撃者は簡単に、問題を解決するはずのパッケージと同じバージョン番号を使いながら、これに別のセキュリティ不正アクセスを付けてパッケージを構築し直し、インターネットでリリースすることができます。こうした事態が発生した場合、オリジナルの RPM に対してファイルを検証するなどのセキュリティ手段では不正アクセスは検知されません。従って、Red Hat, Inc. などの信頼できるソースからのみ RPM をダウンロードし、パッケージの署名を確認してその整合性を確かめることが非常に重要となります。
Red Hat ではエラータ更新に関して 2 通りの取得方法を提供しています:
  1. Red Hat Network でのエラータ一覧があり、ダウンロード可能
  2. Red Hat エラータ web サイト上のエラータ一覧があり、リンクなし

注記

Red Hat Enterprise Linux 製品ラインでは、更新パッケージのダウンロードは Red Hat Network からのみになります。 Red Hat エラータウェブサイトで更新情報が掲載されますがダウンロードできる実際のパッケージはありません。

45.5.1.1. Using Automatic Updates with RHN Classic

Warning: Deprecate Feature

Automatic system updates are only available using RHN Classic, which basis subscription consumption on access to content repository channels. RHN Classic is available as a convenience for customer environments with legacy systems which have not updated to Certificate-Based Red Hat Network.
The update and content stream is different for Certificate-Based Red Hat Network, so automatic updates are not used.
The new Certificate-Based Red Hat Network and the differences between Certificate-Based Red Hat Network and RHN Classic are described in 14章Product Subscriptions and Entitlements.
RHN Classic allows the majority of the update process to be automated. It determines which RPM packages are necessary for the system, downloads them from a secure repository, verifies the RPM signature to make sure they have not been tampered with, and updates them. The package install can occur immediately or can be scheduled during a certain time period.
RHN Classic requires a system profile for each machine, which contains hardware and software information about the system. This information is kept confidential and is not given to anyone else. It is only used to determine which errata updates are applicable to each system, and, without it, RHN Classic can not determine whether a given system needs updates. When a security errata (or any type of errata) is released, RHN Classic sends an email with a description of the errata as well as a list of systems which are affected. To apply the update, use the Red Hat Update Agent or schedule the package to be updated through the RHN Classic Subscription Management area of the Customer Portal.

重要

Before installing any security errata, be sure to read any special instructions contained in the errata report and execute them accordingly. Refer to 「変更を適用する」 for general instructions about applying the changes made by an errata update.

45.5.1.2. Red Hat エラータウェブサイトを使用

When security errata reports are released, they are published on the Red Hat Errata website available at http://www.redhat.com/security/. From this page, select the product and version for your system, and then select security at the top of the page to display only Red Hat Enterprise Linux Security Advisories. If the synopsis of one of the advisories describes a package used on your system, click on the synopsis for more details.
詳細ページには、セキュリティ不正アクセスについての解説と、セキュリティの欠陥を修正するパッケージ更新と同時に行なう必要がある特別の指示について記載されています。
To download the updated package(s), click on the link to login to Red Hat Network, click the package name(s) and save to the hard drive. It is highly recommended that you create a new directory, such as /tmp/updates, and save all the downloaded packages to it.

45.5.1.3. 署名パッケージの検証

すべての Red Hat Enterprise Linux パッケージは Red Hat, Inc. の GPG キーで署名されています。GPG とは GNU Privacy Guard または GnuPG の略で、配信ファイルの正真性を保証するために使用されるフリーソフトフェアパッケージです。例えば、 Red Hat が保持するプライベートキー (秘密鍵) はパッケージをロックし、パブリックキーはパッケージのロックを外して検証します。 Red Hat が 配信するパブリックキーが RPM 検証中にプライベートキーと合致しない場合、そのパッケージは変更が加えられている可能性があるため信用できません。
Red Hat Enterprise Linux の RPM ユーティリティは自動的に RPM パッケージの GPG 署名の検証を試みてからそれをインストールします。 Red Hat の GPG 鍵がインストールされていない場合は、 Red Hat Enterprise Linux インストール CD-ROM などの安全で静的な場所からインストールしてください。
Assuming the CD-ROM is mounted in /mnt/cdrom, use the following command to import it into the keyring (a database of trusted keys on the system):
rpm --import /mnt/cdrom/RPM-GPG-KEY-redhat-release
RPM 検証用としてインストールされたすべての鍵の一覧を表示するには、次のコマンドを実行します。
rpm -qa gpg-pubkey*
Red Hat 鍵の場合、出力は以下のようになります:
gpg-pubkey-37017186-45761324
To display details about a specific key, use the rpm -qi command followed by the output from the previous command, as in this example:
rpm -qi gpg-pubkey-37017186-45761324
RPM をインストールする前に、 RPM ファイルの署名の検証を行なうことは極めて重要なことです。これにより RPM のパッケージリリースに改変が加えられていないことを確認します。ダウンロードしたパッケージすべてを一度に検証するには、次のコマンドを発行します:
rpm -K /tmp/updates/*.rpm
For each package, if the GPG key verifies successfully, the command returns gpg OK. If it doesn't, make sure you are using the correct Red Hat public key, as well as verifying the source of the content. Packages that do not pass GPG verifications should not be installed, as they may have been altered by a third party.
GPG 鍵の検証とエラータ報告に関連するすべてのパッケージのダウンロードを終了したら、シェルプロンプトでルートとしてこれらのパッケージをインストールします。

45.5.1.4. 署名パッケージをインストールする

次のコマンドを発行すると、ほとんどのパッケージのインストールを安全に行うことができます (カーネルパッケージを除く)。
rpm -Uvh /tmp/updates/*.rpm
カーネルパッケージの場合には、次のコマンドを使用します。
rpm -ivh /tmp/updates/<kernel-package>
Replace <kernel-package> in the previous example with the name of the kernel RPM.
新しいカーネルを使用してマシンが安全にリブートされたら、次のコマンドを使用して古いカーネルを削除することができます。
rpm -e <old-kernel-package>
Replace <old-kernel-package> in the previous example with the name of the older kernel RPM.

注記

古いカーネルを削除する必要性はありません。デフォルトのブートローダ GRUB では、複数のカーネルをインストールしてから、ブート時にメニューから選ぶことができます。

重要

Before installing any security errata, be sure to read any special instructions contained in the errata report and execute them accordingly. Refer to 「変更を適用する」 for general instructions about applying the changes made by an errata update.

45.5.1.5. 変更を適用する

Red Hat Network、または Red Hat のエラータウェブサイトからセキュリティエラータをダウンロードしてインストールしたら、古いソフトウェアの使用を中止し、新しいソフトウェアの使用を開始することが大切です。どのようにするかは更新したソフトウェアの種類によります。以下の一覧では、ソフトウェアの全般カテゴリを項目別に分け、パッケージアップグレード後の更新バージョンの使用方法について説明します。

注記

全般的には、ソフトウェアパッケージの最新バージョンが使用されていることを確認するには、システムをリブートするのが一番確実な方法です。しかし、システム管理者の場合、常にこの方法がとれるとは限りません。
アプリケーション
ユーザースペースアプリケーションとは、システムのユーザーが開始できるすべてのプログラムのことです。一般的に、このようなアプリケーションはユーザー、スクリプト、自動化タスクユーティリティなどによって起動されたときのみ使用され、持続し続けるものではありません。
こうしたユーザースペースのアプリケーションを更新したら、システムのアプリケーションすべてのインスタンスを中止し、もう一度そのプログラムを起動し直し更新したバージョンを使用します。
カーネル
カーネルは Red Hat Enterprise Linux オペレーティングシステムの核となるソフトウェアコンポーネントです。カーネルはメモリ、プロセッサ、周辺機器などへのアクセスを管理する他、すべてのタスクをスケジュールします。
中心的な役割を果たすため、カーネルはコンピュータを停止せずには再スタートできません。したがって、カーネルの更新バージョンはシステムがリブートするまで使用できません。
共有ライブラリ
Shared libraries are units of code, such as glibc, which are used by a number of applications and services. Applications utilizing a shared library typically load the shared code when the application is initialized, so any applications using the updated library must be halted and relaunched.
To determine which running applications link against a particular library, use the lsof command as in the following example:
lsof /usr/lib/libwrap.so*
This command returns a list of all the running programs which use TCP wrappers for host access control. Therefore, any program listed must be halted and relaunched if the tcp_wrappers package is updated.
SysV サービス
SysV services are persistent server programs launched during the boot process. Examples of SysV services include sshd, vsftpd, and xinetd.
Because these programs usually persist in memory as long as the machine is booted, each updated SysV service must be halted and relaunched after the package is upgraded. This can be done using the Services Configuration Tool or by logging into a root shell prompt and issuing the /sbin/service command as in the following example:
service <service-name> restart
In the previous example, replace <service-name> with the name of the service, such as sshd.
Refer to 16章ネットワーク設定 for more information on the Services Configuration Tool.
xinetd Services
Services controlled by the xinetd super service only run when a there is an active connection. Examples of services controlled by xinetd include Telnet, IMAP, and POP3.
Because new instances of these services are launched by xinetd each time a new request is received, connections that occur after an upgrade are handled by the updated software. However, if there are active connections at the time the xinetd controlled service is upgraded, they are serviced by the older version of the software.
To kill off older instances of a particular xinetd controlled service, upgrade the package for the service then halt all processes currently running. To determine if the process is running, use the ps command and then use the kill or killall command to halt current instances of the service.
For example, if security errata imap packages are released, upgrade the packages, then type the following command as root into a shell prompt:
ps -aux | grep imap
このコマンドはすべてのアクティブな IMAPセッションを返してきます。これから、個々のセッションを次のコマンドを発行して終了できます。
kill <PID>
これでセッションを終了できない場合、次のコマンドを使用します:
kill -9 <PID>
In the previous examples, replace <PID> with the process identification number (found in the second column of the ps command) for an IMAP session.
すべてのアクティブな IMAPセッションを終了するには、次のコマンドを発行します。
killall imapd

第46章 ネットワークの安全性を図る

46.1. ワークステーションセキュリティ
46.1.1. ワークステーションセキュリティを評価する
46.1.2. BIOS とブートローダのセキュリティ
46.1.3. パスワードのセキュリティ
46.1.4. 管理制御
46.1.5. 利用できるネットワークサービス
46.1.6. パーソナルファイアウォール
46.1.7. セキュリティ強化された通信ツール
46.2. サーバーセキュリティ
46.2.1. TCP ラッパー と xinetd を使用したサービスの安全保護
46.2.2. ポートマップの保護
46.2.3. NIS の保護
46.2.4. NFS 保護
46.2.5. Apache HTTP サーバーの保護
46.2.6. FTP の保護
46.2.7. Sendmail の保護
46.2.8. リッスンするポートの確認
46.3. Single Sign-on (SSO)
46.3.1. 導入
46.3.2. 新しいスマートカードの入門
46.3.3. スマートカードの登録の働き
46.3.4. スマートカードログインの働き
46.3.5. SSO のための Kerberos を使用するための Firefox の設定
46.4. PAM(Pluggable Authentication Modules)
46.4.1. PAM の利点
46.4.2. PAM 設定ファイル
46.4.3. PAM 設定ファイルの形式
46.4.4. PAM 設定ファイルのサンプル
46.4.5. PAM モジュールの作成
46.4.6. PAM と管理用証明書のキャッシュ
46.4.7. PAM およびデバイスの所有権
46.4.8. その他のリソース
46.5. TCP ラッパーと xinetd
46.5.1. TCP Wrappers
46.5.2. TCP ラッパーの設定ファイル
46.5.3. xinetd
46.5.4. xinetd 設定ファイル
46.5.5. その他のリソース
46.6. Kerberos
46.6.1. Kerberosとは?
46.6.2. Kerberosの用語
46.6.3. Kerberosの機能
46.6.4. Kerberos と PAM
46.6.5. Keberos 5サーバーの設定
46.6.6. Kerberos 5クライアントの設定
46.6.7. Domain-to-Realm Mapping
46.6.8. Setting Up Secondary KDCs
46.6.9. Setting Up Cross Realm Authentication
46.6.10. その他のリソース
46.7. Virtual Private Networks (VPNs)
46.7.1. VPN の仕組の説明
46.7.2. VPN と Red Hat Enterprise Linux
46.7.3. IPsec
46.7.4. IPsec 接続の作成
46.7.5. IPsec インストール
46.7.6. IPsec ホスト間 (Host-to-Host) 設定
46.7.7. IPsec ネットワーク間 (Network-to-Network) 設定
46.7.8. IPsec 接続の開始と停止
46.8. Firewalls
46.8.1. Netfilter と IPTables
46.8.2. 基本的なファイアウォールの設定
46.8.3. IPTables の使い方
46.8.4. 一般的な IPTables フィルタリング
46.8.5. FORWARDNAT のルール
46.8.6. 悪意あるソフトウェアとなりすまし IP アドレス
46.8.7. IPTables と接続トラッキング
46.8.8. IPv6
46.8.9. その他のリソース
46.9. IPTables
46.9.1. パケットフィルタリング
46.9.2. IPTables と IPChains との相違
46.9.3. IPTable 用のコマンドオプション
46.9.4. IPTables 規則の保存
46.9.5. IPTables 制御スクリプト
46.9.6. IPTables と IPv6
46.9.7. その他のリソース

46.1. ワークステーションセキュリティ

Linux 環境のセキュリティはワークステーションから始まります。パーソナルマシンのロックにも、企業システムのセキュリティにも、建前なセキュリティポリシーは個々のコンピュータから始まると言って良いでしょう。つまるところ、コンピュータネットワークは、その最も弱いノードのセキュリティしか持たないことになります。

46.1.1. ワークステーションセキュリティを評価する

Red Hat Enterprise Linux ワークステーションのセキュリティを評価する場合、次の点を考慮します:
  • BIOS とブートローダのセキュリティ — 許可のないユーザーが物理的にマシンにアクセスし、シングルユーザーモードでブートする、またはパスワードなしにレスキューモードでブートすることができますか?
  • パスワードのセキュリティ — マシンのユーザーアカウントパスワードはどのくらい安全ですか?
  • 管理制御 — 誰がシステム上にアカウントを有していますか、そしてどの程度の管理制御を持っていますか?
  • 利用できるネットワークサービス — どのサービスがネットワークからの要求をリスニングしていますか、また、常時稼動していますか?
  • パーソナルファイアウォール — ファイアウォールがある場合、どの種類のファイアウォールが必要ですか?
  • セキュリティ強化された通信ツール — ワークステーション間での通信に使用すべきツール、使用すべきではないツールは?

46.1.2. BIOS とブートローダのセキュリティ

BIOS (または、 BIOS に相当するもの) 及びブートローダのパスワード保護で、システムに物理的にアクセスできる許可のないユーザーが、リムーバブルメディアを使用してブートしたり、シングルユーザーモードで root 権限を取得してブートするのを防ぐことができます。セキュリティ対策として、ワークステーションが保持する情報の機密度やマシンの設置場所の両方に従って、このような攻撃に対して防護するものを採用します。
For example, if a machine is used in a trade show and contains no sensitive information, then it may not be critical to prevent such attacks. However, if an employee's laptop with private, unencrypted SSH keys for the corporate network is left unattended at that same trade show, it could lead to a major security breach with ramifications for the entire company.
一方、許可のある人や信頼できる人しかアクセスできない場所にワークステーションが配置されている場合、 BIOS やブートローダにセキュリティを施行する必要はないかもしれません。

46.1.2.1. BIOS パスワード

以下に、コンピュータの BIOS を保護するパスワードに関する 2 つの主な理由を示します [14]:
  1. BIOS 設定への変更を防止する — 侵入者が BIOS にアクセスした場合、ディスケットや CD-ROM からブートすることができます。これにより、侵入者はレスキューモードないしはシングルユーザーモードで入り込むことが可能になり、そしてシステムに勝手なプログラムを埋めこんだり、機密データをコピーすることができるようになってしまいます。
  2. システムのブートを防止する — BIOS のなかには、ブートプロセスのパスワード保護ができるものがあります。起動すると、攻撃者は BIOS がブートローダを起動する前にパスワードの入力を強要されます。
Because the methods for setting a BIOS password vary between computer manufacturers, consult the computer's manual for specific instructions.
BIOS パスワードを忘れてしまった場合、マザーボード上のジャンパでリセットするか、 CMOS バッテリを取り外すことができます。このため、できればコンピュータケースをロックするようにした方がよいでしょう。ただし、 CMOS バッテリを外す前に、コンピュータまたはマザーボードのマニュアルを参照してください。
46.1.2.1.1. x86 以外のプラットフォームにセキュリティを施行する
他のアーキテクチャは異なるプログラムを使って、 x86 システムの BIOS にほぼ値する低レベルのタスクを実行します。例えば、 Intel® Itanium™ のコンピュータは EFI (Extensible Firmware Interface) シェルを使用します。
For instructions on password protecting BIOS-like programs on other architectures, refer to the manufacturer's instructions.

46.1.2.2. ブートローダのパスワード

以下に、 Linux ブートローダを保護する為のパスワードの主な理由を示します:
  1. シングルユーザーモードヘのアクセスを防止する— 攻撃者がシングルユーザーモードでブートできる場合、 root パスワードを要求されずに自動的に root ユーザーとしてログインできます。
  2. GRUB コンソールヘのアクセスを防止する — マシンが GRUB をそのブートローダとして使用する場合、攻撃者は GRUB エディタインターフェースを使用してその設定を変更したり、 cat コマンドを使って情報を収集することができます。
  3. セキュアでないオペレーティングシステムへのアクセスを防止する — デュアルブートシステムである場合、攻撃者はブート時にアクセス制御やファイルパーミッションを無視するオペレーティングシステム (例: DOS など) を選択することができます。
x86 プラットフォーム用に Red Hat Enterprise Linux で配付される GRUB ブートローダ。 GRUB の詳細については、 Red Hat インストレーションガイドを参照してください:
46.1.2.2.1. GRUB を保護するパスワード
You can configure GRUB to address the first two issues listed in 「ブートローダのパスワード」 by adding a password directive to its configuration file. To do this, first choose a strong password, open a shell, log in as root, and then type the following command:
grub-md5-crypt
パスワードを要求されたら、 GRUB パスワードを入力して エンター を押します。パスワードの MD5 ハッシュを返してきます。
次に、 GRUB の設定ファイル /boot/grub/grub.conf を編集します。ファイルを開き、ドキュメントのメインセクションにある timeout 行の下に次の行を追加します。
password --md5 <password-hash>
Replace <password-hash> with the value returned by /sbin/grub-md5-crypt[15].
次回システムが起動すると、 GRUB メニューは、最初に p を押してその後に GRUB パスワードを入れないと、エディタやコマンドインターフェースへのアクセスを許可しなくなります。
残念ながら、このソリューションでは、デュアルブート環境でのセキュアではないオペレーティングシステムへ攻撃者がブートするのを防止しません。このため、 /boot/grub/grub.conf ファイルの別の部分を編集する必要があります。
セキュアにしたいオペレーティングシステムの title 行を探して、そのすぐ下に lock という行を追加します。
DOS システムなら、節は次のように始まります:
title DOS lock

警告

この方法が正常に機能するためには、 password 行が /boot/grub/grub.conf ファイルのメインセクションに表示されていなければなりません。これがないと、攻撃者は GRUB エディタインターフェースにアクセスして lock 行を削除できることになります。
特定のカーネルまたはオペレーティングシステム用に別のパスワードを作成するには、その節に lock 行とその後にパスワード行を付けて追加します。
固有のパスワードで保護された各節は、以下の例のような始まりになります:
title DOS lock password --md5 <password-hash>

46.1.3. パスワードのセキュリティ

Passwords are the primary method that Red Hat Enterprise Linux uses to verify a user's identity. This is why password security is so important for protection of the user, the workstation, and the network.
セキュリティの目的で、インストールプログラムはシステムが メッセージダイジェストアルゴリズム (MD5) とシャドーパスワードを使用するよう設定します。これらの設定を変更しないようお願いいたします。
MD5 パスワードがインストール中にはずされる場合、古い Data Encryption Standard (DES) 形式が使われます。この形式はパスワードを 8 文字の英数字パスワードに制限し (句読点及び他の特殊文字は受け付けない)、適度な 56 ビットレベルの暗号化を提供します。
If shadow passwords are deselected during installation, all passwords are stored as a one-way hash in the world-readable /etc/passwd file, which makes the system vulnerable to offline password cracking attacks. If an intruder can gain access to the machine as a regular user, they can copy the /etc/passwd file to their own machine and run any number of password cracking programs against it. If there is an insecure password in the file, it is only a matter of time before the password cracker discovers it.
シャドーパスワードは、パスワードハッシュを /etc/shadow ファイルに格納して、この種の攻撃を排除します。これは、 root ユーザーによってのみ読み取り可能です。
This forces a potential attacker to attempt password cracking remotely by logging into a network service on the machine, such as SSH or FTP. This sort of brute-force attack is much slower and leaves an obvious trail as hundreds of failed login attempts are written to system files. Of course, if the cracker starts an attack in the middle of the night on a system with weak passwords, the cracker may have gained access before dawn and edited the log files to cover their tracks.
In addition to format and storage considerations is the issue of content. The single most important thing a user can do to protect their account against a password cracking attack is create a strong password.

46.1.3.1. 強固なパスワードを作成する

堅固なパスワードを作成する際は、次のようなガイドラインに従うとよいでしょう。
  • 単語または数字だけを使わない — パスワードに数字だけ、または単語だけを使用しないようにしてください。
    次のような例は危険です:
    • 8675309
    • juan
    • hackme
  • わかりやすい単語は使わない — 固有名、辞書にあるような単語、テレビ番組や小説に出て来るような言葉などは避けてください。これらの末尾に数字を付けただけのものも使用しないでください。
    次のような例は危険です:
    • john1
    • DS-9
    • mentat123
  • 外国語の単語を使わない — パスワードクラッキングプログラムは、数多の言語の辞書に含まれた単語リストでチェックします。堅固なパスワードとして外国語に頼っても意味がありません。
    次のような例は危険です:
    • cheguevara
    • bienvenido1
    • 1dumbKopf
  • ハッカー用語を使わない — パスワードにハッカー用語 —l337 (LEET) とも呼ばれる — を使えるからエリートだと考えるなら、もう一度考えなおしてみてください。多くの単語一覧には LEET が含まれています。
    次のような例は危険です:
    • H4X0R
    • 1337
  • 個人情報を使わない — パスワードには個人の情報は一切使わないでください。攻撃者がユーザーの身元を知っている場合、パスワードを推測するのはより簡単なことになります。パスワードを作成する際に避けるべき情報の種類を以下に一覧表示します:
    次のような例は危険です:
    • ユーザーの名前
    • ペットの名前
    • 家族の名前
    • 誕生日
    • ユーザーの電話番号や郵便番号
  • わかりやすい単語を逆さにして使わない — 優秀なパスワードチェッカーは常に一般的な単語を逆さにしてみますから、悪い例のパスワードを逆さにしても堅固なパスワードにはなりません。
    次のような例は危険です:
    • R0X4H
    • nauj
    • 9-DS
  • パスワードを記録しない — 紙などにパスワードを書いておかないようにしてください。記憶しておく方がずっと安全です。
  • すべてのマシンに同じパスワードを使わない — それぞれのマシンごとに異なるパスワードを作成することが重要です。この方法だと、ひとつのシステムが感染しても、他のマシンがすぐには危険な状態になりません。
以下のガイドラインを使用すれば、強靭なパスワードの作成を手伝ってくれます:
  • パスワードは少くとも 8 文字の長さにする — パスワードが長ければ長いほど堅固です。 MD5 パスワードを使う場合は、 15 文字以上にしてください。 DES パスワードの場合は最大長にします (8文字)。
  • 大文字と小文字を組み合わせる — Red Hat Enterprise Linux は大文字と小文字を区別するので、パスワードの強度を高めるために大文字と小文字を組み合わせて使います。
  • 文字と数字を組み合わせる — パスワードに数字を入れると、特に中間に入れると (先頭または末尾ではなく) 、パスワードの強度が増します。
  • Include Non-Alphanumeric Characters — Special characters such as &, $, and > can greatly improve the strength of a password (this is not possible if using DES passwords).
  • 憶えられるパスワードを選ぶ — どんなに堅固なパスワードであっても憶えられなければ役に立ちません。略語や憶えやすいデバイスを使ってパスワードを忘れないようにします。
これらすべてのルールを考慮して、悪い例のパスワードを使わないようにしながら、これらの基準すべてに合うようして、堅固なパスワードを作成するのは難しいことのように思えます。しかし幸運にも、憶えやすい堅固なパスワードを生成することができる手順があります。
46.1.3.1.1. 堅固なパスワードの作成体系
堅固なパスワードを作成するのに使われる方法は数多くあります。なかでも人気のある方法のひとつが略語です。例えば:
  • 憶えやすい言回しを使います。例えば:
    "over the river and through the woods, to grandmother's house we go."
  • 次に、略語に変換します (句読点を入れる)。
    otrattw,tghwg.
  • 略語の文字を数字やシンボルに置き換えて複雑にします。例えば、 7t の代わりに置き換えて、 @a の代わりに置き換えます:
    o7r@77w,7ghwg.
  • さらに複雑にするために、少くとも 1 文字を大文字に変えます、例えば H など。
    o7r@77w,7gHwg.
  • 最後に、上記に紹介したパスワードの例をそのまま使わないでください
堅固なパスワードを作成することは避けられないことですが、そのパスワードを適切に管理することも重要です。大規模の企業におけるシステム管理者にとっては特に重要になります。次のセクションでは、企業においてユーザーのパスワードを作成/管理するための実践について説明していきます。

46.1.3.2. 企業内のユーザーのパスワードを作成する

企業内にかなりの数のユーザーがいる場合、システム管理者にとって強固なパスワードを使用させるための 2 つの基本オプションがあります。管理者がユーザーのパスワードを作成する、またはユーザーに自分のパスワードを作成させ、その後そのパスワードが条件を満たすものになっているか確認します。
ユーザーの代わりにパスワードを作成すると確実にパスワードを堅固なものにできますが、企業が大きくなるにつれ厄介な作業となってきます。また、ユーザーがそのパスワードをどこかに書き留めてしまう危険も増します。
これらの理由から、システム管理者はユーザーに自分のパスワードを作成させる方を好みますが、積極的にパスワードが堅固であるか確認し、場合によっては、一定期間経過したパスワードはパスワードエージングで定期的に変更させるようにします。
46.1.3.2.1. 堅固なパスワードを作成させる
To protect the network from intrusion it is a good idea for system administrators to verify that the passwords used within an organization are strong ones. When users are asked to create or change passwords, they can use the command line application passwd, which is Pluggable Authentication Manager (PAM) aware and therefore checks to see if the password is too short or otherwise easy to crack. This check is performed using the pam_cracklib.so PAM module. Since PAM is customizable, it is possible to add more password integrity checkers, such as pam_passwdqc (available from http://www.openwall.com/passwdqc/) or to write a new module. For a list of available PAM modules, refer to http://www.kernel.org/pub/linux/libs/pam/modules.html. For more information about PAM, refer to 「PAM(Pluggable Authentication Modules)」.
パスワードの作成時に行なわれるチェックは、そのパスワードにパスワードクラッキングプログラムを実行するのと同様の効率で、悪いパスワードを発見するわけではないことに注意してください。
Red Hat Enterprise Linux 稼動環境下で動作するパスワードクラッキングプログラムは数多くありますが、オペレーティングシステムと共に配付されているものはありません。以下に人気のあるパスワードクラッキングプログラムのいくつかを簡単な一覧にして示します:

注記

これらのいずれのツールも Red Hat Enterprise Linux には添付されていません。その理由で Red Hat, Inc. でのサポートはありません。
  • John The Ripper — 高速で柔軟なパスワードクラッキングプログラムです。複数の単語リストの使用が可能で、 brutee-force (総当たり) パスワードクラッキングの機能を備えています。オンラインの http://www.openwall.com/john/ で入手可能です。
  • Crack — Perhaps the most well known password cracking software, Crack is also very fast, though not as easy to use as John The Ripper. It can be found online at http://www.openwall.com/john/.
  • SlurpieSlurpieJohn The RipperCrack に似ていますが、複数のコンピュータ上で同時に作動するようデザインされています。配信されているパスワードクラッキング攻撃を作成します。配信されている多くの攻撃セキュリティ評価ツールとともにオンラインの http://www.ussrback.com/distributed.htm にあります。

警告

社内でパスワードをクラックする前に、必ず文書で許可をとってください。
46.1.3.2.2. パスワードエージング
Password aging is another technique used by system administrators to defend against bad passwords within an organization. Password aging means that after a specified period (usually 90 days), the user is prompted to create a new password. The theory behind this is that if a user is forced to change their password periodically, a cracked password is only useful to an intruder for a limited amount of time. The downside to password aging, however, is that users are more likely to write their passwords down.
Red Hat Enterprise Linux 稼動環境下でパスワードエージングの指定に使われている主要なプログラムには、 chage コマンドとグラフィカルな User Manager (system-config-users) アプリケーションの2つがあります。
The -M option of the chage command specifies the maximum number of days the password is valid. For example, to set a user's password to expire in 90 days, use the following command:
chage -M 90 <username>
In the above command, replace <username> with the name of the user. To disable password expiration, it is traditional to use a value of 99999 after the -M option (this equates to a little over 273 years).
インタラクティブモードで chage コマンドを 使用して、複数のパスワードエージングとアカウント詳細を修正することもできます。以下のコマンドを使用してインタラクティブモードに入ります:
chage <username>
このコマンドの使い方について簡単なインタラクティブのセッションを以下に示します:
~]# chage davido
Changing the aging information for davido
Enter the new value, or press ENTER for the default

        Minimum Password Age [0]: 10
        Maximum Password Age [99999]: 90
        Last Password Change (YYYY-MM-DD) [2006-08-18]:
        Password Expiration Warning [7]:
        Password Inactive [-1]:
        Account Expiration Date (YYYY-MM-DD) [1969-12-31]:
~]#
chage に関して、利用できるオプションの詳細情報はその man ページを参照して下さい。
以下のように、パスワードエージングポリシーを作成するのに、グラフィカル User Manager を使用することもできます。注記: この手順を実行するのに、 Administrator 権限が必要です。
  1. パネル上の システム メニューをクリックし、 Administration を選び、ユーザーマネージャを表示するのに ユーザーとグループ をクリックしてください。代わりに、シェルプロンプトで system-config-users 入力することもできます。
  2. ユーザー タブをクリックして、ユーザーのリストから必要なユーザーを選択してください。
  3. ユーザープロパティダイアログボックスを表示するには、ツールバー上の プロパティ をクリックしてください (または、 ファイル メニューの プロパティ を選択してください)。
  4. パスワード情報 タブをクリックして、 パスワード失効を有効にする ためにチェックボックスを選択します。
  5. 変更までに必要な期限日数 フィールドに必要な値を入力し、 OK をクリックしてください。
パスワードエージングオプションを指定する
パスワード情報 タブ画面のイラスト
図46.1 パスワードエージングオプションを指定する

For more information about user and group configuration (including instructions on forcing first time passwords), refer to 35章ユーザーとグループ.

46.1.4. 管理制御

When administering a home machine, the user must perform some tasks as the root user or by acquiring effective root privileges via a setuid program, such as sudo or su. A setuid program is one that operates with the user ID (UID) of the program's owner rather than the user operating the program. Such programs are denoted by an s in the owner section of a long format listing, as in the following example:
-rwsr-xr-x    1 root     root        47324 May  1 08:09 /bin/su

注記

s は、大文字でも、小文字でも通用します。大文字で出た場合、背後にある権限ビットは設定されていないという意味です。
For the system administrators of an organization, however, choices must be made as to how much administrative access users within the organization should have to their machine. Through a PAM module called pam_console.so, some activities normally reserved only for the root user, such as rebooting and mounting removable media are allowed for the first user that logs in at the physical console (refer to 「PAM(Pluggable Authentication Modules)」 for more information about the pam_console.so module.) However, other important system administration tasks, such as altering network settings, configuring a new mouse, or mounting network devices, are not possible without administrative privileges. As a result, system administrators must decide how much access the users on their network should receive.

46.1.4.1. root アクセスを許可する

企業内のユーザーが信頼できるコンピュータ知識の豊富な人達ばかりなら、 root アクセスの許可を与えるのは問題ではないでしょう。ユーザーに root アクセスを許可することで、デバイスの追加やネットワークインターフェースの設定などはユーザー個人で行なうことができるため、システム管理者はネットワークセキュリティや他の重要な問題の処理に時間を取ることができます。
一方、 root アクセスを個別のユーザーに与えると次のような問題の原因となる可能性があります (一部の例):
  • マシンの誤設定 — root アクセスを持つユーザーが彼らのマシンの設定を誤って助けが必要になったり、悪くすると知らずにセキュリティホールを作ってしまうことがあります。
  • セキュアではないサービスを実行する — root アクセスを持つユーザーが彼らのマシン上で FTP や Telnet などのセキュアではないサービスを実行してしまい、ネットワーク上でユーザー名やパスワードを危険に曝してしまう可能性があります。これらのサービスはネットワーク上で情報を平文で送信してしまいます。
  • root で電子メールの添付ファイルを実行する — 稀れですが、 Linux に影響をおよぼす電子メールウィルスが存在します。ただし、これらウィルスが危険なのは、 root ユーザーで実行したときのみです。

46.1.4.2. root アクセスを禁止する

If an administrator is uncomfortable allowing users to log in as root for these or other reasons, the root password should be kept secret, and access to runlevel one or single user mode should be disallowed through boot loader password protection (refer to 「ブートローダのパスワード」 for more information on this topic.)
The following are four different ways that an administrator can further ensure that root logins are disallowed:
Changing the root shell
To prevent users from logging in directly as root, the system administrator can set the root account's shell to /sbin/nologin in the /etc/passwd file.
表46.1 root シェルを使用禁止にする
効果 対象外
Prevents access to the root shell and logs any such attempts. The following programs are prevented from accessing the root account:
  • login
  • gdm
  • kdm
  • xdm
  • su
  • ssh
  • scp
  • sftp
Programs that do not require a shell, such as FTP clients, mail clients, and many setuid programs. The following programs are not prevented from accessing the root account:
  • sudo
  • FTP clients
  • Email clients

Disabling root access via any console device (tty)
To further limit access to the root account, administrators can disable root logins at the console by editing the /etc/securetty file. This file lists all devices the root user is allowed to log into. If the file does not exist at all, the root user can log in through any communication device on the system, whether via the console or a raw network interface. This is dangerous, because a user can log in to their machine as root via Telnet, which transmits the password in plain text over the network.
By default, Red Hat Enterprise Linux's /etc/securetty file only allows the root user to log in at the console physically attached to the machine. To prevent the root user from logging in, remove the contents of this file by typing the following command at a shell prompt as root:
echo > /etc/securetty
To enable securetty support in the KDM, GDM, and XDM login managers, add the following line:
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
to the files listed below:
  • /etc/pam.d/gdm
  • /etc/pam.d/gdm-autologin
  • /etc/pam.d/gdm-fingerprint
  • /etc/pam.d/gdm-password
  • /etc/pam.d/gdm-smartcard
  • /etc/pam.d/kdm
  • /etc/pam.d/kdm-np
  • /etc/pam.d/xdm

警告

空白の /etc/securetty ファイルは、認証までコンソールが開かないため、 OpenSSH ツールセットを使う遠隔からの root ユーザーログインは 防ぎません
表46.2 root ログインを使用禁止にする
効果 対象外
コンソール又は、ネットワーク経由での root アカウントへのアクセスを防止します。以下のプログラムは root アカウントへのアクセスを防止されています:
  • login
  • gdm
  • kdm
  • xdm
  • Other network services that open a tty
Programs that do not log in as root, but perform administrative tasks through setuid or other mechanisms. The following programs are not prevented from accessing the root account:
  • su
  • sudo
  • ssh
  • scp
  • sftp

Disabling root SSH logins
To prevent root logins via the SSH protocol, edit the SSH daemon's configuration file, /etc/ssh/sshd_config, and change the line that reads:
#PermitRootLogin yes
次のように変更します。
PermitRootLogin no
表46.3 root SSH ログインを使用禁止にする
効果 対象外
ツールの OpenSSH セットを経由して root アクセスを防止します。以下のプログラムは root アカウントヘのアクセスを防止されています::
  • ssh
  • scp
  • sftp
Programs that are not part of the OpenSSH suite of tools.

Using PAM to limit root access to services
PAM, through the /lib/security/pam_listfile.so module, allows great flexibility in denying specific accounts. The administrator can use this module to reference a list of users who are not allowed to log in. To limit root access to a system service, edit the file for the target service in the /etc/pam.d/ directory and make sure the pam_listfile.so module is required for authentication.
The following is an example of how the module is used for the vsftpd FTP server in the /etc/pam.d/vsftpd PAM configuration file (the \ character at the end of the first line is not necessary if the directive is on a single line):
auth   required   /lib/security/pam_listfile.so   item=user \
 sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
これは、 PAM に対し /etc/vsftpd.ftpusers ファイルを参照して、記載されているユーザーすべてに対してサービスへのアクセスを拒否するように指示します。管理者はこのファイルの名前は変更しても構いません。そして各サービスの一覧を別々に保持したり、複数のサービスへのアクセスを拒否するために1つの中央一覧を使うこともできます。
管理者が複数のサービスへのアクセスを拒否したい場合、メールクライアント用の /etc/pam.d/pop/etc/pam.d/imap 、あるいは SSH クライアント用の /etc/pam.d/ssh などの PAM 設定サービスに、似たような行を加えることができます。
For more information about PAM, refer to 「PAM(Pluggable Authentication Modules)」.
表46.4 PAM を使う root を使用禁止にする
効果 対象外
Prevents root access to network services that are PAM aware. The following services are prevented from accessing the root account:
  • login
  • gdm
  • kdm
  • xdm
  • ssh
  • scp
  • sftp
  • FTP clients
  • Email clients
  • Any PAM aware services
PAM 認識ではないプログラムとサービス

46.1.4.3. root アクセスを制限する

root ユーザーへアクセスを完全に拒否する代わりに、管理者は susudo などの setuid プログラムからのアクセスのみを許可すると良いでしょう。
46.1.4.3.1. su コマンド
su コマンドを入力すると、ユーザーは root パスワードを求められ、認証された後で root シェルプロンプトが与えられます。
su コマンドからログインすると、ユーザーは root ユーザー であり 、システムに対して絶対的な管理アクセス権を持ちます。 [16] さらに、ユーザーが root になると、パスワードを求められることなく su コマンドを使ってシステム上の他のユーザーになることが可能になります。
このプログラムは非常に強力であるため、企業内の管理者はそのコマンドへのアクセスを持つ人を限定したいことがあるかもしれません。
これを行なう簡単な方法は、ユーザーを wheel と呼ばれる特殊管理グループに追加することです。追加するには、 root になり次のコマンドを入力します。
usermod -G wheel <username>
In the previous command, replace <username> with the username you want to add to the wheel group.
以下のように、グループメンバーシップを変更するために User Manager も使用することができます。注記: この手順を実行するのに、 Administrator 権限が必要です。
  1. パネル上の システム メニューをクリックし、 Administration を選び、ユーザーマネージャを表示するのに ユーザーとグループ をクリックしてください。代わりに、シェルプロンプトで system-config-users 入力することもできます。
  2. ユーザー タブをクリックして、ユーザーのリストから必要なユーザーを選択してください。
  3. ユーザープロパティダイアログボックスを表示するには、ツールバー上の プロパティ をクリックしてください (または、 ファイル メニューの プロパティ を選択してください)。
  4. Click the Groups tab, select the check box for the wheel group, and then click OK. Refer to 図46.2「Adding users to the "wheel" group.」.
  5. 次に、 su (/etc/pam.d/su) の PAM 設定ファイルをテキストエディタで開き、以下の行から # コメントを削除します。
    auth  required /lib/security/$ISA/pam_wheel.so use_uid
    これを行なうと、管理グループ wheel のメンバーだけにそのプログラムの使用を許可します。
Adding users to the "wheel" group.
グループ タブ画面の図
図46.2 Adding users to the "wheel" group.

注記

デフォルトでは、 root ユーザーは wheel グループのメンバーです。
46.1.4.3.2. sudo コマンド
sudo コマンドでは、ユーザーに管理アクセスを与えるもう1つの方法を提供しています。信頼できるユーザーが管理コマンドに sudo を先に付けて実行すると、このユーザーは 自身の パスワードを要求されます。その後、認証され、そのコマンドが許可されれば、管理コマンドは root ユーザーで行なわれたかのように実行されます。
sudo コマンドの基本形式は次のようになります:
sudo <command>
In the above example, <command> would be replaced by a command normally reserved for the root user, such as mount.

重要

sudoer は 5 分間パスワードを求められることなく再度そのコマンドを使用できるため、 sudo コマンドのユーザーは、マシンから離れる前にログアウトするよう十分に気をつける必要があります。このセッティングは設定ファイルの /etc/sudoers から変更できます。
The sudo command allows for a high degree of flexibility. For instance, only users listed in the /etc/sudoers configuration file are allowed to use the sudo command and the command is executed in the user's shell, not a root shell. This means the root shell can be completely disabled, as shown in 「root アクセスを禁止する」.
The sudo command also provides a comprehensive audit trail. Each successful authentication is logged to the file /var/log/messages and the command issued along with the issuer's user name is logged to the file /var/log/secure.
sudo コマンドのもうひとつの利点は、管理者が必要に応じて特定コマンドに別々のユーザーアクセスを許可することができることです。
sudo 設定ファイルの /etc/sudoers を編集する管理者は、 visudo コマンドを使用してください。
誰かに完全な管理権限を与えるには、 visudo を入力してからユーザーの権利指定セクションで以下のような行を追加します。
juan ALL=(ALL) ALL
この例では、ユーザ juan がどのホストからも sudo を使用してどのコマンドも実行できるように決めています。
下記の例は sudo を設定する際に、以下のように特定コマンドを設定できます。
%users  localhost=/sbin/shutdown -h now
この例では、コンソールでならいずれのユーザーも /sbin/shutdown -h now コマンドを発行できるように決めています。
sudoers の man ページにはこのファイル用オプションの詳細一覧が記述されています。

46.1.5. 利用できるネットワークサービス

管理制御へのユーザーアクセスが企業のシステム管理者にとって重要な問題である一方、アクティブになっているネットワークサービスを監視することは、 Linux システムを動作させて管理する人すべてにとって非常に重要なことになります。
Red Hat Enterprise Linux 稼動環境下にある多くのサービスはネットワークサービスとして動作します。ネットワークサービスがマシン上で稼動している場合、 デーモン と呼ばれるサーバーアプリケーションは1つまたは複数のネットワークポートで接続をリスニングしています。これらの各サーバーは攻撃される可能性のある通路として考えるべきでしょう。

46.1.5.1. サービスへの危険性

ネットワークサービスは Linux システムにとって多くの危険性をもたらします。以下に主な問題のいくつかを一覧で示します。
  • サービス停止攻撃 (DoS) — 要求でサービスを溢れさせることにより、サービス停止攻撃は、システムがこの各要求すべてをログして応答するようにさせ、そのシステムを使用不可にします。
  • スクリプトの脆弱性攻撃 — 一般的に Web サーバーがするように、サーバーがサーバー側の動作を実行するためにスクリプトを使用している場合、クラッカーは貧弱な書き方のスクリプトに攻撃を加えることができます。これらのスクリプトの脆弱性への攻撃は、バッファのオーバーフロー状態を招いたり、攻撃者にシステム上のファイルを改変させてしまうことになる恐れがあります。
  • バッファのオーバーフロー攻撃 — ポート番号 0 から 1023 へ接続するサービスは管理ユーザーとして実行しなければなりません。アプリケーションに侵害可能なバッファオーバーフローがある場合、攻撃者はデーモン実行中のユーザーとしてシステムにアクセス権を得ることができます。これは侵害可能なバッファオーバーフローがあると、クラッカーは自動ツールを使用して脆弱性のあるシステムを識別することができ、一度アクセス権を取得すると、自動 root キットを使ってシステムへのアクセスを維持するからです。

注記

Red Hat Enterprise Linux では、バッファオーバーフローの脆弱性への脅威は ExecShield で軽減されています。これは、実行可能なメモリ分割と x86-互換のシングル及びマルチプロセッサーカーネルでサポートされる保護技術です。 ExecShield は仮想メモリを実行可能と非実行可能な部分に分割することでバッファオーバーフローのリスクを軽減します。実行可能部分外で実行しようとするプログラムコード (バッファオーバーフロー悪用で投入された悪意のあるコードなど) は分割化失敗を発生し、終了します。
Execshield には、 AMD64 プラットフォーム上の No eXecute (NX) 技術と Itanium 及び Intel® EM64T システム上の eXecute Disable (XD) 技術へのサポートが含まれます。これらの技術は ExecShield と共に機能して悪意のあるコードが実行可能コードの 4kb 区分を持つ仮想メモリの実行可能部分で実行するのを防止して、見えないバッファオーバーフローの悪用からの攻撃のリスクを低減します。

Tip

ネットワーク上で攻撃を受ける可能性を制限するには、使用していないサービスを全てオフにしてください。

46.1.5.2. サービスを識別して設定する

セキュリティを強化する為に、 Red Hat Enterprise Linux でインストールされているほとんどのネットワークサービスはデフォルトでオフになっています。但し、幾つか例外があります:
  • cupsd — Red Hat Enterprise Linux 用のデフォルトの印刷サーバー
  • lpd — 代替の印刷サーバー
  • xinetdgssftptelnet など、従属サーバー群への接続を制御するスーパーサーバーです。
  • sendmail — デフォルトでは、 Sendmail Mail Transport Agent (メールトランスポートエージェント) (MTA) が有効になっていますが、 localhost からの接続のみリスニングします。
  • sshd — Telnet のセキュアな代替となる OpenSSH サーバー
これらのサービスを実行したままにしておくかどうかを決めるときは、常識を持って判断し、注意しすぎる位がベストです。例えば、プリンタが利用できない場合には cupsd を実行したままにしておかないようにします。 portmap についても同じです。 NFSv3 ボリュームをマウントしなかったり NIS (ypbind サービス) を使用しない場合には、 portmap は無効にしてください。
Red Hat Enterprise Linux ships with three programs designed to switch services on or off. They are the Services Configuration Tool (system-config-services), ntsysv, and chkconfig. For information on using these tools, refer to 17章サービスへのアクセスの制御.
Services Configuration Tool
Services Configuration Tool イラストレーション
図46.3 Services Configuration Tool

If unsure of the purpose for a particular service, the Services Configuration Tool has a description field, illustrated in 図46.3「Services Configuration Tool, that provides additional information.
Checking which network services are available to start at boot time is only part of the story. You should also check which ports are open and listening. Refer to 「リッスンするポートの確認」 for more information.

46.1.5.3. 不安定なサービス

Potentially, any network service is insecure. This is why turning off unused services is so important. Exploits for services are routinely revealed and patched, making it very important to regularly update packages associated with any network service. Refer to 「セキュリティの更新」 for more information.
ネットワークプロトコルの中には他に比べて本質的にセキュアでないものがあります。以下のようなサービスはいずれもこれに該当します:
  • 暗号化していないユーザー名とパスワードをネットワーク上で渡す — Telnet や FTP など、多くの旧式プロトコルは認証セッションを暗号化しないので、できるだけ避けてください。
  • Transmit Sensitive Data Over a Network Unencrypted — Many protocols transmit data over the network unencrypted. These protocols include Telnet, FTP, HTTP, and SMTP. Many network file systems, such as NFS and SMB, also transmit information over the network unencrypted. It is the user's responsibility when using these protocols to limit what type of data is transmitted.
    また、 netdump のようなリモートメモリダンプサービスもネットワーク上で暗号化していないメモリの内容を渡します。メモリダンプにはパスワード、ときにはデータベースのエントリや他の機密情報なども含まれていることがあります。
    finger 及び rwhod のような他のサービスは、システムのユーザーに関する情報を明かしてしまいます。
本質的に安全度の低いサービスの例としては、rloginrshtelnetvsftpd があります。
All remote login and shell programs (rlogin, rsh, and telnet) should be avoided in favor of SSH. Refer to 「セキュリティ強化された通信ツール」 for more information about sshd.
FTP is not as inherently dangerous to the security of the system as remote shells, but FTP servers must be carefully configured and monitored to avoid problems. Refer to 「FTP の保護」 for more information about securing FTP servers.
十分に注意して実装すると共に、ファイアウォールの後に配置すべきサービスには以下のようなものがあります:
  • finger
  • authd (これは以前の Red Hat Enterprise Linux リリースではidentd と呼ばれていました。)
  • netdump
  • netdump-server
  • nfs
  • rwhod
  • sendmail
  • smb (Samba)
  • yppasswdd
  • ypserv
  • ypxfrd
More information on securing network services is available in 「サーバーセキュリティ」.
次のセクションでは、シンプルなファイアウォールを設定するのに利用できるツールについて説明します。

46.1.6. パーソナルファイアウォール

必要な ネットワークサービスを設定したら、ファイアウォールを実装することが重要です。

重要

先ず、必要なサービスの設定とファイヤーウォールを実装して、 それから インターネットやその他の信頼できないネットワークに接続する必要があります。
Firewalls prevent network packets from accessing the system's network interface. If a request is made to a port that is blocked by a firewall, the request is ignored. If a service is listening on one of these blocked ports, it does not receive the packets and is effectively disabled. For this reason, care should be taken when configuring a firewall to block access to ports not in use, while not blocking access to ports used by configured services.
For most users, the best tool for configuring a simple firewall is the graphical firewall configuration tool which ships with Red Hat Enterprise Linux: the Security Level Configuration Tool (system-config-securitylevel). This tool creates broad iptables rules for a general-purpose firewall using a control panel interface.
Refer to 「基本的なファイアウォールの設定」 for more information about using this application and its available options.
For advanced users and server administrators, manually configuring a firewall with iptables is probably a better option. Refer to 「Firewalls」 for more information. Refer to 「IPTables」 for a comprehensive guide to the iptables command.

46.1.7. セキュリティ強化された通信ツール

インターネットの規模や普及率の拡大に準じて、通信妨害の脅威も増しつつあります。通信はネットワーク上で交信されるため、長年にわたって通信を暗号化するツールが開発されています。
Red Hat Enterprise Linux では2つの基本ツールが配付されており、これらのツールはレベルの高い、公開鍵暗号ベース暗号化アルゴリズムを使用して、ネットワーク上を移動する情報を保護します。
  • OpenSSH — ネットワーク通信の暗号化用 SSH プロトコルのフリーな実装
  • Gnu Privacy Guard (GPG) — データ暗号化用 PGP (Pretty Good Privacy) 暗号化アプリケーションのフリーな実装
OpenSSH はリモートマシンにアクセスするためのより安全な方法で、 telnetrsh などのように旧式で暗号化されないサービスに代わります。 OpenSSH には sshd と呼ばれるネットワークサービスと3つのコマンドラインクライアントアプリケーションが含まれます。
  • ssh — 安全なリモートコンソールアクセスクライアント
  • scp — 安全なリモートコピーコマンド
  • sftp — インタラクティブなファイル転送セッションを可能にする安全な pseudo-ftp クライアント

重要

Although the sshd service is inherently secure, the service must be kept up-to-date to prevent security threats. Refer to 「セキュリティの更新」 for more information.
GPG はプライベートな電子メールを守る1つの方法です。公開ネットワーク上で機密データを電子メール送信するのにも、ハードドライブ上で機密データを保護するのにも使用できます。

46.2. サーバーセキュリティ

システムが公共ネットワーク上でサーバーとして使用される場合,攻撃の対象になります。このため、システムの強化とサービスのロックダウンはシステム管理者にとって最も重要となります。
特定の問題について調べる前に、次にあげるサーバーのセキュリティ強化に関する一般的なヒントを再検討してください。:
  • すべてのサービスを更新して、最新の攻撃手段などから保護して下さい。
  • できる限り安全なプロトコールを使用します。
  • できる限りマシン1台につき1タイプのネットワークサービスのみ供給します。
  • 不審な行為がないか注意してすべてのサーバーを監視します。

46.2.1. TCP ラッパー と xinetd を使用したサービスの安全保護

TCP ラッパー はさまざまなサービスにアクセス制御を提供します。 SSH、 Telnet、 FTP などの殆んどの最新ネットワークサービスは TCP ラッパーを使用します。 TCP ラッパーは受信要求と要求されたサービスの間で防護の役割を果たします。
TCP ラッパーによる利点は、追加アクセス、ロギング、バインド、リダイレクト、リソースの利用制御などを提供するスーパーサービス、 xinetd と関連付けて使用すると増強されます。

Tip

It is a good idea to use iptables firewall rules in conjunction with TCP Wrappers and xinetd to create redundancy within service access controls. Refer to 「Firewalls」 for more information about implementing firewalls with iptables commands.
Refer to 「TCP ラッパー」 for more information on configuring TCP Wrappers and xinetd.
次のサブセクションでは各トピックの基本知識があることを想定し、特定のセキュリティオプションに焦点を置いています。

46.2.1.1. TCP ラッパーを使ってセキュリティを強化

TCP ラッパーはサービスへのアクセスを拒否する以外にも多くの機能があります。このセクションでは接続バナーの送信、特定ホストからの攻撃警告、ロギング機能の向上などを行なうための使用方法を説明しています。 TCP ラッパーの機能と制御言語の詳細情報は hosts_options の man ページを参照してください。
46.2.1.1.1. TCP ラッパーと接続バナー
ユーザーが1つのサービスに接続する時に適切なバナーを表示するのは、想定攻撃者に対して管理者が警戒していることを知らせる良い手段です。また、ユーザーに提供される情報を制御することも可能です。サービスの TCP ラッパーバナーを実行するには、 banner オプションを使用します。
この例では、 vsftpd のバナーを実行しています。まず、バナーファイルを作成します。ファイルはシステムのどこに格納されても構いませんが、デーモンと同じ名前でなければなりません。この例では、ファイル名を /etc/banners/vsftpd とし、以下の行を含みます:
220-Hello, %c
220-All activity on ftp.example.com is logged.
220-Inappropriate use will result in your access privileges being removed.
%c トークンは、ユーザー名とホスト名、あるいはユーザー名と IP アドレスなどのさまざまなクライアント情報を供給してその接続をさらに威嚇的にします。
受信接続に対してこのバナーを表示するには、次の行を /etc/hosts.allow ファイルに追加します:
vsftpd : ALL : banners /etc/banners/
46.2.1.1.2. TCP ラッパーと攻撃警告
サーバーを攻撃しているホストまたはネットワークが検知された場合、 TCP ラッパーは spawn ディレクティブを使用して、そのホストまたはネットワークからのその後の攻撃を管理者に警告することができます。
この例では、 206.182.68.0/24 ネットワークからのクラッカーがサーバーの攻撃を試みて感知されています。 /etc/hosts.deny ファイルに以下の行を入力すると、そのネットワークからの接続試行は拒否されその試みは特別なファイルにログされます。
ALL : 206.182.68.0 : spawn /bin/ 'date' %c %d >> /var/log/intruder_alert
%d トークンは攻撃者がアクセスを試みたサービスの名前を提供します。
接続とログを許可するには spawn 指令を /etc/hosts.allow ファイルに配置します。

注記

spawn ディレクティブがシェルコマンドを実行するため、特定のクライアントがサーバーへの接続を試みた場合、特別なスクリプトを作成して管理者に知らせるか、連続のコマンドを実行するようにします。
46.2.1.1.3. TCP ラッパーと向上したロギング
特定の接続タイプが他の接続タイプより懸念される場合、 severity オプションを介してそのサービスのログレベル上げることができます。
この例で FTP サーバー上のポート 23 (Telnet ポート) に接続を試みている者はクラッカーだとします。クラッカーだと示すためにはデフォルトの info フラグの代わりに emerg フラグをログファイルに配置し、接続を拒否します。
これを実行するには次の行を /etc/hosts.deny に配置します:
in.telnetd : ALL : severity emerg
これはデフォルトの authpriv ロギング機構を使用しますが、 info のデフォルト値から、ログメッセージを直接コンソールに置く emerg に優先度を上げます。

46.2.1.2. xinetd でセキュリティーを強化する

このセクションでは xinetd での trap サービス設定や如何なる xinetd サービスにでも利用可能なリソースレベルの制御の為の使用に焦点を置きます。サービスにリソース制限を設定することは Denial of Service (サービス停止攻撃) (DoS) の防御に役に立ちます。使用可能オプションの詳細一覧は xinetdxinetd.conf の man ページをご参照下さい。
46.2.1.2.1. trap の設定
xinetd の重要機能の1つとしてグローバル no_access リストへのホスト追加機能があげられます。このリストに掲載されているホストは特定の期間、又は xinetd が再起動するまで xinetd が管理するサービスへの接続を拒否されます。これは SENSOR 属性を使用することにより達成されます。サーバーのポートスキャンを試みるホストをブロックする簡単な方法です。
SENSOR 設定の第一歩として利用予定のないサービスを選択します。この例では Telnet が使用されています。
/etc/xinetd.d/telnet ファイルを編集し、 flags の行を次の通り変更します:
flags           = SENSOR
次の行を追加します:
deny_time       = 30
これによりポートへ接続を試みるホストは30分間拒否されます。その他 deny_time 属性に使用可能な値として、 xinetd が再起動されるまで接続を拒否する FOREVER や接続を許可しログする NEVER があります。
そして、下記ラインを最後のラインとして下さい:
disable         = no
これがトラップ自身を有効にします。
SENSOR を使用することにより極悪なホストを検出し、接続を拒否することができますが、難点が 2 つほどあります:
  • SENSOR はステルススキャンには対応できません。
  • SENSOR が実行されていることを知る攻撃者は、 IP アドレスを偽造し、アクセス禁止ポートに接続することで、特定のホストに対してサービス停止攻撃を仕掛けることができます。
46.2.1.2.2. サーバーリソースの管理
xinetd のもう1つの重要な機能は、その管理下のサービスが使用するリソース量を制御する能力です。
この機能は下記ディレクティブを使って実行されます:
  • cps = <number_of_connections> <wait_period> — Limits the rate of incoming connections. This directive takes two arguments:
    • <number_of_connections> — The number of connections per second to handle. If the rate of incoming connections is higher than this, the service is temporarily disabled. The default value is fifty (50).
    • <wait_period> — The number of seconds to wait before re-enabling the service after it has been disabled. The default interval is ten (10) seconds.
  • instances = <number_of_connections> — Specifies the total number of connections allowed to a service. This directive accepts either an integer value or UNLIMITED.
  • per_source = <number_of_connections> — Specifies the number of connections allowed to a service by each host. This directive accepts either an integer value or UNLIMITED.
  • rlimit_as = <number[K|M]> — Specifies the amount of memory address space the service can occupy in kilobytes or megabytes. This directive accepts either an integer value or UNLIMITED.
  • rlimit_cpu = <number_of_seconds> — Specifies the amount of time in seconds that a service may occupy the CPU. This directive accepts either an integer value or UNLIMITED.
このようなディレクティブを使用することにより、サービス停止の原因となる単独の xinetd によるシステム過大負荷を防止します。

46.2.2. ポートマップの保護

portmap サービスは NIS や NFS など RPC サービス向けのダイナミックなポート指定デーモンです。脆弱な認証メカニズムのうえ、管理下のサービスに広範囲なポートを指定する機能を持ち合わせているため、保護するのは困難です。

注記

portmap を保護することは、 NFSv4 では必要ない為、単に NFSv2 と NFSv3 の実装に影響するだけです。 NFSv2 と NFSv3 サーバーを実装する予定であれば、 portmap が必要となり、以下のセクションが適用されます.
RPS サービスを実行している時は、次の基本ルールを守って下さい。

46.2.2.1. portmap をTCP ラッパーで保護する

portmap サービスには内蔵の認証形式がないため、 TCP ラッパーを使用し、このサービスへアクセス可能なネットワークやホストを制限することが重要になります。
更に、サービスのアクセスを制限する時は IP アドレスのみを使用して下さい。 DNS poisoning などによって偽造される可能性のため、ホストネームは使用しないで下さい。

46.2.2.2. portmap を IPTables で保護する

portmap サービスへのアクセスを更に規制するには、 iptables ルールをサーバーに追加し、特定ネットワークへのアクセスを規制するとよいでしょう。
192.168.0.0/24 ネットワークとローカルホスト (Nautilus が使用する sgi_fam サービスに必要) から portmap (ポート 111 でリッスン)への TCP 接続を許可する IPTables コマンドの 2 例を下記に説明しています。
iptables -A INPUT -p tcp -s! 192.168.0.0/24 --dport 111 -j DROP
iptables -A INPUT -p tcp -s 127.0.0.1 --dport 111 -j ACCEPT
同様に UDP トラフィックを制限するには、下記コマンドを使用して下さい。
iptables -A INPUT -p udp -s! 192.168.0.0/24 --dport 111 -j DROP

Tip

Refer to 「Firewalls」 for more information about implementing firewalls with iptables commands.

46.2.3. NIS の保護

The Network Information Service (NIS) is an RPC service, called ypserv,--> which is used in conjunction with portmap and other related services to distribute maps of usernames, passwords, and other sensitive information to any computer claiming to be within its domain.
NIS サーバーは下記を含むいくつかのアプリケーションによって構成されます。:
  • /usr/sbin/rpc.yppasswddyppasswdd サービスとも呼ばれます。このデーモンはユーザーの NIS パスワード変更を許可します。
  • /usr/sbin/rpc.ypxfrdypxfrd サービスとも呼ばれるデーモンで、 NIS マップをネットワーク上で転送します。
  • /usr/sbin/yppush — このアプリケーションは NIS データベースの変更を複数の NIS サーバーに伝搬します。
  • /usr/sbin/ypserv — これが NIS サーバーのデーモンです。
NIS is somewhat insecure by today's standards. It has no host authentication mechanisms and transmits all of its information over the network unencrypted, including password hashes. As a result, extreme care must be taken when setting up a network that uses NIS. This is further complicated by the fact that the default configuration of NIS is inherently insecure.
It is recommended that anyone planning to implement an NIS server first secure the portmap service as outlined in 「ポートマップの保護」, then address the following issues, such as network planning.

46.2.3.1. ネットワーク計画は慎重に

NIS は機密情報を暗号化しないままネットワーク上に配信するため、安全で、セグメント化されたネットワーク上のファイヤウォールの裏でサービスを実行することが重要です。 NIS の情報が安全でないネットワーク上で配信されるたび、妨害を受けるリスクにさらされます。慎重なネットワーク設計をすることが重大なセキュリティー侵害の防止につながります。

46.2.3.2. パスワードのような NISドメイン名やホスト名を使用

Any machine within an NIS domain can use commands to extract information from the server without authentication, as long as the user knows the NIS server's DNS hostname and NIS domain name.
例えば、誰かがノート型 PCをネットワークに接続するか、外部からネットワークに侵入し、うまく内部 IP アドレスをごまかした場合、下記コマンドで /etc/passwd マップを確認することができます:
ypcat -d <NIS_domain> -h <DNS_hostname> passwd
この攻撃者がルートユーザである場合、次のコマンドを入力すると /etc/shadow ファイルを入手することができます:
ypcat -d <NIS_domain> -h <DNS_hostname> shadow

注記

Kerberos が使用された場合、 /etc/shadow ファイルには NIS マップには保存されません。
攻撃者による NIS マップへのアクセスを困難にするため、 o7hfawtgmhwg.domain.com のように無作為な DNS ホスト名を設定して下さい。同様に、 異なる 無作為な NIS ドメイン名を設定して下さい。これで、攻撃者による NIS サーバーへのアクセスは一層困難になります。

46.2.3.3. /var/yp/securenets ファイルを編集する

/var/yp/securenets ファイルが空か、存在しない場合 (デフォルトインストールの後に相当)、 NIS はすべてのネットワークをリッスンします。最初にすることの1つは、ネットマスクとネットワークのペアをファイルに格納して、 ypserv が正当なネットワークからの要求のみに応答するようにします。
/var/yp/securenets ファイルからのエントリー例は下記の通りです:
255.255.255.0     192.168.0.0

警告

初めて NIS サーバー起動する場合、必ず先に /var/yp/securenets を作成してから始めて下さい。
このテクニックでは IP になりすました攻撃から保護することはできませんが、少なくとも NIS サーバーがサービス提供するネットワークを制限することができます。

46.2.3.4. 静的ポートの割り当てと iptable ルールの使用

NIS に関連した全てのサーバーは rpc.yppasswdd (ユーザーにログインパスワードの変更を許可するデーモン) 以外の特定のポートに割り当てできます。他の NIS サーバーデーモンである rpc.ypxfrdypserv にポートを割り当てると、ファイアウォールルールの作成が可能となり、更に NIS サーバーデーモンを侵入者から守ります。
これを実行するには、以下の行を /etc/sysconfig/network に追加して下さい:
YPSERV_ARGS="-p 834" YPXFRD_ARGS="-p 835"
次の iptable ルールを実行することにより、ポートに対してサーバーがリッスンするネットワークを強制することができます。
iptables -A INPUT -p tcp -s! 192.168.0.0/24 --dport 834 -j DROP
iptables -A INPUT -p tcp -s! 192.168.0.0/24 --dport 835 -j DROP
iptables -A INPUT -p udp -s! 192.168.0.0/24 --dport 834 -j DROP
iptables -A INPUT -p udp -s! 192.168.0.0/24 --dport 835 -j DROP
This means that the server only allows connections to ports 834 and 835 if the requests come from the 192.168.0.0/24 network.

Tip

Refer to 「Firewalls」 for more information about implementing firewalls with iptables commands.

46.2.3.5. Kerberos 認証の使用

ユーザーがコンピューターへログインする時に /etc/shadow マップからのパスワードハッシュがネットワーク上に配信されることが、 NIS を認証に使用する場合に配慮すべき問題の1つだと言えます。侵入者が NIS ドメインにアクセスを得てネットワーク通信をかぎ回ると、ユーザー名とパスワードハッシュを密かに収集することができます。十分な時間があるとパスワードクラッキングプログラムは、貧弱なパスワードを想像できて攻撃者はネットワークの大切なアカウントにアクセス出来てしまいます。
Since Kerberos uses secret-key cryptography, no password hashes are ever sent over the network, making the system far more secure. Refer to 「Kerberos」 for more information about Kerberos.

46.2.4. NFS 保護

The Network File System (NFS) is a service that provides network accessible file systems for client machines. Refer to 20章NFS(ネットワークファイルシステム) for more information about NFS. The following subsections assume a basic knowledge of NFS.

重要

The version of NFS included in Red Hat Enterprise Linux, NFSv4, no longer requires the portmap service as outlined in 「ポートマップの保護」. NFS traffic now utilizes TCP in all versions, rather than UDP, and requires it when using NFSv4. NFSv4 now includes Kerberos user and group authentication, as part of the RPCSEC_GSS kernel module. Information on portmap is still included, since Red Hat Enterprise Linux supports NFSv2 and NFSv3, both of which utilize portmap.

46.2.4.1. ネットワーク計画は慎重に

NFSv4 はネットワーク上で Kerberos を使用して暗号化された情報を送る能力を持っているため、通信がファイヤーウォールの裏側やセグメント化したネットワークに渡る場合はサービスを正確に設定することが重要です。 NFSv2 と NFSv3 はデータを不安全な方法で渡しているため、用心する必要があります。すべての構成で注意深くネットワークをデザインすることが安全侵害を防止するのに役に立ちます。

46.2.4.2. 構文エラーに注意する

ディレクトリを /etc/exports ファイル経由でエキスポートする先のファイルシステムやホストは NFS サーバーが決定します。このファイルを編集する時、無関係な空白を追加しないように気をつけて下さい。
例えば、 /etc/exports ファイルにある次の行は、ホスト bob.example.com に対して読み込み/書き込み権限付で、ディレクトリ /tmp/nfs/を共有します。
/tmp/nfs/     bob.example.com(rw)
/etc/exports ファイルにある以下の行は、ホスト bob.example.com に対して読み取り専用の権限で同じディレクトリを共有します。又、 world に対してはホスト名の後の空白1つによって、読み取り/書き込み権限でディレクトリを共有します。
/tmp/nfs/     bob.example.com (rw)
showmount コマンドを使用し、設定済みの NFS の共有をチェックして、それが正しく共有していることを確認すると良いでしょう:
showmount -e <hostname>

46.2.4.3. no_root_squash オプションは使用しない

デフォルトで、 NFS 共有は特権のないユーザーアカウントである nfsnobody へのルートユーザーを変更します。そこで全てのルート作成によるファイルのオーナーは nfsnobody に変わり、 setuid ビットセットを持つプログラムのアップロードを阻止します。
If no_root_squash is used, remote root users are able to change any file on the shared file system and leave applications infected by Trojans for other users to inadvertently execute.

46.2.5. Apache HTTP サーバーの保護

Apache HTTP サーバーは Red Hat Enterprise Linux で配布される最も安定した、安全なサービスです。 Apache HTTP サーバーには利用できるオプションと技術が数多くあります。 — 多すぎるため、ここでは全てを言及することは避けます。
When configuring the Apache HTTP Server, it is important to read the documentation available for the application. This includes 23章Apache HTTP Server, and the Stronghold manuals, available at http://www.redhat.com/docs/manuals/stronghold/.
以下の設定オプションを使用する場合、システム管理者は注意する必要があります:

46.2.5.1. FollowSymLinks

このディレクティブはデフォルトで有効になっていますので、ウェブサーバーのドキュメントルートにシンボリックリンクを作成する場合は慎重に行なって下さい。例えば、 / にはシンボリックリンクを与えないようにします。

46.2.5.2. Indexes ディレクティブ

このディレクティブはデフォルトで有効になっていますが、望ましい設定ではありません。サーバー上のファイルをビジターが閲覧できなくするにはこのディレクティブを解除して下さい。

46.2.5.3. UserDir ディレクティブ

システムに存在するユーザーアカウントを確認してしまうため、 UserDir ディレクティブはデフォルトで無効となっています。サーバーのユーザーディレクトリ閲覧を有効にするには次のディレクティブを使用して下さい:
UserDir enabled
UserDir disabled root
このようなディレクティブは /root/ 以外の全てのユーザーディレクトリのユーザーディレクトリ閲覧を有効にします。無効アカウントのリストにユーザーを追加する場合は、空白で区切ったユーザーのリストを UserDir disabled 行に追加して下さい。

46.2.5.4. IncludesNoExec ディレクティブは削除しない

デフォルトで、 SSI(Server-Side Includes) モジュールはコマンドを実行できません。攻撃者がシステム上でコマンド実行する恐れがあるので、絶対に必要でない限りはこの設定を変更しないで下さい。

46.2.5.5. 実行可能ディレクトリの許可を制限する

ルートユーザーにはスクリプトや CGI を含むディレクトリの書き込みのみを許可するように確認下さい。これを実行するには、下記のコマンドを入力します:
chown root <directory_name>
chmod 755 <directory_name>

重要

作業を始める に必ずシステムで実行されているスクリプトが全て目的どおり稼動しているか確認して下さい。

46.2.6. FTP の保護

The File Transfer Protocol (FTP) is an older TCP protocol designed to transfer files over a network. Because all transactions with the server, including user authentication, are unencrypted, it is considered an insecure protocol and should be carefully configured.
Red Hat Enterprise Linux は3つの FTP サーバーを提供します。
  • gssftpd — ネットワーク上に認証情報を配信しない、 Kerberos 認知の xinetd ベースの FTP デーモンです。
  • Red Hat Content Accelerator (tux) — FTP 機能を持ち合わせた、カーネルスペースウェブサーバーです。
  • vsftpd — スタンドアローン、セキュリティー指向の FTP サービス実装です。
vsftpd FTP サービス設定のセキュリティーガイドラインは次の通りです。

46.2.6.1. FTP グリーティングバナー

ユーザー名とパスワードを入力する前にグリーティングバナーが表示されます。デフォルトのままではクラッカーがシステムの弱点を発見するのに便利なバージョン情報がこのバナーに含まれています。
vsftpd のグリーティングバナーを変更するには、次のディレクティブを /etc/vsftpd/vsftpd.conf ファイルに追加して下さい:
ftpd_banner=<insert_greeting_here>
Replace <insert_greeting_here> in the above directive with the text of the greeting message.
複数ラインのバナーの場合、バナーファイルの使用が最適です。複数バナーの管理を簡素化するには、バナーを /etc/banners/ という新しいディレクトリに格納します。この例では、 FTP 接続のバナーファイルは /etc/banners/ftp.msg になります。ファイルは下記例のように表示されます:
######### # Hello, all activity on ftp.example.com is logged. #########

注記

It is not necessary to begin each line of the file with 220 as specified in 「TCP ラッパーと接続バナー」.
vsftpd のグリーティングファイルを参照するには、次のディレクティブを /etc/vsftpd/vsftpd.conf ファイルに追加して下さい:
banner_file=/etc/banners/ftp.msg

重要

Make sure that you specify the path to the banner file correctly in /etc/vsftpd/vsftpd.conf, or else every attempt to connect to vsftpd will result in the connection being closed immediately and a 500 OOPS: cannot open banner <path_to_banner_file> error message.
Note that the banner_file directive in /etc/vsftpd/vfsftpd.conf takes precedence over any ftpd_banner directives in the configuration file: if banner_file is specified, then ftpd_banner is ignored.
It also is possible to send additional banners to incoming connections using TCP Wrappers as described in 「TCP ラッパーと接続バナー」.

46.2.6.2. 匿名アクセス

/var/ftp/ ディレクトリの存在が匿名アカウントを有効にします。
このディレクトリを簡単に作成するには vsftpd パッケージをインストールします。このパッケージが匿名ユーザーに対してディレクトリツリーを設定し、匿名ユーザー用にディレクトリを読み取り専用とします。
デフォルトでは匿名ユーザーの書き込み許可は無効となっています。

注意

FTP サーバーへの匿名アクセスを有効とする場合、機密データの保存場所に注意して下さい。
46.2.6.2.1. 匿名アップロード
匿名ユーザーのファイルアップロードを許可する場合、 /var/ftp/pub/ への書き込み専用ディレクトリの作成が推奨されます。
これを実行するには、下記コマンド入力します:
mkdir /var/ftp/pub/upload
次に、匿名ユーザーにディレクトリ内を見せないようにするために、権限を変更して下さい:
chmod 730 /var/ftp/pub/upload
ディレクトリの長いフォーマット一覧は次のように表示されます:
drwx-wx---    2 root     ftp          4096 Feb 13 20:05 upload

警告

匿名ユーザーにディレクトリの読み取りと書き込みを許可する管理者のサーバーは盗難ソフトウェアのレポジトリ化してしまう亊がよくあります。
さらには vsftpd で、次の行を /etc/vsftpd/vsftpd.conf ファイルに追加して下さい:
anon_upload_enable=YES

46.2.6.3. ユーザーアカウント

FTP は安全でないネットワーク上で認証用のユーザー名やパスワードを暗号化しないまま配信してしまうため、ユーザーアカウントからのサーバーへのシステムユーザーアクセス拒否を設定するようお推めします。
vsftpd のユーザーアカウントを無効にするには、次のディレクティブを /etc/vsftpd/vsftpd.conf に追加して下さい:
local_enable=NO
46.2.6.3.1. ユーザーアカウントの制限
To disable FTP access for specific accounts or specific groups of accounts, such as the root user and those with sudo privileges, the easiest way is to use a PAM list file as described in 「root アクセスを禁止する」. The PAM configuration file for vsftpd is /etc/pam.d/vsftpd.
又、各サービスで直接ユーザーアカウントを無効にすることも可能です。
vsftpd の特定のユーザーアカウントを無効にするには /etc/vsftpd.ftpusers にユーザー名を追加して下さい。

46.2.6.4. TCP ラッパーを利用してアクセス管理をする

Use TCP Wrappers to control access to either FTP daemon as outlined in 「TCP ラッパーを使ってセキュリティを強化」.

46.2.7. Sendmail の保護

Sendmail は SMTP (Simple Mail Transport Protocol) を使用して、他の MTA と電子メールクライアントへ、又はデリバリエージェントへ電子メッセージの送信を行うメール転送エージェント (Mail Transport Agent) (MTA) です。トラフィックを暗号化できる MTA も数多くありますが、暗号化できない MTA も多いため、公共ネットワーク上での電子メール送信は内在的に安全性が低いコミュニケーション手段だと言えます。
Refer to 25章電子メール for more information about how email works and an overview of common configuration settings. This section assumes a basic knowledge of how to generate a valid /etc/mail/sendmail.cf by editing the /etc/mail/sendmail.mc and using the m4 command.
Sendmail サーバーの導入を予定している場合は、次にあげる問題に対応して下さい。

46.2.7.1. サービス停止攻撃を制限

電子メールの本質的な問題もあり、断固とした攻撃者は比較的簡単にサーバーをメールで満杯にすることができ、その結果サービス停止を発生させます。 /etc/mail/sendmail.mc 内の次のディレクティブで制限を設定することにより、このようなアタックの効力が制限されます。
  • confCONNECTION_RATE_THROTTLE — 1秒毎のサーバーへの接続可能数です。デフォルトでは Sendmail による接続数制限はありません。接続制限が設定され、接続数が制限に達した場合、新しい接続は遅延されます。
  • confMAX_DAEMON_CHILDREN — サーバーが生成可能な子プロセスの最大数です。デフォルトでは Sendmail による子プロセス生成数の制限はありません。子プロセスの制限が設定され、生成が最大数に達した場合、新しい接続は遅延されます。
  • confMIN_FREE_BLOCKS — サーバーのメール受信に必要な最小フリーブロック数です。デフォルトでは 100 ブロックになっています。
  • confMAX_HEADERS_LENGTH — メッセージヘッダーの最大許容サイズ (バイト単位) です。
  • confMAX_MESSAGE_SIZE — 1メッセージの最大許容サイズ (バイト単位) です。

46.2.7.2. NFS と Sendmail

メールスプールディレクトリ /var/spool/mail/ を NFS 共有ボリュームに格納しないでください。
Because NFSv2 and NFSv3 do not maintain control over user and group IDs, two or more users can have the same UID, and receive and read each other's mail.

注記

Kerberos を使用した NFSv4 では、これは該当しません。それは、 SECRPC_GSS カーネルモジュールが UID ベースの認証を使用しないからです。しかし、 NFS 共有のボリューム上にはメールスプールディレクトリを 置かない ことが良い政策となります。

46.2.7.3. メール専用ユーザー

ローカルユーザーによる Sendmail サーバーの違法使用を防ぐには電子メールプログラムを使用して、メールユーザーのアクセスを Sendmail サーバーに限定するのが最良の方法です。メールサーバー上のシェルアカウントは許可しないで下さい。 /etc/passwd ファイルの全ユーザーシェルは /sbin/nologin に設定して下さい (ルートユーザーは例外)。

46.2.8. リッスンするポートの確認

After configuring network services, it is important to pay attention to which ports are actually listening on the system's network interfaces. Any open ports can be evidence of an intrusion.
ネットワークをリッスンするポートを一覧にする基本的方法は2つあります。信頼性の低い方法としては、 netstat -anlsof -i などのコマンドを入力し、ネットワークスタックをクエリする方法があります。プログラムがネットワークからマシーンに接続せず、何がシステム上で実行されているかを確認する方法のため、信頼性は低いと言えます。そのため、アプリケーションの置換を試みる攻撃者のいいターゲットとなってしまいます。クラッカーは不当なネットワークポートをオープンした場合、 netstatlsof を自分の編集バージョンと入れ換えて、その侵入経路を隠そうとします。
ネットワークをリッスンするポートを確認するより信頼性の高い方法として nmap などのポートスキャナーを使用する方法があります。
コンソールから発信される次のコマンドによってネットワークの TCP 接続をリッスンしているポートを特定することができます:
nmap -sT -O localhost
このコマンドの出力は次のようになります:
Starting nmap 3.55 ( http://www.insecure.org/nmap/ ) at 2004-09-24 13:49 EDT
Interesting ports on localhost.localdomain (127.0.0.1):
(The 1653 ports scanned but not shown below are in state: closed)
PORT      STATE SERVICE
22/tcp    open  ssh
25/tcp    open  smtp
111/tcp   open  rpcbind
113/tcp   open  auth
631/tcp   open  ipp
834/tcp   open  unknown
2601/tcp  open  zebra
32774/tcp open  sometimes-rpc11
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X OS details: Linux 2.5.25 - 2.6.3 or Gentoo 1.2 Linux 2.4.19 rc1-rc7)
Uptime 12.857 days (since Sat Sep 11 17:16:20 2004)
Nmap run completed -- 1 IP address (1 host up) scanned in 5.190 seconds
この出力は、 sunrpc が存在するため、システムが portmap を実行している状態を表示します。しかし、未知のサービスがポート 834 に存在しています。このポートが既知サービスの公式リストと関連しているかどうか調べるには次を入力して下さい:
cat /etc/services | grep 834
このコマンドからの出力はありませんでした。これはポートが指定された範囲 (0 から 1023) にあり、オープンするのにルート接続を必要とし、既知サービスとは関連がないことを示します。
次に netstat 又は lsof を使用し、ポート情報を確認して下さい。 netstat でポート 834 を確認するには、次のコマンドを使用します:
netstat -anp | grep 834
コマンドが次を出力しました:
tcp   0    0 0.0.0.0:834    0.0.0.0:*   LISTEN   653/ypbind
侵入したシステムで内密にポートをオープンするクラッカーは、このコマンドによってそれが発覚することを避けようとするため、 netstat のオープンポートの存在は安心を与えるものです。また、 [p] オプションによって、ポートをオープンしたサービスのプロセス ID (PID) が判明します。このケースでは、オープンポートは portmap サービスと併せて使用される RPC サービスである ypbind (NIS) に属しています。
lsof コマンドはサービスとオープンポートをリンクする機能があるため、同様の情報を netstat に表示します:
lsof -i | grep 834
このコマンドからの出力の関連部分は次のようになります:
ypbind      653        0    7u  IPv4       1319                 TCP *:834 (LISTEN)
ypbind      655        0    7u  IPv4       1319                 TCP *:834 (LISTEN)
ypbind      656        0    7u  IPv4       1319                 TCP *:834 (LISTEN)
ypbind      657        0    7u  IPv4       1319                 TCP *:834 (LISTEN)
このようなツールを使えばマシンで実行されているサービスの状態をかなり明らかにすることができます。また、ツールは柔軟性に富み、ネットワークサービスや設定に関する豊富な情報を提供してくれます。是非 lsofnetstatnmapservices の man ページを参照して下さい。

46.3. Single Sign-on (SSO)

46.3.1. 導入

Red Hat Enterprise Linux SSO の機能は、デスクトップユーザーが入力しなければならないパスワードの回数を減らすことです Red Hat Enterprise Linux いくつかの主要なアプリケーションは、同じ様な基礎にある承認や認証のメカニズムを活用し、ユーザーがログインスクリーンからログインして、その後そのパスワードを入力する必要はありません。これらのアプリケーションは以下で述べていきます。
更に、ユーザーは、ネットワークがないときや (offline mode) ワイヤレスアクセスなどでネットワークの接続に信頼性がないときでも、自分のマシンにログインできます。後者の場合、サービスは低下します。

46.3.1.1. サポートされているアプリケーション

以下のアプリケーションが現在のところ Red Hat Enterprise Linux における統合ログインスキームによりサポートされています:
  • ログイン
  • スクリーンセーバー
  • Firefox と Thunderbird

46.3.1.2. サポートされている認証メカニズム

Red Hat Enterprise Linux 現在のところ、以下の認証メカニズムをサポートしています:
  • Kerberos name/password ログイン
  • スマートカード /PIN ログイン

46.3.1.3. サポートされているスマートカード

Red Hat Enterprise Linux は、 Cyberflex e-gate カードとリーダーでテストされていますが、 Java card 2.1.1 と Global Platform 2.0.1 の仕様に準じているカードや PCSC-lite によりサポートされているリーダーならどれでも正しく機能するはずです。
Red Hat Enterprise Linux も Common Access Cards (CAC) でテストされてきました。 CAC がサポートしているリーダーは、 SCM SCR 331 USB リーダーです。
As of Red Hat Enterprise Linux 5.2, Gemalto smart cards (Cyberflex Access 64k v2, standard with DER SHA1 value configured as in PKCSI v2.1) are now supported. These smart cards now use readers compliant with Chip/Smart Card Interface Devices (CCID).

46.3.1.4. Red Hat Enterprise Linux Single Sign-on の利点

現在は、多くのプロトコルやクレデンシャルを使用する非常に多くのセキュリティメカニズムが存在します。例としては、 SSL、 SSH、 IPsec、および Kerberos などです。 Red Hat Enterprise Linux SSO は、上にリストされた要求をサポートするため、これらのスキーマを統合しようとします。これは、 Kerberos を 509v3 の証明書とリプレイスすることを意味していません。むしろ、それらを統合し、両方のシステムのユーザーやそれらを管理する管理者の負担を減らします。
目的を達成する Red Hat Enterprise Linux:
  • それぞれのオペレーティングシステムで NSS 暗合ライブラリの1つの共有されたインスタンスを提供します。
  • Ships the Certificate System's Enterprise Security Client (ESC) with the base operating system. The ESC application monitors smart card insertion events. If it detects that the user has inserted a smart card that was designed to be used with the Red Hat Enterprise Linux Certificate System server product, it displays a user interface instructing the user how to enroll that smart card.
  • Kerberos と NSS を統合すると、スマートカードを使用してオペレーティングシステムにログインするユーザーは、 Kerberos クレデンシャル (これによりファイルサーバー等へのログインを可能にする) を入手します。

46.3.2. 新しいスマートカードの入門

スマートカードを使用してシステムにログインして、このテクノロジーが提供する増大したセキュリティオプションの利点を得る前に、いくつかのベーシックインストールと設定を行なう必要があります。これらは以下で説明します。

注記

このセクションは、スマートカードでの入門のハイレベルなビューを提供します。より詳細の情報は、 Red Hat Certificate System Enterprise Security Client Guide で入手可能です。
  1. Kerberos の name と password でログインする
  2. nss-tools パッケージがロードされていることを確認してください。
  3. 会社の仕様のルート証明書をダウンロードしてインストールしてください。ルートの CA 証明書をインストールするには、以下のコマンドを使用してください:
    certutil -A -d /etc/pki/nssdb -n "root ca cert" -t "CT,C,C" \
    	-i ./ca_cert_in_base64_format.crt
  4. 以下の RPM がシステムにインストールされていることを確認してください: esc、 pam_pkcs11、 coolkey、 ifd-egate、 ccid、 gdm、 authconfig、 および authconfig-gtk.
  5. スマートカードログインのサポートを有効にする
    1. On the Gnome Title Bar, select System->Administration->Authentication.
    2. Type your machine's root password if necessary.
    3. 認証の設定のダイアログで、 認証 タブをクリックしてください。
    4. スマートカードのサポートを有効にする チェックボックスを選択してください。
    5. スマートカードの設定... をクリックし、スマートカードの設定のダイアログを表示し、必要な設定を指定してください:
      • ログインにスマートカードを必要とする — このチェックボックスをクリアしてください。スマートカードでログインに成功した後で、スマートカードなしでログインするユーザーを遮断するためにこのオプションを選択することができます。
      • カード削除のアクション — ログインした後にスマートカードを取り出すときに起きることを制御します。利用できるオプションは以下になります:
        • ロック — スマートカードの取り出しは、 X スクリーンをロックします。
        • 無視 — スマートカードを取り出すことによる影響はありません。
  6. もし Online Certificate Status Protocol (OCSP) を有効にする必要があるなら、 /etc/pam_pkcs11/pam_pkcs11.conf ファイルを開き、以下のラインを指定してください:
    enable_ocsp = false;
    以下のように、値を true に変更してください:
    enable_ocsp = true;
  7. スマートカードの登録
  8. もし CAC カードを使用しているなら、以下のステップを実行する必要もあります:
    1. root アカウントに変更し、 /etc/pam_pkcs11/cn_map と呼ばれるファイルを作成してください。
    2. cn_map ファイルに以下のエントリを追加してください:
      MY.CAC_CN.123454 -> myloginid
      CAC で MY.CAC_CN.123454 が Common Name だったら、 myloginid は自分の UNIX ログイン ID になります。
  9. ログアウト

46.3.2.1. トラブルシューティング

もしスマートカードの機能に問題があったら、問題の原因を特定するために以下のコマンドを使用してみてください:
pklogin_finder debug
登録したスマートカードが接続している間にデバッグモードで pklogin_finder ツールを起動すると、証明書の有効性についての情報を出力しようとし、もしそれに成功したら、カードにある証明書からログイン ID をマップしようとします。

46.3.3. スマートカードの登録の働き

スマートカードは、それが有効な認証局 (CA) によって署名された適切な証明書を受け取ったときに enrolled と呼ばれます。これは以下に説明するいくつかのステップを含みます:
  1. ワークステーションのスマートカードリーダーにスマートカードを挿入します。このイベントは、 Enterprise Security Client (ESC) により認識されます。
  2. The enrollment page is displayed on the user's desktop. The user completes the required details and the user's system then connects to the Token Processing System (TPS) and the CA.
  3. TPS は、 CA により署名された証明書を使用してスマートカードを登録します。
スマートカードの登録の働き
スマートカードの登録の働き
図46.4 スマートカードの登録の働き

46.3.4. スマートカードログインの働き

このセクションは、スマートカードの使用におけるログインのプロセスの概要を提供します。
  1. When the user inserts their smart card into the smart card reader, this event is recognized by the PAM facility, which prompts for the user's PIN.
  2. The system then looks up the user's current certificates and verifies their validity. The certificate is then mapped to the user's UID.
  3. KDC に反して、こらは承認され、ログインが許可されました。
スマートカードログインの働き
スマートカードログインの働き
図46.5 スマートカードログインの働き

注記

登録されていないカードでログインすることはできません。たとえ、それがフォーマットされていてもです。フォーマットされ、登録されたカードか、新しいカードを登録する前にスマートカードを使用しないでログインする必要があります。
Refer to 「Kerberos」 and 「PAM(Pluggable Authentication Modules)」 for more information on Kerberos and PAM.

46.3.5. SSO のための Kerberos を使用するための Firefox の設定

Single Sign-on のための Kerberos を使用するために Firefox を設定することができます。この機能が正しく機能するためには、 Kerberos クレデンシャルを KDC に送信するようにウェブブラウザを設定する必要があります。以下のセクションでは、設定変更やこれを実現するための必要条件を説明します。
  1. Firefox のアドレスバーで、現在の設定オプションのリストを表示するために about:config を入力してください。
  2. フィルタ フィールドで、オプションのリストを制限するために negotiate を入力してください。
  3. Enter string value ダイアログボックスを表示するために、 network.negotiate-auth.trusted-uris エントリをダブルクリックしてください。
  4. 例えば、 .example.com 等の、認証させたいドメイン名を入力してください。
  5. 同じドメインを使用して、 network.negotiate-auth.delegation-uris エントリのために上記の手順を繰り返してください。

    注記

    必須ではありませんが Kerberos チケットを渡すのを許可するので、この値をブランクにすることができます。
    もし、リストされているこの2つの設定オプションが見えなかったら、 Firefox のバージョンが、 Negotiate 認証をサポートするには古すぎる可能性があるので、アップグレードを検討すべきです。
Kerberos との SSO のための Firefox の設定
Kerberos との SSO を使用するための Firefox の設定
図46.6 Kerberos との SSO のための Firefox の設定

Kerberos チケットを持っていることを確認する必要があります。コマンドシェルで、 Kerberos チケットを取得するために kinit を入力してください。利用可能なチケットのリストを表示するには、 klist を入力してください。以下は、これらのコマンドからの出力例を示しています:
~]$ kinit
Password for user@EXAMPLE.COM:

~]$ klist
Ticket cache: FILE:/tmp/krb5cc_10920
Default principal: user@EXAMPLE.COM

Valid starting     Expires            Service principal
10/26/06 23:47:54  10/27/06 09:47:54  krbtgt/USER.COM@USER.COM
        renew until 10/26/06 23:47:54

Kerberos 4 ticket cache: /tmp/tkt10920
klist: You have no tickets cached

46.3.5.1. トラブルシューティング

もし上記の設定のステップに従って、 Negotiate 認証が機能していなかったら、認証プロセスの冗長ロギングを ON にすることができます。これにより、問題の原因を発見するのに役立ちます。冗長ロギングを有効にするには、以下の手順に従ってください:
  1. Firefox の全てのインスタンスをクローズしてください。
  2. コマンドシェルを開き、以下のコマンドを入力してください:
    export NSPR_LOG_MODULES=negotiateauth:5
    export NSPR_LOG_FILE=/tmp/moz.log
  3. シェルから Firefox を再起動し、以前に認証できなかったウェブサイトを訪れてください。情報は /tmp/moz.log にロギングされ、問題の解決の手掛かりが見つかるかもしれません。例えば:
    -1208550944[90039d0]: entering nsNegotiateAuth::GetNextToken()
    -1208550944[90039d0]: gss_init_sec_context() failed: Miscellaneous failure
    No credentials cache found
    これは、 Kerberos チケットを持っていないので、 kinit を起動する必要があることを示しています。
もし自分のマシンから kinit を起動することに成功したのに認証できない場合は、ログファイルに以下のような既述が見えるかもしれません:
-1208994096[8d683d8]: entering nsAuthGSSAPI::GetNextToken()
-1208994096[8d683d8]: gss_init_sec_context() failed: Miscellaneous failure
Server not found in Kerberos database
これは、一般的に Kerberos の設定の問題を示しています。現在のエントリが /etc/krb5.conf ファイルの [domain_realm] セクションにあることを確認してください。例えば:
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
もしログに何も出力されなかったら、プロキシの後ろにいて、そのプロキシが Negotiate 認証に必要な HTTP ヘッダーをはく奪している可能性があります。ワークアラウンドとしては、代わりに要求を変更することなく渡すことができる HTTPS を使用してサーバーへの接続を試みてください。それから、上記のようにログファイルを使用してデバッグしてください。

46.4. PAM(Pluggable Authentication Modules)

Programs that grant users access to a system use authentication to verify each other's identity (that is, to establish that a user is who they say they are).
過去には各プログラムが、ユーザー認証の為にそれ独自の手段を持っていました。 Red Hat Enterprise Linux では、多くプログラムが Pluggable Authentication Modules あるいは PAM と呼ばれる中央化された認証プロセスを使用するように設定されています。
PAM のプラグイン可能なモジュラー構造を用いることによって、システム管理者は担当のシステム用の認証ポリシー設定に多大の柔軟性を持つことが出来ます。
In most situations, the default PAM configuration file for a PAM-aware application is sufficient. Sometimes, however, it is necessary to edit a PAM configuration file. Because misconfiguration of PAM can compromise system security, it is important to understand the structure of these files before making any modifications. Refer to 「PAM 設定ファイルの形式」 for more information.

46.4.1. PAM の利点

PAM は以下のような利点を提供します:
  • 幅広い各種アプリケーションで使用できる共通の認証設定です。
  • システム管理者やアプリケーション開発者に、認証に対する優れた柔軟性と制御性を与えます。
  • 自身の認証プランを作成することなく、開発者がプログラムを書くことができるようにする単独の完全文書化されたライブラリ。

46.4.2. PAM 設定ファイル

/etc/pam.d/ ディレクトリには、 PAM 認識アプリケーションのための、 PAM 設定ファイルがあります。 PAM の初期のバージョンでは、 /etc/pam.conf ファイルが使用されていました。しかし、このファイルはあまり使用されなくなってきており、現在は /etc/pam.d/ ディレクトリが存在しない場合に限って使用されます。

46.4.2.1. PAM サービスファイル

各 PAM 認識プログラム、または サービス /etc/pam.d/ ディレクトリ配下にファイルを持ちます。このディレクトリ配下の各ファイルは、その制御するアクセスに応じてサービスの名前がついています。
サービス名の定義と、それ自身の PAM 設定ファイルを /etc/pam.d/ ディレクトリにインストールすることは PAM 認識プログラムに依存します。例えば、 login プログラムは、そのサービス名を login と定義して、 /etc/pam.d/login PAM 設定ファイルをインストールします。

46.4.3. PAM 設定ファイルの形式

各 PAM 設定ファイルには、次のようなフォーマットされたディレクティブのグループが含まれています:
<module interface>  <control flag>   <module name>   <module arguments>
これらの各要素はそれぞれ次のセクションで説明してあります。

46.4.3.1. モジュールインターフェース

4 つのタイプの PAM モジュールインターフェースがあり、それぞれ認証プロセスの異なる側面に相当しています:
  • auth — このモジュールインターフェースはその使用を認証します。例えば、パスワードの有効性を要求して、それを確証します。このインターフェースのモジュールは、グループメンバーシップや、 Kerberos チケットなどの証明書も設定できます。
  • account — このモジュールインターフェースは、アクセスが許可されることを確認します。例えば、ユーザーのアカウントが期限切れでないか、あるいはユーザーがその日の特定時期にログインを認められているか、をチェックします。
  • password — このモジュールインターフェースは、ユーザーパスワードの変更に使用されます。
  • session — This module interface configures and manages user sessions. Modules with this interface can also perform additional tasks that are needed to allow access, like mounting a user's home directory and making the user's mailbox available.

注記

個々のモジュールはすべてのモジュールインターフェースあるいはそのいずれかを提供することができます。例えば、 pam_unix.so は 4 つのモジュールインターフェースをすべて提供できます。
PAM 設定ファイルでは、モジュールインターフェースは最初に定義されるフィールドです。例えば、設定内の標準的な行は次のようになります:
auth	required	pam_unix.so
This instructs PAM to use the pam_unix.so module's auth interface.
46.4.3.1.1. モジュールインターフェースのスタック
Module interface directives can be stacked, or placed upon one another, so that multiple modules are used together for one purpose. If a module's control flag uses the "sufficient" or "requisite" value (refer to 「制御フラグ」 for more information on these flags), then the order in which the modules are listed is important to the authentication process.
スタックにより、管理者がユーザーに認証を与える前に存在すべき特定の条件を要求することが容易になります。例えば、 reboot コマンドは、以下の PAM 設定ファイルで示してあるように、通常、数種のスタックされたモジュールを使用します:
~]# cat /etc/pam.d/reboot
#%PAM-1.0
auth	sufficient	pam_rootok.so
auth	required	pam_console.so
#auth	include	system-auth
account	required	pam_permit.so
  • 最初の行はコメントであり、プロセスされません。
  • auth sufficient pam_rootok.so — この行は pam_rootok.so モジュールを使用して、その UID が 0 であることを確認して、現在のユーザーが root かどうかをチェックします。このテストが成功すると、他のモジュールに依存せずに、このコマンドが実行されます。テストが失敗すると次のモジュールに依託されます。
  • auth required pam_console.so — この行はユーザーを認証するのに pam_console.so モジュールを使用します。このユーザーがすでにコンソールでログインしている場合は、 pam_console.so は、 /etc/security/console.apps/ ディレクトリ内にサービス名 (reboot) と同じ名前を持ったファイルがあるかどうかをチェックします。そのようなファイルが存在すれば、認証は確定され、制御は次のモジュールに渡されます。
  • #auth include system-auth — この行はコメント化されており、プロセスされません。
  • account required pam_permit.so — この行は pam_permit.so モジュールを使用して、 root ユーザー、又はコンソールにログインしてシステムをリブートする人に許可を与えます。

46.4.3.2. 制御フラグ

すべての PAM モジュールは、コールがあると成功又は失敗の結果を生成します。制御フラグは、その結果に対する処理方法を PAM に告げます。モジュールは特定の順序でスタックされるので、制御フラグは、ユーザーにそのサービスへの認証をすることの全体的目的に対して、この特定のモジュールの成功あるいは失敗の重要度を判定します。
4つのタイプの制御フラグが定義されています:
  • required — 認証が続行するにはモジュールの結果は成功でなければいけません。テストがこの時点で失敗の結果を出すと、インターフェースを参照している全てのモジュールが完了するまで、ユーザーは結果報告を受け取りません。
  • requisite — 認可が続行するにはモジュールの結果は成功でなければいけません。但し、この時点でテストが失敗した場合、ユーザーは直ちに最初に失敗した requiredあるいは requisite モジュールテストに関するメッセージを受け取ります。
  • sufficient — チェックが失敗した場合、モジュールの結果は無視されます。ただし、 sufficient フラグのモジュールのチェックが成功し、 且つ 、それ以前の required フラグのモジュールがすべて成功した場合、これ以外の結果は必要とされず、ユーザーはそのサービスに対して認証されます。
  • optional — モジュールの結果は無視されます。認証の成功に optional フラグのモジュールが必要となるのは、そのインターフェースを参照する他のモジュールがない時だけです。

重要

required モジュールがコールされる順序は重要ではありません。 sufficientrequisite の制御フラグでのみその順序が重要になります。
より正確な制御を可能にする新しい制御フラグ構文が現在 PAM で利用できます。
The pam.d man page, and the PAM documentation, located in the /usr/share/doc/pam-<version-number>/ directory, where <version-number> is the version number for PAM on your system, describe this newer syntax in detail.

46.4.3.3. モジュール名

モジュール名は、特定のモジュールインターフェースを含むプラグ可能なモジュール名を PAM に提供します。 Red Hat Enterprise Linux の旧バージョンでは、モジュールへのフルパスが PAM 設定ファイル内に提供されていました。しかし、 /lib64/security/ ディレクトリ下に 64ビット PAM モジュールを保存する multilib の出現により、アプリケーションがモジュールの正しいバージョンを検索する適切な libpam のバージョンにリンクされるため、そのディレクトリ名は省略されています。

46.4.3.4. モジュールの引数

PAM は、幾つかのモジュール用に認証をしている間、プラグ可能なモジュールへ情報を渡すために 引数 を使用します。
たとえば、 pam_userdb.so モジュールは、 Berkeley DB ファイルに保存された情報を使ってユーザーを認証します。 Berkeley DB は、多くのアプリケーションに組み込まれているオープンソースのデータベースシステムです。このモジュールが db 引数を使用することによって Berkeley DB は要求されたサービスに使用するデータベースを判断できます。
The following is a typical pam_userdb.so line in a PAM configuration. The <path-to-file> is the full path to the Berkeley DB database file:
auth	required	pam_userdb.so db=<path-to-file>
無効な引数は 一般的に 無視され、 PAM モジュールの成功あるいは失敗のどちらにも影響しません。但し、いくらかのモジュールでは無効な引数で失敗します。殆んどのモジュールはエラーを /var/log/secure ファイルに報告します。

46.4.4. PAM 設定ファイルのサンプル

以下に、 PAM アプリケーションの設定ファイルのサンプルを示します:
#%PAM-1.0
auth	required  pam_securetty.so
auth	required  pam_unix.so nullok
auth	required  pam_nologin.so
account	required  pam_unix.so
password	required  pam_cracklib.so retry=3
password	required  pam_unix.so shadow nullok use_authtok
session	required  pam_unix.so
  • 最初の行はコメントであり、行頭に「#」マークが付加されています。
  • 2行目から4行目ではログイン認証のモジュールを3つスタックしています。
    auth required pam_securetty.so — このモジュールは もし ユーザーが root としてログインを試行し、 tty ファイルが存在する場合、 /etc/securetty ファイル内にユーザーがログインした tty が一覧表示されていることを確認します。
    ファイル内に tty リストされていないと、 root としてのログインは Login incorrect のメッセージが出て失敗します。
    auth required pam_unix.so nullok — このモジュールはユーザーにパスワードを要求して、 /etc/passwd に保存されている情報を使用してそのパスワードをチェックします。パスワードが存在する場合、 /etc/shadow をチェックします。
    In the authentication phase, the pam_unix.so module automatically detects whether the user's password is in the passwd file or the shadow file. Refer to 「シャドウパスワード」 for more information.
    • 引数 nullok は、 pam_unix.so モジュールに対し、空白のパスワードを許可するように指示します。
  • auth required pam_nologin.so — これが最終認証ステップです。 /etc/nologin ファイルが存在するかどうかを確認します。ファイルが存在し、ユーザーが root でない場合、認証は失敗します。

    注記

    この例では、最初の auth モジュールが失敗しても、3つの auth モジュールすべてがチェックされます。これはユーザーに、認証のどの段階で拒否されたかを悟られないようにするためです。そのような情報がアタッカーに使用可能になると、彼らにシステムをクラックする方法をたやすく類推する事を許します。
  • account required pam_unix.so — このモジュールで、必要なアカウントの確証が実行されます。たとえば、シャドウパスワードが有効な場合、 pam_unix.so モジュールのアカウントインターフェイスは、アカウントの期限が切れていないか、ユーザーがパスワード猶予期間内にパスワードを変更していないかをチェックします。
  • password required pam_cracklib.so retry=3 — パスワードの期限が切れている場合、 pam_cracklib.so モジュールのパスワードコンポーネントは新しいパスワードの要求をします。それから、新規に作成されたパスワードに対してテストを実行することにより、それがパスワードに対する辞書ベースのクラックプログラムによって簡単に判明するものでないことを確認します。
    • 引数 retry=3 はテストが最初に失敗した場合、ユーザーは牽強なパスワードを作成するのに2回のチャンスを与えられるように指定します。
  • password required pam_unix.so shadow nullok use_authtok — This line specifies that if the program changes the user's password, it should use the password interface of the pam_unix.so module to do so.
    • The argument shadow instructs the module to create shadow passwords when updating a user's password.
    • 引数 nullok は、モジュールにユーザーがパスワードをブランク から 変更するのを許可するように指示します。さもなければ、ブランクのパスワードは固定アカウントとして取り扱われます。
    • この行の最後の引数、 use_authtok は、 PAM モジュールのスタック順の重要性を示す良い例を提供します。この引数は、モジュールに対し、ユーザーの新しいパスワードを求めないように伝えます。その代わりに、それ以前のパスワードモジュールで記録されたいかなるパスワードも受け入れます。この方法では、全ての新しいパスワードが、受け入れられる前にセキュアなパスワードとして pam_cracklib.so テストをパスしなければいけません。
  • session required pam_unix.so — 最後の行は、 pam_unix.so モジュールのセッションインターフェイスに対し、セッションを管理することを指示しています。このモジュールは、各セッションの始めと終りで、 /var/log/secure にユーザー名とサービスタイプのログを残します。このモジュールは他の機能の為に、他のセッションモジュールにスタックする事で補充できます。

46.4.5. PAM モジュールの作成

PAM 認識のアプリケーションを使用する為に、いつでも PAM モジュールの作成、又は追加をすることができます。
例えば、開発者が1回制限のパスワード作成法を作り、そのサポートの為に PAM モジュールを書いた場合、 PAM-認識プログラムは、リコンパイルや他の修正なしに直ちにその新しいモジュールとパスワードの方法を使用できます。
これにより開発者とシステム管理者は、リコンパイルの必要なく、異るプログラム用の認証手法をテストするだけでなく、組み合わせて混ぜることもできるようになります。
Documentation on writing modules is included in the /usr/share/doc/pam-<version-number>/ directory, where <version-number> is the version number for PAM on your system.

46.4.6. PAM と管理用証明書のキャッシュ

Red Hat Enterprise Linux の各種グラフィック管理ツールは、 pam_timestamp.so モジュールを使用してユーザーに特権を 5 分間まで延長することができます。 pam_timestamp.so が有効になっている間にユーザーがターミナルから離れると、マシンを誰でもコンソールに物理的にアクセスして操作が行なえるような状態にするため、この機能の仕組みを理解しておくことが重要です。
PAM タイムスタンプ計画では、グラフィック管理アプリケーションはその起動時に、ユーザーに root パスワードを要求します。認証されると、 pam_timestamp.so モジュールはデフォルトで /var/run/sudo/ ディレクトリ配下にタイムスタンプファイルを作成します。タイムスタンプファイルがすでに存在している場合は、グラフィック管理プログラムはパスワードを要求せず、代わりに、 pam_timestamp.so モジュールはタイムスタンプファイルを更新して、ユーザーに絶対的な管理アクセス権をさらに 5 分間確保します。
You can verify the actual state of the timestamp file by inspecting the /var/run/sudo/<user> file. For the desktop, the relevant file is unknown:root. If it is present and its timestamp is less than five minutes old, the credentials are valid.
タイムスタンプファイルの存在は、パネルの通知エリア内に現われる認証アイコンで示されます。
認証アイコン
認証アイコンのイラスト。
図46.7 認証アイコン

46.4.6.1. タイムスタンプファイルを削除する

PAM タイムスタンプが有効になっているコンソールから離れる場合、タイムスタンプファイルを破棄することをおすすめします。グラフィッカル環境でこれを行なうには、パネルの認証アイコンをクリックします。これでダイアログボックスが現われたら、 認証を無視(Forget Authorization) ボタンをクリックします。
認証ダイアログを破棄する
認証放棄ダイアログボックスのイラスト。
図46.8 認証ダイアログを破棄する

PAM タイムスタンプファイルの次のような側面に注意して下さい :
  • ssh を使用して遠隔からシステムにログインしている場合、 /sbin/pam_timestamp_check -k root コマンドを使用してタイムスタンプを破棄します。
  • /sbin/pam_timestamp_check -k root は特権アプリケーションを起動したのと同じターミナルから実行する必要があります。
  • /sbin/pam_timestamp_check -k コマンドを使用するためには、最初に pam_timestamp.so を呼び出したユーザーとしてログインする必要があります。 root でログインしてこのコマンドを発行しないでください。
  • (アイコン上の Forget Authorization を使用しないで) デスクトップ上の証明書をキルしたい場合には、以下のコマンドを使用します:
    pam_timestamp_check -k root </dev/null >/dev/null 2>/dev/null
    このコマンドの使用に失敗すると、このコマンドを実行する場所の pty から (ある場合は) 証明書を取り除くことになります。
pam_timestamp_check を使用してタイムスタンプファイルを破棄する方法についての詳細は、 pam_timestamp_check の man ページを参照してください。

46.4.6.2. 一般的な pam_timestamp ディレクティブ

pam_timestamp.so モジュールはいくつか異なるディレクティブを受け取ります。以下に最もよく使われるオプションを2つあげます:
  • timestamp_timeout — タイムスタンプファイルが有効になっている期間を秒数で指定します。デフォルト値は 300 秒 (5分間) です。
  • timestampdir — タイムスタンプファイルが保存されるディレクトリを指定します。デフォルト値は /var/run/sudo です。
Refer to 「インストールされているドキュメント」 for more information about controlling the pam_timestamp.so module.

46.4.7. PAM およびデバイスの所有権

Red Hat Enterprise Linux では、マシンの物理的コンソール上にログインする最初のユーザーはデバイスの操作や特殊タスクの実行など通常は root ユーザー用に保存してある能力を許可します。これは pam_console.so と呼ばれる、 PAM モジュールによって制御されるものです。

46.4.7.1. デバイス所有権

Red Hat Enterprise Linux システムにユーザーがログインすると、 pam_console.so モジュールが login またはグラフィカルログインプログラム gdmkdmxdm によって呼び出されます。このユーザーが物理的なコンソール —コンソールユーザー と呼ばれる — でログインする最初のユーザーの場合、モジュールは通常ルートに所有される様々なデバイスの所有権をこのユーザーに許可します。このユーザーの最後のローカルセッションが終了するまで、コンソールユーザーはこれらデバイスの所有権を持ちます。このユーザーがログアウトすると、デバイスの所有権は root ユーザーに戻ります。
これに影響され、しかしそれだけに制限されていない状態のデバイスにはサウンドカード、フロッピードライブ、 CD-ROM ドライブです。
この機能により、ローカルユーザーはルートアクセスを取得せずに、これらデバイスの操作ができるようになります。このようにして、コンソールユーザーのための一般的なタスクを単純化しています。
以下のファイルを編集することで、 pam_console.so で制御されるデバイスのリストを変更することができます:
  • /etc/security/console.perms
  • /etc/security/console.perms.d/50-default.perms
上記のファイルに記載されているものとは別のデバイスの権限を変更したり、又は特定のデフォルトを書き変えたりすることができます。 50-default.perms ファイルを変更する代わりに、新しいファイルを作成 (例えば、xx-name.perms) を作成して必要な変更を入力するほうが良いでしょう。新規のデフォルトファイル名は 50 より大きな数字で始まる必要があります (例えば、51-default.perms)。これが 50-default.perms ファイル内のデフォルトを書き変えます。

警告

If the gdm, kdm, or xdm display manager configuration file has been altered to allow remote users to log in and the host is configured to run at runlevel 5, it is advisable to change the <console> and <xconsole> directives in the /etc/security/console.perms to the following values:
<console>=tty[0-9][0-9]* vc/[0-9][0-9]* :0\.[0-9] :0
<xconsole>=:0\.[0-9] :0
これで、リモートユーザーがマシン上のデバイスや制限アプリケーションへアクセスするのを防止します。
If the gdm, kdm, or xdm display manager configuration file has been altered to allow remote users to log in and the host is configured to run at any multiple user runlevel other than 5, it is advisable to remove the <xconsole> directive entirely and change the <console> directive to the following value:
<console>=tty[0-9][0-9]* vc/[0-9][0-9]*

46.4.7.2. アプリケーションアクセス

コンソールユーザーはさらに /etc/security/console.apps/ ディレクトリ内で使用するように設定された特定のプログラムにアクセスを許可されます。
このディレクトリには、コンソールユーザーが /sbin/usr/sbin 内の特定のアプリケーションを実行できるようにする設定ファイルが含まれています。
これらの設定ファイルはそれらがセットするアプリケーションと同じ名前を持ちます。
コンソールユーザーがアクセスを持つ注意すべきアプリケーショングループの一つは、システムを終了または再起動する3つのプログラムです。以下に示します:
  • /sbin/halt
  • /sbin/reboot
  • /sbin/poweroff
これらは PAM-認識アプリケーションであるため、使用要求として pam_console.so モジュールをコールします。

46.4.8. その他のリソース

以下のリソースには、 PAM の使用と設定方法に関する詳細な説明があります。これらのリソースの他に、 PAM の設定ファイルがどの様に構成されているかを理解する為にシステム上の PAM の設定ファイルを読んで下さい。

46.4.8.1. インストールされているドキュメント

  • PAM に関する man ページ — PAM に関連した各種アプリケーションや設定ファイルの man ページが存在します。なかでも、重要と思われる man ページを以下に一覧にします。
    設定ファイル
    • pam — PAM 設定ファイルの構造とその目的を含む、 PAM の適切な入門情報です。
      この man ページは、 /etc/pam.d/ ディレクトリ内の /etc/pam.conf と個別の設定ファイルの両方について説明しています。デフォルトでは、 Red Hat Enterprise Linux は /etc/pam.conf が存在している場合でも、それを無視して /etc/pam.d/ ディレクトリ内の個別設定ファイルを使用します。
    • pam_consolepam_console.so モジュールの目的について説明しています。また、 PAM 設定ファイルで使用するエントリの適切な構文についても触れています。
    • console.apps — 設定ファイルの /etc/security/console.apps 内で使用できる形式とオプションについて説明しています。この設定ファイルは、 PAM で割り当てられたコンソールユーザーがどのアプリケーションにアクセス可能かを定義します。
    • console.perms — PAM で割り当てられたコンソールユーザーの権限用の /etc/security/console.perms 設定ファイル内で使用できる形式とオプションを説明しています。
    • pam_timestamppam_timestamp.so モジュールについて説明しています。
  • /usr/share/doc/pam-<version-number> — Contains a System Administrators' Guide, a Module Writers' Manual, and the Application Developers' Manual, as well as a copy of the PAM standard, DCE-RFC 86.0, where <version-number> is the version number of PAM.
  • /usr/share/doc/pam-<version-number>/txts/README.pam_timestamp — Contains information about the pam_timestamp.so PAM module, where <version-number> is the version number of PAM.

46.4.8.2. 役に立つ Web サイト

  • http://www.kernel.org/pub/linux/libs/pam/ — Linux-PAM プロジェクトのための初期配布 Web サイト。さまざまな PAM モジュール、 FAQ 、追加の PAM マニュアルの情報が含まれます。

    注記

    上記ウェブサイトのドキュメントは、 PAM に関する最後のリリースのアップストリームバージョンであるため、 Red Hat Enterprise Linux 内に収納されている PAM バージョンにとっては 100% 正確ではないかもしれません。

46.5. TCP ラッパーと xinetd

Controlling access to network services is one of the most important security tasks facing a server administrator. Red Hat Enterprise Linux provides several tools for this purpose. For example, an iptables-based firewall filters out unwelcome network packets within the kernel's network stack. For network services that utilize it, TCP Wrappers add an additional layer of protection by defining which hosts are or are not allowed to connect to "wrapped" network services. One such wrapped network service is the xinetd super server. This service is called a super server because it controls connections to a subset of network services and further refines access control.
図46.9「ネットワークサービスへのアクセス制御」 is a basic illustration of how these tools work together to protect network services.
ネットワークサービスへのアクセス制御
展示 A: ネットワークフローチャートへのアクセス制御
図46.9 ネットワークサービスへのアクセス制御

This chapter focuses on the role of TCP Wrappers and xinetd in controlling access to network services and reviews how these tools can be used to enhance both logging and utilization management. Refer to 「IPTables」 for information about using firewalls with iptables.

46.5.1. TCP Wrappers

TCP ラッパーパッケージは (tcp_wrappers) デフォルトでインストールされ、ネットワークサービスに対しホストベースのアクセス制御を提供します。パッケージ内で最も重要なコンポーネントは /usr/lib/libwrap.a ライブラリです。一般的な表現では、 TCP でラップしたサービスは、 libwrap.a ライブラリに対してコンパイルされたものを指します。
When a connection attempt is made to a TCP-wrapped service, the service first references the host's access files (/etc/hosts.allow and /etc/hosts.deny) to determine whether or not the client is allowed to connect. In most cases, it then uses the syslog daemon (syslogd) to write the name of the requesting client and the requested service to /var/log/secure or /var/log/messages.
もし、クライアントホストが接続を許可された場合、 TCP ラッパーは要求されたサービスへの接続制御を開放し、それ以上クライアントホストとサーバーとの間の通信を邪魔しません。
アクセスの制御とロギングに加えて、 TCP ラッパーは先ずクライアントと折衝をするためのコマンドを起動して、それから要求されたネットワークサービスへの接続を拒否するか、制御の開放をします。
Because TCP Wrappers are a valuable addition to any server administrator's arsenal of security tools, most network services within Red Hat Enterprise Linux are linked to the libwrap.a library. Some such applications include /usr/sbin/sshd, /usr/sbin/sendmail, and /usr/sbin/xinetd.

注記

ネットワークサービスバイナリが libwrap.a に対してリンクされているかどうか判定するには、 root ユーザーとして以下のコマンドを入力します:
ldd <binary-name> | grep libwrap
Replace <binary-name> with the name of the network service binary.
コマンドがアウトプットなしに直接プロンプトに戻ってきた場合、そのネットワークサービスは libwrap.a に対して リンクされていません
下記の例は /usr/sbin/sshdlibwrap.a にリンクしていることを示しています:
~]# ldd /usr/sbin/sshd | grep libwrap
        libwrap.so.0 => /usr/lib/libwrap.so.0 (0x00655000)
~]#

46.5.1.1. TCP ラッパーの利点

TCP ラッパーは、他のネットワークサービス制御技術と比較して以下のような利点を持っています:
  • クライアントホストとラップしたネットワークサービス間の透視度 — 接続しようとしているクライアントとラップしたネットワークサービスからは TCP ラッパーが使用されているかどうか知ることができません。正式なユーザーは要求したサービスへログインして接続しますが、禁止されたクライアントからの接続は失敗します。
  • 複数プロトコルの中央管理 — TCP ラッパーは、それが保護するネットワークサービスからは別に稼働するため、多くのサーバーアプリケーションは簡素な管理用設定ファイルの共通セットを共有することが出来ます。

46.5.2. TCP ラッパーの設定ファイル

サービスにクライアントマシンが接続を許可されるかどうか決定するために、 TCP ラッパーは次の2つのファイルを参照します。これは一般的に ホストアクセス ファイルと呼ばれるものです:
  • /etc/hosts.allow
  • /etc/hosts.deny
TCP でラップしたサービスはクライアントの要求を受け取ったとき、以下の処置を実行します:
  1. /etc/hosts.allow を参照する。 — TCP ラップしたサービスは順番に /etc/hosts.allow ファイルを構文解析して、そのサービスに指定されている最初の規則を適用します。適合する規則があれば、接続を許可します。そうでなければ、次のステップへと移動します。
  2. /etc/hosts.deny を参照する。 — TCP ラップしたサービスは順番に /etc/hosts.deny ファイルを構文解析します。適合する規則があれば、接続は拒否されます。そうでなければ、そのサービスへのアクセスは認可されます。
TCP ラッパーを使用してネットワークサービスを保護する場合、次の重要な点を考慮する必要があります:
  • hosts.allow 内のアクセスの規則が最初に適用される為、これらの規則は hosts.deny 内に指定してある規則より優先されます。そのため、 hosts.allow でサービスへのアクセスが許可された場合、 hosts.deny の同じサービスに対するアクセス拒否の規則は無視されます。
  • 各ファイル内の規則が上から下に読まれ、1つのサービスに対して適用されるのは最初に適合する規則の1つだけです。したがって、規則の配置順序は非常に重要です。
  • どちらのファイルにもそのサービス用の規則がない場合、あるいはどちらのファイルも存在しない場合、そのサービスへのアクセスは承認されます。
  • TCP ラップのサービスは、ホストのアクセスファイル規則をキャッシュしません。そのため、 hosts.allow または hosts.deny への変更は、ネットワークサービスを再開始しなくても直ちに反映されます。

警告

ホストアクセスファイルの最後の行が改行マーク (Enter キーを押すと出るマーク) ではない場合、そのファイル内の最後の規則は失敗してエラーが /var/log/messages/var/log/secure にログされます。また、行が逆スラッシュを使用せずに複数行にまたがる場合も同様です。次の例では、このどちらかの状況による規則違反についてのログメッセージの関連部分を表示します:
warning: /etc/hosts.allow, line 20: missing newline or line too long

46.5.2.1. アクセス規則のフォーマット

/etc/hosts.allow/etc/hosts.deny のフォーマットは全く同じです。各規則はその独自の行になければなりません。 (#) マークで始まる行、又は空白行はすべて無視されます。
それぞれの規則は以下のような基本フォーマットを使用してネットワークサービスへのアクセスを制御します:
<daemon list>: <client list> [: <option>: <option>: ...]
  • <daemon list> — A comma-separated list of process names (not service names) or the ALL wildcard. The daemon list also accepts operators (refer to 「演算子」) to allow greater flexibility.
  • <client list> — A comma-separated list of hostnames, host IP addresses, special patterns, or wildcards which identify the hosts affected by the rule. The client list also accepts operators listed in 「演算子」 to allow greater flexibility.
  • <option> — An optional action or colon-separated list of actions performed when the rule is triggered. Option fields support expansions, launch shell commands, allow or deny access, and alter logging behavior.

注記

上記の専門用語についての詳細は、このガイドの中でみることができます:
以下に基本的なホストのアクセス規則のサンプルを示します:
vsftpd : .example.com
この規則は、 example.com ドメインのホストすべてからの FTP デーモン (vsftpd) への接続を監視するよう TCP ラッパーに指示します。この規則が hosts.allow にある場合は、その接続は許可されます。この規則が hosts.deny にある場合は、その接続は拒否されます。
次のホストアクセス規則のサンプルは更に複雑で、2つのオプションフィールドを使用します。
sshd : .example.com  \ : spawn /bin/echo `/bin/date` access denied>>/var/log/sshd.log \ : deny
各オプションフィールドが逆スラッシュ (\) の後に始まっていることに注意してください。逆スラッシュの使用は、長さによる規則違反を防止します。
This sample rule states that if a connection to the SSH daemon (sshd) is attempted from a host in the example.com domain, execute the echo command to append the attempt to a special log file, and deny the connection. Because the optional deny directive is used, this line denies access even if it appears in the hosts.allow file. Refer to 「オプションフィールド」 for a more detailed look at available options.
46.5.2.1.1. ワイルドカード
ワイルドカードの使用により、 TCP ラッパーはデーモンやホストのグループをより簡単に照合できます。これらはアクセス規則のクライアントリストフィールドの中で多く使用されます。
以下のようなワイルドカードが使用できます:
  • ALL — すべてを照合します。これはデーモンリストとクライアントリストの両方に使用できます。
  • LOCAL — ローカルホストなど、ピリオド (.) のないホストをすべて照合します。
  • KNOWN — ホスト名、ホストアドレス、あるいはユーザーが既に判っているホストを照合します。
  • UNKNOWN — ホスト名、ホストアドレス、あるいはユーザーが不明なホストをすべて照合します。
  • PARANOID — ホスト名とホストアドレスが一致しないホストをすべて照合します。

注意

KNOWNUNKNOWNPARANOID のそれぞれのワイルドカードは、正しい操作のために DNS サーバーを機能させることに依存しているので注意して使用してください。名前解決中で問題となると正式なユーザーがサービスへのアクセスを取得するのを阻止する可能性があります。
46.5.2.1.2. パターン
パターンは、アクセス規則のクライアントリストのフィールドに使用して、クライアントホストのグループをより正確に指定します。
以下は、クライアントフィールドの入力でよく見かけるパターンの一覧です:
  • ピリオド (.) で始まるホスト名 — ホスト名の先頭にピリオドを付けると、入力されたその名前の構成部分を共有するすべてのホストを照合します。以下の例は、 example.com ドメイン内のすべてのホストに適用されます:
    ALL : .example.com
  • ピリオド (.) で終了する IP アドレス — ピリオドを IP アドレスの末尾に置くと、ある IP アドレスの最初の数字のグループを共有するすべてのホストを照合します。次の例は、 192.168.x.x ネットワーク内のすべてのホストに適用されます。
    ALL : 192.168.
  • IPアドレス/ネットマスクの組合せ — ネットマスク表現も IP アドレスの特定グループに対するアクセスを制御する為に、パターンとして使用することができます。次の例は、 192.168.0.0 から 192.168.1.255 までのアドレス幅を持つすべてのホストに適用されます。
    ALL : 192.168.0.0/255.255.254.0

    重要

    IPv4 アドレススペースで動作しているとき、アドレス/プレフィックスの長さ (prefixlen) の組み合わせ申告 (CIDR ノーテーション) はサポートされません。 IPv6 の規則しかこの形式を使用することができません。
  • [IPv6 アドレス]/prefixlen の組合せ — [net]/prefixlen の組合せもパターンとして、 IPv6 アドレスの特定グループへのアクセスを制御するために使用することができます。次の例は、 3ffe:505:2:1:: から 3ffe:505:2:1:ffff:ffff:ffff:ffff までのアドレス幅内のすべてのホストに適用します:
    ALL : [3ffe:505:2:1::]/64
  • アスタリスク(*)— アスタリスクはホスト名のグループや IP アドレスの全体を照合するのに使用されます。これは他のタイプのパターンを含むようなクライアントリストが混合していない場合に有効です。次の例では、 example.com ドメイン内の全てのホストに適用されます:
    ALL : *.example.com
  • スラッシュ(/) — クライアントリストがスラッシュで始まる場合、それはファイル名として取り扱います。これは、多量のホストを指定する規則が必要な場合に役に立つものです。次の例では、全ての Telnet 接続の為の /etc/telnet.hosts ファイルへの TCP ラッパーを対称にしています:
    in.telnetd : /etc/telnet.hosts
TCP ラッパーで認可されるパターンには、他に使用頻度の低いものがあります。詳細については hosts_access の man 5 ページを参照してください。

警告

ホスト名とドメイン名を使用するときは、十分に注意をしてください。攻撃者は多様なトリックを使って、正確な名前解決を邪魔します。また、 DNS サービスにおける妨害は、権限のあるユーザーでさえもネットワークサービスが使用できないようにしてしまいます。それ故、可能であればいつでも IP アドレスを使用するのが最善の策です。
46.5.2.1.3. ポートマップと TCP ラッパー
Portmap's implementation of TCP Wrappers does not support host look-ups, which means portmap can not use hostnames to identify hosts. Consequently, access control rules for portmap in hosts.allow or hosts.deny must use IP addresses, or the keyword ALL, for specifying hosts.
また、 portmap アクセスコントロール規則への変更は、 portmap サービスを再起動させないとすぐには反映されない場合があります。
NIS や NFS など幅広く使用されているサービスは portmap に依存して運用されているので、これらの制限に気をつけて下さい。
46.5.2.1.4. 演算子
現在、アクセス制御規則は、1つの演算子、 EXCEPT を受け付けます。これはデーモンリストと規則内のクライアントリストで使用できます。
EXCEPT 演算子の使用により、同じ規則内でより幅広い照合への特別な拡張が可能になります。
次の hosts.allow ファイルからの例では、 cracker.example.com 以外の全ての example.com ホストからの、全てのサービスへの接続が許可されます:
ALL: .example.com EXCEPT cracker.example.com
もう1つの hosts.allow ファイルからの例では、 192.168.0.x のネットワークからのクライアントは FTP 以外は、すべてのサービスを使用できます:
ALL EXCEPT vsftpd: 192.168.0.

注記

組織的には、 EXCEPT 演算子の使用を避けた方が管理が楽なことが多く、これにより、他の管理者が、 EXCEPT 演算子をソートせずに、どのホストがサービスに対するアクセスを許可/拒否されるべきかを判断するのに該当ファイルをすばやく調べることができます。

46.5.2.2. オプションフィールド

アクセスの許可と拒否についての基本的な規則の他に、 TCP ラッパーの Red Hat Enterprise Linux 実装は オプションフィールド を通じてアクセス制御言語への拡張をサポートしています。ホストアクセス規則内のオプションフィールドを使用することにより、管理者はログの動作の変更、アクセス制御の確定、及びシェルコマンドの始動などの各種タスクを達成することが出来ます。
46.5.2.2.1. ロギング
オプションフィールドにより管理者は、 severity ディレクティブを使用してログ設備と規則の優先度を簡単に変更することができます。
以下の例では、 example.com ドメインのいずれのホストからの SSH デーモンへの接続も、 emerg の優先度を持つデフォルトの authpriv syslog 設備 (設備値が指定されていない為) にログされます。
sshd : .example.com : severity emerg
severity オプションを使用して設備を指定することもできます。次の例では、 alert の優先度を持つ local0> 設備への example.com ドメインのホストによる SSH サービス接続の試行をログします:
sshd : .example.com : severity local0.alert

注記

実際には、この例は local0 設備へ syslog デーモン (syslogd) がログするように設定されるまで機能しません。カスタムログ設備の設定に関する詳細については syslog.conf の man ページをお読み下さい。
46.5.2.2.2. アクセスの制御
オプションフィールドにより、管理者は allow 又は deny ディレクティブを最終オプションとして追加することで、1つの規則内で明確に許可、あるいは拒否ができるようになります。
例えば、次の2つの例は、 client-1.example.com からの SSH 接続を許可しますが、 client-2.example.com からの接続を拒否します:
sshd : client-1.example.com : allow
sshd : client-2.example.com : deny
アクセス制御を規則単位ベースで許可することにより、オプションフィールドは管理者が全てのアクセス規則を1つのシングルファイル、 hosts.allow 、又は hosts.deny に統合できるようにします。一部の管理者にとってはこの方法がアクセス規則を簡単に構成させてくれるでしょう。
46.5.2.2.3. シェルコマンド
オプションフィールドにより、アクセス規則は次の2つのディレクティブを通じてシェルコマンドを始動できます:
  • spawn — シェルコマンドを子プロセスとして始動できます。このディレクティブは /usr/sbin/safe_finger の使用などのタスクを実行し、要求しているクライアントの情報を得たり、 echo コマンドを使用して特殊なログファイルを作成したりします。
    次の例では、 example.com ドメインから Telnet サービスへアクセスを試行するクライアントは、密かに特殊なファイルにログされます:
    in.telnetd : .example.com \
    	: spawn /bin/echo `/bin/date` from %h>>/var/log/telnet.log \
    	: allow
  • twist — Replaces the requested service with the specified command. This directive is often used to set up traps for intruders (also called "honey pots"). It can also be used to send messages to connecting clients. The twist directive must occur at the end of the rule line.
    以下の例では、 example.com ドメインから FTP サービスへアクセスを試行しているクライアントが echo コマンドによりメッセージを送ります:
    vsftpd : .example.com \
    	: twist /bin/echo "421 This domain has been black-listed. Access denied!"
シェルコマンドのオプションに関する情報は hosts_options の man ページを参照してください。
46.5.2.2.4. 拡張
拡張は、 spawntwist ディレクティブと一緒に使用して、関連したクライアント、サーバー、関係するプロセスの情報を提供します。
以下にサポートされている拡張のリストを示します:
  • %a — Returns the client's IP address.
  • %A — Returns the server's IP address.
  • %c — ユーザー名とホスト名、又はユーザー名と IP アドレスなどのような各種のクライアントの情報を提供します。
  • %d — デーモンのプロセス名を提供
  • %h — Returns the client's hostname (or IP address, if the hostname is unavailable).
  • %H — Returns the server's hostname (or IP address, if the hostname is unavailable).
  • %n — Returns the client's hostname. If unavailable, unknown is printed. If the client's hostname and host address do not match, paranoid is printed.
  • %N — Returns the server's hostname. If unavailable, unknown is printed. If the server's hostname and host address do not match, paranoid is printed.
  • %p — Returns the daemon's process ID.
  • %s — デーモンのプロセスとサーバーのホスト又は IP アドレスなど、さまざまなタイプのサーバー情報を提供
  • %u — Returns the client's username. If unavailable, unknown is printed.
以下の規則のサンプルは、 spawn コマンドと一緒に拡張を使用してカスタマイズログファイルの中のクライアントホストを識別しています。
SSHデーモン (sshd) への接続が example.com ドメインのホストから試行されると、 echo コマンドを実行して、クライアントのホスト名 ( %h 拡張を使用) を含む試行を特殊ファイルへログします:
sshd : .example.com  \
	: spawn /bin/echo `/bin/date` access denied to %h>>/var/log/sshd.log \
	: deny
同様に、拡張はクライアントに送り返すメッセージを個人化するのに使用されます。次の例では、 example.com ドメインから FTP サービスへアクセスを試行しているクライアントは、彼らがサーバーに立ち入り禁止となったことを通知されています:
vsftpd : .example.com \
: twist /bin/echo "421 %h has been banned from this server!"
利用できる拡張、及び追加のアクセス制御オプションに関する総合説明は、 hosts_access の man ページのセクション 5 (man 5 hosts_access) または hosts_options の man ページを参照してください。
Refer to 「その他のリソース」 for more information about TCP Wrappers.

46.5.3. xinetd

xinetd デーモンは、 FTP 、 IMAP 、 Telnet を含む人気のあるネットワークサービスのサブセットへのアクセスを制御する TCP ラップした スーパーサービス です。これは、アクセス制御、強化ロギング、結合、方向転換、リソース活用制御などの為にサービス特有の設定オプションを提供します。
xinetd によって制御されるネットワークサービスの接続をクライアントが試行する場合、スーパーサービスは要求を受け取り、すべての TCP ラッパーアクセス制御規則をチェックします。
アクセスが許可された場合、 xinetd は、そのサービスの独自のアクセス規則に従ってアクセスが許可されたかを検証します。それはさらにリソースを割り当てられないか、それが定められた規則に対して契約違反でないかをチェックします。
これら全ての条件が揃った場合、 (そのサービス用の自身のアクセス規則の元で接続が許可されることを確認し、サービスがその割り当て以上のリソースを消費していないことや、定義された規則に違反していないことも確認します) xinetd は、要求されたサービスのインスタンスを開始し、その接続の制御を通過させます。接続が確立されると、 xinetd はこれ以上、クライアントホストとサーバー間の通信には干渉しません。

46.5.4. xinetd 設定ファイル

xinetd の設定ファイルは以下のようになります:
  • /etc/xinetd.conf — グローバルな xinetd 設定ファイル。
  • /etc/xinetd.d/ — 全てのサービス特有のファイルを含んだディレクトリ。

46.5.4.1. The /etc/xinetd.conf File

The /etc/xinetd.conf file contains general configuration settings which affect every service under xinetd's control. It is read when the xinetd service is first started, so for configuration changes to take effect, you need to restart the xinetd service. The following is a sample /etc/xinetd.conf file:
defaults
{
         instances               = 60
	 log_type                = SYSLOG	authpriv
	 log_on_success          = HOST PID
	 log_on_failure          = HOST
	 cps                     = 25 30
}
includedir /etc/xinetd.d
これらの行は、 xinetd の次のような側面を制御します。
  • instancesxinetd が1度に対処できる最大の要求数を設定します。
  • log_typexinetd を設定して authpriv ログ設備を使用します。これはログエントリを /var/log/secure ファイルに書き込みます。 FILE /var/log/xinetdlog のようなディレクティブを追加すると、 /var/log/ ディレクトリの中に xinetdlog と言うカスタムログファイルを作成します。
  • log_on_success — Configures xinetd to log successful connection attempts. By default, the remote host's IP address and the process ID of the server processing the request are recorded.
  • log_on_failurexinetd を設定して、接続失敗があるかどうか又は、接続が許可されていないかどうかをログします。
  • cpsxinetd を設定してどのサービスにも毎秒 25 接続以上は許可しないようにします。この限度に到達した場合は、サービスは 30 秒だけ休憩します。
  • includedir /etc/xinetd.d/ — Includes options declared in the service-specific configuration files located in the /etc/xinetd.d/ directory. Refer to 「/etc/xinetd.d/ ディレクトリ」 for more information.

注記

Often, both the log_on_success and log_on_failure settings in /etc/xinetd.conf are further modified in the service-specific configuration files. More information may therefore appear in a given service's log file than the /etc/xinetd.conf file may indicate. Refer to 「ロギングオプション」 for further information.

46.5.4.2. /etc/xinetd.d/ ディレクトリ

/etc/xinetd.d/ ディレクトリ内には、 xinetd で管理されている各サービスの設定ファイルと、そのサービスに関連したファイルの名前が含まれています。 xinetd.conf の場合と同様に、このファイルは xinetd サービスが開始する時にだけ読み込まれます。変更を反映させるためには、管理者は xinetd サービスを再起動する必要があります。
/etc/xinetd.d/ ディレクトリ内のファイルのフォーマットは /etc/xinetd.conf と同じ記法を使用します。各サービスの設定が別々のファイルに格納される主な理由は、カスタマイズを簡単にすることと、他のサービスに影響を与える可能性を少なくするためです。
これらのファイルがどのように構成されるかを知るために、 /etc/xinetd.d/krb5-telnet ファイルを見てみます。
service telnet
{
         flags           = REUSE
	 socket_type     = stream
	 wait            = no
	 user            = root
	 server          = /usr/kerberos/sbin/telnetd
	 log_on_failure  += USERID
	 disable         = yes
}
これらの行は、 telnet サービスのさまざまな側面を制御します:
  • service — サービス名を定義します。通常、 /etc/services ファイルに記載されるサービスのどれかになります。
  • flags — 接続の為の必要な数の属性をセットします。 REUSExinetd に対して Telnet 接続のソケットを再使用するように指示します。

    注記

    REUSE フラッグは推奨されていません。全てのサービスは現在暗黙的に REUSE フラッグを使用します。
  • socket_type — ネットワークソケットのタイプを stream に設定します。
  • wait — サービスがシングルスレッド (yes) か又はマルチスレッド (no) かを定義します。
  • user — プロセスが実行に使用するユーザー ID を定義します。
  • server — 始動する予定のバイナリ実行ファイルを定義します。
  • log_on_failure — 既に xinetd.conf に定義している物に追加して、 log_on_failure 用のロギングパラメータを定義します。
  • disable — サービスが無効になっているか (yes) 、有効になっているか (no) を定義します。
そのオプションと使用方法については xinetd.conf の man ページを参照してください。

46.5.4.3. xinetd 設定ファイルの変更

xinetd で保護されているサービス用には利用できる多くの種類のディレクティブがあります。このセクションはより一般的に使用されているオプションの一部を強調して説明します。
46.5.4.3.1. ロギングオプション
以下のロギングオプションは、 /etc/xinetd.conf/etc/xinetd.d/ ディレクトリ内のサービス特有の設定ファイルの両方で利用できます。
以下により一般的に使用されているロギングオプションの一覧を表示します:
  • ATTEMPT — 失敗の試行があった事実をログします (log_on_failure) 。
  • DURATION — リモートシステムによって使用されたサービスの時間の長さをログします (log_on_success) 。
  • EXIT — サービスの終了ステータス、又は終結シグナルをログします (log_on_success) 。
  • HOST — Logs the remote host's IP address (log_on_failure and log_on_success).
  • PID — 要求を受けているサーバーのプロセス ID をログします (log_on_success)。
  • USERID — 全てのマルチスレッドシステムの為に RFC 1413 で定義された方法を使用しているリモートユーザーをログします (log_on_failurelog_on_success)。
ロギングオプションの総合リストについては、 xinetd.conf の man ページを参照して下さい。
46.5.4.3.2. アクセス制御のオプション
Users of xinetd services can choose to use the TCP Wrappers hosts access rules, provide access control via the xinetd configuration files, or a mixture of both. Refer to 「TCP ラッパーの設定ファイル」 for more information about TCP Wrappers hosts access control files.
このセクションでは、 xinetd を使用してのサービスへのアクセス制御について説明します。

注記

TCP ラッパーとは異なり、 xinetd の管理者が xinetd サービスを再起動した場合にのみ、アクセス制御への変更が反映されます。
また、 TCP ラッパーとは異なり、 xinetd を通してのアクセス制御は、 xinetd によって制御されるサービスにしか影響しません。
The xinetd hosts access control differs from the method used by TCP Wrappers. While TCP Wrappers places all of the access configuration within two files, /etc/hosts.allow and /etc/hosts.deny, xinetd's access control is found in each service's configuration file in the /etc/xinetd.d/ directory.
以下のホストアクセスオプションは、 xinetd によってサポートされています:
  • only_from — 特定のホストのみにサービスの使用を許可します。
  • no_access — リストにあるホストのサービス利用を拒否する。
  • access_times — 特定のサービスが利用できる時間幅を指定する。この時間幅は24時間形式で HH:MM-HH:MM の表示をする必要があります。
only_fromno_access オプションは IP アドレス又はホスト名の一覧を使用する、あるいはネットワーク全体を指定することができます。 TCP ラッパーの様に、強化ロギング設定で xinetd アクセス制御を結合することにより、それぞれの接続試行の記録を詳細に取りながら、禁止されているホストからの要求をブロックしてセキュリティを強化できます。
例えば、以下の /etc/xinetd.d/telnet ファイルは、特定のネットワークグループからの Telnet アクセスをブロックして、許可されたユーザーにさえも、ログイン可能な時間帯を制限する為に使用できます:
service telnet
{
         disable         = no
	 flags           = REUSE
	 socket_type     = stream
	 wait            = no
	 user            = root
	 server          = /usr/kerberos/sbin/telnetd
	 log_on_failure  += USERID
	 no_access       = 172.16.45.0/24
	 log_on_success  += PID HOST EXIT
	 access_times    = 09:45-16:15
}
この例では、 10.0.1.2 などの 10.0.1.0/24 ネットワークのクライアントシステムが、 Telnet サービスにアクセスを試みると、以下のようなメッセージを受け取ります:
Connection closed by foreign host.
また、これらログイン試行は、次のように /var/log/messages の中に記録されます。
Sep  7 14:58:33 localhost xinetd[5285]: FAIL: telnet address from=172.16.45.107
Sep  7 14:58:33 localhost xinetd[5283]: START: telnet pid=5285 from=172.16.45.107
Sep  7 14:58:33 localhost xinetd[5283]: EXIT: telnet status=0 pid=5285 duration=0(sec)
TCP ラッパーを xinetd アクセス制御と併用する場合、2つのアクセス制御メカニズム間の関係を理解することが重要です。
クライアントが接続の要求をした時の xinetd による処理順序を以下に示します。
  1. xinetd デーモンは libwrap.a ライブラリコールを経由して、 TCP ラッパーホストアクセス規則にアクセスします。もし拒否の規則がクライアントホストに適合するならば、その接続は切断されます。許可の規則がクライアントホストと適合する場合、接続が xinetd に渡されます。
  2. xinetd デーモンは、 xinetd サービスと要求されたサービスの両方の為に、自身のアクセス制御規則をチェックします。もし、拒否の規則がクライアントホストに適合する場合、接続は切断されます。その他の場合は、 xinetd は要求されたインスタンスを開始して接続の制御を渡します。

重要

TCP ラッパーアクセス制御を xinetd アクセス制御と併用する場合、注意が必要です。設定ミスは良からぬ結果を招くことになります。
46.5.4.3.3. バインドとリダイレクトオプション
xinetd 用のサービス設定は、サービスをある IP アドレスにバインドし、そのサービス用の要求を別の IP アドレス、ホスト名、あるいはポートへリダイレクトします。
バインディングは、サービス特有の設定ファイルの中の bind オプションと共に制御されており、サービスをシステム上の IP アドレスと連結します。設定されると、 bind オプションは、正式な IP アドレスの為の要求のみをそのサービスへアクセスする許可をします。この方法で異なるサービスは異なるネットワークインターフェイスに需要ベースでバインドできます。
これは、特に複数のネットワークアダプターか、複数の IP アドレスを設定したシステムには便利なものです。このようなシステムでは、 Telnet などの安全でないサービスはプライベートなネットワークに接続されているインターフェイス上でのみリッスンするようにして、インターネット接続のインターフェイスではリッスンしないように設定できます。
redirect オプションは、 IP アドレス又はホスト名とそれに続くポート番号を受け付けます。サービスを設定して、このサービス用の要求を全て指定したホストか、又はポート番号にリダイレクトできるようにします。この機能は同じシステム上のポートから別のポートへポイントする、あるいは要求を同じマシン上の別の IP アドレスへリダイレクトする、あるいは要求を全く別のシステムとポート番号へ移動する、あるいはこれらのオプションの組合せをする場合に使用できます。この様にして、システム上の特定のサービスに接続しているユーザーは、問題なく他のシステムへ回送されるようにできます。
xinetd デーモンは、リクエストを送信したクライアントマシンと実際にサービスを提供するホストが接続されている間だけ有効なプロセスを生成し、2つのシステム間でデータを転送することによって、このリダイレクトを実現します。
bindredirect オプションの利点は、それらが一緒に使用される時にはっきりと判別できます。サービスをシステム上の特定の IP アドレスにバインドして、その後そのサービス用の要求を1番目のマシンだけが見ることができる2番目のマシンにリダイレクトすることにより、内部のシステムが全く別のネットワークの為にサービスを提供することに使用できます。別の方法として複数ホームのマシン上の特定のサービスが、既知の IP アドレスへの露呈されることを制限したり、またそのサービスの要求をその目的用に特定の設定をしたマシンへリダイレクトするのに使用できます。
例えば、 Telnet サービス用にこの設定でファイアウォールとして使用されているシステムを考えてみましょう:
service telnet
{
         socket_type		= stream
	 wait			= no
	 server			= /usr/kerberos/sbin/telnetd
	 log_on_success		+= DURATION USERID
	 log_on_failure		+= USERID
	 bind                    = 123.123.123.123
	 redirect                = 10.0.1.13 23
}
このファイル内の bindredirect オプションは、マシン上の Telnet サービスがインターネットに向けた外部 IP アドレス (123.123.123.123) にバインドされていることを確定します。さらには、 123.123.123.123 に送信された Telnet サービスへの要求は2番目のネットワークアダプターを通じて、内部 IP アドレスの (10.0.1.13) にリダイレクトされ、これはファイアウォールと内部のシステムしかアクセスできないようになっています。ファイアウォールはその後、その2つのシステム間で通信をしますので、接続しているシステムは実際には別のマシンに接続されている状態でも 123.123.123.123 に接続されているように見えます。
この機能は、ブロードバンド接続で固定 IP アドレスが1つのみのユーザーに特に役に立ちます。 Network Address Translation (NAT) を使用するとき、内部専用の IP アドレスを使用するゲートウェイマシンの背後にあるシステムは、そのゲートウェイシステムの外部からの利用はできません。ただし、 xinetd で制御されている特定のサービスが bindredirect オプションで設定されている場合、そのゲートウェイマシンは、外部システムとサービスを提供するように設定されている特定の内部マシン間でプロキシとして動作することができます。また、その他プロテクションとして各種の xinetd アクセス制御やロギングオプションがあります。
46.5.4.3.4. リソース管理のオプション
xinetd デーモンは、 Denial of Service (DoS) 攻撃からに対する基本的レベルの保護を追加することができます。以下のリストでは、そのような終りのない攻撃を制限できるディレクティブを表示します:
  • per_source — ソース IP アドレス毎のサービス用のインスタンスの最大数を定義します。これは整数のみを引数として受け付け、 xinetd.conf 内と xinetd.d/ ディレクトリのサービス特有の設定ファイル内で使用できます。
  • cps — 毎秒の接続最大数を定義します。このディレクティブは中間にスペースを入れた2つの整数引数を使います。1番目は1秒間に接続が許可される最大数です。2番目はサービスを再開始する時に xinetd が待機する必要のある時間の秒数です。整数のみを引数として受け付け、 xinetd.conf 内と xinetd.d/ ディレクトリのサービス特有の設定ファイル内の両方で使用できます。
  • max_load — サービスの CPU 使用方法とロード平均しきい値を定義します。これは引数に小数点を受け付けます。
    ロード平均は一定の時間の中で、どれくらいの処理がアクティブであるかの大まかな目安です。ロード平均についての詳細は uptimewho、および procinfo コマンドを参照してください。
他にも利用できる xinetd 用のリソース管理オプションがあります。また、 xinetd.conf の man ページを参照して下さい。

46.5.5. その他のリソース

TCP ラッパーと xinetd に関するその他の詳細はシステムドキュメントを参照するか、またはインターネットをご覧ください。

46.5.5.1. インストールされるドキュメント

システムに附随するドキュメントは、 TCP ラッパー、 xinetd 、およびアクセス制御の追加の設定オプションを探し始めるには良い場所です。
  • /usr/share/doc/tcp_wrappers-<version>/ — This directory contains a README file that discusses how TCP Wrappers work and the various hostname and host address spoofing risks that exist.
  • /usr/share/doc/xinetd-<version>/ — This directory contains a README file that discusses aspects of access control and a sample.conf file with various ideas for modifying service-specific configuration files in the /etc/xinetd.d/ directory.
  • TCP ラッパーと xinetd 関連の man ページ — TCP ラッパーと xinetd に関係する各種のアプリケーションや設定ファイルの man ページがいくつかあります。以下により重要と思われる man ページをリストしています:
    サーバーアプリケーション
    • man xinetdxinetd の man ページ。
    設定ファイル
    • man 5 hosts_access — TCP ラッパーのホスト制御アクセスファイルの為の man ページ。
    • man hosts_options — TCP ラッパーのオプションフィールドの man ページ。
    • man xinetd.confxinetd の設定オプションをリストした man ページ。

46.5.5.2. 役に立つ Web サイト

  • http://www.xinetd.org/xinetd のホームページで、設定ファイルのサンプル、全機能の一覧、役に立つ FAQ などが含まれています。
  • http://www.macsecurity.org/resources/xinetd/tutorial.shtml — 特定のセキュリティ条件に合わせてデフォルトの xinetd 設定ファイルを修正するさまざまな方法を詳細に説明した講習です。

46.6. Kerberos

ネットワーク内でのシステムセキュリティと統合性は扱いにくいものです。ネットワーク上で どのサービスが実行中であるか、そしてそれらのサービスが使用されている形態を調査するのに 数人の管理者の時間を取ります。
Further, authenticating users to network services can prove dangerous when the method used by the protocol is inherently insecure, as evidenced by the transfer of unencrypted passwords over a network using the traditional FTP and Telnet protocols.
Kerberos は安全でない認証手法を許可するようなプロトコルの必要性を解消して、 全体的なネットワークのセキュリティを強化します。

46.6.1. Kerberosとは?

kerberos は、 MIT で開発されたネットワーク認証のプロトコルで、対称鍵暗号法 [17] を用いてネットワークサービスにユーザーを認証します。ネットワーク上でパスワードを送る必要がなくなります。
その結果として、ユーザーが Kerberos を使用して、ネットワークサービスを認証する場合に、 ネットワークトラフィックを監視してパスワードを収集しようとする許可のないユーザーは 実質的に阻止されます。

46.6.1.1. Kerberosの利点

従来のネットワークシステムのほとんどはパスワードベースの認証体系を使用しています。この様な認証体系は、特定のネットワークサーバにユーザーがユーザー名とパスワードを提供して認証を得る必要があります。残念ながら多くのサービスで認証情報の送信は暗号化されていません。この様な認証体系を安全にするためには、ネットワークは外部からアクセス不可能で、そのネットワーク上の全てのコンピュータとユーザーは信頼され、また信頼できなければなりません。
この様なケースでさえ、ネットワークがインターネットに接続されてしまうと、ネットワークが安全であると判定できなくなります。ネットーワークへのアクセスを取得する攻撃者は、パケットスニッファとも呼ばれる簡単なパケットアナライザを使用し、上述の方法で送信されたユーザー名とパスワードを傍受、ユーザーアカウント及びセキュリティ基盤全体の健全性に被害を与えます。
Kerberos のおもな設計目標は、ネットワーク経由で送信される暗合化のない パスワードを無くすと言う事です。 Kerberos を適切に使用することで、パケットスニッファが与えるネットワーク上の脅威を効率的に抹消します。

46.6.1.2. Kerberosの欠点

Kerberosにより、一般的で、極度のセキュリティ脅威は除去できますが、 さまざまな理由により、Kerberosを実装することは難しいことがあります:
  • /etc/passwd/etc/shadow といった、 標準的な UNIX パスワードデータベースから、 Kerberos パスワードデータベースへとユーザーのパスワードを移行するのは、単調な作業となりえます。この移行作業を自動的に実行するメカニズムがないからです。以下のアドレスでオンライン 「Kerberos FAQ」 の中の質問番号 2.23 を参照して ください:
  • Kerberos has only partial compatibility with the Pluggable Authentication Modules (PAM) system used by most Red Hat Enterprise Linux servers. Refer to 「Kerberos と PAM」 for more information about this issue.
  • Kerberos では、信用できる各ユーザーが信頼できないネットワーク上で信用できないホストを使用していることを想定します。Kerberos の第一目標は、暗号化されてないパスワードがネットワーク経由で送信されないようにすることです。ただし、正式ユーザー以外が認証用に使用されるチケットを発行するホスト — key distribution center (KDC)と呼ばれる — にアクセスする場合、Kerberos の認証システム全体が被害を受ける危険性があります。
  • アプリケーションにおいて Kerberos を使用するためには、 Kerberos のライブラリを正しくコールするために、アプリケーションのソースを修正しなければいけません。 このようにアプリケーションを修正することを kerberized (kerberos 化) すると言います。アプリケーションによっては、アプリケーションサイズ、又はその設計の為にこの修正が深刻な問題になることがあります。その他の互換性のないアプリケーションには、サーバとクライアントが通信できるように変更する必要があります。ここでも又、広範囲に及ぶプログラミングが必要になります。デフォルトで kerberos をサポートしていないクローズドソースアプリケーションによく問題がみられます。
  • Kerberos は「ALL or Nothing」のソリューションです。ネットワークで Kerberosが使用されると、Kerberos 化してしないサービスに暗号化していないパスワードを送信することは危険になります。そうなると、ネットワークで Kerberos を使用するメリットはまったくありません。Kerberos によってネットワークを保護するためには、暗号化していないパスワードを送信するクライアント/サーバアプリケーションはすべて kerberos 化されたバージョンを使用するか、あるいは、このようなクライアント/サーバー アプリケーションは 全く使用しない かのどちらかにしなければなりません。

46.6.2. Kerberosの用語

Kerberos には様々なサービスを定義するための独自の用語があります。Kerberos の 機能を理解する前に知っておく必要のある用語を以下に示します:
認証サーバー (AS)
サーバーが目的のサービスのためにチケットを発行すると、そのサービスへのアクセスにそのチケットがユーザーに与えられます。認証サーバーは、要求に証明書がない又は証明書を送信しないクライアントからの要求に応えます。通常、TGT (Ticket-granting Ticket) を発行して TGS (Ticket-granting Server) にアクセスするために使用されます。認証サーバーは、通常、KDC (Key Disstribution Center) と同じホストで動作します。
暗号文
暗号化されたデータ。
クライアント
Kerberosからチケットを受け取ることができるネットワーク上の実体 (ユーザー、ホスト、アプリケーションなど)。
証明書
特定のサービスに関してクライアントの身元を識別する一時的な電子証明書のセット。 チケットとも呼ばれる。
証明書キャッシュまたはチケットファイル
ユーザーと各種ネットワークサービスの間の通信を暗号化するための鍵を含むファイル。 Kerberos 5は、その他のキャッシュタイプ(たとえば共有メモリ)を使用するための枠組みを提供しますが、 ファイルの方が徹底してサポートされています。
暗号ハッシュ
ユーザの認証に使う一方向ハッシュ。これは暗号化していないデータより安全ですが、経験豊富なクラッカーには比較的容易に解読されるものです。
GSS-API
汎用セキュリティサービスアプリケーションプログラムインターフェイス (Internet Engineering Task Force 公示の RFC-2743 に定義されている) は、一連の機能セットでセキュリティサービスを提供しています。プログラムが根底にある仕組みを知らなくても、クライアントとサーバーがお互いに認証し合う目的で、どちらも この API を使用します。ネットワークサービス(cyrus-IMAPなど)が GSS-API を使用 する場合、そのネットワークサービスは Kerberos を使って認証することができます。
ハッシュ
ハッシュ値としても知られます。ハッシュ機能 を通じて、文字列を渡すことで生成される値です。標準的には、これらの値は発信されたデータが 改竄されていないことを確認するのに使用されます。
ハッシュ機能
A way of generating a digital "fingerprint" from input data. These functions rearrange, transpose or otherwise alter data to produce a hash value.
key
他のデータを暗号化/複号化する際に使用されるデータ。暗号化されたデータは、 正しい鍵 (又は クラッカーの幸運)なしでは 復号化できません。
KDC (Key Distribution Center)
Kerberos のチケットを発行するサービス。通常、TGS (Ticket Granting Server) と同一のホスト上で動作します。
keytab (又は key table)
暗号化されていないプリンシパルとその鍵の一覧を含むファイル。サーバーは、 kinit を使用せずに、keytab ファイルから必要な鍵を取り出します。デフォルトの keytab ファイルは /etc/krb5.keytab です。 KDC 管理サーバ、/usr/kerberos/sbin/kadmind のみが、 その他のファイルを使用するサービスです。(それは /var/kerberos/krb5kdc/kadm5.keytabを使用します)。
kinit
kinitコマンドにより、ログインしている プリンシパルは最初の TGT (Ticket Granting Ticket)を取得してキャッシュに保存することができます。詳細については、kinit の man ページを 参照してください。
プリンシパル (又はプリンシパル名)
The principal is the unique name of a user or service allowed to authenticate using Kerberos. A principal follows the form root[/instance]@REALM. For a typical user, the root is the same as their login ID. The instance is optional. If the principal has an instance, it is separated from the root with a forward slash ("/"). An empty string ("") is considered a valid instance (which differs from the default NULL instance), but using it can be confusing. All principals in a realm have their own key, which for users is derived from a password or is randomly set for services.
realm
Kerberosを使用したネットワーク。KDCと呼ばれる一台または少数台のサーバーと非常に多数になる 可能性のあるクライアントから構成されます。
サービス
ネットワーク経由でアクセスされるプログラム。
チケット
特定のサービスに関してクライアントの身元を識別する一時的な電子証明書のセット。 証明書とも呼ばれる。
TGS (Ticket granting Server)
サーバーが目的のサービスのためにチケットを発行すると、次に、 そのサービスへのアクセスのためにそのチケットがユーザーに与えられる。 TGS は、通常、KDCと同一のホスト上で動作する。
TGT (Ticket granting Ticket)
あらためてKDCに対して要求しなくても、クライアントが追加のチケットを取得できるようにする特殊なチケット。
暗号化のないパスワード
プレインテキストの、人間に読み取れるパスワード。

46.6.3. Kerberosの機能

Kerberos differs from username/password authentication methods. Instead of authenticating each user to each network service, Kerberos uses symmetric encryption and a trusted third party (a KDC), to authenticate users to a suite of network services. When a user authenticates to the KDC, the KDC sends a ticket specific to that session back to the user's machine, and any Kerberos-aware services look for the ticket on the user's machine rather than requiring the user to authenticate using a password.
kerberos 化されたネットワーク上のユーザーが自分のワークステーションにログインすると、認証サーバーからの TGT (Ticket Granting Ticket)要求の一部として、 ユーザーのプリンシパルが KDC に送信されます。この要求は、ユーザーには透過的でログインプログラムで送信できます。又は、ユーザーがログインした後、kinit プログラムで送信することもできます。
The KDC then checks for the principal in its database. If the principal is found, the KDC creates a TGT, which is encrypted using the user's key and returned to that user.
The login or kinit program on the client then decrypts the TGT using the user's key, which it computes from the user's password. The user's key is used only on the client machine and is not transmitted over the network.
The TGT is set to expire after a certain period of time (usually ten to twenty-four hours) and is stored in the client machine's credentials cache. An expiration time is set so that a compromised TGT is of use to an attacker for only a short period of time. After the TGT has been issued, the user does not have to re-enter their password until the TGT expires or until they log out and log in again.
ユーザーがネットワークサービスにアクセスする必要ある場合はいつも、クライアントソフトウェアが TGT を使用して、TGS にその特定サービス用の新規チケットを要求 します。サービスチケットはそのサービスに対し、透過的にユーザーを認証するのに使用されます。

警告

ネットワーク上で、任意のユーザーが Kerberos 化されていないサービスに対し平文で パスワードを送信して認証が行なわれてしまうと、 Kerberos システムは被害を受けてしまう恐れがあります。したがって、Kerberos 化されていないサービスの使用は推薦できません。 このようなサービスには、telnet や ftp などがあります。理想的ではありませんが、他の安全なサービスの OpenSSH や SSL など、他の暗号化されたプロトコルを使用してください。
This is only a broad overview of how Kerberos authentication works. Refer to 「その他のリソース」 for links to more in-depth information.

注記

Kerberos は、正しく機能するためには以下のネットワークサービスに依存します。
  • ネットワーク上のマシン間での適度な時計同期化。
    A clock synchronization program should be set up for the network, such as ntpd. Refer to /usr/share/doc/ntp-<version-number>/index.html for details on setting up Network Time Protocol servers (where <version-number> is the version number of the ntp package installed on your system).
  • ドメインネームサービス (DNS)
    You should ensure that the DNS entries and hosts on the network are all properly configured. Refer to the Kerberos V5 System Administrator's Guide in /usr/share/doc/krb5-server-<version-number> for more information (where <version-number> is the version number of the krb5-server package installed on your system).

46.6.4. Kerberos と PAM

現在のところ、kerberos 化したサービスは、まったく PAM(Pluggable Authentication Modules)を利用していません。— これらのサービスは完全に PAM をバイパスします。ただし、PAM を使用したアプリケーションでは、pam_krb5モジュール( pam_krb5パッケージで提供されます)がインストールされているならば、認証用に Kerberos を利用できます。pam_krb5 パッケージには、logingdm などのサービスで、ユーザーを認証したり、ユーザーのパスワードを使って初期証明書を取得したりすることを可能にする、サンプルの設定ファイルが含まれています。ネットワークサービスに対するアクセスが、常に kerberos 化したサービス又は IMAP などの GSS-API を使用したサービスを使用して行われるならば、そのネットワークは十分に安全だと考えることができます。

Tip

管理者は、ユーザーが Kerberos パスワードを使用して、ほとんどのネットワークサービスに認証をする許可をしないように注意する必要があります。これらのサービスで使用するプロトコルのほとんどは、ネットワーク経由で送信する前にパスワードを暗号化しませんので Kerberos システムの価値を無駄にしてしまいます。例としては、ユーザーに Kerberos パスワードを使用した Telnet の認証を許可すべきではありません。

46.6.5. Keberos 5サーバーの設定

When setting up Kerberos, install the KDC first. If it is necessary to set up slave servers, install the master first.
To configure the first Kerberos KDC, follow these steps:
  1. Kerberos をインストールする前に、時計同期と DNS がすべてのクライアントとサーバーマシン上で機能していることを確認してください。 Kerberos サーバーとそのクライアント間の時計同期は特に注意してください。万一、サーバーとクライアントの時計に 5 分以上の違いがある場合 (このデフォルト値は Keberos 5 で設定可能)、 Kerberos クライアントはサーバーに認証されません。この時計同期は、正規のユーザーと偽って古い Kerberos チケットを用いるアタッカーを防止するために必要です。
    It is advisable to set up a Network Time Protocol (NTP) compatible client/server network even if Kerberos is not being used. Red Hat Enterprise Linux includes the ntp package for this purpose. Refer to /usr/share/doc/ntp-<version-number>/index.html (where <version-number> is the version number of the ntp package installed on your system) for details about how to set up Network Time Protocol servers, and http://www.ntp.org for more information about NTP.
  2. KDC を実行する専用マシンに、krb5-libskrb5-serverkrb5-workstationを インストールします。このマシンは特に安全が確保されることが必要です。 — できれば KDC 以外のサービスは実行しないでください。
  3. /etc/krb5.conf/var/keberos/krb5kdc/kdc.conf 設定ファイルを編集して realm 名とドメイン - realm のマッピングを反映します。 単純な realm なら、EXAMPLE.COMexample.com インスタンスの部分に、 正しいドメイン名 (適切な形式で大文字、小文字が 正しいか確認してください) を入れ、 KDC を kerberos.example.com から Kerberos のサーバー名に変更することで、構築できます。慣例では、全ての realm 名は大文字で、DNS ホスト名とドメイン名は小文字になっています。これら設定ファイルの形式の詳細については、該当する man ページを参照してください。
  4. シェルプロンプトから krb5_utilユーティリティを使ってデータベースを作成します:
    /usr/kerberos/sbin/kdb5_util create -s
    create コマンドは、 Kerberos realm の鍵を格納するためのデータベースを作成します。-s スイッチは、マスターサーバー鍵を格納する stashファイルを作成を強制します。鍵を読むための stash ファイルが無い場合は、Kerberos サーバー( krb5kdc) は起動する度に、ユーザーにマスターサーバーパスワード(鍵を 再生成するのに使用) の入力を 促します。
  5. /var/kerberos/krb5kdc/kadm5.acl ファイルを編集します。このファイルは kadmind で使用され、どのプリンシパルが Kerberos データベースに管理アクセスを持つかを決定し、また、それぞれのプリンシパルのアクセスレベルを決定します。ほとんどの企業組織では以下の様な一行で編集することができます:
    */admin@EXAMPLE.COM  *
    Most users are represented in the database by a single principal (with a NULL, or empty, instance, such as joe@EXAMPLE.COM). In this configuration, users with a second principal with an instance of admin (for example, joe/admin@EXAMPLE.COM) are able to wield full power over the realm's Kerberos database.
    一旦、kadmind がサーバー上で起動すると、realm 内のクライアントやサーバーから kadminを実行する事で、どのユーザーもそのサービスにアクセスできます。しかし、kadm5.acl ファイルに記載されているユーザだけが、自身のパスワード変更を除き、どのような変更もデーターベースに 対して行えます。

    注記

    kadmin ユーティはネットワーク上の kadmind サーバーと 通信しており、Kerberos を使って認証を処理します。このため、ネットワークを介してサーバーに接続する前に、それを管理する最初のプリンシパルが存在しなければなりません。 kadmin.local コマンドを使用して最初のプリンシパルを作成します。これは特に KDC と同じホストで使用するようになっており、認証に Kerberos を使用しません。
    最初のプリンシパルを作成するには、KDC ターミナルで次の kadmin.localコマンドを入力します:
    /usr/kerberos/sbin/kadmin.local -q "addprinc username/admin"
  6. 以下のコマンドで Kerberos を起動します:
    service krb5kdc start
    service kadmin start
    service krb524 start
  7. kadminaddprinc コマンドを使用して ユーザーのためのプリンシパルを追加します。kadminkadmin.local は KDC の コマンドラインインターフェイスです。 この中では、kadminプログラムを起動した後に addprinc などの多くのコマンドが利用できます。詳細は kadminの man ページを参照 してください。
  8. KDC がチケットを発行していることを確認します。最初に、kinit を 実行してチケットを生成し、証明書キャッシュファイルに格納します。それから、klistを使用してキャッシュ内の証明書一覧を表示します。 kdestroyを用いて、キャッシュとキャッシュ内の証明書を破棄します。

    注記

    By default, kinit attempts to authenticate using the same system login username (not the Kerberos server). If that username does not correspond to a principal in the Kerberos database, kinit issues an error message. If that happens, supply kinit with the name of the correct principal as an argument on the command line (kinit <principal>).
以上のステップを完了すると、Kerberosサーバーは起動し作動してるはずです。

46.6.6. Kerberos 5クライアントの設定

Setting up a Kerberos 5 client is less involved than setting up a server. At a minimum, install the client packages and provide each client with a valid krb5.conf configuration file. While ssh and slogin are the preferred method of remotely logging in to client systems, Kerberized versions of rsh and rlogin are still available, though deploying them requires that a few more configuration changes be made.
  1. Be sure that time synchronization is in place between the Kerberos client and the KDC. Refer to 「Keberos 5サーバーの設定」 for more information. In addition, verify that DNS is working properly on the Kerberos client before configuring the Kerberos client programs.
  2. 全てのクライアントマシンに krb5-libskrb5-workstation パッケージをインストールしてください。それぞれのクライアントには、1つの有効な /etc/krb5.conf ファイルを供給してください (通常これは、KDC で使用されるのと同じ krb5.confファイルです)。
  3. Before a workstation in the realm can use Kerberos to authenticate users who connect using ssh or Kerberized rsh or rlogin, it must have its own host principal in the Kerberos database. The sshd, kshd, and klogind server programs all need access to the keys for the host service's principal. Additionally, in order to use the kerberized rsh and rlogin services, that workstation must have the xinetd package installed.
    Using kadmin, add a host principal for the workstation on the KDC. The instance in this case is the hostname of the workstation. Use the -randkey option for the kadmin's addprinc command to create the principal and assign it a random key:
    addprinc -randkey host/blah.example.com
    これで、プリンシパルを作成できました。ワークステーション自身上で、kadminを実行し、 kadminの中の ktaddコマンドを使って、ワークステーション用の鍵を引き出せます。
    ktadd -k /etc/krb5.keytab host/blah.example.com
  4. その他の kerberos 化されたネットワークサービスを使用する場合、以下に一般的な kerberos 化されたサービスの一覧、及びサービスを有効にする方法を示します:
    • ssh — OpenSSH uses GSS-API to authenticate users to servers if the client's and server's configuration both have GSSAPIAuthentication enabled. If the client also has GSSAPIDelegateCredentials enabled, the user's credentials are made available on the remote system.
    • rshrloginrshrloginのKerberos 化したバージョンを 使うには、kloginekloginkshell が有効でなければなりません。
    • Telnet — kerberos 化した Telnet を使用するには、 krb5-telnetを有効にする必要があります。
    • FTP — FTP アクセスを用意するには、ftpの root でプリンシパル用の鍵を作成し、引き出す必要があります。FTP サーバの完全修飾形のホスト名への事例を設定して、それから gssftp を有効にします。
    • IMAP — kerberos 化された IMAP サーバーを使用する場合、そのサーバーが cyrus-sasl-gssapiパッケージもインストールしているなら、 cyrus-imap パッケージは Kerberos 5を使用します。 cyrus-sasl-gssapi パッケージには、GSS-API 認証を サポートする Cyrus SASL プラグインが含まれています。Cyrus IMAP は cyrus のユーザーが /etc/krb5.keytab 内に適切なキーを見付けることが出来る限り、Kerberos で正しく機能して、プリンシパルの root は imap (kadminで作成)に セットされます。
      An alternative to cyrus-imap can be found in the dovecot package, which is also included in Red Hat Enterprise Linux. This package contains an IMAP server but does not, to date, support GSS-API and Kerberos.
    • CVS — CVS の kerberos 化したサーバーを使用するのに、 gserverは、 cvsの root で プリンシパルを使用しますが、 その他の面では CVS pserverと同じです。
    Refer to 17章サービスへのアクセスの制御 for details about how to enable services.

46.6.7. Domain-to-Realm Mapping

When a client attempts to access a service running on a particular server, it knows the name of the service (host) and the name of the server (foo.example.com), but because more than one realm may be deployed on your network, it must guess at the name of the realm in which the service resides.
By default, the name of the realm is taken to be the DNS domain name of the server, upper-cased.

foo.example.org → EXAMPLE.ORG
foo.example.com → EXAMPLE.COM
foo.hq.example.com → HQ.EXAMPLE.COM

In some configurations, this will be sufficient, but in others, the realm name which is derived will be the name of a non-existent realm. In these cases, the mapping from the server's DNS domain name to the name of its realm must be specified in the domain_realm section of the client system's krb5.conf. For example:
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
The above configuration specifies two mappings. The first mapping specifies that any system in the "example.com" DNS domain belongs to the EXAMPLE.COM realm. The second specifies that a system with the exact name "example.com" is also in the realm. (The distinction between a domain and a specific host is marked by the presence or lack of an initial ".".) The mapping can also be stored directly in DNS.

46.6.8. Setting Up Secondary KDCs

For a number of reasons, you may choose to run multiple KDCs for a given realm. In this scenario, one KDC (the master KDC) keeps a writable copy of the realm database and runs kadmind (it is also your realm's admin server), and one or more KDCs (slave KDCs) keep read-only copies of the database and run kpropd.
The master-slave propagation procedure entails the master KDC dumping its database to a temporary dump file and then transmitting that file to each of its slaves, which then overwrite their previously-received read-only copies of the database with the contents of the dump file.
To set up a slave KDC, first ensure that the master KDC's krb5.conf and kdc.conf files are copied to the slave KDC.
Start kadmin.local from a root shell on the master KDC and use its add_principal command to create a new entry for the master KDC's host service, and then use its ktadd command to simultaneously set a random key for the service and store the random key in the master's default keytab file. This key will be used by the kprop command to authenticate to the slave servers. You will only need to do this once, regardless of how many slave servers you install.
~]# kadmin.local -r EXAMPLE.COM
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin: add_principal -randkey host/masterkdc.example.com
Principal "host/host/masterkdc.example.com@EXAMPLE.COM" created.
kadmin: ktadd host/masterkdc.example.com
Entry for principal host/masterkdc.example.com with kvno 3, encryption type Triple DES cbc mode with \
	HMAC/sha1 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/masterkdc.example.com with kvno 3, encryption type ArcFour with HMAC/md5 \
	added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/masterkdc.example.com with kvno 3, encryption type DES with HMAC/sha1 added \
	to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/masterkdc.example.com with kvno 3, encryption type DES cbc mode with RSA-MD5 \
	added to keytab WRFILE:/etc/krb5.keytab.
kadmin: quit
Start kadmin from a root shell on the slave KDC and use its add_principal command to create a new entry for the slave KDC's host service, and then use kadmin's ktadd command to simultaneously set a random key for the service and store the random key in the slave's default keytab file. This key is used by the kpropd service when authenticating clients.
~]# kadmin -p jimbo/admin@EXAMPLE.COM -r EXAMPLE.COM
Authenticating as principal jimbo/admin@EXAMPLE.COM with password.
Password for jimbo/admin@EXAMPLE.COM:
kadmin: add_principal -randkey host/slavekdc.example.com
Principal "host/slavekdc.example.com@EXAMPLE.COM" created.
kadmin: ktadd host/slavekdc.example.com@EXAMPLE.COM
Entry for principal host/slavekdc.example.com with kvno 3, encryption type Triple DES cbc mode with \
	HMAC/sha1 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/slavekdc.example.com with kvno 3, encryption type ArcFour with HMAC/md5 added \
	to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/slavekdc.example.com with kvno 3, encryption type DES with HMAC/sha1 added \
	to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/slavekdc.example.com with kvno 3, encryption type DES cbc mode with RSA-MD5 added \
	to keytab WRFILE:/etc/krb5.keytab.
kadmin: quit
With its service key, the slave KDC could authenticate any client which would connect to it. Obviously, not all of them should be allowed to provide the slave's kprop service with a new realm database. To restrict access, the kprop service on the slave KDC will only accept updates from clients whose principal names are listed in /var/kerberos/krb5kdc/kpropd.acl. Add the master KDC's host service's name to that file.
~]# echo host/masterkdc.example.com@EXAMPLE.COM > /var/kerberos/krb5kdc/kpropd.acl
Once the slave KDC has obtained a copy of the database, it will also need the master key which was used to encrypt it. If your KDC database's master key is stored in a stash file on the master KDC (typically named /var/kerberos/krb5kdc/.k5.REALM, either copy it to the slave KDC using any available secure method, or create a dummy database and identical stash file on the slave KDC by running kdb5_util create -s (the dummy database will be overwritten by the first successful database propagation) and supplying the same password.
Ensure that the slave KDC's firewall allows the master KDC to contact it using TCP on port 754 (krb5_prop), and start the kprop service. Then, double-check that the kadmin service is disabled.
Now perform a manual database propagation test by dumping the realm database, on the master KDC, to the default data file which the kprop command will read (/var/kerberos/krb5kdc/slave_datatrans), and then use the kprop command to transmit its contents to the slave KDC.
~]# /usr/kerberos/sbin/kdb5_util dump /var/kerberos/krb5kdc/slave_datatrans
~]# kprop slavekdc.example.com
Using kinit, verify that a client system whose krb5.conf lists only the slave KDC in its list of KDCs for your realm is now correctly able to obtain initial credentials from the slave KDC.
That done, simply create a script which dumps the realm database and runs the kprop command to transmit the database to each slave KDC in turn, and configure the cron service to run the script periodically.

46.6.9. Setting Up Cross Realm Authentication

Cross-realm authentication is the term which is used to describe situations in which clients (typically users) of one realm use Kerberos to authenticate to services (typically server processes running on a particular server system) which belong to a realm other than their own.
For the simplest case, in order for a client of a realm named A.EXAMPLE.COM to access a service in the B.EXAMPLE.COM realm, both realms must share a key for a principal named krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM, and both keys must have the same key version number associated with them.
To accomplish this, select a very strong password or passphrase, and create an entry for the principal in both realms using kadmin.
~]# kadmin -r A.EXAMPLE.COM
kadmin: add_principal krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM
Enter password for principal "krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM":
Re-enter password for principal "krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM":
Principal "krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM" created.
kadmin:	quit
~]# kadmin -r B.EXAMPLE.COM
kadmin: add_principal krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM
Enter password for principal "krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM":
Re-enter password for principal "krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM":
Principal "krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM" created.
kadmin: quit
Use the get_principal command to verify that both entries have matching key version numbers (kvno values) and encryption types.

Dumping the Database Doesn't Do It

Security-conscious administrators may attempt to use the add_principal command's -randkey option to assign a random key instead of a password, dump the new entry from the database of the first realm, and import it into the second. This will not work unless the master keys for the realm databases are identical, as the keys contained in a database dump are themselves encrypted using the master key.
Clients in the A.EXAMPLE.COM realm are now able to authenticate to services in the B.EXAMPLE.COM realm. Put another way, the B.EXAMPLE.COM realm now trusts the A.EXAMPLE.COM realm, or phrased even more simply, B.EXAMPLE.COM now trusts A.EXAMPLE.COM.
This brings us to an important point: cross-realm trust is unidirectional by default. The KDC for the B.EXAMPLE.COM realm may trust clients from the A.EXAMPLE.COM to authenticate to services in the B.EXAMPLE.COM realm, but the fact that it does has no effect on whether or not clients in the B.EXAMPLE.COM realm are trusted to authenticate to services in the A.EXAMPLE.COM realm. To establish trust in the other direction, both realms would need to share keys for the krbtgt/A.EXAMPLE.COM@B.EXAMPLE.COM service (take note of the reversed in order of the two realms compared to the example above).
If direct trust relationships were the only method for providing trust between realms, networks which contain multiple realms would be very difficult to set up. Luckily, cross-realm trust is transitive. If clients from A.EXAMPLE.COM can authenticate to services in B.EXAMPLE.COM, and clients from B.EXAMPLE.COM can authenticate to services in C.EXAMPLE.COM, then clients in A.EXAMPLE.COM can also authenticate to services in C.EXAMPLE.COM, even if C.EXAMPLE.COM doesn't directly trust A.EXAMPLE.COM. This means that, on a network with multiple realms which all need to trust each other, making good choices about which trust relationships to set up can greatly reduce the amount of effort required.
Now you face the more conventional problems: the client's system must be configured so that it can properly deduce the realm to which a particular service belongs, and it must be able to determine how to obtain credentials for services in that realm.
First things first: the principal name for a service provided from a specific server system in a given realm typically looks like this:
service/server.example.com@EXAMPLE.COM
In this example, service is typically either the name of the protocol in use (other common values include ldap, imap, cvs, and HTTP) or host, server.example.com is the fully-qualified domain name of the system which runs the service, and EXAMPLE.COM is the name of the realm.
To deduce the realm to which the service belongs, clients will most often consult DNS or the domain_realm section of /etc/krb5.conf to map either a hostname (server.example.com) or a DNS domain name (.example.com) to the name of a realm (EXAMPLE.COM).
Having determined which to which realm a service belongs, a client then has to determine the set of realms which it needs to contact, and in which order it must contact them, to obtain credentials for use in authenticating to the service.
This can be done in one of two ways.
The default method, which requires no explicit configuration, is to give the realms names within a shared hierarchy. For an example, assume realms named A.EXAMPLE.COM, B.EXAMPLE.COM, and EXAMPLE.COM. When a client in the A.EXAMPLE.COM realm attempts to authenticate to a service in B.EXAMPLE.COM, it will, by default, first attempt to get credentials for the EXAMPLE.COM realm, and then to use those credentials to obtain credentials for use in the B.EXAMPLE.COM realm.
The client in this scenario treats the realm name as one might treat a DNS name. It repeatedly strips off the components of its own realm's name to generate the names of realms which are "above" it in the hierarchy until it reaches a point which is also "above" the service's realm. At that point it begins prepending components of the service's realm name until it reaches the service's realm. Each realm which is involved in the process is another "hop".
For example, using credentials in A.EXAMPLE.COM, authenticating to a service in B.EXAMPLE.COM:


A.EXAMPLE.COM → EXAMPLE.COM → B.EXAMPLE.COM

  • A.EXAMPLE.COM and EXAMPLE.COM share a key for krbtgt/EXAMPLE.COM@A.EXAMPLE.COM
  • EXAMPLE.COM and B.EXAMPLE.COM share a key for krbtgt/B.EXAMPLE.COM@EXAMPLE.COM
Another example, using credentials in SITE1.SALES.EXAMPLE.COM, authenticating to a service in EVERYWHERE.EXAMPLE.COM:


SITE1.SALES.EXAMPLE.COM → SALES.EXAMPLE.COM → EXAMPLE.COM → EVERYWHERE.EXAMPLE.COM

  • SITE1.SALES.EXAMPLE.COM and SALES.EXAMPLE.COM share a key for krbtgt/SALES.EXAMPLE.COM@SITE1.SALES.EXAMPLE.COM
  • SALES.EXAMPLE.COM and EXAMPLE.COM share a key for krbtgt/EXAMPLE.COM@SALES.EXAMPLE.COM
  • EXAMPLE.COM and EVERYWHERE.EXAMPLE.COM share a key for krbtgt/EVERYWHERE.EXAMPLE.COM@EXAMPLE.COM
Another example, this time using realm names whose names share no common suffix (DEVEL.EXAMPLE.COM and PROD.EXAMPLE.ORG):


DEVEL.EXAMPLE.COM → EXAMPLE.COM → COM → ORG → EXAMPLE.ORG → PROD.EXAMPLE.ORG

  • DEVEL.EXAMPLE.COM and EXAMPLE.COM share a key for krbtgt/EXAMPLE.COM@DEVEL.EXAMPLE.COM
  • EXAMPLE.COM and COM share a key for krbtgt/COM@EXAMPLE.COM
  • COM and ORG share a key for krbtgt/ORG@COM
  • ORG and EXAMPLE.ORG share a key for krbtgt/EXAMPLE.ORG@ORG
  • EXAMPLE.ORG and PROD.EXAMPLE.ORG share a key for krbtgt/PROD.EXAMPLE.ORG@EXAMPLE.ORG
The more complicated, but also more flexible, method involves configuring the capaths section of /etc/krb5.conf, so that clients which have credentials for one realm will be able to look up which realm is next in the chain which will eventually lead to the being able to authenticate to servers.
The format of the capaths section is relatively straightforward: each entry in the section is named after a realm in which a client might exist. Inside of that subsection, the set of intermediate realms from which the client must obtain credentials is listed as values of the key which corresponds to the realm in which a service might reside. If there are no intermediate realms, the value "." is used.
Here's an example:
[capaths]
A.EXAMPLE.COM = {
	B.EXAMPLE.COM = .
	C.EXAMPLE.COM = B.EXAMPLE.COM
	D.EXAMPLE.COM = B.EXAMPLE.COM
	D.EXAMPLE.COM = C.EXAMPLE.COM
}
In this example, clients in the A.EXAMPLE.COM realm can obtain cross-realm credentials for B.EXAMPLE.COM directly from the A.EXAMPLE.COM KDC.
If those clients wish to contact a service in theC.EXAMPLE.COM realm, they will first need to obtain necessary credentials from the B.EXAMPLE.COM realm (this requires that krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM exist), and then use those credentials to obtain credentials for use in the C.EXAMPLE.COM realm (using krbtgt/C.EXAMPLE.COM@B.EXAMPLE.COM).
If those clients wish to contact a service in the D.EXAMPLE.COM realm, they will first need to obtain necessary credentials from the B.EXAMPLE.COM realm, and then credentials from the C.EXAMPLE.COM realm, before finally obtaining credentials for use with the D.EXAMPLE.COM realm.

注記

Without a capath entry indicating otherwise, Kerberos assumes that cross-realm trust relationships form a hierarchy.
Clients in the A.EXAMPLE.COM realm can obtain cross-realm credentials from B.EXAMPLE.COM realm directly. Without the "." indicating this, the client would instead attempt to use a hierarchical path, in this case:


A.EXAMPLE.COM → EXAMPLE.COM → B.EXAMPLE.COM

46.6.10. その他のリソース

Kerberosについての詳細は、以下のリソースで参照してください。

46.6.10.1. インストールされているドキュメント

  • The Kerberos V5 Installation Guide and the Kerberos V5 System Administrator's Guide in PostScript and HTML formats. These can be found in the /usr/share/doc/krb5-server-<version-number>/ directory (where <version-number> is the version number of the krb5-server package installed on your system).
  • The Kerberos V5 UNIX User's Guide in PostScript and HTML formats. These can be found in the /usr/share/doc/krb5-workstation-<version-number>/ directory (where <version-number> is the version number of the krb5-workstation package installed on your system).
  • Kerberos の man ページ — Kerberos の実装に関連するさまざまなアプリケーションや設定ファイルの man ページが多数あります。 以下の一覧に重要な man ページのいくつかをあげておきます。
    クライアントアプリケーション
    • man kerberos — Kerberos システムの基本です。 証明書の働きや Kerberos チケットの発行/破棄に関する推奨が説明されています。 man ページの下部には、関連する man ページの参照番号が記載されています。
    • man kinit — このコマンドを使用した TGT (ticket-granting ticket) の取得とキャッシュ保存の仕方を説明しています。
    • man kdestroy — このコマンドを使用した kerberos 証明書の破棄の仕方を説明しています。
    • man klist — このコマンドを使用して、キャッシュ保存されている Kerberos 証明書の一覧表示方法を説明しています。
    管理用アプリケーション
    • man kadmin — このコマンドを使用した Kerberos V5 データベースの管理方法を説明しています。
    • man kdb5_util — Kerberos V5 データベース上で、このコマンドを使用しての低レベル管理機能の作成/実行方法を説明しています。
    サーバーアプリケーション
    • man krb5kdc — Kerberos V5 KDC 用の利用できるコマンドラインオプションを説明します。
    • man kadmind — Kerberos V5 管理サーバー用の利用できるコマンドラインオプションを説明しています。
    設定ファイル
    • man krb5.conf — Kerberos V5 ライブラリ用の設定ファイル内で使用するフォーマットとオプションを説明しています。
    • man kdc.conf — Kerberos V5 AS とKDC 用の設定 ファイル内で利用できるフォーマットとオプションを説明しています。

46.6.10.2. 役に立つWebサイト

46.7. Virtual Private Networks (VPNs)

複数のサテライトオフィスを持つ企業では、通信中におけるデータの機密保護と効率化のために専用回線を使用して相互に接続することがよくあります。例えば、多くのビジネスはフレームリレーか 非同期転送モード (ATM-Asynchronous Transfer Mode) ラインをエンドツーエンドネットワーキングソリューションとして利用して他のオフィスとリンクしています。これは、特に、企業レベルの専用デジタル通信関連にかかる費用を抑えながら拡張したい中小規模のビジネス (SMB-small to medium sized business) にとっては高くつくことになります。
このニーズに対応するため、 VPN (Virtual Private Network) が開発されました。 専用回線と同じ機能原理で、 VPN により安全な 2 グループ間 (またはネットワーク間) でのデジタル通信が可能となり、既存の LAN (Local Area Network) から WAN (Wide Area Network) を創造します。フレームリレーや ATM との違いはそのトランスポート媒介です。 VPN はトランスポート層としてデータグラムを使用して IP を送出し、インターネット上に目的地までの安全なパイプを提供します。ほとんどのフリーソフトウェア VPN 実装は、トランジットにおいて更にデータをマスク化するためオープンスタンダードな暗号化メソッドを採用しています。
セキュリティ強化のためにハードウェア VPN ソリューションを採用する企業もあれば、ソフトウェアやプロトコルベースの実装を用いる企業もあります。 Cisco、 Nortel、 IBM、 Checkpoint などハードウェア VPN ソリューションを提供するベンダーがいくつかあります。 Linux 用には、標準化 IPSec (いわゆる Internet Protocol Security) 実装を利用する FreeS/Wan というフリーソフトウェアベースの VPN ソリューションがあります。こうした VPN ソリューションは、ソフトウェア又はハードウェアベースには関係なく、特殊なルータとして動作し、あるオフィスから別のオフィスへの IP 接続の間に位置します。

46.7.1. VPN の仕組の説明

パケットがクライアントから発信された時、クライアントはルーティングと認証の為に AH (Authentication Header) を追加する VPN ルータ又はゲートウェイを通じてパケットを送信します。データは それから暗号化され、最後に ESP Encapsulating Security Payload で 包まれます。この ESP は復号化と処理方法で構成されています。
受信 VPN ルータはヘッダ情報を取り除いて、データを復号化し、目的地 (ワーク ステーションまたはネットワーク上のノード) へルーティングします。ネットワーク間接続を利用して、ローカルネットワークの受信ノードは、復号化されたパケットを受け取り処理のための準備を完了します。ネットワーク間の VPN 接続での暗号化/復号化のプロセスはローカルノードに対して透過的です。
このように強化されたセキュリティレベルであっても、攻撃者によってパケットが遮断されるだけでなく、そのパケットの解読もされてしまう恐れがあります。また、サーバーとクライアント間の man-in-the-middle 攻撃を使う侵入者は、認証セッション用のプライベートキーに対するアクセス権を持つことになる恐れもあります。彼らは認証及び暗号解読を行うために複数のレイヤーを使用するため、 VPN は一体化されたイントラネットとして動作する複数のリモートノードに接続する為の安全で効率の良い手段になります。

46.7.2. VPN と Red Hat Enterprise Linux

Red Hat Enterprise Linux は WAN への安全に接続するためのソフトウェアソリューションの実装に対してさまざまなオプションを提供しています。ユーザーは、自己の WAN への接続を安全にするソフトウェアの実装に使える各種オプションを持ちます。 IPsec 、いわゆる Internet Protocol Security は、 Red Hat Enterprise Linux 用の VPN 実装に対応しており、支店オフィスや遠隔地ユーザーを持つ、組織の使用ニーズに十分に応じることができます。

46.7.3. IPsec

Red Hat Enterprise Linux は、インターネットなどの一般的なキャリアネットワーク上でセキュアなトンネルを使ってリモートホストとネットワークを互いに接続するための IPsec をサポートしています。 IPsec は、ホスト間接続 (あるコンピュータワークステーションから別のワークステーションへ) または、ネットワーク間接続 (ある LAN/WANから別のLAN/ WANへ) を使って実現されます。
Red Hat Enterprise Linuxでの IPsec 実装は IKE (Internet Key Exchange) を使用し、これは接続中のシステム間の相互認証や安全な接合に使用される IETF (Internet Engineering Task Force) で実装されるプロトコルです。

46.7.4. IPsec 接続の作成

An IPsec connection is split into two logical phases. In phase 1, an IPsec node initializes the connection with the remote node or network. The remote node or network checks the requesting node's credentials and both parties negotiate the authentication method for the connection.
Red Hat Enterprise Linux のシステムでは、 IPsec 接続は IPsec ノード認証の 事前共有キー メソッドを使用します。事前共有キーの IPsec 接続では、 IPsec 接続の第二段階へ移行するために両方のホストが同じキーを使用する必要があります。
IPsec 接続の第2段階では、 SA (Security Association ) が IPsec ノード間で作成されます。この段階は、暗号化手法、秘密セッションキー交換パラメータ、その他などの設定情報をもつ SA データベースを確立します。この段階は、リモートノードとネットワークとの実際の IPsec 接続を管理します。
Red Hat Enterprise Linux の IPsec 実装には、インターネットを介したホスト間のキーの共有に IKE を使用します。 racoon キーデーモンは、 IKE キー配付と交換を処理します。このデーモンに関する詳細は racoon man ページを参照してください。

46.7.5. IPsec インストール

IPsec を実装するには、すべての IPsec ホスト (ホスト間設定を使用する場合) 又は、ルータ (ネットワーク間設定を使用する場合) 上に ipsec-tools RPM パッケージをインストールする必要があります。 RPM パッケージには基本のライブラリ、デーモン、及び IPsec 接続の設定に役立つ設定ファイルが入っています。そして以下を含みます:
  • /sbin/setkey — カーネル内 IPsec のキー管理とセキュリティ属性を処理します。この実行可能ファイルは racoon キー管理デーモンにより制御されます。詳細は setkey(8) manページを参照してください。
  • /usr/sbin/racoon — the IKE key management daemon, used to manage and control security associations and key sharing between IPsec-connected systems.
  • /etc/racoon/racoon.conf — 接続内で使用される認証方法や暗号化アルゴリズムなど、 IPsec 接続の各種事項を設定するのに使用される racoon デーモン設定ファイルです。使用できるディレクティブの総合一覧は、 racoon.conf(5) man ページを参照してください。
Red Hat Enterprise Linux 上で IPsec を設定するには、 ネットワーク管理ツール を使用するか、又はネットワーキングと IPsec 設定ファイルを手動で編集します。

46.7.6. IPsec ホスト間 (Host-to-Host) 設定

IPsec は、ホスト間接続の方法であるデスクトップまたはワークステーション (ホスト) から別のデスクトップまたはワークステーションに接続するよう設定することができます。このタイプの接続は、ホスト間で安全なトンネルを作成するために各ホストが接続されるネットワークを使用します。ホスト間接続に必要なことはほとんどなく、各ホストでの IPsec 設定も同様に行なうことはあまりありません。ホストにはキャリアネットワークヘの専用接続 (インターネットなど) と、 IPsec 接続を作成するための Red Hat Enterprise Linux があれば十分です。

46.7.6.1. ホスト間 (Host-to-Host) 接続

ホスト間の IPsec 接続は2つのシステムに於いて暗号化した接続を持ち、両方とも、同じ認証キーで IPsec を実行しています。IPsec 接続がアクティブな状態では、2つのホスト間のどんなネットワークトラフィックでも暗号化されています。
ホスト間 IPsec 接続を設定するには、各ホストに対して次の手順を適用します。

注記

設定している実際のマシン上で以下の操作を実行する必要があります。リモートでの IPsec 接続の設定と確立の試みは避けて下さい。
  1. コマンドシェルで、 system-config-network を入力して、 ネットワーク管理ツール を開始します。
  2. IPsec タブ上で、 新規 をクリックして、 IPsec 設定ウィザードを開始します。
  3. ホスト間 IPsec 接続の設定を開始するには 進む をクリックします。
  4. Enter a unique name for the connection, for example, ipsec0. If required, select the check box to automatically activate the connection when the computer starts. Click Forward to continue.
  5. 接続タイプとして、 ホスト間暗号化 を選択し、それから 進む(Forward) をクリックします。
  6. 使用する暗号化タイプを選択します:手動、又は自動。
    手動の暗号化を選択する場合、暗号化キーをプロセスの後で提供する必要があります。自動暗号化を選択した場合、 racoon デーモンが暗号化キーを担当します。自動暗号化を使用したい場合、 ipsec-tools パッケージをインストールしなければなりません。
    進む をクリックして続行します。
  7. リモートホストの IP アドレスを入力します。
    リモートホストの IP アドレスを確認するには、次のコマンドを リモートホスト上で 使用します。
    ifconfig <device>
    where <device> is the Ethernet device that you want to use for the VPN connection.
    システム内にイーサネットが1つのみの場合は、デバイス名は標準的に eth0 となります。 以下の例では、このコマンドからの関連情報を示しています (これは例としての出力と言うことに注意して下さい):
    eth0      Link encap:Ethernet  HWaddr 00:0C:6E:E8:98:1D
              inet addr:172.16.44.192  Bcast:172.16.45.255  Mask:255.255.254.0
    IP アドレスは inet addr: ラベルの後に続く、番号です。

    注記

    ホスト対ホスト接続には、両方のホストとも公共の経路指定可能なアドレスを持つ必要が あります。別の方法としては、両方のホストが同じ LAN 上にある限りは、個人アドレスで、 経路指定不可のアドレス (例:10.x.x.x や 192.168.x.x の範囲)を持つことができます。
    If the hosts are on different LANs, or one has a public address while the other has a private address, refer to 「IPsec ネットワーク間 (Network-to-Network) 設定」.
    進む をクリックして続行します。
  8. If manual encryption was selected in step 6, specify the encryption key to use, or click Generate to create one.
    1. 認証キーを指定するか、又は 生成(Generate) をクリックして、作成します。番号又か文字のどんな組み合わせも使用できます。
    2. 進む をクリックして続行します。
  9. IPsec — 要約 ページにある情報を確認し、それから 適用 をクリックします。
  10. Click File > Save to save the configuration.
    変更を反映させる為には、ネットワークを再起動する必要があります。ネットワークを再起動するには、次のコマンドを使用します:
    service network restart
  11. リストから IPsec 接続を選択して、 アクティベート ボタンをクリックします。
  12. Repeat the entire procedure for the other host. It is essential that the same keys from step 8 be used on the other hosts. Otherwise, IPsec will not work.
After configuring the IPsec connection, it appears in the IPsec list as shown in 図46.10「IPsec Connection」.
IPsec Connection
IPsec Connection
図46.10 IPsec Connection

以下のファイルは、 IPsec 接続が設定された時に作成されます:
  • /etc/sysconfig/network-scripts/ifcfg-<nickname>
  • /etc/sysconfig/network-scripts/keys-<nickname>
  • /etc/racoon/<remote-ip>.conf
  • /etc/racoon/psk.txt
自動暗号化が選択されると、 /etc/racoon/racoon.conf も作成されます。
When the interface is up, /etc/racoon/racoon.conf is modified to include <remote-ip>.conf.

46.7.6.2. 手動による IPsec ホスト間設定

接続を作成するには、まず、各ワークステーションからシステムとネットワークの情報を収集します。ホスト間接続には、次のような情報が必要になります。
  • 各ホストの IP アドレス
  • 例えば、 ipsec1 のような独自の名前。これは IPsec 接続を識別する為と、それを他のデバイスや接続と区別する為に使用されます。
  • 固定暗号化キーか racoon で自動的に生成されるキー
  • 接続を開始しセッション中に暗号化キーを交換するのに使用される pre-shared 認証キー
例えば、ワークステーション A とワークステーション B を IPSec トンネルを使ってお互いに接続したいとします。ワークステーションは値 Key_Value01 を持つ事前共有キーを使い接続し、ユーザーは racoon で各ホスト間の認証キーを自動生成、共有することに同意しています。両方のホストユーザーはその接続名を ipsec1 にしました。

注記

大文字、小文字、数字、句読点を混合して使用する PSK を選択しなければなりません。容易に推測できるような PSK はセキュリティ上危険です。
各ホストに対して同じ接続名を使用する必要がありません。インストールに便利でわかりやすい名前を選択してください。
以下にワークステーション B とのホスト間 IPsec 接続の為のワークステーション A 用の IPsec 設定ファイルを示します。この例の接続を識別する個有名は ipsec1 ですので、その結果のファイル名は /etc/sysconfig/network-scripts/ifcfg-ipsec1 になります。
DST=X.X.X.X
TYPE=IPSEC
ONBOOT=no
IKE_METHOD=PSK
ワークステーション A では X.X.X.X にワークステーション B の IP アドレスを入れますが、ワークステーション B では X.X.X.X にワークステーション A の IP アドレスを入れます。起動時に接続は開始されないよう設定され (ONBOOT=no)、 認証には事前共有キーの方法を使用します (IKE_METHOD=PSK)。
以下に、 /etc/sysconfig/network-scripts/keys-ipsec1 と呼ばれる、事前共有キーファイルの内容を示します。両方のワークステーションがお互いを認証するのに使います。このファイルの内容は両方のワークステーションで同じでなければならず、また、 root ユーザーのみがこのファイルの読み取り/書き込みをできる状態であるべきものです。
IKE_PSK=Key_Value01

重要

root ユーザーだけがファイルを読み取り、編集できるよう、 keys-ipsec1 ファイルを変更するには、ファイルを作成してから次のコマンドを実行します:
chmod 600 /etc/sysconfig/network-scripts/keys-ipsec1
認証キーを変更するためには、両方のワークステーション上で keys-ipsec1 ファイルを編集します。 正常な接続には、両方のキーが同じでなければなりません
次の例は、リモートホストへの段階1接続のための特殊設定です。ファイル名は X.X.X.X.conf になります (X.X.X.X には、リモート IPsec ホストの IP アドレスを入れます)。このファイルは、 IPsec トンネルが起動されると自動的に生成されるため、直接編集しないように注意してください。
remote X.X.X.X
{
         exchange_mode aggressive, main;
	 my_identifier address;
	 proposal {
	 	encryption_algorithm 3des;
		hash_algorithm sha1;
		authentication_method pre_shared_key;
		dh_group 2 ;
	}
}
IPsec 接続が開始される時に作成されるデフォルトの第1段階設定ファイルには、 Red Hat Enterprise Linux の IPsec 実装で使用される以下のステートメントが含まれています。
リモート X.X.X.X
この設定ファイルの結果となるスタンザが、 X.X.X.X IP アドレスで識別されたリモートノードに対してのみ適用されることを定義します。
exchange_mode aggressive
Red Hat Enterprise Linux 上の IPsec 用のデフォルト設定は積極的な認証モードを使用し、複数のホストとの複数の IPsec 接続の設定を許可しながら、接続オーバーヘッドを低減します。
my_identifier address
ノードの認証時に使用する識別手法を定義します。 Red Hat Enterprise Linux はノードの識別に IP アドレスを使用します。
encryption_algorithm 3des
認証中に使用する暗号法を定義します。デフォルトでは、 3DES (Triple Data Encryption Standard) が使用されます。
hash_algorithm sha1;
ノード間の第1段階交渉の間に使用するハッシュアルゴリズムを指定します。デフォルトでは、 Secure Hash Algorithm のバージョン1が使用されます。
authentication_method pre_shared_key
ノード交渉中に使用する認証法を定義します。 Red Hat Enterprise Linux はデフォルトでは、認証に事前共有キーを使用します。
dh_group 2
動的生成のセッションキーを確立する為の Diffie-Hellman グループ番号を指定します。デフォルトでは、 modp1024 (グループ2) が使用されます。
46.7.6.2.1. racoon 設定ファイル
The /etc/racoon/racoon.conf files should be identical on all IPsec nodes except for the include "/etc/racoon/X.X.X.X.conf" statement. This statement (and the file it references) is generated when the IPsec tunnel is activated. For Workstation A, the X.X.X.X in the include statement is Workstation B's IP address. The opposite is true of Workstation B. The following shows a typical racoon.conf file when the IPsec connection is activated.
# Racoon IKE daemon configuration file.
# See 'man racoon.conf' for a description of the format and entries.

path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";

sainfo anonymous
{
        pfs_group 2;
        lifetime time 1 hour ;
        encryption_algorithm 3des, blowfish 448, rijndael ;
        authentication_algorithm hmac_sha1, hmac_md5 ;
        compression_algorithm deflate ;
}
include "/etc/racoon/X.X.X.X.conf";
このデフォルトの racoon.conf ファイルには、 IPsec 設定用の定義されたパス、事前共有キー、及び証書が含まれています。 sainfo anonymous のフィールドは IPsec ノード間の第2段階 SA を 説明しています。 — IPsec 接続の性格 (使用されるサポート付暗号化アルゴリズムを含む) と交換キーの方法。次のリストは第2段階のフィールドを定義しています:
sainfo anonymous
IPsec 証明証が合致する限り、どのピアとでも無記名で SA が開始することを示します。
pfs_group 2
Diffie-Hellman キー交換プロトコルを定義し、これは IPsec ノードが IPsec 接続の第2段階の為に相互に臨時のセッションキーを確立する方法を決定します。デフォルトでは、 Red Hat Enterprise Linux の IPsec 実装は Diffie-Hellman 暗号化キー交換グループのグループ2 (いわゆる modp1024) を使用します。グループ 2 は、 1024 ビットモジュラーべき乗を使い、 これはプライベートキーが侵略されても、 以前の IPsec 送信に対する攻撃者からの解読を防止します。
存続期間の時間は1時間
このパラメータは、 SA の存続期間を指定し、時間、またはデータのバイト数で数量化できます。デフォルトの Red Hat Enterprise Linux IPsec 実装は存続期間を1時間に指定しています。
encryption_algorithm 3des, blowfish 448, rijndael
第2段階用にサポートされた暗号法を指定します。 Red Hat Enterprise Linux は 3DES 、 448 ビット Blowfish、 及び Rijndael (AES、 いわゆる Advanced Encryption Standard で使用される暗号表記) をサポートしています。
authentication_algorithm hmac_sha1, hmac_md5
サポートされる認証用のハッシュアルゴリズムをリストします。サポートのモード は、 sha1 と md5 のハッシュメッセージ認証コードです (HMAC)。
compression_algorithm deflate
IPCOMP (IP Payload Compression) サポート用の収縮コンプレッションアルゴリズムを定義して、これにより低速な接続上で IP データグラムのかなり高速な転送ができます。
接続を開始するには、次のコマンドを各ホストで実行します。
ifup <nickname>
where <nickname> is the name you specified for the IPsec connection.
To test the IPsec connection, run the tcpdump utility to view the network packets being transferred between the hosts and verify that they are encrypted via IPsec. The packet should include an AH header and should be shown as ESP packets. ESP means it is encrypted. For example:
~]# tcpdump -n -i eth0 host <targetSystem>

IP 172.16.45.107 > 172.16.44.192: AH(spi=0x0954ccb6,seq=0xbb): ESP(spi=0x0c9f2164,seq=0xbb)

46.7.7. IPsec ネットワーク間 (Network-to-Network) 設定

IPsec can also be configured to connect an entire network (such as a LAN or WAN) to a remote network using a network-to-network connection. A network-to-network connection requires the setup of IPsec routers on each side of the connecting networks to transparently process and route information from one node on a LAN to a node on a remote LAN. 図46.11「A network-to-network IPsec tunneled connection」 shows a network-to-network IPsec tunneled connection.
A network-to-network IPsec tunneled connection
A network-to-network IPsec tunneled connection
図46.11 A network-to-network IPsec tunneled connection

この図は、インターネットで区切られた 2 つの LAN を示しています。この 2 つの LANIPsec ルータを使い、インターネットを通るセキュアなトンネルで接続を認証、開始します。通過中に遮断されたパケットは、この 2 つの LAN の間の暗号保護パケットをクラックするためにブルートフォース復号化を要求します。 LAN パケットの処理、暗号化/復号化、及びルーティングは完全に IPsec ルータにより処理されるため、 192.168.1.0/24 IP 範囲のあるノードから 192.168.2.0/24 範囲の別ノードへの通信プロセスはノードに対して完全に透過的になります。
ネットワーク間接続に必要な情報には次のようなものがあります。
  • 専用 IPsec ルータの外部アクセス可能な IP アドレス
  • IPsec ルータが対応する LAN/WAN のネットワークアドレス範囲 (192.168.0.0/24、 10.0.1.0/24 など)
  • ネットワークノードからインターネットにデータをルーティングするゲートウェイデバイスの IP アドレス
  • 例えば、 ipsec1 のような独自の名前。これは IPsec 接続を識別する為と、それを他のデバイスや接続と区別する為に使用されます。
  • 固定暗号化キーか racoon で自動的に生成されるキー
  • 接続を開始しセッション中に暗号化キーを交換するのに使用される pre-shared 認証キー

46.7.7.1. ネットワーク間 (VPN) 接続

ネットワーク間の IPsec 接続では、2つの IPsec ルーターを使用します。各ネットワークに1つずつです。これを通じてプライベートサブネットのネットワークトラフィックがルートされます。
For example, as shown in 図46.12「Network-to-Network IPsec」, if the 192.168.1.0/24 private network sends network traffic to the 192.168.2.0/24 private network, the packets go through gateway0, to ipsec0, through the Internet, to ipsec1, to gateway1, and to the 192.168.2.0/24 subnet.
IPsec ルータにはパブリックにアドレス可能な IP アドレスと適切なプライベートネットワークに接続された 2 番めのイーサネットデバイスが必要になります。トラフィックの行先が暗号化された接続を有する別の IPsec ルータである場合、このトラフィックは必ず IPsec ルータを通過します。
Network-to-Network IPsec
Network-to-Network IPsec
図46.12 Network-to-Network IPsec

別のネットワーク設定オプションとして、各 IP ルータとインターネット間のファイアウォール、及び各 IPsec ルータとサブネットゲートウェイ間のイントラネットファイアウォールなどがあります。 IPsec ルータとサブネットのゲートウェイは、 IPsec ルータとして動作するパブリックの IP アドレスとプライベートサブネット用のゲートウェイとして動作するプライベート IP アドレスの 2 つのイーサネットデバイスで 1 つのシステムとすることができます。各 IPsec ルータはゲートウェイをそのプライベートネットワークまたはパブリックのゲートウェイに使用してパケットを他の IPsec ルータに送信することができます。
ネットワーク間 IPsec 接続を設定するには次の手順に従います。
  1. コマンドシェルで、 system-config-network を入力して、 ネットワーク管理ツール を開始します。
  2. IPsec タブ上で、 新規 をクリックして、 IPsec 設定ウィザードを開始します。
  3. 進む をクリックしてネットワーク間 IPsec 接続の設定を開始します。
  4. Enter a unique nickname for the connection, for example, ipsec0. If required, select the check box to automatically activate the connection when the computer starts. Click Forward to continue.
  5. 接続タイプに ネットワーク間の暗号化 (VPN) を選択し、 進む をクリックします。
  6. 使用する暗号化タイプを選択します:手動、又は自動。
    手動の暗号化を選択する場合、暗号化キーをプロセスの後で提供する必要があります。自動暗号化を選択した場合、 racoon デーモンが暗号化キーを担当します。自動暗号化を使用したい場合、 ipsec-tools パッケージをインストールしなければなりません。
    進む をクリックして続行します。
  7. ローカルネットワーク のページで、次の情報を入力します。
    • ローカルネットワークアドレス — プライベートネットワークに接続される IPsec ルータ上のデバイスの IP アドレスです。
    • ローカルサブネットマスク — ローカルネットワーク IP アドレスのサブネットマスクです。
    • ローカルネットワークゲートウェイ — プライベートサブネット用のゲートウェイです。
    進む をクリックして続行します。
    Local Network Information
    Local Network Information
    図46.13 Local Network Information

  8. リモートネットワーク のページで、次の情報を入力します。
    • リモート IP アドレスその他のプライベートネットワーク用IPsec ルータのパブリックにアドレス可能な IP アドレスです。ここでは、 ipsec0 に対してパブリックにアドレス可能な IP アドレス ipsec1 を入力しています。
    • リモートネットワークアドレス他の IPsec ルータの内側にあるプライベートサブネットのネットワークアドレスです。ここでは、 ipsec1 の設定では 192.168.1.0 を入力し ipsec0 の設定には 192.168.2.0 を入力しています。
    • リモートサブネットマスク — リモート IP アドレスのサブネットマスクです。
    • リモートネットワークゲートウェイ — リモートネットワークアドレス用ゲートウェイの IP アドレスです。
    • If manual encryption was selected in step 6, specify the encryption key to use or click Generate to create one.
      認証キーを指定するか 生成 をクリックしてキーを作成します。このキーは数字と文字の組み合わせなら何でも構いません。
    進む をクリックして続行します。
    Remote Network Information
    Remote Network Information
    図46.14 Remote Network Information

  9. IPsec — 要約 ページにある情報を確認し、それから 適用 をクリックします。
  10. Select File > Save to save the configuration.
  11. リストから IPsec 接続を選択して、それから アクティベート をクリックして接続をアクティベートします。
  12. IP 転送を有効にする:
    1. Edit /etc/sysctl.conf and set net.ipv4.ip_forward to 1.
    2. 次のコマンドを使って変更を有効にします。
      sysctl -p /etc/sysctl.conf
IPsec 接続を起動させるネットワークスクリプトは、必要であれば自動的にネットワークルートを作成して IPsec ルータ経由でパケットを送信します。

46.7.7.2. 手動による IPsec ネットワーク間 (Network-to-Network) 設定

例えば、 LAN A (lana.example.com) と LAN B (lanb.example.com) を IPsec トンネルで接続したいとします。 LAN A のネットワークアドレスは 192.168.1.0/24 の範囲、一方、 LAN B は 192.168.2.0/24 の範囲を使用しています。ゲートウェイ IP アドレスは、 LAN A が192.168.1.254、 LAN B が 192.168.2.254 です。 IPsec ルータは各 LAN ゲートウェイとは別で、 2 つのネットワークデバイスを使用しています。 eth0 は外部アクセス可能な静的 IP アドレスに割り当てられインターネットにアクセスします。 eth1 はルーティングポイントとして動作し、あるネットワークノードからリモートネットワークノードに LAN パケットを処理、転送します。
各ネットワーク間の IPsec 接続は値 r3dh4tl1nux で事前共有キーを使用し、 A と B の管理者は各 IPsec ルータ間の認証キーが racoon により自動生成され共有されることに同意しています。 LAN A の管理者は IPsec 接続の名前を ipsec0 にし、 LAN B の管理者は IPsec 接続の名前を ipsec1 にしています。
以下の例は、 LAN A のネットワーク間 IPsec 接続用の ifcfg ファイルを示します。この例の接続を識別する固有名は ipsec0 ですので、そのファイルは /etc/sysconfig/network- scripts/ifcfg-ipsec0 という名前になります。
TYPE=IPSEC
ONBOOT=yes
IKE_METHOD=PSK
SRCGW=192.168.1.254
DSTGW=192.168.2.254
SRCNET=192.168.1.0/24
DSTNET=192.168.2.0/24
DST=X.X.X.X
以下のリストがこのファイルの内容を説明しています:
TYPE=IPSEC
接続のタイプを指定します。
ONBOOT=yes
ブートアップ時に接続が開始すべきことを指定します。
IKE_METHOD=PSK
接続が、認証で事前共有キーメソッドを使用することを指定します。
SRCGW=192.168.1.254
発信元ゲートウェイの IP アドレスです。 LAN A 用には、これが LAN A ゲートウェイであり、 LAN B 用には、これが LAN B ゲートウェイです。
DSTGW=192.168.2.254
送信先のゲートウェイです。 LAN A 用には、これが LAN B ゲートウェイであり、 LAN B 用には、これが LAN A ゲートウェイです。
SRCNET=192.168.1.0/24
IPsec 接続用の発信元ネットワークを指定し、この例では、 LAN A 用のネットワーク幅となります。
DSTNET=192.168.2.0/24
IPsec 接続用の送信先ネットワークを指定し、この例では、 LAN B 用のネットワークとなります。
DST=X.X.X.X
外部からアクセス可能な LAN B の IPアドレス
次の例は、両方のネットワークが互いに認証するために使用する、 /etc/sysconfig/network-scripts/keys-ipsecX (X は、 0 を LAN A 用に、 1 を LAN B 用に入れる) と呼ばれる事前共有キーファイルの内容を示します。このファイルの内容は同一でなければならず、また、このファイルを読み取り/書き込みできるのは root ユーザーだけにする必要があります。
IKE_PSK=r3dh4tl1nux

重要

root ユーザーだけがファイルを読み取り、編集できるように keys-ipsecX ファイルを変更するには、ファイルを作成した後に次のコマンドを実行します:
chmod 600 /etc/sysconfig/network-scripts/keys-ipsec1
認証キーを変更するには、両方の IPsec ルータ上で keys-ipsecX ファイルを編集します。 両方のキーが同一でなければ正しい接続はできません
次の例は、 IPsec 接続用の /etc/racoon/racoon.conf 設定ファイルを示します。ファイルの下部の include 行は自動的に生成されますが、 IPsec トンネルが実行中の場合のみ、現れることに注意して下さい。
# Racoon IKE daemon configuration file.
# See 'man racoon.conf' for a description of the format and entries.
path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";

sainfo anonymous
{
	pfs_group 2;
	lifetime time 1 hour ;
	encryption_algorithm 3des, blowfish 448, rijndael ;
	authentication_algorithm hmac_sha1, hmac_md5 ;
	compression_algorithm deflate ;
}
include "/etc/racoon/X.X.X.X.conf"
以下は、リモートネットワークへ接続のための特殊設定です。ファイル名は X.X.X.X.conf になります (X.X.X.X は、リモート IPsec ルータの IP アドレスになります)。このファイルは、 IPsec トンネルが起動されると自動的に生成されるため、直接、変更しないよう注意してください。
remote X.X.X.X
{
        exchange_mode aggressive, main;
	my_identifier address;
	proposal {
		encryption_algorithm 3des;
		hash_algorithm sha1;
		authentication_method pre_shared_key;
		dh_group 2 ;
	}
}
IPsec 接続を開始する前に、 IP フォワーディングをカーネルで有効にしてください。 IP フォワーディングを有効にするには次を実行します。
  1. Edit /etc/sysctl.conf and set net.ipv4.ip_forward to 1.
  2. 次のコマンドを使って変更を有効にします。
    sysctl -p /etc/sysctl.conf
IPsec 接続を開始するには、各ルータで次のコマンドを実行します。
ifup ipsec0
接続が開かれ、 LAN A と B が互いに通信できるようになります。 IPsec 接続で ifup を実行して呼び出された初期化スクリプトを通じてルートが自動的に作成されます。ネットワークのルート一覧を表示するには、次のコマンドを実行します。
ip route list
To test the IPsec connection, run the tcpdump utility on the externally-routable device (eth0 in this example) to view the network packets being transferred between the hosts (or networks), and verify that they are encrypted via IPsec. For example, to check the IPsec connectivity of LAN A, use the following command:
tcpdump -n -i eth0 host lana.example.com
パケットには AH ヘッダが含まれ、 ESP パケットとして表示されていなければなりません。 ESP とは、暗号化されているということです。例えば (バックスラッシュは 1 行続くと言う意味):
12:24:26.155529 lanb.example.com > lana.example.com: AH(spi=0x021c9834,seq=0x358): \
	lanb.example.com > lana.example.com: ESP(spi=0x00c887ad,seq=0x358) (DF) \
	(ipip-proto-4)

46.7.8. IPsec 接続の開始と停止

IPsec 接続がブート時に起動するよう設定されていなかった場合、コマンドラインで管理することができます。
接続を開始するには、ホスト間 IPsec なら各ホストで、ネットワーク間 IPsec の場合には各 IPsec ルータで、それぞれ次のコマンドを実行します。
ifup <nickname>
where <nickname> is the nickname configured earlier, such as ipsec0.
接続を停止するには、次のコマンドを実行します。
ifdown <nickname>

46.8. Firewalls

情報セキュリティは1つのプロセスであり製品ではないとよく思われていますが、標準的なセキュリティのインプリメンテーションでは、通常、アクセス権を制御して許可があり識別及び追跡が可能なユーザーに対してネットワークリソースを制限する何らかの専用メカニズムを採用しています。 Red Hat Enterprise Linux には、ネットワークレベルでのアクセス制御に関して問題を抱えている管理者やセキュリティエンジニアの方々を支援する強力なツールがいくつか含まれています。
ファイアウォールはネットワークセキュリティ実装の核のひとつなるコンポーネントです。ホームユーザー向け 1 台の PC 保護から、企業の機密情報を安全に保護するデータセンターソリューションまで、市場の全レベルに合わせてファイアウォールソリューションを提供しているベンダーがいくつかあります。ファイアウォールには、 Cisco 、 Nokia 、 Sonicwall などが提供しているファイアウォール器機などの独立型ハードウェアソリューションもあります。また、 Checkpoint 、 McAfee 、 Symantec などのベンダーによって個人仕様からビジネス仕様まで商用ソフトウェアファイアウォールソリューションが開発されています。
Apart from the differences between hardware and software firewalls, there are also differences in the way firewalls function that separate one solution from another. 表46.5「ファイアウォールのタイプ」 details three common types of firewalls and how they function:
表46.5 ファイアウォールのタイプ
方法 詳細 長所 短所
NAT NAT (Network Address Translation) は、プライベート IP サブネットワークを 1 つのパブリック IP アドレスまたは小規模なパブリック IP アドレスの集合の後に配置して、幾つかのソースにではなく1つのソースに全ての要求を出すようなマスカレード (偽装) をします。 Linux カーネルには Netfilter カーネルサブシステムを使用するビルトインの NAT 機能があります。
· LAN 上のマシンに透過的に設定が可能です。
· 1 つまたは複数の外部 IP アドレスの後にある多くのマシンやサービスの保護は管理作業を単純化します。
· NAT ファイアウォール/ゲートウェイにあるポートを開いたり閉じたりすることで、 LAN とのユーザーアクセス制限を設けることができます。
· ユーザーがファイアウォールの外にあるサービスに接続すると悪意あるアクティビティを防ぐことができません。
パケットフィルタ パケットフィルタリングファイアウォールは、 LAN を通過する各データパケットを読み取ります。ヘッダ情報でパケットを読み込んでから処理して、ファイアウォール管理者により実践されているプログラム可能なルールに基づいてパケットをフィルタします。 Linux カーネルには Netfilter カーネルサブシステムを使ったビルトインのパケットフィルタリング機能をがあります。
· iptables フロントエンドユーティリティを使用したカスタマイズが可能です。
· ネットワークアクティビティはアプリケーションレベルではなくルータレベルでフィルタされるため、クライアント側でのカスタマイズは必要ありません。
· パケットはプロキシ経由で伝送されるわけではなく、クライアントからリモートホストへ直接接続されているためネットワークのパフォーマンスは早くなります。
· プロキシファイアウォールのようなコンテンツのパケットはフィルタできません。
· プロトコル層でパケットを処理しますが、アプリケーション層ではパケットをフィルタすることはできません。
· 特に IP マスカレード 、またはローカルサブネットと DMZ ネットワークで接続されている場合、複雑なネットワークアーキテクチャではパケットフィルタリングのルール確立が難しくなる可能性があります。
プロキシ プロキシファイアウォールは、 LAN クライアントからプロキシマシンへの特定のプロトコルまたはタイプの要求すべてをフィルタします。次に、その要求をローカルクライアントに代わってインターネットに送ります。プロキシマシンは、悪意あるリモートユーザーとネットワーククライアントマシン間のバッファとして動作します。
· LAN の外で機能するアプリケーション及びプロトコルに対して管理者が制御を行えるようします。
· プロキシサーバーのなかには、頻繁にアクセスされるデータをインターネット接続を使用して要求するのではなく、ローカルにキャッシュできるものがあります。これにより帯域幅の消費量を節約することができます。
· プロキシのサービスは細かくログに記録して監視することができるのでネットワーク上のリソース使用を厳しく制御することができます。
· プロキシはアプリケーション固有 (HTTP、 Telnet など)またはプロトコル制限付き (ほとんどのプロキシは TCP 接続されたサービスとしか動作しない) であることがよくあります。
· アプリケーションサービスはプロキシの後では実行できないため、使用しているアプリケーションサーバーは別の形態のネットワークセキュリティを使用しなければなりません。
· すべての要求および伝送はクライアントからリモートサービスに直接行われるのではなく1つのソースを通過することになるため、プロキシはネットワークのボトルネックとなる可能性があります。

46.8.1. Netfilter と IPTables

Linux カーネルは、 netfilter と呼ばれる強力なネットワークサブシステムが特徴です。 netfilter サブシステムはステートフルまたはステートレスのパケットフィルタリング機能に加えて、 NAT 及び IP マスカレードサービスも提供します。また、 Netfilter には、高度なルーティング及び接続状態管理のための IP ヘッダ情報を mangle する機能もあります。 Netfilter は IPTables ツールで制御します。

46.8.1.1. IPTables の概要

Netfilter のパワーと柔軟性は iptables 管理ツールで実装します。構文は前身である ipchains に似ているコマンドラインツールです。
構文が似ているからといって実装も同じわけではありません。ただし、 ipchains は、送信元パスのフィルタリング、送信先パスのフィルタリング、送信元と送信先両方の接続ポートのフィルタリングのため複雑なルールセットを必要とします。
一方、 iptables は Netfilter サブシステムを使用してネットワーク接続、検閲、処理を強化します。 iptables は高度なログ機能、 pre- と post- のルーティング動作、ネットワークアドレス変換、ポートフォワーディング機能などをすべて1つのコマンドラインインターフェースで実現します。
This section provides an overview of iptables. For more detailed information, refer to 「IPTables」.

46.8.2. 基本的なファイアウォールの設定

ビルなどに見られる火災の拡大を防ぐ防火壁と同様、コンピュータのファイアウォールは悪意あるソフトウエアがコンピュータに拡がるのを防ごうと試みます。また、許可のないユーザーによるコンピュータへのアクセスを防ぐのにも役立ちます。
デフォルトの Red Hat Enterprise Linux インストールでは、ファイアウォールはご使用のコンピュータまたはネットワークとインターネットなどの信頼できないネットワークとの間に存在します。ご使用のコンピュータ上でリモートユーザーがアクセスできるサービスを判別します。正しく設定されたファイアウォールはシステムの安全性を飛躍的に高めることができます。インターネット接続のある Red Hat Enterprise Linux システムはすべてファイアウォールを設定されることをお勧めします。

46.8.2.1. Security Level Configuration Tool

Red Hat Enterprise Linux インストールの ファイアウォールの設定 画面で、基本のファイアウォールを有効にする、また特定のデバイスや着信サービス、ポートを許可する機会が与えられていたはずです。
After installation, you can change this preference by using the Security Level Configuration Tool.
このアプリケーションを起動するには、次のコマンドを使用します。
system-config-securitylevel
Security Level Configuration Tool
セキュリティレベルの設定
図46.15 Security Level Configuration Tool

注記

The Security Level Configuration Tool only configures a basic firewall. If the system needs more complex rules, refer to 「IPTables」 for details on configuring specific iptables rules.

46.8.2.2. ファイアウォールを有効にする、無効にする

以下のファイアウォール用のオプションを1つ選択します。
  • 無効 — ファイアウォールを無効にするとシステムに対する完全なアクセスを提供することになり、セキュリティチェックを行いません。信頼できるネットワーク上で (インターネットではなく) 稼動しているか、 iptables コマンドラインツールを使ってカスタムのファイアウォールを設定する必要がある場合に限り選択します。

    警告

    ファイアウォールの設定及びカスタマイズされたファイアウォールのルールは /etc/sysconfig/iptables ファイルに格納されます。 無効 を選択して OK をクリックすると、これらの設定とファイアウォールのルールは失われます。
  • 有効 — このオプションでシステムは DNS 応答や DHCP 要求などの送信要求に応答しない着信接続を拒否するよう設定されます。このマシンで実行しているサービスにアクセスが必要な場合は、特定のサービスがファイアウォールを通過できるよう許可することができます。
    システムをインターネットに接続しているがサーバーを稼動させる予定はない場合、これは最も安全な選択肢になります。

46.8.2.3. 信頼できるサービス

信頼できるサービス 一覧でオプションを有効にすると指定したサービスのファイアウォール通過を許可します。
WWW (HTTP)
HTTP プロトコルは Apache (及び他のウェブサーバー) によってウェブページを提供するために使用されます。ウェブサーバーを公開する予定がある場合は、このチェックボックスを選択してください。このオプションはローカルでのページ表示や、ウェブページの開発には必要ありません。このサービスは httpd パッケージがインストールされている必要があります。
WWW (HTTP) を有効にしても HTTP の SSL バージョンである HTTPS のポートは開きません。このサービスが必要な場合は、 Secure WWW (HTTPS) のチェックボックスを選択します。
FTP
FTP プロトコルはネットワーク上のマシン間でのファイル転送に使用されます。 FTP サーバーを公開する予定がある場合は、このチェックボックスを選択します。このサービスには vsftpd パッケージがインストールされている必要があります。
SSH
Secure Shell (SSH) はリモートマシン上にログインしてコマンドを実行するためのツール一式になります。マシンへのリモートアクセスを ssh 経由で許可するには、 このチェックボックスを選択します。このサービスには openssh-server パッケージがインストールされている必要があります。
Telnet
Telnet はリモートマシンにログインするためのプロトコルです。 Telnet 通信は暗号化されず、ネットワークのスヌーピングに対するセキュリティがありません。 Telnet の着信アクセスの許可は避けた方が良いでしょう。 telnet を使ったマシンへのリモートアクセスを許可するには、このチェックボックスを選択します。このサービスには telnet-server パッケージがインストールされている必要があります。
Mail (SMTP)
SMTP is a protocol that allows remote hosts to connect directly to your machine to deliver mail. You do not need to enable this service if you collect your mail from your ISP's server using POP3 or IMAP, or if you use a tool such as fetchmail. To allow delivery of mail to your machine, select this check box. Note that an improperly configured SMTP server can allow remote machines to use your server to send spam.
NFS4
Network File System (NFS) は *NIX システムでよく使われるファイル共有プロトコルです。このプロトコルのバージョン 4 は前のバージョンよりさらに安全性が向上しています。他のネットワークユーザーとご使用のシステムにあるファイルやディレクトリを共有する場合は、このチェックボックスを選択します。
Samba
Samba is an implementation of Microsoft's proprietary SMB networking protocol. If you need to share files, directories, or locally-connected printers with Microsoft Windows machines, select this check box.

46.8.2.4. その他のポート

The Security Level Configuration Tool includes an Other ports section for specifying custom IP ports as being trusted by iptables. For example, to allow IRC and Internet printing protocol (IPP) to pass through the firewall, add the following to the Other ports section:
194:tcp,631:tcp

46.8.2.5. 設定を保存する

OK をクリックして変更を保存しファイアウォールを有効または無効にします。 ファイアウォールを有効にする を選んだ場合、選択したオプションは iptables コマンドに対して変換されて /etc/sysconfig/iptables ファイルに書き込まれます。また、 iptables サービスが起動されるため、選択オプションを保存すると直ちにファイアウォールが起動されます。 ファイアウォールを無効にする を選んだ場合、 /etc/sysconfig/iptables ファイルが削除されて直ちに iptables サービスが停止します。
The selected options are also written to the /etc/sysconfig/system-config-securitylevel file so that the settings can be restored the next time the application is started. Do not edit this file by hand.
Even though the firewall is activated immediately, the iptables service is not configured to start automatically at boot time. Refer to 「IPTables サービスをアクティブにする」 for more information.

46.8.2.6. IPTables サービスをアクティブにする

iptables サービスが実行中の場合にのみファイアウォールのルールはアクティブになります。手作業でこのサービスを起動するには、次のコマンドを使用します。
service iptables restart
システムがブートしたら iptables が必ず起動するようにするには、次のコマンドを使用します。
chkconfig --level 345 iptables on
ipchains サービスは Red Hat Enterprise Linux に含まれていません。ただし、 ipchains がインストールされている場合は (例えば、アップグレードを行いシステムに前回 ipchains がインストールされていた場合)、 ipchains サービスと iptables サービスを同時にアクティブにしないでください。 ipchains サービスが無効になっていてブート時に起動するよう設定されていないことを確認するには、次の 2 つのコマンドを使用します。
service ipchains stop
chkconfig --level 345 ipchains off

46.8.3. IPTables の使い方

iptablesを使うには、まず iptables サービスを起動します。次のコマンドを使用して iptables サービスを起動します。
service iptables start

注記

iptables サービスしか使用しない予定の場合は、 ip6tables サービスをオフにすることができます。 ip6tables サービスを解除する場合、 IPv6 ネットワークも解除するのを忘れないようにしてください。ファイアウォールと一致しないネットワークデバイスは、絶対にアクティブな状態にしないでください。
システムがブートしたらデフォルトで iptables を強制起動させるには、次のコマンドを使用します。
chkconfig --level 345 iptables on
これにより iptables はシステムがランレベル 3、 4、 5、のいずれかでブートすると必ず強制的に起動されます。

46.8.3.1. IPTables コマンドの構文

次の iptables コマンドの例では基本的なコマンドの構造を示しています。
iptables -A <chain> -j <target>
The -A option specifies that the rule be appended to <chain>. Each chain is comprised of one or more rules, and is therefore also known as a ruleset.
3 つのビルトインチェーンは、 INPUT、 OUTPUT、 FORWARD になります。これらのチェーンは永久のため削除できません。チェーンはパケットが操作されるポイントを定義します。
The -j <target> option specifies the target of the rule; i.e., what to do if the packet matches the rule. Examples of built-in targets are ACCEPT, DROP, and REJECT.
使用できるチェーン、オプション、ターゲットについては、 iptables の man ページを参照してください。

46.8.3.2. 基本的なファイアウォールポリシー

基本的なファイアウォールのポリシーの確立は、さらに細かなユーザー定義のルールを作る基礎となります。
iptables チェーンはデフォルトのポリシーと、デフォルトポリシーと連携して動作する 0 またはそれ以上のルールとで構成され、ファイアウォールの全体的なルールセットを定義します。
チェーンのデフォルトポリシーは DROP か ACCEPT のどちらかになります。セキュリティ志向の管理者はたいていデフォルトポリシーの DROP を実装し、状況に応じて特定パケットのみを許可しています。例えば、以下のポリシーではネットワークゲートウェイ上でのすべての着信及び発信パケットをブロックします。
iptables -P INPUT DROP
iptables -P OUTPUT DROP
また、内部のクライアントの不注意によりインターネットに曝されてしまう危険を制限するため、 フォワードされたパケット — ファイアウォールから目的とするノードまでルーティングされるネットワークトラフィック— もすべて拒否することを推奨します。これを行うには、次のルールを使用します。
iptables -P FORWARD DROP
各チェーンのデフォルトポリシーを設定したら、特定のネットワーク及びセキュリティに必要な新しいルールを作成します。
次のセクションでは、 iptables ルールの保存方法及び iptables ファイアウォールを構築していく過程で実装するであろういくつかのルールについて概説していきます。

46.8.3.3. IPTables のルールの保存する、復元する

iptables への変更は一時的なものです。システムが再起動するまたは iptables サービスが再起動すると、ルールは自動的に消去、リセットされます。 iptables サービスが起動したらロードされるようルールを保存するには、次のコマンドを使用します。
service iptables save
ルールは /etc/sysconfig/iptables ファイルに保存され、サービスが起動するまたはマシンがブートする度に適用されます。

46.8.4. 一般的な IPTables フィルタリング

リモート攻撃者による LAN へのアクセスを防ぐことはネットワークセキュリティ上、最も重要な事項のひとつになります。制限の厳しいファイアウォールで、悪意あるリモートユーザーから LAN の完全性を保護しなければなりません。
しかし、着信、発信、フォワードされたパケットのすべてをブロックするデフォルトのポリシーでは、ファイアウォール/ゲートウェイと内部の LAN ユーザーがお互いに通信したり、また外部リソースと通信することは不可能になります。
ユーザーがネットワーク関連の機能を実行してネットワークアプリケーションを使用できるようにするには、管理者が通信用の特定ポートを開かなければなりません。
例えば、 ファイアウォール上で ポート 80 へのアクセスを許可するには、次のルールをアペンドします。
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
これにより、ユーザーは標準ポート 80 経由で通信するウェブサイトを閲覧できるようになります。セキュアなウェブサイト (例えば、 https://www.example.com/ など) へのアクセスを許可するには、以下のようにしてポート 443 も開く必要があります。
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

重要

iptables ルールセットを作成する場合、順序が重要になります。
192.168.100.0/24 サブネットからのパケットはすべてドロップするようにルールで指定され、このあとに 192.168.100.13 (これはドロップした制限サブネット内) からのパケットを許可するルールが続く場合、 2 番目のルールは無視されます。
192.168.100.13 からのパケットを許可するルールを先に指定し、その後にサブネットの残りすべてをドロップするルールを続けなければなりません。
既存のチェーン内の特定の場所にルールを挿入するには、 -I オプションを使用します。例えば、
iptables -I INPUT 1 -i lo -p all -j ACCEPT
このルールは、ローカルのループバックデバイストラフィックを許可するために INPUT チェーンに 1 番目のルールとして挿入されます。
LAN へのリモートアクセスが必要となる場合があります。 LAN サービスに対する暗号化されたリモート接続に関しては、例えば SSH のようなセキュアなサービスが使用できます。
PPP ベースのリソース (モデムバンクや大量の ISP アカウントなど) を管理する管理者の場合、ファイアウォールの壁を安全に回避するのにダイアルアップアクセスが使用できます。ダイアルアップは直接接続であり、モデムの接続は一般的にファイアウォール/ゲートウェイの背後にあるためです。
ブロードバンド接続のリモートユーザーの場合、特別な設定を行います。 iptables がリモート SSH クライアントからの接続を受けるよう設定します。例えば、次のようなルールによりリモート SSH アクセスを許可します。
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
これらのルールは、インターネットやファイアウォール/ゲートウェイに直接接続されている単独 PC など個別のシステムに対し、着信及び外部への送信のアクセスを許可します。しかし、ファイアウォール/ゲートウェイの後ろにあるノードには、これらのサービスへのアクセスを許可していません。これらのサービスに LAN アクセスを許可するには、 iptables フィルタールールを持つ Network Address Translation (NAT) を使用することができます。

46.8.5. FORWARDNAT のルール

ほとんどの ISP は顧客企業や組織に対しパブリックにルーティングが可能な IP アドレスは制限された数しか提供していません。
したがって、管理者は LAN 上の全ノードにパブリックな IP アドレスをそれぞれ振り分けることなく、インターネットサービスへのアクセスを共有できる方法を見つけなければなりません。プライベート IP アドレスの使用が LAN 上のすべてのノートに対してインターネット及び外部ネットワークサービスへの正常なアクセスを確保する最も一般的な方法となります。
エッジルータ (ファイアウォールなど) はインターネットから着信を受けそのパケットを目的の LAN ノードへルーティングすることができます。同時に、ファイアウォール/ゲートウェイは LAN ノートからリモートインターネットサービスへの発信要求をルーティングすることも可能です。
This forwarding of network traffic can become dangerous at times, especially with the availability of modern cracking tools that can spoof internal IP addresses and make the remote attacker's machine act as a node on your LAN.
このような危険を防ぐために、 iptables はネットワークリソースの異常な使用を防ぐために実装できるルーティング及びフォワーディングのポリシーを提供しています。
FORWARD チェーンを使用することで管理者は LAN 内でパケットがルーティングされる場所を制御することができます。例えば、 LAN 全体にフォワーディングを許可するには (ファイアウォール/ゲートウェイが内部 IP アドレスを eth1 に持っていると仮定) 、次のルールを使用します。
iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT
このルールはファイヤーウォール/ゲートウェイの裏にあるシステムに内部ネットワークへのアクセスを与えます。ゲートウェイは 1 つの LAN ノードからのパケットをその目的地ノードにルーティングし、その eth1 デバイス経由で全パケットを渡します。

注記

デフォルトでは、 Red Hat Enterprise Linux カーネル内の IPv4 ポリシーが IP フォワーディングのサポートを無効にしています。 Red Hat Enterprise Linux を稼動しているマシンが専用エッジルータとして機能しないようにしています。 IP フォワーディングを有効にするには、次のコマンドを実行します。
sysctl -w net.ipv4.ip_forward=1
この設定変更は現在のセッションにのみ有効です。つまり、再ブートやネットワークサービスの再起動を行うと持続しなくなります。 IP フォワーディングを永久的に設定するには、以下のように /etc/sysctl.conf ファイルを編集します。
次の行を探します。
net.ipv4.ip_forward = 0
これを次のように編集します。
net.ipv4.ip_forward = 1
次のコマンドを実行して sysctl.conf ファイルヘの変更を有効にします。
sysctl -p /etc/sysctl.conf

46.8.5.1. ポストルーティングと IP マスカレード

Accepting forwarded packets via the firewall's internal IP device allows LAN nodes to communicate with each other; however they still cannot communicate externally to the Internet.
To allow LAN nodes with private IP addresses to communicate with external public networks, configure the firewall for IP masquerading, which masks requests from LAN nodes with the IP address of the firewall's external device (in this case, eth0):
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
This rule uses the NAT packet matching table (-t nat) and specifies the built-in POSTROUTING chain for NAT (-A POSTROUTING) on the firewall's external networking device (-o eth0).
POSTROUTING allows packets to be altered as they are leaving the firewall's external device.
-j MASQUERADE ターゲットは、あるノードのプライベート IP アドレスをファイアーウォール/ゲートウェイの 外部 IP アドレスでマスクするように指定されます。

46.8.5.2. プレルーティング

内部ネットワーク上にサーバーがあり外部で使用できるようにしたい場合、 NAT 内 の PREROUTING チェーンの -j DNAT ターゲットを使用して、内部サービスへの接続を要求している着信パケットがフォワードできる目的地の IP アドレスとポートを指定することができます。
例えば、着信 HTTP 要求を 172.31.0.23 にある専用 Apache HTTP Server にフォワードしたい場合、次のコマンドを実行します。
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 172.31.0.23:80
このルールは nat の表がビルトイン PREROUTING チェーンを使用して着信 HTTP 要求を記載された目的 IP アドレスである 172.31.0.23 だけに独占的にフォワードするよう指定します。

注記

FORWARD チェーン内に DROP のデフォルトポリシーを持っている場合、 1 つルールを追加して目的地の NAT ルーティングが可能になるようにすべての着信 HTTP 要求を転送するようにします。これを実行するには、次のコマンドを入力します。
iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 172.31.0.23 -j ACCEPT
このルールはすべての着信 HTTP 要求をファイアーウォールからファイアーウォール裏にあるその目的地 Apache HTTP Server に転送します。

46.8.5.3. DMZ と IPTables

非武装地帯 - demilitarized zone (DMZ) 内の専用 HTTP や FTP などの特定のマシンにトラフィックをルーティングするよう iptablesルールを設定することができます。 DMZ はインターネットなどの公共キャリア上でサービスを提供することを目的とした特殊なローカルサブネットワークです。
例えば、着信 HTTP 要求を 10.0.4.2 (LAN の 192.168.1.0/24 範囲外) にある専用 HTTP サーバーにルーティングするようルールを設定するには、 NAT に PREROUTING テーブルを使用させてパケットを適切な目的地に転送するようにさせます。
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.0.4.2:80
このコマンドを使用すると、 LAN 外部からのポート 80 に対するすべての HTTP 接続は内部ネットワーク上にあるが他の内部ネットワークとは分離されている HTTP サーバーにルーティングされます。このようなネットワーク区分化は、ネットワーク上のマシンに HTTP 接続を許可するよりも安全です。
HTTP サーバーがセキュアな接続を受け取るよう設定されている場合、ポート 443 もフォワードされる必要があります。

46.8.6. 悪意あるソフトウェアとなりすまし IP アドレス

More elaborate rules can be created that control access to specific subnets, or even specific nodes, within a LAN. You can also restrict certain dubious applications or programs such as Trojans, worms, and other client/server viruses from contacting their server.
For example, some Trojans scan networks for services on ports from 31337 to 31340 (called the elite ports in cracking terminology).
このような非標準のポートで通信を行う合法的なサービスはないため、これらのサービスをブロックすることで自分のネットワーク上で感染している可能性のあるノードが独力でリモートマスターサーバーと通信する可能性を効果的に減少させることができます。
次のルールはポート 31337 の使用を試みるすべての TCP トラフィックをドロップします。
iptables -A OUTPUT -o eth0 -p tcp --dport 31337 --sport 31337 -j DROP
iptables -A FORWARD -o eth0 -p tcp --dport 31337 --sport 31337 -j DROP
また、 LAN に潜入するためにプライベート IP アドレス範囲になりすまそうとする外部接続をすべてブロックすることもできます。
例えば、 LAN が 192.168.1.0/24 範囲を使用しているなら、インターネットに面しているネットワークデバイス (例、eth0) に LAN IP 範囲内のアドレスを持つそのデバイスへのパケットはすべてドロップするよう指示するルールを作成することができます。
デフォルトポリシーでフォワードされたパケットは拒否するよう推奨されているため、外部に面しているデバイス (eht0) への IP アドレスなりすましはいずれも自動的に拒否されます。
iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -j DROP

注記

追加された ルールを扱う場合、 DROP ターゲットと REJECT ターゲットとの間には相異点があります。
REJECT ターゲットは、アクセスを拒否してそのサービスに接続を試行するユーザーに connection refused のエラーを返します。 DROP ターゲットは名前の通り、何の警告もせずにパケットをドロップします。
これらのターゲットは管理者の判断で使用することができますが、ユーザーが混乱して接続試行をくり返してしまうのを防ぐために REJECT ターゲットの使用が推奨されます。

46.8.7. IPTables と接続トラッキング

接続状態 を基にしてサービスに対する接続を検査、制限することができます。 iptables 内のモジュールは 接続トラッキング と呼ばれるメソッドを使用して着信接続に関する情報を保存します。次のような接続状態を基にしてアクセスの許可や拒否をすることができます。
  • NEW — HTTP 要求などの新規の接続を要求しているパケット
  • ESTABLISHED — 既存接続の一部であるパケット
  • RELATED — 新規の接続を要求しているが、既存接続の一部であるパケット。例えば、 FTP は接続の確立にポート 21 を使用するが、データは別のポート上で転送される (一般的にはポート 20)。
  • INVALID — connection tracking 表内でのいずれの接続の一部でもないパケット。
プロトコル自身がステートレスであっても (UDP など)、いずれのネットワークプロトコルでも iptables の接続トラッキングのステートフル機能を使用できます。次の例では、接続トラッキングを使用して確立済みの接続に関連したパケットのみをフォワードするルールを示しています。
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

46.8.8. IPv6

次世代インターネットプロトコル、 IPv6 の導入により IPv4 (または IP) による 32 ビットアドレスの制限が拡大されます。 IPv6 は 128 ビットアドレスに対応するため、 IPv6 対応のキャリアネットワークは IPv4 より多くのルーティング可能なアドレスを扱うことができます。
Red Hat Enterprise Linux は、 Netfilter 6 サブシステムと ip6tables コマンドを使用する IPv6 ファイアウォールのルールに対応しています。 Red Hat Enterprise Linux 5 では、 IPv4 と IPv6 いずれもデフォルトで有効になっています。
ip6tables コマンド構文は、 128 ビットアドレスをサポートする点以外あらゆる面で iptables と同じです。例えば、 IPv6 対応のネットワークサーバー上の SSH 接続は以下のようなコマンドで有効にできます。
ip6tables -A INPUT -i eth0 -p tcp -s 3ffe:ffff:100::1/128 --dport 22 -j ACCEPT
IPv6 ネットワークについての詳細は、 http://www.ipv6.org/ にある IPv6 情報ページを参照してください。

46.8.9. その他のリソース

ファイアウォール及び Linux Netfilter サブシステムについてこの章で触れていないことがいくつかあります。詳細については、次のリソースを参照してください。

46.8.9.1. インストールしているドキュメント

  • Refer to 「IPTables」 for more detailed information on the iptables command, including definitions for many command options.
  • iptables の man ページには、各種オプションの簡単な概要も記載されています。

46.8.9.2. 役に立つ web サイト

  • http://www.netfilter.org/ — Netfilter 及び iptables プロジェクトの公式ホームページです。
  • http://www.tldp.org/ — Linux Documentation Project にはファイアウォール構築と管理に関連した役に立つガイドがいくつかあります。
  • http://www.iana.org/assignments/port-numbers — IANA (Internet Assigned Numbers Authority) によって割り当てられた一般的な登録サービスポートの公式一覧です。

46.8.9.3. 関連ドキュメント

  • Red Hat Linux Firewalls、 Bill McCarty 著、 Red Hat Press — Netfilter 及び iptables などのオープンソースパケットフィルタリング技術を使用したネットワークとサーバーのファイアウォール構築に関する総合的な参考文献になります。ファイアウォールログの解析、ファイアウォールルールの開発、各種グラフィカルツールを使用したファイアウォールのカスタマイズなどについてのトピックが含まれています。
  • Linux Firewalls、 Robert Ziegler 著、 New Riders Press — 2.2 カーネル ipchains、及び Netfilter と iptables の両方を使ったファイアウォールの構築に関する豊富な情報が満載されています。リモートアクセスの問題や侵入検知システムなどのセキュリティ事項についても触れられています。

46.9. IPTables

Red Hat Enterprise Linux にはネットワーク用の高度なツール: パケットフィルタリング がインストールされています — カーネル内でネットワークスタックを通じてネットワークパケットが進入、通過、退出するのを制御するプロセスです。 バージョン 2.4 以前のカーネルはパケットフィルタリングについて ipchains に依存しており、フィルタリングプロセスの各ステップでパケットに適用される規則の一覧を使用していました。バージョン 2.4 の到来により、 iptables (netfilter とも呼ばれる) が導入されました。これは ipchains と似ていますが、ネットワークパケットのフィルタリングに利用できる範囲や制御が大幅に拡張しています。
この章では、パケットフィルタリングの基礎に焦点をおき、 ipchainsiptables の違いを明確にして、 iptables コマンドで使用できるさまざまなオプションを説明します。また、システムを再起動する際にフィルタリング規則を保持する方法を説明しています。
Refer to 「その他のリソース」 for instructions on how to construct iptables rules and setting up a firewall based on these rules.

警告

2.4 カーネルとそれ以降のカーネルでのデフォルトのファイアーウォール機能は iptables です。しかし、 ipchains が既に起動している場合、 iptables を使う事ができません。 ipchains がシステム起動時に存在すると、カーネルはエラーを表示し iptables の起動に失敗します。
これらのエラーメッセージは ipchains の機能に影響を与えるものではありません。

46.9.1. パケットフィルタリング

Linux カーネルはパケットをフィルタリングする Netfilter 機能を使用するので、他のパケットを阻止しながら一部のパケットだけがシステムに入ってくるようにすることができます。この機能は Linux カーネルに組みこまれており、三つの組みこみ テーブル 、すなわち 規則一覧 が含まれています。以下のようなものです:
  • filter — ネットワークパケットを処理するデフォルトのテーブル。
  • nat — 新規接続を作成するパケットの変更、及び Network Address Translation (NAT) に使用。
  • mangle — パケット変更の特定タイプに使用。
各テーブルは組込み型の チェーン のグループを1つ持ち、それぞれが netfilter によってパケットに実行されるアクションに相当します。
フィルタ テーブル用の組込み型チェーンは以下のようになります:
  • INPUT — ホスト用のターゲットとされているネットワークパケットに適用します。
  • OUTPUT — ローカル生成のネットワークパケットに適用します。
  • FORWARD — ホストを通ってルーティングしたネットワークパケットに適用します。
nat テーブル用の組込み型チェーンは以下のようになります:
  • PREROUTING — ネットワークパケットが到着するとそれを変更します。
  • OUTPUT — ローカル生成のネットワークパケットを送信される前に変更します。
  • POSTROUTING — ネットワークパケットが送信される前にそれを変更します。
mangle テーブルの組込み型チェーンは以下の様になります:
  • INPUT — ホスト用にターゲットされているネットワークパケットを変更します。
  • OUTPUT — ローカル生成のネットワークパケットを送信される前に変更します。
  • FORWARD — ホストを通してルーティングしたネットワークパケットを変更します。
  • PREROUTING — 着信のネットワークパケットをルーティングされる前に変更します。
  • POSTROUTING — ネットワークパケットが送信される前にそれを変更します。
Linux システムで受信/送信されたすべてのネットワークパケットは少くとも1つのテーブルに従います。しかし、チェーンの最後に現われる前に、パケットは各テーブル内の複数の規則に従うこともあります。これらの規則の構成や目的には相違がありますが、通常特定のプロトコル及びネットワークサービスを使用する時に、特定の IP アドレスまたは複数セットの IP アドレスに送受信するパケットを識別する為に使われます。

注記

デフォルトで、ファイヤーウォール規則は /etc/sysconfig/iptables か、又は /etc/sysconfig/ip6tables ファイルに保存されます。
iptables サービスは、 Linux システムの起動時に DNS-関連のサービスの前に始まります。このことは、ファイヤーウォール規則が数値の IP アドレス (例:192.168.0.1) のみを参照すると言う意味になります。ドメイン名 (例: host.example.com) はこのような規則ではエラーを発生します。
Regardless of their destination, when packets match a particular rule in one of the tables, a target or action is applied to them. If the rule specifies an ACCEPT target for a matching packet, the packet skips the rest of the rule checks and is allowed to continue to its destination. If a rule specifies a DROP target, that packet is refused access to the system and nothing is sent back to the host that sent the packet. If a rule specifies a QUEUE target, the packet is passed to user-space. If a rule specifies the optional REJECT target, the packet is dropped, but an error packet is sent to the packet's originator.
それぞれのチェーンは ACCEPTDROPREJECTQUEUE のいずれかのデフォルトポリシーを持っています。このチェーン内の規則のどれもパケットに適応しない場合、パケットはデフォルトポリシーに従って扱われます。
iptables コマンドはこれらのテーブルを設定するだけでなく、必要であれば、新しいテーブルのセットアップもします。

46.9.2. IPTables と IPChains との相違

ipchainsiptables は両方とも、指定規則や規則セットへの適合を基にしてパケットをフィルターする為に Linux カーネル内で動作する規則のチェーンを使用します。しかし、 iptables を使用するとより拡張性のある方法でパケットをフィルタリングできるので、管理者は複雑な作業をせずに、きめ細かい制御を行うことができます。
iptablesipchains の重要な相違について以下の点に注意して下さい:
Using iptables, each filtered packet is processed using rules from only one chain rather than multiple chains.
例えば、 ipchains を使用してシステムに入ってきた FORWARD パケットは、 INPUT、 FORWARD、 OUTPUT の各チェーンを通らないと送信先に進めません。ところが、 iptables では、送信先がローカルシステムの場合は INPUT チェーンへ、ローカルシステムがパケットを生成した場合は OUTPUT チェーンのみにパケットが送信されます。この理由で、パケットを実際に調べる規則の中で特定のパケットを取り込む様に設計された規則を用意するのは重要なことになります。
The DENY target has been changed to DROP.
ipchains では、チェーン内の規則に一致したパケットは DENY ターゲットに送られます。このターゲットは iptables の中では DROP に変更されなければいけません。
Order matters when placing options in a rule.
ipchains では、規則オプションの順序は重要ではありません。
iptables コマンドでは、もっと厳密な構文を使用します。 iptables コマンドの中のプロトコル (ICMP、TCP、UDP) は、送信元、又は送信先のポートの前で指定する必要があります。
Network interfaces must be associated with the correct chains in firewall rules.
例えば、着信インターフェース (-i オプション) では FORWARD 又は OUTPUT チェーン内でのみ使用できます。同様に発信インターフェイス (-o オプション) は FORWARD 又は OUTPUT チェーン内でのみ使用できます。
別の言い方をすると、 INPUT チェーンと受信インターフェイスは一緒に機能します。 OUTPUT チェーンと送信インターフェイスは一緒に機能します。 FORWARD チェーンは受信と送信の両インターフェイスと一緒に機能します。
OUTPUT チェーンは現在は、受信インターフェイスでは使用されません。そして、 INPUT チェーンは送信インターフェイスを通って移動するパケットには見えません。
This is not a comprehensive list of the changes. Refer to 「その他のリソース」 for more specific information.

46.9.3. IPTable 用のコマンドオプション

パケットをフィルタリングする規則は、 iptables コマンドを使用して作成されます。以下のようなパケットの要点が基準としてよく使用されます:
  • パケットタイプ — コマンドがフィルタするパケットのタイプを指定します。
  • パケットの送信元/送信先 — パケットの送信元、又は送信先に基づいてコマンドがフィルタするパケットを指定します。
  • ターゲット — 上記の基準に適合するパケットに対して実行されるアクションを指定します。
Refer to 「IPTables 一致オプション」 and 「ターゲットオプション」 for more information about specific options that address these aspects of a packet.
特定の iptables 規則で使用されるオプションは、規則を有効にする為に、規則全体の目的と条件を元にして論理的にグループ化する必要があります。これ以降のセクションでは iptables コマンドによく使われるオプションを説明していきます。

46.9.3.1. IPTables コマンドオプションの構成

多くの iptables コマンドの構成は、次のようになります:
iptables [-t <table-name>] <command> <chain-name> \
			<parameter-1> <option-1> \
			<parameter-n> <option-n>
<table-name> — Specifies which table the rule applies to. If omitted, the filter table is used.
<command> — Specifies the action to perform, such as appending or deleting a rule.
<chain-name> — Specifies the chain to edit, create, or delete.
<parameter>-<option> pairs — Parameters and associated options that specify how to process a packet that matches the rule.
iptables コマンドの長さと複雑性は、その目的に応じて大幅に変更可能です。
例えば、チェーンから規則を削除するコマンドは非常に短くできます:
iptables -D <chain-name> <line-number>
それに比べて、色々な指定のパラメータやオプションを使用した特定のサブネットからパケットをフィルターする規則を追加するコマンドはかなり長くなります。 iptables コマンドを構成する時には、幾つかのパラメータとオプションは、有効な規則を作る為に更なるパラメータとオプションが必要となることを忘れないで下さい。そうすることにより、別のパラメータを必要とするパラメータにより、キャスケード効果を創造できます。追加のオプションを必要とする全てのパラメータとオプションが全て満足された状態になるまで、規則は有効ではありません。
iptables -h と入力すると、 iptables コマンドの構成の総合一覧が表示されます。

46.9.3.2. コマンドオプション

コマンドオプションは、 iptables が特定の動作を行なうよう指示します。1つの iptables コマンドにつき使用できるコマンドオプションは1つだけです。ヘルプコマンドを除くすべてのコマンドは大文字で作成します。
iptables のコマンドには、次のようなものがあります:
  • -A — 指定されたチェーンの最後に規則を追加します。以下に説明のある -I オプションとは異り、これは正数の引数は使用しません。規則は常に指定のチェーンの最後に追加します。
  • -C — 指定したチェーンに追加する前に特定の規則をチェックします。このコマンドは、パラメータとオプションを追加するときにプロンプトが表示されるので、複雑な iptables 規則を作成する場合に便利です。
  • -D <integer> | <rule> — Deletes a rule in a particular chain by number (such as 5 for the fifth rule in a chain), or by rule specification. The rule specification must exactly match an existing rule.
  • -E — ユーザー定義のチェーンを改名します。ユーザー定義のチェーンはデフォルトで既存チェーン以外の全てのチェーンのことです (ユーザー定義のチェーンの作成には、以下の -N オプションを参照)。これは化粧的な変更であり、テーブルの構成には影響しません。

    注記

    デフォルトチェーンの1つを改名しようと試みると、システムは Match not found エラーを表示します。デフォルトチェーンは改名できません。
  • -F — 選択したチェーンを洗浄して、そのチェーンからすべての規則を削除します。チェーンを指定しない場合は、すべてのチェーンのすべての規則が削除されます。
  • -h — コマンドの構成の一覧とコマンドパラメータ、オプションの簡単な説明などが表示されます。
  • -I [<integer>] — Inserts the rule in the specified chain at a point specified by a user-defined integer argument. If no argument is specified, the rule is inserted at the top of the chain.

    注意

    上記に示してあるように、チェーン内の規則の順序が、パケットに適用される規則を決定します。これは、 -A-I オプションを使用して規則を追加する場合に記憶しておくことが重要です。
    これは特に正数の引数で、 -I を使って規則を追加する場合に重要になります。チェーンに規則を追加する時に既存の番号を指定すると、 iptables は 既存規則の 前に (又は、上に) 新しい規則を追加します。
  • -L — コマンドの後で指定するチェーン内にあるすべての規則を一覧表示します。チェーンとテーブルを指定しない場合は、デフォルトの filter テーブル内にあるすべてのチェーンのすべての規則が一覧表示されます。それ以外の場合は、次の構文を使用して、規則を一覧するチェーンとテーブルを指定します。
    iptables -L <chain-name> -t <table-name>
    Additional options for the -L command option, which provide rule numbers and allow more verbose rule descriptions, are described in 「リストオプション」.
  • -N — 指定した名前で新しいチェーンを作成します。チェーン名は独自なものでなければ、エラーメッセージが表示されます。
  • -P — 指定したチェーンについてデフォルトのポリシーを設定します。これによって、パケットがチェーン内にあるどの規則をも満たさない場合には、 ACCEPT や DROP など指定されたターゲットに送られます。
  • -R — Replaces a rule in the specified chain. The rule's number must be specified after the chain's name. The first rule in a chain corresponds to rule number one.
  • -X — 指定したチェーンを削除します。組み込まれているチェーンは削除できません。
  • -Z — テーブル用のすべてのチェーンのバイトとパケットカウンタを 0 にします。

46.9.3.3. IPTables パラメータオプション

特定のチェーンにおける規則の追加、削除、挿入、交換などの規則を含む一定の iptables コマンドは、パケットフィルタリング規則を構築するためのパラメータを必要とします。
  • -c — 特定の規則のカウンタをリセットします。このパラメータでは、リセットするカウンタを指定するための PKTS オプションと、 BYTES オプションを受け付けます。
  • -d — 規則を満たすパケットの送信先ホスト名、 IP アドレス、ネットワークのどれかを設定します。ネットワークと一致する場合、以下のような IP アドレス/ネットマスク形式がサポートされます。
    • N.N.N.N/M.M.M.M — ここで N.N.N.N は IP アドレスの範囲であり、 M.M.M.M はネットマスクです。
    • N.N.N.N/M — ここで N.N.N.N は IP アドレスの範囲であり、 M はネットマスクです。
  • -f — 断片化されたパケットのみに規則を適用します。
    このパラメータの後に感嘆符 ! オプションを使用すると、断片化されていないパケットのみが適合するように指定できます。

    注記

    フラグメント化したパケットは IP プロトコルの標準部分であることにも関わらず、フラグメント化したパケットとフラグメントのないパケットとの区別が理想的です。
    Originally designed to allow IP packets to travel over networks with differing frame sizes, these days fragmentation is more commonly used to generate DoS attacks using mal-formed packets. It's also worth noting that IPv6 disallows fragmentation entirely.
  • -ieth0ppp0 などの着信ネットワークインターフェースを設定します。 iptables では、このオプションパラメータを使用できるのは、 filter テーブルの場合は INPUT チェーンと FORWARD チェーンと共に、また nat テーブルと mangle テーブルの場合は PREROUTING チェーンと共に使用する時だけです。
    このパラメータはまた、以下のような特殊オプションもサポートします:
    • 感嘆符 ! — ディレクティブをリバースします、つまり指定されたインターフェースをこの規則から除外します。
    • プラス記号 + — 指定された文字列に一致するすべてのインターフェースを一致の対象とするワイルドカード文字です。たとえば、 -i eth+ というパラメータを指定すると、すべてのイーサネットインターフェースにこの規則が適用されますが、 ppp0 などの他のインターフェースは除外します。
    -i — パラメータを使用する場合にインターフェースを指定しないと、すべてのインターフェースが対象となります。
  • -j — パケットが特定の規則に一致する場合に指定ターゲットにジャンプします。
    標準ターゲットには ACCEPTDROPQUEUERETURN があります。
    Red Hat Enterprise Linux iptables RPM パッケージにデフォルトでロードされているモジュールを経由して利用可能な拡張オプションもあります。そのようなモジュールには、 LOGMARKREJECT などがあります。これらのオプションと他のターゲットに関する詳細は、 iptables の man ページを参照してください。
    このオプションは、また特定の規則に一致するパケットを現在のチェーンの外にあるユーザー定義のチェーンへ転送するのに使用して、他の規則がそのパケットに適用できるようにします。
    ターゲットを指定しない場合、いかなる動作も行わずにパケットが通過します。しかし、この規則のカウンタには1つ増加します。
  • -o — 1つの規則の為に発信ネットワークを設定します。このオプションは、 filter テーブルの OUTPUT チェーンと FORWARD チェーン、 nat テーブルと mangle テーブルの POSTROUTING チェーンのみで有効です。このパラメータは、着信ネットワークインターフェースパラメータ (-i)と同じオプションを受け付けます。
  • -p <protocol> — Sets the IP protocol affected by the rule. This can be either icmp, tcp, udp, or all, or it can be a numeric value, representing one of these or a different protocol. You can also use any protocols listed in the /etc/protocols file.
    The "all" protocol means the rule applies to every supported protocol. If no protocol is listed with this rule, it defaults to "all".
  • -s — 送信先パラメータ(-d)と同じ構文を使用して、特定のパケットの送信元を設定します。

46.9.3.4. IPTables 一致オプション

Different network protocols provide specialized matching options which can be configured to match a particular packet using that protocol. However, the protocol must first be specified in the iptables command. For example, -p <protocol-name> enables options for the specified protocol. Note that you can also use the protocol ID, instead of the protocol name. Refer to the following examples, each of which have the same effect:
iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
iptables -A INPUT -p 5813 --icmp-type any -j ACCEPT
サービスの定義は /etc/services ファイル内に提供されています。読み易い表示には、ポート番号ではなくサービス名を使用して下さい。

重要

許可のない編集を防止するためには、 /etc/services ファイルを安全にします。このファイルが編集可能であると、停止しているはずのマシン上のポートを有効にするためにクラッカーがその編集を使用することができます。このマシンを安全にするには、 root として以下のコマンドを入力します:
chown root.root /etc/services
chmod 0644 /etc/services
chattr +i /etc/services
これが、このファイルの改名、削除、あるいはファイルへのリンクの作成などを防止します。
46.9.3.4.1. TCP プロトコル
TCP プロトコル (-p tcp) では、以下の照合オプションを使用できます:
  • --dport — パケットの目的地ポートをセットします。
    このオプションを設定するには、 (www や smtp などの) ネットワークサービス名; ポート番号;又はポート番号の幅を使用します。
    ポート番号の範囲を指定するには、 -p tcp --dport 3000:3200 の ように2つの番号をコロン (:) で区切ります。最大の許容有効範囲は、 0:65535 です。
    --dport オプションの後で感嘆符 (!) を使用して、そのネットワークサービスあるいはポートを 使用しない すべてのパケットを照合します。
    ネットワークサービスとそれらが使用するポート番号の名前とエイリアスを閲覧するには、 /etc/services ファイルを表示します。
    --destination-port 照合オプションは --dport と同じです。
  • --sport--dport と同じオプションを使用して、パケットの送信元ポートを設定します。 --source-port の照合オプションは --sport と同義です。
  • --syn — 一般に SYNパケット と呼ばれる、通信を開始するよう設計されたすべての TCP パケットに適用されます。データペイロードを運搬するパケットはいずれも干渉されません。
    --syn オプションの後に、感嘆符 (!) を使用すると、全ての非 SYN パケットが照合されます。
  • --tcp-flags <tested flag list> <set flag list> — Allows TCP packets that have specific bits (flags) set, to match a rule.
    --tcp-flags 照合オプションは二つのパラメータを受けつけます。最初のパラメータはマスクであり、パケット内で検証されるフラグのコンマで隔離されたリストです。二番目のパラメータは照合する規則用にセットすべきフラグのコンマで隔離されたリストです。
    使用できるフラグは以下のようになります:
    • ACK
    • FIN
    • PSH
    • RST
    • SYN
    • URG
    • ALL
    • NONE
    たとえば、以下の仕様を含む iptables 規則は、 SYN フラグがセットされており、 ACK フラグと FIN フラグがセットされていない TCP パケットのみを照合します。
    --tcp-flags ACK,FIN,SYN SYN
    感嘆符 (!) を --tcp-flags の後で使用すると、照合オプションの効果が逆転されます。
  • --tcp-option— 特定のパケットで設定できる TCP 特有のオプションを照合しようとします。感嘆符 (!) を使用すると、意味を反対にすることができます。
46.9.3.4.2. UDP プロトコル
UDPプロトコル(-p udp)では、以下の照合オプションを使用できます。
  • --dport — サービス名、ポート番号、ポート番号の範囲のどれかを使用して、 UDP パケットの送信先ポートを指定します。 --destination-port の照合オプションは --dport と同義となります。
  • --sport — サービス名、ポート番号、ポート番号の範囲などのいずれかを使用して UDP パケットの送信元ポートを指定します。 --source-port の照合オプションは --sport と同義です。
--dport--sport のオプションに、ポート番号の範囲を指定するには、 -p tcp --dport 3000:3200 のように2つの番号をコロン (:) で区切ります。最大の許容有効範囲は、 0:65535 です。
46.9.3.4.3. ICMP プロトコル
ICMP(Internet Control Message Protocol)には (-p icmp)、次の照合オプションが使用できます。
  • --icmp-type — 規則と一致する ICMP タイプの番号か名前を設定します。有効な ICMP 名の一覧は、 iptables -p icmp -h というコマンドを入力すると表示されます。
46.9.3.4.4. その他の照合オプションモジュール
追加の照合オプションは iptables コマンドでロードできるモジュールを通じて使用できます。
To use a match option module, load the module by name using the -m <module-name>, where <module-name> is the name of the module.
デフォルトで多くのモジュールが利用できるようになっています。追加機能を提供するモジュールを作成することもできます。
以下に、よく使われるモジュールのいくつかを挙げてみました。
  • limit module — 特定の規則に照合されるパケットの数量を規制します。
    LOG ターゲットと一緒に使用すると、 limit モジュールは大量の照合パケットが反覆メッセージでシステムログを満杯にしたり、システムリソースを満杯にしてしまうのを防止することができます。
    Refer to 「ターゲットオプション」 for more information about the LOG target.
    limit モジュールは以下のようなオプションを有効にします:
    • --limit — Sets the maximum number of matches for a particular time period, specified as a <value>/<period> pair. For example, using --limit 5/hour allows five rule matches per hour.
      期間は秒、分、時、あるいは日で指定できます。
      回数と時間を指定しない場合は、デフォルト値の 3/hour が使用されます。
    • --limit-burst — 一度に照合できるパケットの数を制限します。
      このオプションは整数として指定されており、 --limit オプションと一緒に使用されるべきものです。
      値を指定しない場合は、デフォルト値の 5 が適用されます。
  • stateモジュール — 接続状態について照合を有効にします。
    state モジュールは以下のようなオプションを有効にします:
    • --state — 以下の接続状態についてパケットを照合します:
      • ESTABLISHED — 照合パケットは確立された接続内にある他のパケットに関係関連付けられます。クライアントとサーバー間の接続を維持したい場合、この状態を受理する必要があります。
      • INVALID— 既知の接続に結び付けられないパケットが規則を満たします。
      • NEW — 照合パケットは新しい接続を作成しているか、又は以前に出現したことのないニ方向接続の一部です。新しい接続をサービスに許可したい場合、この状態を受理する必要があります。
      • RELATED — 照合パケットは既存の接続になんらかの関連を持つ新しい接続を開始しています。この一例は FTP であり、これは制御トラフィック (ポート21) 用に1つの接続を使用して、データ転送 (ポート20) 用に別の接続を使います。
      これらの接続状態を複数組み合わせて使用するには、 -m state --state INVALID,NEW のようにカンマで区切ります。
  • macモジュール — ハードウェア MAC アドレスの照合を有効にします。
    mac モジュールは以下のようなモジュールを有効にします:
    • --mac-source — パケットの送信元であるネットワークインターフェースカードの MAC アドレスを照合します。ある規則から MAC アドレスを除外するには、 --mac-source 照合オプションの後に感嘆符 (!) を付けます。
モジュールを通じて利用できる照合オプションの詳細については、 iptables の man ページを参照してください。

46.9.3.5. ターゲットオプション

パケットが特定の規則を満たすと、規則はそのパケットを異るの数種のターゲットへ向け、 これらのターゲットが適切な動作を決定します。各チェーンにはデフォルトのターゲットがあり、そのチェーンの規則を満たすパケットがない場合か、あるいはパケットが満たした規則のいずれもがターゲットを指定していない場合に使用されます。
標準(デフォルト)のターゲットには以下のようなものがあります:
  • <user-defined-chain> — A user-defined chain within the table. User-defined chain names must be unique. This target passes the packet to the specified chain.
  • ACCEPT — パケットがその送信先または別のチェーンに移動する ことを許可します。
  • DROP — パケットを送信したシステムには何も通知せずに パケットをドロップします。パケットを送信したシステムは不具合の報告も受けません。
  • QUEUE — ユーザースペースのアプリケーションで処理されるように パケットをキューに登録します。
  • RETURN — 現在のチェーン内の規則に対するパケットのチェックを停止します。 RETURNターゲットを持つパケットが別のチェーンから呼び出されたチェーンの規則を満たす場合、そのパケットは最初のチェーンに戻され、そこで規則チェックが再開されます。組み込み型のチェーンで RETURN規則を使用していてパケットが前のチェーンに戻れない場合は、現在のチェーンのデフォルトターゲットが使用されます。
In addition, extensions are available which allow other targets to be specified. These extensions are called target modules or match option modules and most only apply to specific tables and situations. Refer to 「その他の照合オプションモジュール」 for more information about match option modules.
多くの拡張ターゲットモジュールがありますが、ほとんどは特定のテーブルか状況のみに適用されます。デフォルトで Red Hat Enterprise Linux に含まれているターゲットモジュールでよく使用されるものには、次のようなものがあります:
  • LOG — 規則を満たすすべてのパケットを記録します。パケットを記録するのはカーネルなので、/etc/syslog.confファイルがこれらの記録の書き込み場所を決定します。デフォルトではこの場所は/var/log/messages ファイルです。
    ログが行なわれる方法を指定するために、LOGターゲットの後に 追加オプションを使用できます。
    • --log-level — イベントを記録する優先レベルを設定します。優先レベルの一覧は、syslog.conf の manページを参照して ください。
    • --log-ip-options — IP パケットのヘッダ内で設定された オプションを記録します。
    • --log-prefix — ログを記録するときに、行の先頭に 29 文字までの文字列を設置します。これは、パケットの記録と共に使用する syslog フィルタを作成する場合にも便利です。

      注記

      このオプションに存在する問題のため、log-prefix の値に対して 後に空白を付加する必要があります。
    • --log-tcp-options — TCPパケットのヘッダーで設定してあるオプションをログします。
    • --log-tcp-sequence — パケットの TCPシーケンス番号を記録します。
  • REJECT — パケットを送信したシステムにエラーパケットを送り返して、パケットをドロップします。
    The REJECT target accepts --reject-with <type> (where <type> is the rejection type) allowing more detailed information to be returned with the error packet. The message port-unreachable is the default error type given if no other option is used. Refer to the iptables man page for a full list of <type> options.
nat テーブルを使用した IPマスカレード、又は mangle テーブルを使用したパケット変更で役に立つものなど、その他のターゲット拡張の幾つかは、iptables の manページを参照してください。

46.9.3.6. リストオプション

The default list command, iptables -L [<chain-name>], provides a very basic overview of the default filter table's current chains. Additional options provide more information:
  • -v — 各チェーンが処理したパケット数とバイト数、各規則を満たしたパケット数とバイト数、特定の規則に適用されるインターフェースなど、冗長な出力を表示します。
  • -x — 数値の正確な値を出力します。負荷が大きいシステムでは、特定のチェーンか、あるいは規則が処理したパケット数とバイト数の終わりに Kilobytes(キロ)、Megabytes(メガ)、Gigabytes(ギガ)を付けて表現を省略する場合があります。このオプションを指定すると、全数値が出力されます。
  • -n — IPアドレスとポート番号を、デフォルトのホスト名とネットワークサービスの形式ではなく数値形式で出力します。
  • --line-numbers — 各チェーンの規則の横にチェーン内の順序番号を出力します。このオプションは、特定の規則を削除する場合や規則を挿入する場所を探す場合に便利です。
  • -t <table-name> — Specifies a table name. If omitted, defaults to the filter table.
以下の例では、数種のオプションの使い方を説明しています。-x オプションを 含むことによるバイト表示の相違に注意して下さい。
~]# iptables -L OUTPUT -v -n -x
Chain OUTPUT (policy ACCEPT 64005 packets, 6445791 bytes)
    pkts      bytes target     prot opt in     out     source               destination
    1593   133812 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0

~]# iptables -L OUTPUT -v -n
Chain OUTPUT (policy ACCEPT 64783 packets, 6492K bytes)
    pkts bytes target     prot opt in     out     source               destination
    1819  153K ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
~]#

46.9.4. IPTables 規則の保存

iptables コマンドで作成した規則は、メモリに格納されます。設定した iptables の規則を保存する前にシステムを再起動すると、すべての規則は失われます。netfilter 規則が システムの再起動後に維持されるようにするには、それを保存する必要があります。その netfilter 規則を保存するには、root で次のコマンドを入力します:
service iptables save
これが、iptables の initscript を実行し、 /sbin/iptables-save プログラムを実行して、現在の iptables の設定を /etc/sysconfig/iptables に書き込みます。既存の /etc/sysconfig/iptables ファイルは、/etc/sysconfig/iptables.save として保存されます。
次にシステムをブートすると、iptables init script は /sbin/iptables-restore コマンドを使うことで、/etc/sysconfig/iptables に保存されている規則を再び適用します。
While it is always a good idea to test a new iptables rule before committing it to the /etc/sysconfig/iptables file, it is possible to copy iptables rules into this file from another system's version of this file. This provides a quick way to distribute sets of iptables rules to multiple machines.
iptables 規則は、ディストリビューション用、バックアップ用、他の目的用に別々のファイルに 保存することができます。iptables 規則を保存するには、root として以下のコマンドを 入力します:
iptables-save > <filename>
where <filename> is a user-defined name for your ruleset.

重要

他のマシンに /etc/sysconfig/iptablesファイルを分配する場合は、/sbin/service iptables restart と入力して、新しい規則を有効にします。

注記

iptables 機能を構成するテーブルとチェーンの操作に使用されるiptablescommand(/sbin/iptables) に対する iptables サービス自身を有効/無効にするのに使用されるiptables service (/sbin/iptables service) の相違に注意して下さい。

46.9.5. IPTables 制御スクリプト

Red Hat Enterprise Linux では、iptables を制御するための基本的な方法が 2つあります。
  • Security Level Configuration Tool (system-config-securitylevel) — A graphical interface for creating, activating, and saving basic firewall rules. Refer to 「基本的なファイアウォールの設定」 for more information.
  • /sbin/service iptables <option> — Used to manipulate various functions of iptables using its initscript. The following options are available:
    • start — ファイアウォールが設定されていると(/etc/sysconfig/iptablesが存在すると言う意味)、 実行中のすべての iptables を完全に停止してから/sbin/iptables-restore コマンドを使用して起動 します。このオプションは、ipchains カーネルモジュールがロードされていない場合にのみ機能します。モジュールがロードされているかどうか チェックするには、以下のコマンドを root で入力します:
      lsmod | grep ipchains
      このコマンドが出力を返さない場合は、モジュールがロードされていないと言う意味に なります。必要であれば、/sbin/rmmod コマンドを使用して、モジュールを 削除します。
    • stop — ファイアウォールが実行中の場合、メモリ内のファイアウォールの規則がフラッシュされ、すべての iptable の モジュールとヘルパーがアンロードされます。
      /etc/sysconfig/iptables-config 設定ファイル内の IPTABLES_SAVE_ON_STOP ディレクティブがそのデフォルト値から yes に変更されると、現在の規則は /etc/sysconfig/iptables に保存され、既存の規則はすべて /etc/sysconfig/iptables.save ファイルに移動されます。
      Refer to 「IPTables 制御スクリプトの設定ファイル」 for more information about the iptables-config file.
    • restart — ファイアウォールを実行中の場合、メモリ内のファイアウォールの規則はフラッシュ され、 それが /etc/sysconfig/iptables に設定されていれば、 ファイアウォールが再起動されます。このオプションは ipchains カーネルモジュールがロードされない場合にのみ機能します。
      /etc/sysconfig/iptables-config設定ファイル内の IPTABLES_SAVE_ON_RESTART ディレクティブがそのデフォルト値から yes に変更されると、現在の規則は /etc/sysconfig/iptables に保存されて、既存の規則はすべて /etc/sysconfig/iptables.save ファイルに移動されます。
      Refer to 「IPTables 制御スクリプトの設定ファイル」 for more information about the iptables-config file.
    • status — ファイヤーウォールと実行中の全規則 リストの状態を表示します。
      The default configuration for this option displays IP addresses in each rule. To display domain and hostname information, edit the /etc/sysconfig/iptables-config file and change the value of IPTABLES_STATUS_NUMERIC to no. Refer to 「IPTables 制御スクリプトの設定ファイル」 for more information about the iptables-config file.
    • panic — ファイアウォールの規則をすべてフラッシュします。設定されているすべてのテーブルのポリシーは DROP にセットされます。
      サーバーの侵害を受ける可能性が判っている場合に、このオプションが役に立ちます。 ネットワークから物理的に切断したり、システムを停止したりする代わりに、このオプションを 使用して、それ以降のネットワークトラフィックを全て停止しながら、分析や他の解明作業のために マシンを準備状態にしておくことができます。
    • save — Saves firewall rules to /etc/sysconfig/iptables using iptables-save. Refer to 「IPTables 規則の保存」 for more information.

Tip

To use the same initscript commands to control netfilter for IPv6, substitute ip6tables for iptables in the /sbin/service commands listed in this section. For more information about IPv6 and netfilter, refer to 「IPTables と IPv6」.

46.9.5.1. IPTables 制御スクリプトの設定ファイル

iptables initscripts の動作は、 /etc/sysconfig/iptables-config 設定ファイルで制御されます。以下にこのファイル内に格納されているディレクティブの一覧を示します:
  • IPTABLES_MODULES — ファイアウォールが起動するときにロードする、追加の iptables モジュールの スペースで区切られた一覧を指定します。これには接続トラッキングと NAT ヘルパーを 含むませることができます。
  • IPTABLES_MODULES_UNLOAD — 再起動と停止でモジュールをアンロードします。このディレクティブは以下の値を受け付けます:
    • yes — デフォルトの値です。このオプションはファイアウォールの 再起動か停止の正しい状態を達成するのにセットします。
    • no — このオプションは netfilter モジュールのアンロードに 問題がある場合のみにセットするものです。
  • IPTABLES_SAVE_ON_STOP — ファイアウォールが停止されるときに、現在のファイアウォールの規則を /etc/sysconfig/iptables に保存します。このディレクティブは以下の値を受け付けます:
    • yes — ファイアウォールが停止されるときに、既存の規則を /etc/sysconfig/iptables に保存して、 前のバージョンを/etc/sysconfig/iptables.save に移動します。
    • no — デフォルトの値です。ファイアウォールが停止 されるときに既存の規則を保存しません。
  • IPTABLES_SAVE_ON_RESTART — ファイアウォールが再起動されるときに、現在のファイアウォール規則を保存します。 このディレクティブは次の値を受け付けます:
    • yes — ファイアウォールが再起動されるときに、既存の規則を /etc/sysconfig/iptables に保存して、 前のバージョンを /etc/sysconfig/iptables.save に移動します。
    • no — デフォルトの値です。ファイアウォールが再起動 されるときに既存の規則を保存しません。
  • IPTABLES_SAVE_COUNTER — すべてのチェーン及び規則にある パケットとバイトの全カウンタを保存、復元します。このディレクティブは以下の値を受け付けます:
    • yes — カウンタ値を保存します。
    • no — デフォルトの値です。カウンタの値を保存しません。
  • IPTABLES_STATUS_NUMERIC — ドメインやホスト名の代わりに、数値形式で IP アドレスを出力します。 このディレクティブは以下の値を受け付けます:
    • yes — デフォルト値です。ステータス出力内で IP アドレスのみを 返します。
    • no — ステータス出力内でドメインかホスト名を返します。

46.9.6. IPTables と IPv6

iptables-ipv6 パッケージがインストールされている場合、 Red Hat Enterprise Linux に収納されている netfilter は次世代の IPv6 インターネットプロトコルをフィルター できます。IPv6 netfilter を操作するためのコマンドは ip6tables です。
このコマンド用の殆んどのディレクティブは、まだサポートされていない nat テーブル以外、iptables に使用されるディレクティブと同じです。 これは、マスカレードやポート転送などの IPv6 ネットワークアドレス変換タスクを実行するのは まだ可能ではないと言うことになります。
ip6tables 用の規則は /etc/sysconfig/ip6tables ファイルに格納されます。ip6tables initscripts で 保存された以前の規則は /etc/sysconfig/ip6tables.save ファイルに格納されます。
ip6tablesの initscript 用設定オプションは /etc/sysconfig/ip6tables-config に格納されていますが、 各ディレクティブ名はその iptables の相当名とは少々異なります。
例えば、iptables-config ディレクティブIPTABLES_MODULES:に対して、ip6tables-config ファイルでの相当物は IP6TABLES_MODULES です。

46.9.7. その他のリソース

iptables を用いたパケットフィルタリングに関する追加情報は以下の情報を参照して下さい。
  • 「Firewalls」 — Contains a chapter about the role of firewalls within an overall security strategy as well as strategies for constructing firewall rules.

46.9.7.1. インストールされているドキュメント

  • man iptablesiptables の説明の 他に、ターゲット、オプション、照合の拡張などの総合一覧があります。

46.9.7.2. 役に立つWebサイト

  • http://www.netfilter.org/ — netfilter/iptables プロジェクトのホームページです。Linux の IP ファイアウォールのメインテナー、Rusty Russell による各種の役立つガイドや、特定問題の対処方法に関する FAQ などを含む、 iptables に関する多彩な情報が収納されています。このサイトの HOWTO ドキュメントでは、基本的なネットワークの概念、カーネルのパケットフィルタリング、NAT の設定などのテーマが掲載されています。
  • http://www.linuxnewbie.org/nhf/Security/IPtables_Basics.html — パケットが Linuxカーネルを通過する様子に関する入門的な説明に加え、基本的な iptables コマンドを構成する方法が含まれています。


[14] システムの BIOS はメーカーによって異なるため、どのタイプのパスワード保護もサポートしないものもあれば、特定タイプはサポートしても他タイプはサポートしないものもあります
[15] GRUB also accepts unencrypted passwords, but it is recommended that an MD5 hash be used for added security.
[16] このアクセスは、有効になった場合でも、 SELinux によって加えられた制限に従います。
[17] ネットワーク通信を暗号化する/解読するために使用される共通鍵をクライアントとサーバーの両者が共有するシステム

第47章 セキュリティと SELinux

47.1. アクセス制御機構 :Access Control Mechanisms (ACM)
47.1.1. 自由アクセス制御:Discretionary Access Control (DAC)
47.1.2. アクセス制御リスト:Access Control Lists (ACL)
47.1.3. 監視アクセス制御:Mandatory Access Control (MAC)
47.1.4. 役割基準アクセス制御:Role-based Access Control (RBAC)
47.1.5. 複数レベルセキュリティ:Multi-Level Security (MLS)
47.1.6. 複数カテゴリーセキュリティ:Multi-Category Security (MCS)
47.2. SELinux への入門
47.2.1. SELinux の概要
47.2.2. SELinux に関連したファイル
47.2.3. その他の資料
47.3. SELinux の簡単な背景と歴史
47.4. Multi-Category Security (MCS)
47.4.1. Introduction
47.4.2. Applications for Multi-Category Security
47.4.3. SELinux Security Contexts
47.5. Getting Started with Multi-Category Security (MCS)
47.5.1. Introduction
47.5.2. Comparing SELinux and Standard Linux User Identities
47.5.3. Configuring Categories
47.5.4. Assigning Categories to Users
47.5.5. Assigning Categories to Files
47.6. Multi-Level Security (MLS)
47.6.1. Why Multi-Level?
47.6.2. Security Levels, Objects and Subjects
47.6.3. MLS Policy
47.6.4. LSPP Certification
47.7. SELinux Policy Overview
47.7.1. What is the SELinux Policy?
47.7.2. Where is the Policy?
47.7.3. The Role of Policy in the Boot Process
47.7.4. Object Classes and Permissions
47.8. Targeted Policy Overview
47.8.1. What is the Targeted Policy?
47.8.2. Files and Directories of the Targeted Policy
47.8.3. Understanding the Users and Roles in the Targeted Policy

47.1. アクセス制御機構 :Access Control Mechanisms (ACM)

このセクションでは、Access Control Mechanisms (ACM) に 付いて基礎的な案内を提供します。ACM はシステム管理者用に、コンピュータ システム内の異なるファイル、 デバイス、インターフェイスなどにアクセスするユーザーとプロセスを制御 する手段を提供します。如何なるサイズでもコンピュータシステムやネットワークの安全対策を実行する場合に この判断が主体となります。

47.1.1. 自由アクセス制御:Discretionary Access Control (DAC)

Discretionary Access Control (DAC) は、 ファイルシステム内にあるオブジェクト用の基本的なアクセス制御を定義します。これは、 ファイル権限、共有などで提供される標準的なアクセス制御です。このようなアクセスは 通常、そのオブジェクト(ファイル、ディレクトリ、デバイスなど)の所有者の自由采配 で実行されます。
DAC provides a means of restricting access to objects based on the identity of the users or groups (subjects) that try to access those objects. Depending on a subject's access permissions, they may also be able to pass permissions to other subjects.

47.1.2. アクセス制御リスト:Access Control Lists (ACL)

Access Control Lists (ACLs) provide further control over which objects a subject can access. For more information, refer to 9章Access Control Lists.

47.1.3. 監視アクセス制御:Mandatory Access Control (MAC)

Mandatory Access Control (MAC) は ユーザー(サブジェクト)が自己の作成オブジェクトに対して持つ制御のレベルを制限する セキュリティメカニズムです。ユーザーが自己のファイル、ディレクトリ、その他に完全な制御を 持つ、DAC の実装とは異なり、MAC は全ての ファイルシステムオブジェクトに追加のラベル、 あるいはカテゴリーを加えます。ユーザーと プロセスはそれらのカテゴリへの適切なアクセスを取得してから、これらのオブジェクトに対処する 必要があります。
In Red Hat Enterprise Linux, MAC is enforced by SELinux. For more information, refer to 「SELinux への入門」.

47.1.4. 役割基準アクセス制御:Role-based Access Control (RBAC)

Role-based Access Control (RBAC) は、 ファイルシステムオブジェクトへのユーザーアクセス制御の代替手段です。アクセスに対する ユーザー権限を制御する代わりに、システムは業務達成要求や同様な基準を基にして 役割(Roles) を確立します。これらの役割はオブジェクトに対して異なるタイプと レベルのアクセスを持ちます。
In contrast to DAC or MAC systems, where users have access to objects based on their own and the object's permissions, users in an RBAC system must be members of the appropriate group, or Role, before they can interact with files, directories, devices, etc.
管理者の見解からは、ユーザーのグループメンバーシップを制御することだけでファイル システムの各種部分にアクセスを持つグループをより簡単に制御できるようになります。

47.1.5. 複数レベルセキュリティ:Multi-Level Security (MLS)

Multi-Level Security (MLS) is a specific Mandatory Access Control (MAC) security scheme. Under this scheme, processes are called Subjects. Files, sockets and other passive operating system entities are called Objects. For more information, refer to 「Multi-Level Security (MLS)」.

47.1.6. 複数カテゴリーセキュリティ:Multi-Category Security (MCS)

Multi-Category Security (MCS) is an enhancement to SELinux, and allows users to label files with categories. MCS is an adaptation of MLS and re-uses much of the MLS framework in SELinux. For more information, refer to 「Introduction」

47.2. SELinux への入門

SELinux(Security-Enhanced Linux) とは、 LSM (Linux Security Modules) を使用して 2.6.x カーネルにセキュリティアーキテクチャを統合したものです。これは、NSA (United States National Security Agency) と SELinux コミュニティのプロジェクトです。 Red Hat Enterprise Linux への SELinux の統合は NSA と Red Hat 共同活動です。

47.2.1. SELinux の概要

SELinux provides a flexible Mandatory Access Control (MAC) system built into the Linux kernel. Under standard Linux Discretionary Access Control (DAC), an application or process running as a user (UID or SUID) has the user's permissions to objects such as files, sockets, and other processes. Running a MAC kernel protects the system from malicious or flawed applications that can damage or destroy the system.
SELinux はシステム上の各ユーザー、アプリケーション、プロセス、それにファイルのアクセス権と 移動権を定義付けます。SELinux は、それから、任意の Red Hat Enterprise Linux がどれ位厳格で、どれ位温和で あるべきかを指定するセキュリティポリシーを使用して、これらのエンティティの交流を 監督します。
毎日の作業では、システムユーザーは大体 SELinux を意識しないでしょう。システム管理者のみが そのサーバー環境に実装するポリシーの厳格さを配慮する必要があります。そのポリシーは必要に 応じて、厳格であるか温和であることが可能で、非常にきめ細かく分れています。この詳細がシステム 全体に渡って SELinux カーネルに完全で繊細な制御を与えます。
SELinux の判断決定プロセス
When a subject, (for example, an application), attempts to access an object (for example, a file), the policy enforcement server in the kernel checks an access vector cache (AVC), where subject and object permissions are cached. If a decision cannot be made based on data in the AVC, the request continues to the security server, which looks up the security context of the application and the file in a matrix. Permission is then granted or denied, with an avc: denied message detailed in /var/log/messages if permission is denied. The security context of subjects and objects is applied from the installed policy, which also provides the information to populate the security server's matrix.
以下のダイアグラムを参照:
SELinux 判断プロセス
SELinux 判断プロセス
図47.1 SELinux 判断プロセス

SELinux 操作モード
強制 (enforcing) モードで実行する代わりに、SELinux は 容認 (permissive) モードで実行することができ、その中では AVC はチェックされ、否定はログされますが、SELinux はポリシーを強制 しません。これは、トラブルシューティングと SELinux の開発や微調整に役に立ちます。
For more information about how SELinux works, refer to 「その他の資料」.

47.2.2. SELinux に関連したファイル

以下のセクションでは、SELinux の設定ファイルとその関連ファイルシステムを説明 しています。

47.2.2.1. SELinux 擬似ファイルシステム

/selinux/ 擬似ファイル(pseudo-file) システムには、カーネル サブシステムで一般に良く使用されるコマンドが含まれています。このタイプのファイルシステムは /proc/ 擬似ファイルシステムに似ています。
管理者とユーザーは通常、このコンポーネントを操作する必要はありません。
以下の例では、/selinux/ ディレクトリのサンプル内容を 示しています:
-rw-rw-rw-  1 root root 0 Sep 22 13:14 access
dr-xr-xr-x  1 root root 0 Sep 22 13:14 booleans
--w-------  1 root root 0 Sep 22 13:14 commit_pending_bools
-rw-rw-rw-  1 root root 0 Sep 22 13:14 context
-rw-rw-rw-  1 root root 0 Sep 22 13:14 create
--w-------  1 root root 0 Sep 22 13:14 disable
-rw-r--r--  1 root root 0 Sep 22 13:14 enforce
-rw-------  1 root root 0 Sep 22 13:14 load
-r--r--r--  1 root root 0 Sep 22 13:14 mls
-r--r--r--  1 root root 0 Sep 22 13:14 policyvers
-rw-rw-rw-  1 root root 0 Sep 22 13:14 relabel
-rw-rw-rw-  1 root root 0 Sep 22 13:14 user
例えば、enforce ファイルで cat コマンドを 実行すると、強制モードの 1 かあるいは、容認モードの 0 を 表示します。

47.2.2.2. SELinux 設定ファイル

次のセクションでは SELinux の設定法、ポリシーファイル、/etc/ ディレクトリ内に 置かれている関連ファイルシステムを説明しています。
47.2.2.2.1. /etc/sysconfig/selinux 設定ファイル
There are two ways to configure SELinux under Red Hat Enterprise Linux: using the SELinux Administration Tool (system-config-selinux), or manually editing the configuration file (/etc/sysconfig/selinux).
/etc/sysconfig/selinux ファイルは SELinux を有効/無効にする為の、 そしてシステムでどのポリシーを強制するか、及びどのように強制するかを設定する 主要設定ファイルです。

注記

/etc/sysconfig/selinux には、実際の設定ファイル、 /etc/selinux/config へのシンボリックリンクが含まれています。
以下に設定において利用できるオプションのサブセットを説明しています:
  • SELINUX=enforcing|permissive|disabled — システム上の SELinux の最上レベルの状態を定義します。
    • enforcing — SELinux セキュリティポリシーは強制されます。
    • permissive — SELinux システムは警告を表示しますが、 ポリシーは強制しません。
      これは、デバグやトラブルシューティング目的で便利です。容認(permissive)モードでは、 サブジェクトが、強制(enforcing)モードでは否定されるようなアクションを継続することが できる為、より多くの否定をログすることになります。例えば、容認モードでディレクトリツリーを 移動することは、全てのディレクトリレベルの読み込みで avc: denied のメッセージを発生させます。強制モードでは、SELinux は最初の移動で 停止して、それ移行の否定メッセージの発生を止めることになります。
    • disabled — SELinux は完全に無効になります。SELinux hooks は カーネルから離脱して、擬似ファイルシステムは登録が消えます。

      Tip

      SELinux が無効の時に作成されたアクションは、正しいセキュリティコンテキストを持たない ファイルシステムの原因となります。これはポリシーによって定義されたセキュリティコンテキスト のことです。ファイルシステムのラベル変えの最善の方法はフラグファイル:/.autorelabel を作成して、マシンを再起動することです。これにより、プロセスがシステム上で実行される前に ラベル変えがブートプロセスの非常に早期に起こることになります。この手順を使用すると、プロセスは 誤って間違えたコンテキストのファイルを作成することもなく、間違ったコンテキストで開始することも なくなることになります。
      SELinux を有効にする前に fixfiles relabel コマンドを使用して、 ファイルシステムをラベル変えすることができます。しかしこれが完了した後にでも、 システム上で間違えたコンテキストでプロセスが実行されている可能性がある為、この方法は 推奨できません。これらのプロセスは、間違えたコンテキストのままのファイルを作成する 可能性があります。

    注記

    設定行の最後の追加の空白、又は、ファイルの最後の余分な行としての空白は予期できない動作の 原因になる可能性があります。予防の為に不用な空白を削除して下さい。
  • SELINUXTYPE=targeted|strict — SELinux が強制するポリシーを指定します。
    • targeted — ターゲットのネットワークデーモンのみが 保護されます。

      重要

      以下のデーモンはデフォルトのターゲットポリシー: dhcpd, httpd (apache.te)、 named、 nscd、 ntpd、 portmap、 snmpd、 squidsyslogd で 保護されています。システムのその他の機能は unconfined_t ドメインで 実行されます。このドメインはセキュリティコンテキストを持ったサブジェクトとオブジェクトが 標準の Linux セキュリティを使用して運用できるようにします。
      これらのデーモン用のポリシーファイルは /etc/selinux/targeted/src/policy/domains/program に収納されています。これらの ファイルは Red Hat Enterprise Linux の新しいバージョンがリリースされると変更される可能性があります。
      Policy enforcement for these daemons can be turned on or off, using Boolean values controlled by the SELinux Administration Tool (system-config-selinux).
      Setting a Boolean value for a targeted daemon to 1 disables SELinux protection for the daemon. For example, you can set dhcpd_disable_trans to 1 to prevent init, which executes apps labeled dhcpd_exec_t, from transitioning to the dhcpd_t domain.
      getsebool -a コマンドを使用すると、全ての SELinux ブーリアン値を 一覧表示します。以下に SELinux ブーリアン値を設定する為の setsebool コマンドを使用した例を表示します。-P オプションを使用すると、変更が 固定されます。このオプションが無いと、ブーリアン値は再起動時に 1 に リセットされます。
      setsebool -P dhcpd_disable_trans=0
    • strict — 全てのデーモン用の完全 SELinux 保護。 セキュリティコンテキストは全てのサブジェクトとオブジェクト用に定義され、 そして各アクションはポリシー強制サーバーによってプロセスされます。
  • SETLOCALDEFS=0|1 — Controls how local definitions (users and booleans) are set. Set this value to 1 to have these definitions controlled by load_policy from files in /etc/selinux/<policyname>. or set it to 0 to have them controlled by semanage.

    注意

    変更がどのようなインパクトを与えるか完全に理解していない限りは、このデフォルト値 (0) を 変更すべきではありません。
47.2.2.2.2. /etc/selinux/ ディレクトリ
/etc/selinux/ ディレクトリは、全てのポリシーファイルの本来の配置場所である と共に、又主要設定ファイルの場所でもあります。
以下に /etc/selinux/ ディレクトリの内容のサンプルをしめします:
-rw-r--r--  1 root root  448 Sep 22 17:34 config
drwxr-xr-x  5 root root 4096 Sep 22 17:27 strict
drwxr-xr-x  5 root root 4096 Sep 22 17:28 targeted
二つのサブディレクトリ、strict/targeted/ は、同じ名前のポリシーファイルが含まれている特定のディレクトリです。 (stricttargeted)

47.2.2.3. SELinux ユーティリティ

以下に SELinux 一般的に使用されるユーティリティの一部を示します:
  • /usr/sbin/setenforce — SELinux が稼動するリアルタイムでモードを 変更します。
    例えば:
    setenforce 1 — SELinux は強制モードで実行されます。
    setenforce 0 — SELinux は容認モードで実行されます。
    実際に SELinux を無効にするには、/etc/sysconfig/selinux 内で適切な setenforce パラメータを指定するか、 あるいは、/etc/grub.conf 内でか、起動時にカーネルに パラメータ selinux=0 を渡します。
  • /usr/sbin/sestatus -v — SELinux を実行しているシステムの詳細状態を 表示します。以下の例では、sestatus -v 出力の一部を示しています:
    SELinux status:                 enabled
    SELinuxfs mount:                /selinux
    Current mode:                   enforcing
    Mode from config file:          enforcing
    Policy version:                 21
    Policy from config file:        targeted
    
    Process contexts:
    Current context:                user_u:system_r:unconfined_t:s0
    Init context:                   system_u:system_r:init_t:s0
    /sbin/mingetty                  system_u:system_r:getty_t:s0
  • /usr/bin/newrole — 新しいシェルを新しいコンテキスト、又は役割で 実行します。ポリシーが新しい役割への移行を許可する必要があります。

    注記

    このコマンドは、厳格で、MLS のポリシーに必要となる policycoreutils-newrole パッケージがインストールしてある場合にのみ、利用できます。
  • /sbin/restorecon — 適切なファイル、又はセキュリティコンテキストで 拡張属性を作ることにより、1つ、又は複数のファイルのセキュリティコンテキストを設定します。
  • /sbin/fixfiles — ファイルシステムにあるセキュリティコンテキストの データベースをチェック、又は修正します。
これらのユーティリティに関連した詳細情報は、man ページを参照してください。
全ての利用可能なバイナリユーティリティについての詳細情報は setoolspolicycoreutils パッケージの内容を参照して下さい。パッケージの内容を表示するには、次のコマンドを使用します:
rpm -ql <package-name>

47.2.3. その他の資料

SELinux に関する詳細情報については、以下の資料を参照して下さい。

47.2.3.1. インストール済みのドキュメント

  • /usr/share/doc/setools-<version-number>/ All documentation for utilities contained in the setools package. This includes all helper scripts, sample configuration files, and documentation.

47.2.3.2. 役に立つウェブサイト

47.3. SELinux の簡単な背景と歴史

SELinux was originally a development project from the National Security Agency (NSA)[18] and others. It is an implementation of the Flask operating system security architecture.[19]The NSA integrated SELinux into the Linux kernel using the Linux Security Modules (LSM) framework. SELinux motivated the creation of LSM, at the suggestion of Linus Torvalds, who wanted a modular approach to security instead of just accepting SELinux into the kernel.
元来、 SELinux 実装は、 ext2 アイノード内の未使用フィールドに保存されている 持続セキュリティ ID (persistent security ID) (PSID) を使用していました。これらの (人間可読でない) 数値表示は、 SELinux によってセキュリティコンテキストラベルにマップされます。残念ながら、これは、 PSID をサポートする為に各ファイルシステムタイプの修正を必要とし、その理由でスケーラブルでなく、 Linux カーネルのアップストリームでサポートされるものではありません。
The next evolution of SELinux was as a loadable kernel module for the 2.4.<x> series of Linux kernels. This module stored PSIDs in a normal file, and SELinux was able to support more file systems. This solution was not optimal for performance, and was inconsistent across platforms. Finally, the SELinux code was integrated upstream to the 2.6.x kernel, which has full support for LSM and has extended attributes (xattrs) in the ext3 file system. SELinux was moved to using xattrs to store security context information. The xattr namespace provides useful separation for multiple security modules existing on the same system.
アップストリーム用にカーネルの準備とその後の SELinux 開発の為に多くの労力が、NSA と Red Hat と SELinux 開発者のコミュニティの間で費やされました。
For more information about the history of SELinux, the definitive website is http://www.nsa.gov/research/selinux/index.shtml.

47.4. Multi-Category Security (MCS)

47.4.1. Introduction

Multi-Category Security (MCS) is an enhancement to SELinux, and allows users to label files with categories. These categories are used to further constrain Discretionary Access Control (DAC) and Type Enforcement (TE) logic. They may also be used when displaying or printing files. An example of a category is "Company_Confidential". Only users with access to this category can access files labeled with the category, assuming the existing DAC and TE rules also permit access.
The term categories refers to the same non-hierarchical categories used by Multi-Level Security (MLS). Under MLS, objects and subjects are labeled with Security Levels. These Security Levels consist of a hierarchical sensitivity value (such as "Top Secret") and zero or more non-hierarchical categories (such as "Crypto"). Categories provide compartments within sensitivity levels and enforce the need-to-know security principle. Refer to 「Multi-Level Security (MLS)」 for more information about Multi-Level Security.

47.4.1.1. What is Multi-Category Security?

MCS is an adaptation of MLS. From a technical point of view, MCS is a policy change, combined with a few userland modifications to hide some of the unneeded MLS technology. Some kernel changes were also made, but only relating to making it easy to upgrade to MCS (or MLS) without invoking a full file system relabel.
The hope is to improve the quality of the system as a whole, reduce costs, leverage the open source process, increase transparency, and make the technology base useful to more than a small group of extremely special-case users.

47.4.2. Applications for Multi-Category Security

Beyond access control, MCS could be used to display the MCS categories at the top and bottom of printed pages. This may also include a cover sheet to indicate document handling procedures. It should also be possible to integrate MCS with future developments in SELinux, such as Security Enhanced X. Integration with a directory server will also make MCS support for email easier. This could involve users manually labeling outgoing emails or by attaching suitably labeled files. The email client can then determine whether the recipients are known to be cleared to access the categories associated with the emails.

47.4.3. SELinux Security Contexts

SELinux stores security contexts as an extended attribute of a file. The "security." namespace is used for security modules, and the security.selinux name is used to persistently store SELinux security labels on files. The contents of this attribute will vary depending on the file or directory you inspect and the policy the machine is enforcing.

Note

This is expected to change in the 2.6.15 kernel (and already has in the latest -mm kernels), so that getxattr(2) always returns the kernel's canonicalized version of the label.
You can use the ls -Z command to view the category label of a file:
~]# ls -Z gravityControl.txt
-rw-r--r--  user     user     user_u:object_r:tmp_t:Moonbase_Plans gravityControl.txt
You can use the gefattr(1) command to view the internal category value (c10):
~]# getfattr -n security.selinux gravityControl.txt
# file: gravityControl.txt
security.selinux="user_u:object_r:tmp_t:s0:c10\000"
Refer to 「Getting Started with Multi-Category Security (MCS)」 for details on creating categories and assigning them to files.

47.5. Getting Started with Multi-Category Security (MCS)

This section provides an introduction to using MCS labels to extend the Mandatory Access Control (MAC) capabilities of SELinux. It discusses MCS categories, SELinux user identities, and how they apply to Linux user accounts and files. It builds on the conceptual information provided in 「Multi-Category Security (MCS)」, and introduces some basic examples of usage.

47.5.1. Introduction

MCS labeling from a user and system administrator standpoint is straightforward. It consists of configuring a set of categories, which are simply text labels, such as "Company_Confidential" or "Medical_Records", and then assigning users to those categories. The system administrator first configures the categories, then assigns users to them as required. The users can then use the labels as they see fit.
The names of the categories and their meanings are set by the system administrator, and can be set to whatever is required for the specific deployment. A system in a home environment may have only one category of "Private", and be configured so that only trusted local users are assigned to this category.
In a corporate environment, categories could be used to identify documents confidential to specific departments. Categories could be established for "Finance", "Payroll", "Marketing", and "Personnel". Only users assigned to those categories can access resources labeled with the same category.
After users have been assigned to categories, they can label any of their own files with any of the categories to which they have been assigned. For example, a home user in the system described above could label all of their personal files as "Private", and no service such as Apache or vsftp would ever be able to access those files, because they don't have access to the "Private" category.
MCS works on a simple principle: to access a file, a user needs to be assigned to all of the categories with which the file is labeled. The MCS check is applied after normal Linux Discretionary Access Control (DAC) and Type Enforcement (TE) rules, so it can only further restrict security.

47.5.2. Comparing SELinux and Standard Linux User Identities

SELinux maintains its own user identity for processes, separately from Linux user identities. In the targeted policy (the default for Red Hat Enterprise Linux), only a minimal number of SELinux user identities exist:
  • system_u — System processes
  • root — System administrator
  • user_u — All login users
Use the semanage user -l command to list SELinux users:
~]# semanage user -l

                Labeling   MLS/       MLS/
SELinux User    Prefix     MCS Level  MCS Range            SELinux Roles

root            user       s0         s0-s0:c0.c1023       system_r sysadm_r user_r
system_u        user       s0         s0-s0:c0.c1023       system_r
user_u          user       s0         s0-s0:c0.c1023       system_r sysadm_r user_r
Refer to 「Understanding the Users and Roles in the Targeted Policy」 for more information about SELinux users and roles.
SELinux Logins
One of the properties of targeted policy is that login users all run in the same security context. From a TE point of view, in targeted policy, they are security-equivalent. To effectively use MCS, however, we need to be able to assign different sets of categories to different Linux users, even though they are all the same SELinux user (user_u). This is solved by introducing the concept of an SELinux login. This is used during the login process to assign MCS categories to Linux users when their shell is launched.
Use the semanage login -a command to assign Linux users to SELinux user identities:
~]# semanage login -a james
~]# semanage login -a daniel
~]# semanage login -a olga
Now when you list the SELinux users, you can see the Linux users assigned to a specific SELinux user identity:
~]# semanage login -l

Login Name                SELinux User              MLS/MCS Range

__default__               user_u                    s0
james                     user_u                    s0
daniel                    user_u                    s0
root                      root                      s0-s0:c0.c1023
olga                      user_u                    s0
Notice that at this stage only the root account is assigned to any categories. By default, the root account is configured with access to all categories.
Red Hat Enterprise Linux and SELinux are preconfigured with several default categories, but to make effective use of MCS, the system administrator typically modifies these or creates further categories to suit local requirements.

47.5.3. Configuring Categories

SELinux maintains a mapping between internal sensitivity and category levels and their human-readable representations in the setrans.conf file. The system administrator edits this file to manage and maintain the required categories.
Use the chcat -L command to list the current categories:
~]# chcat -L
s0
s0-s0:c0.c1023                 SystemLow-SystemHigh
s0:c0.c1023                    SystemHigh
To modify the categories or to start creating your own, modify the /etc/selinux/<selinuxtype>/setrans.conf file. For the example introduced above, add the Marketing, Finance, Payroll, and Personnel categories as follows (this example uses the targeted policy, and irrelevant sections of the file have been omitted):
~]# vi /etc/selinux/targeted/setrans.conf
s0:c0=Marketing
s0:c1=Finance
s0:c2=Payroll
s0:c3=Personnel
Use the chcat -L command to check the newly-added categories:
~]# chcat -L
s0:c0                          Marketing
s0:c1                          Finance
s0:c2                          Payroll
s0:c3                          Personnel
s0
s0-s0:c0.c1023                 SystemLow-SystemHigh
s0:c0.c1023                    SystemHigh

Note

After you make any changes to the setrans.conf file, you need to restart the MCS translation service before those changes take effect. Use the following command to restart the service:
~]# service mcstrans restart

47.5.4. Assigning Categories to Users

Now that the required categories have been added to the system, you can start assigning them to SELinux users and files. To further develop the example above, assume that James is in the Marketing department, Daniel is in the Finance and Payroll departments, and Olga is in the Personnel department. Each of these users has already been assigned an SELinux login.
Use the chcat command to assign MCS categories to SELinux logins:
~]# chcat -l -- +Marketing james
~]# chcat -l -- +Finance,+Payroll daniel
~]# chcat -l -- +Personnel olga
You can also use the chcat command with additional command-line arguments to list the categories that are assigned to users:
~]# chcat -L -l daniel james olga
daniel: Finance,Payroll
james: Marketing
olga: Personnel
You can add further Linux users, assign them to SELinux user identities and then assign categories to them as required. For example, if the company director also requires a user account with access to all categories, follow the same procedure as above:
# Create a user account for the company director (Karl)
~]# useradd karl
~]# passwd karl
Changing password for user karl.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

# Assign the user account to an SELinux login
~]# semanage login -a karl

# Assign all the MCS categories to the new login
~]# chcat -l -- +Marketing,+Finance,+Payroll,+Personnel karl
Use the chcat command to verify the addition of the new user:
~]# chcat -L -l daniel james olga karl
daniel: Finance,Payroll
james: Marketing
olga: Personnel
karl: Marketing,Finance,Payroll,Personnel

Note

MCS category access is assigned during login. Consequently, a user does not have access to newly-assigned categories until they log in again. Similarly, if access to a category is revoked, this is only apparent to the user after the next login.

47.5.5. Assigning Categories to Files

At this point we have a system that has several user accounts, each of which is mapped to an SELinux user identity. We have also established a number of categories that are suitable for the particular deployment, and assigned those categories to different users.
All of the files on the system, however, still fall under the same category, and are therefore accessible by everyone (but still according to the standard Linux DAC and TE constraints). We now need to assign categories to the various files on the system so that only the appropriate users can access them.
For this example, we create a file in Daniel's home directory:
[daniel@dhcp-133 ~]$ echo "Financial Records 2006" > financeRecords.txt
Use the ls -Z command to check the initial security context of the file:
[daniel@dhcp-133 ~]$ ls -Z financeRecords.txt
-rw-r--r--  daniel daniel user_u:object_r:user_home_t      financeRecords.txt
Notice that at this stage the file has the default context for a file created in the user's home directory (user_home_t) and has no categories assigned to it. We can add the required category using the chcat command. Now when you check the security context of the file, you can see the category has been applied.
[daniel@dhcp-133 ~]$ chcat -- +Finance financeRecords.txt
[daniel@dhcp-133 ~]$ ls -Z financeRecords.txt
-rw-r--r--  daniel daniel root:object_r:user_home_t:Finance financeRecords.txt
In many cases, you need to assign more than one category to a file. For example, some files may need to be accessible to users from both the Finance and Payroll departments.
[daniel@dhcp-133 ~]$ chcat -- +Payroll financeRecords.txt
[daniel@dhcp-133 ~]$ ls -Z financeRecords.txt
-rw-r--r--  daniel daniel root:object_r:user_home_t:Finance,Payroll financeRecords.txt
Each of the categories that have been assigned to the file are displayed in the security context. You can add and delete categories to files as required. Only users assigned to those categories can access that file, assuming that Linux DAC and TE permissions would already allow the access.
If a user who is assigned to a different category tries to access the file, they receive an error message:
[olga@dhcp-133 ~]$ cat financeRecords.txt
cat: financeRecords.txt: Permission Denied

Note

Refer to the man pages for semanage and chcat for more information on the available options for these commands.

47.6. Multi-Level Security (MLS)

Protecting sensitive or confidential data is paramount in many businesses. In the event such information is made public, businesses may face legal or financial ramifications. At the very least, they will suffer a loss of customer trust. In most cases, however, they can recover from these financial and other losses with appropriate investment or compensation.
The same cannot be said of the defense and related communities, which includes military services, intelligence organizations and some areas of police service. These organizations cannot easily recover should sensitive information be leaked, and may not recover at all. These communities require higher levels of security than those employed by businesses and other organizations.
Having information of different security levels on the same computer systems poses a real threat. It is not a straight-forward matter to isolate different information security levels, even though different users log in using different accounts, with different permissions and different access controls.
Some organizations go as far as to purchase dedicated systems for each security level. This is often prohibitively expensive, however. A mechanism is required to enable users at different security levels to access systems simultaneously, without fear of information contamination.

47.6.1. Why Multi-Level?

The term multi-level arises from the defense community's security classifications: Confidential, Secret, and Top Secret.
Individuals must be granted appropriate clearances before they can see classified information. Those with Confidential clearance are only authorized to view Confidential documents; they are not trusted to look at Secret or Top Secret information. The rules that apply to data flow operate from lower levels to higher levels, and never the reverse. This is illustrated below.
Information Security Levels
Hierarchy of Information Security Levels. The arrows indicate the direction in which rules allow data to flow.
図47.2 Information Security Levels

47.6.1.1. The Bell-La Padula Model (BLP)

SELinux, like most other systems that protect multi-level data, uses the BLP model. This model specifies how information can flow within the system based on labels attached to each subject and object. Refer to the following diagram:
Available data flows using an MLS system
Processes can read the same or lower security levels, but can only write to their own or higher security levels.
図47.3 Available data flows using an MLS system

Under such a system, users, computers, and networks use labels to indicate security levels. Data can flow between like levels, for example between "Secret" and "Secret", or from a lower level to a higher level. This means that users at level "Secret" can share data with one another, and can also retrieve information from Confidential-level (i.e., lower-level), users. However, data cannot flow from a higher level to a lower level. This prevents processes at the "Secret" level from viewing information classified as "Top Secret". It also prevents processes at a higher level from accidentally writing information to a lower level. This is referred to as the "no read up, no write down" model.

47.6.1.2. MLS and System Privileges

MLS access rules are always combined with conventional access permissions (file permissions). For example, if a user with a security level of "Secret" uses Discretionary Access Control (DAC) to block access to a file by other users, this also blocks access by users with a security level of "Top Secret". A higher security clearance does not automatically give permission to arbitrarily browse a file system.
Users with top-level clearances do not automatically acquire administrative rights on multi-level systems. While they may have access to all information on the computer, this is different from having administrative rights.

47.6.2. Security Levels, Objects and Subjects

As discussed above, subjects and objects are labeled with Security Levels (SLs), which are composed of two types of entities:
  1. Sensitivity: — A hierarchical attribute such as "Secret" or "Top Secret".
  2. Categories: — A set of non-hierarchical attributes such as "US Only" or "UFO".
An SL must have one sensitivity, and may have zero or more categories.
Examples of SLs are: { Secret / UFO, Crypto }, { Top Secret / UFO, Crypto, Stargate } and { Unclassified }
Note the hierarchical sensitivity followed by zero or more categories. The reason for having categories as well as sensitivities is so that sensitivities can be further compartmentalized on a need-to-know basis. For example, while a process may be cleared to the "Secret" sensitivity level, it may not need any type of access to the project "Warp Drive" (which could be the name of a category).

Note

  1. Security Levels on objects are called Classifications.
  2. Security Levels on subjects are called Clearances.
Thus, objects are labeled with a Classification, while subjects operate with a specific Clearance. Security Levels can have also Ranges, but these are beyond the scope of this introduction.

47.6.3. MLS Policy

SELinux uses the Bell-La Padula BLP model, with Type Enforcement (TE) for integrity. In simple terms, MLS policy ensures that a Subject has an appropriate clearance to access an Object of a particular classification.
For example, under MLS, the system needs to know how to process a request such as: Can a process running with a clearance of { Top Secret / UFO, Rail gun } write to a file classified as { Top Secret / UFO } ?
The MLS model and the policy implemented for it will determine the answer. (Consider, for example, the problem of information leaking out of the Rail gun category into the file).
MLS meets a very narrow (yet critical) set of security requirements based around the way information and personnel are managed in rigidly controlled environments such as the military. MLS is typically difficult to work with and does not map well to general-case scenarios.
Type Enforcement (TE) under SELinux is a more flexible and expressive security scheme, which is in many cases more suitable than MLS.
There are, however, several scenarios where traditional MLS is still required. For example, a file server where the stored data may be of mixed classification and where clients connect at different clearances. This results in a large number of Security Levels and a need for strong isolation all on a single system.
This type of scenario is the reason that SELinux includes MLS as a security model, as an adjunct to TE.

47.6.4. LSPP Certification

Efforts are being made to have Linux certified as an MLS operating system. The certification is equivalent to the old B1 rating, which has been reworked into the Labeled Security Protection Profile under the Common Criteria scheme.

47.7. SELinux Policy Overview

This chapter is an overview of SELinux policy, some of its internals, and how it works. It discusses the policy in general terms, while 「Targeted Policy Overview」 focuses on the details of the targeted policy as it ships in Red Hat Enterprise Linux. This chapter starts with a brief overview of what policy is and where it resides.
Following on from this, the role of SELinux during the boot process is discussed. This is followed by discussions on file security contexts, object classes and permissions, attributes, types, access vectors, macros, users and roles, constraints, and a brief discussion summarizing special kernel interfaces.

47.7.1. What is the SELinux Policy?

The SELinux Policy is the set of rules that guide the SELinux security engine. It defines types for file objects and domains for processes. It uses roles to limit the domains that can be entered, and has user identities to specify the roles that can be attained. In essence, types and domains are equivalent, the difference being that types apply to objects while domains apply to processes.

47.7.1.1. SELinux Types

A type is a way of grouping items based on their similarity from a security perspective. This is not necessarily related to the unique purpose of an application or the content of a document. For example, a file can have any type of content and be for any purpose, but if it belongs to a user and exists in that user's home directory, it is considered to be of a specific security type, user_home_t.
These object types are considered alike because they are accessible in the same way by the same set of subjects. Similarly, processes tend to be of the same type if they have the same permissions as other subjects. In the targeted policy, programs that run in the unconfined_t domain have an executable file with a type such as sbin_t. From an SELinux perspective, this means they are all equivalent in terms of what they can and cannot do on the system.
For example, the binary executable file object at /usr/bin/postgres has the type postgresql_exec_t. All of the targeted daemons have their own *_exec_t type for their executable applications. In fact, the entire set of PostgreSQL executables such as createlang, pg_dump, and pg_restore have the same type, postgresql_exec_t, and they transition to the same domain, postgresql_t, upon execution.
47.7.1.1.1. Using Policy Rules to Define Type Access
The SELinux policy defines various rules which determine how each domain may access each type. Only what is specifically allowed by the rules is permitted. By default, every operation is denied and audited, meaning it is logged in the $AUDIT_LOG file. In Red Hat Enterprise Linux, this is set to /var/log/messages. The policy is compiled into binary format for loading into the kernel security server, and each time the security server makes a decision, it is cached in the AVC to optimize performance.
The policy can be defined either by modifying the existing files or by adding local Type Enforcement (TE) and File Context (FC) files to the policy tree. These new policies can be loaded into the kernel in real time. Otherwise, the policy is loaded during the boot process by init, as explained in 「The Role of Policy in the Boot Process」. Ultimately, every system operation is determined by the policy and the type-labeling of the files.

Important

After loading a new policy, it is recommended that you restart any services that may have new or changed labeling. Generally speaking, this is only the targeted daemons, as listed in 「What is the Targeted Policy?」.

47.7.1.2. SELinux and Mandatory Access Control

SELinux is an implementation of Mandatory Access Control (MAC). Depending on the security policy type, SELinux implements either Type Enforcement (TE), Roles Based Access Control (RBAC) or Bell-La Padula Model Multi-Level Security (MLS).
The policy specifies the rules in the implemented environment. It is written in a language created specifically for writing security policy. Policy writers use m4 macros to capture common sets of low-level rules. A number of m4 macros are defined in the existing policy, which facilitate the writing of new policy. These rules are preprocessed into many additional rules as part of building the policy.conf file, which is compiled into the binary policy.
Access rights are divided differently among domains, and no domain is required to act as a master for all other domains. Moving between domains is controlled by the policy, through login programs, userspace programs such as newrole, or by requiring a new process execution in the new domain. This movement between domains is referred to as a transition.

47.7.2. Where is the Policy?

There are two components to the policy: the binary tree and the source tree. The binary tree is provided by the selinux-policy-<policyname> package and supplies the binary policy file.
Alternatively, the binary policy can be built from source when the selinux-policy-devel package is installed.

Note

Information on how to edit, write and compile policy is currently outside the scope of this document.

47.7.2.1. Binary Tree Files

  • /etc/selinux/targeted/ — this is the root directory for the targeted policy, and contains the binary tree.
  • /etc/selinux/targeted/policy/ — this is the location of the binary policy file policy.<xx>. In this guide, the variable SELINUX_POLICY is used for this directory.
  • /etc/selinux/targeted/contexts/ — this is the location of the security context information and configuration files, which are used during runtime by various applications.
  • /etc/selinux/targeted/contexts/files/ — contains the default contexts for the entire file system. This is referenced by restorecon when performing relabeling operations.
  • /etc/selinux/targeted/contexts/users/ — in the targeted policy, only the root file is in this directory. These files are used for determining context when a user logs in. For example, for the root user, the context is user_u:system_r:unconfined_t.
  • /etc/selinux/targeted/modules/active/booleans* — this is where the runtime Booleans are configured.

    Note

    These files should never be manually changed. You should use the getsebool, setsebool and semanage tools to manipulate runtime Booleans.

47.7.2.2. Source Tree Files

For developing policy modules, the selinux-policy-devel package includes all of the interface files used to build policy. It is recommended that people who build policy use these files to build the policy modules.
This package installs the policy interface files under /usr/share/selinux/devel/include and has make files installed in /usr/share/selinux/devel/Makefile.
To help applications that need the various SELinux paths, libselinux provides a number of functions that return the paths to the different configuration files and directories. This negates the need for applications to hard-code the paths, especially since the active policy location is dependent on the SELINUXTYPE setting in /etc/selinux/config.
For example, if SELINUXTYPE is set to strict, the active policy location is under /etc/selinux/strict.
To view the list of available functions, use the following command:
man 3 selinux_binary_policy_path

Note

This man page is available only if you have the libselinux-devel RPM installed.
The use of libselinux and related functions is outside the scope of this document.

47.7.3. The Role of Policy in the Boot Process

SELinux plays an important role during the early stages of system start-up. Because all processes must be labeled with their correct domain, init performs some essential operations early in the boot process to maintain synchronization between labeling and policy enforcement.
  1. After the kernel has been loaded during the boot process, the initial process is assigned the predefined initial SELinux ID (initial SID) kernel. Initial SIDs are used for bootstrapping before the policy is loaded.
  2. /sbin/init mounts /proc/, and then searches for the selinuxfs file system type. If it is present, that means SELinux is enabled in the kernel.
  3. If init does not find SELinux in the kernel, or if it is disabled via the selinux=0 boot parameter, or if /etc/selinux/config specifies that SELINUX=disabled, the boot process proceeds with a non-SELinux system.
    At the same time, init sets the enforcing status if it is different from the setting in /etc/selinux/config. This happens when a parameter is passed during the boot process, such as enforcing=0 or enforcing=1. The kernel does not enforce any policy until the initial policy is loaded.
  4. If SELinux is present, /selinux/ is mounted.
  5. init checks /selinux/policyvers for the supported policy version. The version number in /selinux/policyvers is the latest policy version your kernel supports. init inspects /etc/selinux/config to determine which policy is active, such as the targeted policy, and loads the associated file at $SELINUX_POLICY/policy.<version>.
    If the binary policy is not the version supported by the kernel, init attempts to load the policy file if it is a previous version. This provides backward compatibility with older policy versions.
    If the local settings in /etc/selinux/targeted/booleans are different from those compiled in the policy, init modifies the policy in memory based on the local settings prior to loading the policy into the kernel.
  6. By this stage of the process, the policy is fully loaded into the kernel. The initial SIDs are then mapped to security contexts in the policy. In the case of the targeted policy, the new domain is user_u:system_r:unconfined_t. The kernel can now begin to retrieve security contexts dynamically from the in-kernel security server.
  7. init then re-executes itself so that it can transition to a different domain, if the policy defines it. For the targeted policy, there is no transition defined and init remains in the unconfined_t domain.
  8. At this point, init continues with its normal boot process.
The reason that init re-executes itself is to accommodate stricter SELinux policy controls. The objective of re-execution is to transition to a new domain with its own granular rules. The only way that a process can enter a domain is during execution, which means that such processes are the only entry points into the domains.
For example, if the policy has a specific domain for init, such as init_t, a method is required to change from the initial SID, such as kernel, to the correct runtime domain for init. Because this transition may need to occur, init is coded to re-execute itself after loading the policy.
This init transition occurs if the domain_auto_trans(kernel_t, init_exec_t, <target_domain_t>) rule is present in the policy. This rule states that an automatic transition occurs on anything executing in the kernel_t domain that executes a file of type init_exec_t. When this execution occurs, the new process is assigned the domain <target_domain_t>, using an actual target domain such as init_t.

47.7.4. Object Classes and Permissions

SELinux defines a number of classes for objects, making it easier to group certain permissions by specific classes. For example:
  • File-related classes include filesystem for file systems, file for files, and dir for directories. Each class has its own associated set of permissions.
    The filesystem class can mount, unmount, get attributes, set quotas, relabel, and so forth. The file class has common file permissions such as read, write, get and set attributes, lock, relabel, link, rename, append, etc.
  • Network related classes include tcp_socket for TCP sockets, netif for network interfaces, and node for network nodes.
    The netif class, for example, can send and receive on TCP, UDP and raw sockets (tcp_recv, tcp_send, udp_send, udp_recv, rawip_recv, and rawip_send.)
The object classes have matching declarations in the kernel, meaning that it is not trivial to add or change object class details. The same is true for permissions. Development work is ongoing to make it possible to dynamically register and unregister classes and permissions.
Permissions are the actions that a subject can perform on an object, if the policy allows it. These permissions are the access requests that SELinux actively allows or denies.

47.8. Targeted Policy Overview

This chapter is an overview and examination of the SELinux targeted policy, the current supported policy for Red Hat Enterprise Linux.
Much of the content in this chapter is applicable to all types of SELinux policy, in terms of file locations and the type of content in those files. The difference lies in which files exist in the key locations and their contents.

47.8.1. What is the Targeted Policy?

The SELinux policy is highly configurable. For Red Hat Enterprise Linux 5, Red Hat supports a single policy, the targeted policy. Under the targeted policy, every subject and object runs in the unconfined_t domain except for the specific targeted daemons. Objects that are in the unconfined_t domain have no restrictions and fall back to using standard Linux security, that is, DAC. The daemons that are part of the targeted policy run in their own domains and are restricted in every operation they perform on the system. This way daemons that are exploited or compromised in any way are contained and can only cause limited damage.
For example, the http and ntp daemons are both protected in the default targeted policy, and run in the httpd_t and ntpd_t domains, respectively. The ssh daemon, however, is not protected in this policy, and consequently runs in the unconfined_t domain.
Refer to the following sample output, which illustrates the various domains for the daemons mentioned above:
user_u:system_r:httpd_t         25129 ?        00:00:00 httpd
user_u:system_r:ntpd_t          25176 ?        00:00:00 ntpd
system_u:system_r:unconfined_t         25245 ? 00:00:00 sshd
The Strict Policy
The opposite of the targeted policy is the strict policy. In the strict policy, every subject and object exists in a specific security domain, and all interactions and transitions are individually considered within the policy rules.
The strict policy is a much more complex environment, and does not ship with Red Hat Enterprise Linux. This guide focuses on the targeted policy that ships with Red Hat Enterprise Linux, and the components of SELinux used by the targeted daemons.
The targeted daemons are as follows: dhcpd; httpd; mysqld; named; nscd; ntpd; portmap; postgres; snmpd; squid; syslogd; and winbind.

Note

Depending on your installation, only some of these daemons may be present.

47.8.2. Files and Directories of the Targeted Policy

Refer to 「Where is the Policy?」 for a list of the common files and directories used by SELinux.

47.8.3. Understanding the Users and Roles in the Targeted Policy

This section covers the specific roles enabled for the targeted policy. The unconfined_t type exists in every role, which significantly reduces the usefulness of roles in the targeted policy. More extensive use of roles requires a change to the strict policy paradigm, where every process runs in an individually considered domain.
Effectively, there are only two roles in the targeted policy: system_r and object_r. The initial role is system_r, and everything else inherits that role. The remaining roles are defined for compatibility purposes between the targeted policy and the strict policy.[20]
Three of the four roles are defined by the policy. The fourth role, object_r, is an implied role and is not found in policy source. Because roles are created and populated by types using one or more declarations in the policy, there is no single file that declares all roles. (Remember that the policy itself is generated from a number of separate files.)
system_r
This role is for all system processes except user processes:
system_r (28 types)
    dhcpd_t
    httpd_helper_t
    httpd_php_t
    httpd_suexec_t
    httpd_sys_script_t
    httpd_t
    httpd_unconfined_script_t
    initrc_t
    ldconfig_t
    mailman_cgi_t
    mailman_mail_t
    mailman_queue_t
    mysqld_t
    named_t
    ndc_t
    nscd_t
    ntpd_t
    pegasus_t
    portmap_t
    postgresql_t
    snmpd_t
    squid_t
    syslogd_t
    system_mail_t
    unconfined_t
    winbind_helper_t
    winbind_t
    ypbind_t
user_r
This is the default user role for regular Linux users. In a strict policy, individual users might be used, allowing for the users to have special roles to perform privileged operations. In the targeted policy, all users run in the unconfined_t domain.
object_r
In SELinux, roles are not utilized for objects when RBAC is being used. Roles are strictly for subjects. This is because roles are task-oriented and they group together entities which perform actions (for example, processes). All such entities are collectively referred to as subjects. For this reason, all objects have the role object_r, and the role is only used as a placeholder in the label.
sysadm_r
This is the system administrator role in a strict policy. If you log in directly as the root user, the default role may actually be staff_r. If this is true, use the newrole -r sysadm_r command to change to the SELinux system administrator role to perform system administration tasks. In the targeted policy, the following retain sysadm_r for compatibility:
sysadm_r (6 types)
    httpd_helper_t
    httpd_sys_script_t
    initrc_t
    ldconfig_t
    ndc_t
    unconfined_t
There is effectively only one user identity in the targeted policy. The user_u identity was chosen because libselinux falls back to user_u as the default SELinux user identity. This occurs when there is no matching SELinux user for the Linux user who is logging in. Using user_u as the single user in the targeted policy makes it easier to change to the strict policy. The remaining users exist for compatibility with the strict policy.[21]
The one exception is the SELinux user root. You may notice root as the user identity in a process's context. This occurs when the SELinux user root starts daemons from the command line, or restarts a daemon originally started by init.


[18] The NSA is the cryptologic agency of the United States of America's Federal government, charged with information assurance and signals intelligence. You can read more about the NSA at their website, http://www.nsa.gov/about/.
[19] Flask grew out of a project that integrated the Distributed Trusted Operating System (DTOS) into the Fluke research operating system. Flask was the name of the architecture and the implementation in the Fluke operating system.
[20] Any role could have been chosen for the targeted policy, but system_r already had existing authorization for the daemon domains, simplifying the process. This was done because no mechanism currently exists to alias roles.
[21] A user aliasing mechanism would also work here, to alias all identities from the strict policy to a single user identity in the targeted policy.

第48章 Working With SELinux

SELinux presents both a new security paradigm and a new set of practices and tools for administrators and some end-users. The tools and techniques discussed in this chapter focus on standard operations performed by end-users, administrators, and analysts.

48.1. End User Control of SELinux

In general, end users have little interaction with SELinux when Red Hat Enterprise Linux is running the targeted policy. This is because users are running in the domain of unconfined_t along with the rest of the system except the targeted daemons.
In most situations, standard DAC controls prevent you from performing tasks for which you do not have the required access or permissions before SELinux is consulted. Consequently, it is likely that you will never generate an avc: denied message.
The following sections cover the general tasks and practices that an end user might need to perform on a Red Hat Enterprise Linux system. These tasks apply to users of all privilege levels, not only to end users.

48.1.1. Moving and Copying Files

In file system operations, security context must now be considered in terms of the label of the file, the process accessing it, and the directories where the operation is happening. Because of this, moving and copying files with mv and cp may have unexpected results.
Copying Files: SELinux Options for cp
Unless you specify otherwise, cp follows the default behavior of creating a new file based on the domain of the creating process and the type of the target directory. Unless there is a specific rule to set the label, the file inherits the type from the target directory.
Use the -Z user:role:type option to specify the required label for the new file.
The -p (or --preserve=mode,ownership,timestamps) option preserves the specified attributes and, if possible, additional attributes such as links.
touch bar foo
ls -Z bar foo
-rw-rw-r--  auser   auser   user_u:object_r:user_home_t   bar
-rw-rw-r--  auser   auser   user_u:object_r:user_home_t   foo
If you use the cp command without any additional command-line arguments, a copy of the file is created in the new location using the default type of the creating process and the target directory. In this case, because there is no specific rule that applies to cp and /tmp, the new file has the type of the parent directory:
cp bar /tmp
ls -Z /tmp/bar
-rw-rw-r--  auser   auser   user_u:object_r:tmp_t   /tmp/bar
The type tmp_t is the default type for temporary files.
Use the -Z option to specify the label for the new file:
cp -Z user_u:object_r:user_home_t foo /tmp
ls -Z /tmp/foo
-rw-rw-r--  auser   auser   user_u:object_r:user_home_t   /tmp/foo
Moving Files: SELinux Options for mv
Moving files with mv retains the original type associated with the file. Care should be taken using this command as it can cause problems. For example, if you move files with the type user_home_t into ~/public_html, then the httpd daemon is not able to serve those files until you relabel them. Refer to 「Relabeling a File or Directory」 for more information about file labeling.
表48.1 Behavior of mv and cp Commands
Command Behavior
mv The file retains its original label. This may cause problems, confusion, or minor insecurity. For example, the tmpwatch program running in the sbin_t domain might not be allowed to delete an aged file in the /tmp directory because of the file's type.
cp Makes a copy of the file using the default behavior based on the domain of the creating process (cp) and the type of the target directory.
cp -p Makes a copy of the file, preserving the specified attributes and security contexts, if possible. The default attributes are mode, ownership, and timestamps. Additional attributes are links and all.
cp -Z <user:role:type> Makes a copy of the file with the specified labels. The -Z option is synonymous with --context.

48.1.2. Checking the Security Context of a Process, User, or File Object

Checking a Process ID
In Red Hat Enterprise Linux, the -Z option is equivalent to --context, and can be used with the ps, id, ls, and cp commands. The behavior of the cp command with respect to SELinux is explained in 表48.1「Behavior of mv and cp Commands」.
The following example shows a small sample of the output of the ps command. Most of the processes are running in the unconfined_t domain, with a few exceptions.
[user@localhost ~]$ ps auxZ
LABEL                           USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
system_u:system_r:init_t        root         1  0.0  0.1   2032   620 ?        Ss   15:09   0:00 init [5]
system_u:system_r:kernel_t      root         2  0.0  0.0      0     0 ?        S    15:09   0:00 [migration/0]
system_u:system_r:kernel_t      root         3  0.0  0.0      0     0 ?        SN   15:09   0:00 [ksoftirqd/0]

user_u:system_r:unconfined_t    user     3122  0.0  0.6   6908  3232 ?        S    16:47   0:01 /usr/libexec/gconfd-2 5
user_u:system_r:unconfined_t    user     3125  0.0  0.1   2540   588 ?        S    16:47   0:00 /usr/bin/gnome-keyring-daemon
user_u:system_r:unconfined_t    user     3127  0.0  1.4  33612  6988 ?        Sl   16:47   0:00 /usr/libexec/gnome-settings-daemon
user_u:system_r:unconfined_t    user     3144  0.1  1.4  16528  7360 ?        Ss   16:47   0:01 metacity --sm-client-id=default1
user_u:system_r:unconfined_t    user     3148  0.2  2.9  79544 14808 ?        Ss   16:47   0:03 gnome-panel --sm-client-id default2

Checking a User ID
You can use the -Z option with the id command to determine a user's security context. Note that with this command you cannot combine -Z with other options.
[root@localhost ~]# id -Z
user_u:system_r:unconfined_t
Note that you cannot use the -Z option with the id command to inspect the security context of a different user. That is, you can only display the security context of the currently logged-in user:
[user@localhost ~]$ id
uid=501(user) gid=501(user) groups=501(user) context=user_u:system_r:unconfined_t
[user@localhost ~]$ id root
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
[user@localhost ~]$ id -Z root
id: cannot display context when selinux not enabled or when displaying the id
of a different user
Check a File ID
You can use the -Z option with the ls command to group common long-format information. You can display mode, user, group, security context, and filename information.
cd /etc
ls -Z h* -d
drwxr-xr-x  root root  system_u:object_r:etc_t        hal
-rw-r--r--  root root  system_u:object_r:etc_t        host.conf
-rw-r--r--  root root  user_u:object_r:etc_t          hosts
-rw-r--r--  root root  system_u:object_r:etc_t        hosts.allow
-rw-r--r--  root root  system_u:object_r:etc_t        hosts.canna
-rw-r--r--  root root  system_u:object_r:etc_t        hosts.deny
drwxr-xr-x  root root  system_u:object_r:hotplug_etc_t  hotplug
drwxr-xr-x  root root  system_u:object_r:etc_t        hotplug.d
drwxr-xr-x  root root  system_u:object_r:httpd_sys_content_t htdig
drwxr-xr-x  root root  system_u:object_r:httpd_config_t httpd

48.1.3. Relabeling a File or Directory

You may need to relabel a file when moving or copying into special directories related to the targeted daemons, such as ~/public_html directories, or when writing scripts that work in directories outside of /home.
There are two general types of relabeling operations:
  • Deliberately changing the type of a file
  • Restoring files to the default state according to policy
There are also relabeling operations that an administrator performs. These are covered in 「Relabeling a File System」.

Tip

The majority of SELinux permission control in the targeted policy is Type Enforcement (TE). Consequently, you can generally ignore the user and role information in a security label and focus on just changing the type. You do not normally need to consider the role and user settings on files.

Note

If relabeling affects the label on a daemon's executable, you should restart the daemon to be sure it is running in the correct domain. For example, if /usr/sbin/mysqld has the wrong security label, and you address this by using a relabeling operation such as restorecon, you must restart mysqld after the relabeling operation. Setting the executable file to have the correct type (mysqld_exec_t) ensures that it transitions to the proper domain when started.
Use the chcon command to change a file to the correct type. You need to know the correct type that you want to apply to use this command. The directories and files in the following example are labeled with the default type defined for file system objects created in /home:
cd ~
ls -Zd public_html/
drwxrwxr-x  auser  auser  user_u:object_r:user_home_t public_html/

ls -Z web_files/
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   1.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   2.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   3.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   4.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   5.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   index.html
If you move these files into the public_html directory, they retain the original type:
mv web_files/* public_html/
ls -Z public_html/
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   1.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   2.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   3.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   4.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   5.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   index.html
To make these files viewable from a special user public HTML folder, they need to have a type that httpd has permissions to read, presuming the Apache HTTP Server is configured for UserDir and the Boolean value httpd_enable_homedirs is enabled.
chcon -R -t httpd_user_content_t public_html/
ls -Z public_html
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t   1.html
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t   2.html
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t   3.html
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t   4.html
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t   5.html
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t   index.html

ls -Z public_html/ -d
drwxrwxr-x  auser  auser  user_u:object_r:httpd_user_content_t  public_html/

Tip

If the file has no label, such as a file created while SELinux was disabled in the kernel, you need to give it a full label with chcon system_u:object_r:shlib_t foo.so. Otherwise, you will receive an error about applying a partial context to an unlabeled file.
Use the restorecon command to restore files to the default values according to the policy. There are two other methods for performing this operation that work on the entire file system: fixfiles or a policy relabeling operation. Each of these methods requires superuser privileges. Cautions against both of these methods appear in 「Relabeling a File System」.
The following example demonstrates restoring the default user home directory context to a set of files that have different types. The first two sets of files have different types, and are being moved into a directory for archiving. Their contexts are different from each other, and are incorrect for a standard user's home directory:
ls -Z /tmp/
-rw-rw-r--  auser  auser  user_u:object_r:tmp_t            /tmp/file1
-rw-rw-r--  auser  auser  user_u:object_r:tmp_t            /tmp/file2
-rw-rw-r--  auser  auser  user_u:object_r:tmp_t            /tmp/file3

mv /tmp/{1,2,3} archives/
mv public_html/* archives/
ls -Z archives/
-rw-rw-r--  auser  auser  user_u:object_r:tmp_t            file1
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t    file1.html
-rw-rw-r--  auser  auser  user_u:object_r:tmp_t            file2
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t    file2.html
-rw-rw-r--  auser  auser  user_u:object_r:tmp_t            file3
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t    file3.html
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t    file4.html
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t    file5.html
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t  index.html
The archives/ directory already has the default type because it was created in the user's home directory:
ls -Zd archives/
drwxrwxr-x  auser  auser  user_u:object_r:user_home_t  archives/
Using the restorecon command to relabel the files uses the default file contexts set by the policy, so these files are labeled with the default label for their current directory.
/sbin/restorecon -R archives/
ls -Z archives/
-rw-rw-r--  auser  auser  system_u:object_r:user_home_t    file1
-rw-rw-r--  auser  auser  system_u:object_r:user_home_t    file1.html
-rw-rw-r--  auser  auser  system_u:object_r:user_home_t    file2
-rw-rw-r--  auser  auser  system_u:object_r:user_home_t    file2.html
-rw-rw-r--  auser  auser  system_u:object_r:user_home_t    file3
-rw-rw-r--  auser  auser  system_u:object_r:user_home_t    file3.html
-rw-rw-r--  auser  auser  system_u:object_r:user_home_t    file4.html
-rw-rw-r--  auser  auser  system_u:object_r:user_home_t    file5.html
-rw-rw-r--  auser  auser  system_u:object_r:user_home_t    index.html

48.1.4. Creating Archives That Retain Security Contexts

You can use either the tar or star utilities to create archives that retain SELinux security contexts. The following example uses star to demonstrate how to create such an archive. You need to use the appropriate -xattr and -H=exustar options to ensure that the extra attributes are captured and that the header for the *.star file is of a type that fully supports xattrs. Refer to the man page for more information about these and other options.
The following example illustrates the creation and extraction of a set of html files and directories. Note that the two directories have different labels. Unimportant parts of the file context have been omitted for printing purposes (indicated by ellipses '...'):
ls -Z public_html/ web_files/

public_html/:
-rw-rw-r--  auser  auser  ...httpd_user_content_t 1.html
-rw-rw-r--  auser  auser  ...httpd_user_content_t 2.html
-rw-rw-r--  auser  auser  ...httpd_user_content_t 3.html
-rw-rw-r--  auser  auser  ...httpd_user_content_t 4.html
-rw-rw-r--  auser  auser  ...httpd_user_content_t 5.html
-rw-rw-r--  auser  auser  ...httpd_user_content_t index.html
web_files/:
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  1.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  2.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  3.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  4.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  5.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  index.html
The following command creates the archive, retaining all of the SELinux security contexts:
star -xattr -H=exustar -c -f all_web.star public_html/ web_files/
star: 11 blocks + 0 bytes (total of 112640 bytes = 110.00k).
Use the ls command with the -Z option to validate the security context:
ls -Z all_web.star
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t \  all_web.star
You can now copy the archive to a different directory. In this example, the archive is copied to /tmp. If there is no specific policy to make a derivative temporary type, the default behavior is to acquire the tmp_t type.
cp all_web.star /tmp/ cd /tmp/

ls -Z all_web.star
-rw-rw-r--  auser  auser  user_u:object_r:tmp_t  all_web.star
Now you can expand the archives using star and it restores the extended attributes:
star -xattr -x -f all_web.star
star: 11 blocks + 0 bytes (total of 112640 bytes = 110.00k).

ls -Z /tmp/public_html/ /tmp/web_files/
/tmp/public_html/:
-rw-rw-r--  auser  auser  ...httpd_sys_content_t 1.html
-rw-rw-r--  auser  auser  ...httpd_sys_content_t 2.html
-rw-rw-r--  auser  auser  ...httpd_sys_content_t 3.html
-rw-rw-r--  auser  auser  ...httpd_sys_content_t 4.html
-rw-rw-r--  auser  auser  ...httpd_sys_content_t 5.html
-rw-rw-r--  auser  auser  ...httpd_sys_content_t index.html
/tmp/web_files/:
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  1.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  2.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  3.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  4.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  5.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  \ index.html

Caution

If you use an absolute path when you create an archive using star, the archive expands on that same path. For example, an archive made with this command restores the files to /var/log/httpd/:
star -xattr -H=exustar -c -f httpd_logs.star /var/log/httpd/
If you attempt to expand this archive, star issues a warning if the files in the path are newer than the ones in the archive.

48.2. Administrator Control of SELinux

In addition to the tasks often performed by users in 「End User Control of SELinux」, SELinux administrators could be expected to perform a number of additional tasks. These tasks typically require root access to the system. Such tasks are significantly easier under the targeted policy. For example, there is no need to consider adding, editing, or deleting Linux users from the SELinux users, nor do you need to consider roles.
This section covers the types of tasks required of an administrator who maintains Red Hat Enterprise Linux running SELinux.

48.2.1. Viewing the Status of SELinux

The sestatus command provides a configurable view into the status of SELinux. The simplest form of this command shows the following information:
~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 21
Policy from config file:        targeted
The -v option includes information about the security contexts of a series of files that are specified in /etc/sestatus.conf:
~]# sestatus -v
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 21
Policy from config file:        targeted

Process contexts:
Current context:                user_u:system_r:unconfined_t
Init context:                   system_u:system_r:init_t
/sbin/mingetty                  system_u:system_r:getty_t
/usr/sbin/sshd                  system_u:system_r:unconfined_t:s0-s0:c0.c1023

File contexts:
Controlling term:               user_u:object_r:devpts_t
/etc/passwd                     system_u:object_r:etc_t
/etc/shadow                     system_u:object_r:shadow_t
/bin/bash                       system_u:object_r:shell_exec_t
/bin/login                      system_u:object_r:login_exec_t
/bin/sh                         system_u:object_r:bin_t -> system_u:object_r:shell_exec_t
/sbin/agetty                    system_u:object_r:getty_exec_t
/sbin/init                      system_u:object_r:init_exec_t
/sbin/mingetty                  system_u:object_r:getty_exec_t
/usr/sbin/sshd                  system_u:object_r:sshd_exec_t
/lib/libc.so.6                  system_u:object_r:lib_t -> system_u:object_r:lib_t
/lib/ld-linux.so.2              system_u:object_r:lib_t -> system_u:object_r:ld_so_t
The -b displays the current state of booleans. You can use this in combination with grep or other tools to determine the status of particular booleans:
~]# sestatus -b | grep httpd | grep on$
httpd_builtin_scripting           on
httpd_disable_trans               on
httpd_enable_cgi                  on
httpd_enable_homedirs             on
httpd_unified                     on

48.2.2. Relabeling a File System

You may never need to relabel an entire file system. This usually occurs only when labeling a file system for SELinux for the first time, or when switching between different types of policy, such as changing from the targeted to the strict policy.
Relabeling a File System Using init
The recommended method for relabeling a file system is to reboot the machine. This allows the init process to perform the relabeling, ensuring that applications have the correct labels when they are started and that they are started in the right order. If you relabel a file system without rebooting, some processes may continue running with an incorrect context. Manually ensuring that all the daemons are restarted and running in the correct context can be difficult.
Use the following procedure to relabel a file system using this method.
touch /.autorelabel
reboot
At boot time, init.rc checks for the existence of /.autorelabel. If this file exists, SELinux performs a complete file system relabel (using the /sbin/fixfiles -f -F relabel command), and then deletes /.autorelabel.
Relabeling a File System Using fixfiles
It is possible to relabel a file system using the fixfiles command, or to relabel based on the RPM database:
Use the following command to relabel a file system only using the fixfiles command:
fixfiles relabel
Use the following command to relabel a file system based on the RPM database:
fixfiles -R <packagename> restore
Using fixfiles to restore contexts from packages is safer and quicker.

Caution

Running fixfiles on the entire file system without rebooting may make the system unstable.
If the relabeling operation applies a new policy that is different from the policy that was in place when the system booted, existing processes may be running in incorrect and insecure domains. For example, a process could be in a domain that is not an allowed transition for that process in the new policy, granting unexpected permissions to that process alone.
In addition, one of the options to fixfiles relabel prompts for approval to empty /tmp/ because it is not possible to reliably relabel /tmp/. Since fixfiles is run as root, temporary files that applications are relying upon are erased. This could make the system unstable or behave unexpectedly.

48.2.3. Managing NFS Home Directories

In Red Hat Enterprise Linux 5, most targeted daemons do not interact with user data and are not affected by NFS-mounted home directories. One exception is the Apache HTTP Server. For example, CGI scripts that are on the mounted file system have the nfs_t type, which is not a type that httpd_t is allowed to execute.
If you are having problems with the default type of nfs_t, try mounting the home directories with a different context:
mount -t nfs -o context=user_u:object_r:user_home_dir_t \
	fileserver.example.com:/shared/homes/ /home

Caution

「Specifying the Security Context of Entire File Systems」 explains how to mount a directory so that httpd can execute scripts. If you do this for user home directories, it gives the Apache HTTP Server increased access to those directories. Remember that a mountpoint label applies to the entire mounted file system.
Future versions of the SELinux policy address the functionality of NFS.

48.2.4. Granting Access to a Directory or a Tree

Similar to standard Linux DAC permissions, a targeted daemon must have SELinux permissions to be able to descend the directory tree. This does not mean that a directory and its contents need to have the same type. There are many types, such as root_t, tmp_t, and usr_t that grant read access for a directory. These types are suitable for directories that do not contain any confidential information, and that you want to be widely readable. They could also be used for a parent directory of more secured directories with different contexts.
If you are working with an avc: denied message, there are some common problems that arise with directory traversal. For example, many programs run a command equivalent to ls -l / that is not necessary to their operation but generates a denial message in the logs. For this you need to create a dontaudit rule in your local.te file.
When trying to interpret AVC denial messages, do not be misled by the path=/ component. This path is not related to the label for the root file system, /. It is actually relative to the root of the file system on the device node. For example, if your /var/ directory is located on an LVM (Logical Volume Management [22]) device, /dev/dm-0, the device node is identified in the message as dev=dm-0. When you see path=/ in this example, that is the top level of the LVM device dm-0, not necessarily the same as the root file system designation /.

48.2.5. Backing Up and Restoring the System

48.2.6. Enabling or Disabling Enforcement

You can enable and disable SELinux enforcement at runtime or configure it to start in the correct mode at boot time, using the command line or GUI. SELinux can operate in one of three modes: disabled, meaning not enabled in the kernel; permissive, meaning SELinux is running and logging but not controlling permissions; or enforcing, meaning SELinux is running and enforcing policy.
Use the setenforce command to change between permissive and enforcing modes at runtime. Use setenforce 0 to enter permissive mode; use setenforce 1 to enter enforcing mode.
The sestatus command displays the current mode and the mode from the configuration file referenced during boot:
~]# sestatus | grep -i mode
Current mode:           permissive
Mode from config file:  permissive
Note that changing the runtime enforcement does not affect the boot time configuration:
~]# setenforce 1
~]# sestatus | grep -i mode
Current mode:           enforcing
Mode from config file:  permissive
You can also disable enforcing mode for a single daemon. For example, if you are trying to troubleshoot the named daemon and SELinux, you can turn off enforcing for just that daemon.
Use the getsebool command to get the current status of the boolean:
~]# getsebool named_disable_trans
named_disable_trans --> off
Use the following command to disable enforcing mode for this daemon:
~]# setsebool named_disable_trans 1
~]# getsebool named_disable_trans
named_disable_trans --> on

Note

This sets the runtime value only. Use the -P option to make the change persistent across reboots.
Any *_disable_trans booleans that are set to "on" invoke the conditional that prevents the process from transitioning to the domain on execution.
Use the following command to find which of these booleans are set:
~]# getsebool -a | grep disable.*on
httpd_disable_trans=1
mysqld_disable_trans=1
ntpd_disable_trans=1
You can set any number of boolean values using the setsebool command:
setsebool -P httpd_disable_trans=1 mysqld_disable_trans=1 ntpd_disable_trans=1
You can also use togglesebool <boolean_name> to change the value of a specific boolean:
~]# getsebool httpd_disable_trans
httpd_disable_trans --> off
~]# togglesebool httpd_disable_trans
httpd_disable_trans: active
You can configure all of these settings using system-config-selinux. The same configuration files are used, so changes appear bidirectionally.
Changing a Runtime Boolean
Use the following procedure to change a runtime boolean using the GUI.

Note

Administrator privileges are required to perform this procedure.
  1. On the System menu, point to Administration and then click Security Level and Firewall to display the Security Level Configuration dialog box.
  2. Click the SELinux tab, and then click Modify SELinux Policy.
  3. In the selection list, click the arrow next to the Name Service entry, and select the Disable SELinux protection for named daemon check box.
  4. Click OK to apply the change. Note that it may take a short time for the policy to be reloaded.
Using the Security Level Configuration dialog box to change a runtime boolean.
Using the Security Level Configuration dialog box to change a runtime boolean.
図48.1 Using the Security Level Configuration dialog box to change a runtime boolean.

If you want to control these settings with scripts, you can use the setenforce(1), getenforce(1), and selinuxenabled(1) commands.

48.2.7. Enable or Disable SELinux

Important

Changes you make to files while SELinux is disabled may give them an unexpected security label, and new files will not have a label. You may need to relabel part or all of the file system after re-enabling SELinux.
From the command line, you can edit the /etc/sysconfig/selinux file. This file is a symlink to /etc/selinux/config. The configuration file is self-explanatory. Changing the value of SELINUX or SELINUXTYPE changes the state of SELinux and the name of the policy to be used the next time the system boots.
~]# cat /etc/sysconfig/selinux
# 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 - SELinux is fully disabled.
SELINUX=permissive
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted

# SETLOCALDEFS= Check local definition changes
SETLOCALDEFS=0
Changing the Mode of SELinux Using the GUI
Use the following procedure to change the mode of SELinux using the GUI.

Note

You need administrator privileges to perform this procedure.
  1. On the System menu, point to Administration and then click Security Level and Firewall to display the Security Level Configuration dialog box.
  2. Click the SELinux tab.
  3. In the SELinux Setting select either Disabled, Enforcing or Permissive, and then click OK.
  4. If you changed from Enabled to Disabled or vice versa, you need to restart the machine for the change to take effect.
Changes made using this dialog box are immediately reflected in /etc/sysconfig/selinux.

48.2.8. Changing the Policy

This section provides a brief introduction to using customized policies on your system. A full discussion of this topic is beyond the scope of this document.
To load a different policy on your system, change the following line in /etc/sysconfig/selinux:
SELINUXTYPE=<policyname>
where <policyname> is the policy name directory under /etc/selinux/. This assumes that you have the custom policy installed. After changing the SELINUXTYPE parameter, run the following commands:
touch /.autorelabel
reboot
Use the following procedure to load a different policy using the system-config-selinux utility:

Note

You need administrator privileges to perform this procedure.
  1. Ensure that the complete directory structure for the required policy exists under /etc/selinux.
  2. On the System menu, point to Administration and then click Security Level and Firewall to display the Security Level Configuration dialog box.
  3. Click the SELinux tab.
  4. In the Policy Type list, select the policy that you want to load, and then click OK. This list is only visible if more than one policy is installed.
  5. Restart the machine for the change to take effect.
Using the Security Level Configuration dialog box to load a custom policy.
Using the Security Level Configuration dialog box to load a custom policy.
図48.2 Using the Security Level Configuration dialog box to load a custom policy.

48.2.9. Specifying the Security Context of Entire File Systems

You can use the mount -o context= command to set a single context for an entire file system. This might be a file system that is already mounted and that supports xattrs, or a network file system that obtains a genfs label such as cifs_t or nfs_t.
For example, if you need the Apache HTTP Server to read from a mounted directory or loopback file system, you need to set the type to httpd_sys_content_t:
mount -t nfs -o context=system_u:object_r:httpd_sys_content_t \
	server1.example.com:/shared/scripts /var/www/cgi

Tip

When troubleshooting httpd and SELinux problems, reduce the complexity of your situation. For example, if you have the file system mounted at /mnt and then symbolically linked to /var/www/html/foo, you have two security contexts to be concerned with. Because one security context is of the object class file and the other of type lnk_file, they are treated differently by the policy and unexpected behavior may occur.

48.2.10. Changing the Security Category of a File or User

Refer to 「Assigning Categories to Files」 and 「Assigning Categories to Users」 for information about adding and changing the security categories of files and users.

48.2.11. Running a Command in a Specific Security Context

You can use the runcon command to run a command in a specific context. This is useful for scripting or for testing policy, but care should be taken to ensure that it is implemented correctly.
For example, you could use the following command to run a script to test for mislabeled content. The arguments that appear after the command are considered to be part of the command. (In this example, ~/bin/contexttest is a user-defined script.)
runcon -t httpd_t ~/bin/contexttest -ARG1 -ARG2
You can also specify the entire context, as follows:
runcon user_u:system_r:httpd_t ~/bin/contexttest

48.2.12. Useful Commands for Scripts

The following is a list of useful commands introduced with SELinux, and which you may find useful when writing scripts to help administer your system:
getenforce
This command returns the enforcing status of SELinux.
setenforce [ Enforcing | Permissive | 1 | 0 ]
This command controls the enforcing mode of SELinux. The option 1 or Enforcing tells SELinux to enter enforcing mode. The option 0 or Permissive tells SELinux to enter passive mode. Access violations are still logged, but not prevented.
selinuxenabled
This command exits with a status of 0 if SELinux is enabled, and 1 if SELinux is disabled.
~]# selinuxenabled
~]# echo $?
0
getsebool [-a] [boolean_name]
This command shows the status of all booleans (-a) or a specific boolean (<boolean_name>).
setsebool [-P] <boolean_name> value | bool1=val1 bool2=val2 ...
This command sets one or more boolean values. The -P option makes the changes persistent across reboots.
togglesebool boolean ...
This command toggles the setting of one or more booleans. This effects boolean settings in memory only; changes are not persistent across reboots.

48.2.13. Changing to a Different Role

You use the newrole command to run a new shell with the specified type and/or role. Changing roles is typically only meaningful in the strict policy; the targeted policy is generally restricted to a single role. Changing types may be useful for testing, validation, and development purposes.
newrole -r <role_r> -t <type_t> [-- [ARGS]...]
The ARGS are passed directly to the shell specified in the user's entry in the /etc/passwd file.

Note

The newrole command is part of the policycoreutils-newrole package, which is required if you install the strict or MLS policy. It is not installed by default in Red Hat Enterprise Linux.

48.2.14. When to Reboot

The primary reason for rebooting the system from an SELinux perspective is to completely relabel the file system. On occasion you might need to reboot the system to enable or disable SELinux.

48.3. Analyst Control of SELinux

This section describes some common tasks that a security analyst might need to perform on an SELinux system.

48.3.1. Enabling Kernel Auditing

As part of an SELinux analysis or troubleshooting exercise, you might choose to enable complete kernel-level auditing. This can be quite verbose, because it generates one or more additional audit messages for each AVC audit message. To enable this level of auditing, append the audit=1 parameter to your kernel boot line, either in the /etc/grub.conf file or on the GRUB menu at boot time.
This is an example of a full audit log entry when httpd is denied access to ~/public_html because the directory is not labeled as Web content. Notice that the time and serial number stamps in the audit(...) field are identical in each case. This makes it easier to track a specific event in the audit logs:
Jan 15 08:03:56 hostname kernel: audit(1105805036.075:2392892): \
	avc:  denied  { getattr } for  pid=2239 exe=/usr/sbin/httpd \
	path=/home/auser/public_html dev=hdb2 ino=921135 \
	scontext=user_u:system_r:httpd_t \
	tcontext=system_u:object_r:user_home_t tclass=dir
The following audit message tells more about the source, including the kind of system call involved, showing that httpd tried to stat the directory:
Jan 15 08:03:56 hostname kernel: audit(1105805036.075:2392892): \
	syscall=195 exit=4294967283 a0=9ef88e0 a1=bfecc0d4 a2=a97ff4 \
	a3=bfecc0d4 items=1 pid=2239 loginuid=-1 uid=48 gid=48 euid=48 \
	suid=48 fsuid=48 egid=48 sgid=48 fsgid=48
The following message provides more information about the target:
Jan 15 08:03:56 hostname kernel: audit(1105805036.075:2392892): \
	item=0 name=/home/auser/public_html inode=921135 dev=00:00
The serial number stamp is always identical for a particular audited event. The time stamp may or may not be identical.

Note

If you are using an audit daemon for troubleshooting, the daemon may capture audit messages into a location other than /var/log/messages, such as /var/log/audit/audit.log.

48.3.2. Dumping and Viewing Logs

The Red Hat Enterprise Linux 5 implementation of SELinux routes AVC audit messages to /var/log/messages. You can use any of the standard search utilities (for example, grep), to search for lines containing avc or audit.


[22] LVM is the grouping of physical storage into virtual pools that are partitioned into logical volumes.

第49章 Customizing SELinux Policy

49.1. Introduction

In earlier releases of Red Hat Enterprise Linux it was necessary to install the selinux-policy-targeted-sources packages and then to create a local.te file in the /etc/selinux/targeted/src/policy/domains/misc directory. You could use the audit2allow utility to translate the AVC messages into allow rules, and then rebuild and reload the policy.
The problem with this was that every time a new policy package was released it would have to execute the Makefile in order to try to keep the local policy.
In Red Hat Enterprise Linux 5, this process has been completely revised. The "sources" rpm packages have been completely removed, and policy packages are treated more like the kernel. To look at the sources used to build the policy, you need to install the source rpm, selinux-policy-XYZ.src.rpm. A further package, selinux-policy-devel, has also been added, which provides further customization functionality.

49.1.1. Modular Policy

Red Hat Enterprise Linux introduces the concept of modular policy. This allows vendors to ship SELinux policy separately from the operating system policy. It also allows administrators to make local changes to policy without worrying about the next policy install. The most important command that was added was semodule.
semodule is the tool used to manage SELinux policy modules, including installing, upgrading, listing and removing modules. You can also use semodule to force a rebuild of policy from the module store and/or to force a reload of policy without performing any other transaction. semodule acts on module packages created by semodule_package. Conventionally, these files have a .pp suffix (policy package), although this is not mandated in any way.

49.1.1.1. Listing Policy Modules

To list the policy modules on a system, use the semodule -l command:
~]# semodule -l
amavis  1.1.0
ccs     1.0.0
clamav  1.1.0
dcc     1.1.0
evolution       1.1.0
iscsid  1.0.0
mozilla 1.1.0
mplayer 1.1.0
nagios  1.1.0
oddjob  1.0.1
pcscd   1.0.0
pyzor   1.1.0
razor   1.1.0
ricci   1.0.0
smartmon        1.1.0

Note

This command does not list the base policy module, which is also installed.
The /usr/share/selinux/targeted/ directory contains a number of policy package (*.pp) files. These files are included in the selinux-policy rpm and are used to build the policy file.

49.2. Building a Local Policy Module

The following section uses an actual example to demonstrate building a local policy module to address an issue with the current policy. This issue involves the ypbind init script, which executes the setsebool command, which in turn tries to use the terminal. This is generating the following denial:
type=AVC msg=audit(1164222416.269:22): avc:  denied  { use } for  pid=1940 comm="setsebool" name="0" dev=devpts ino=2 \
	scontext=system_u:system_r:semanage_t:s0 tcontext=system_u:system_r:init_t:s0 tclass=fd
Even though everything still works correctly (that is, it is not preventing any applications form running as intended), it does interrupt the normal work flow of the user. Creating a local policy module addresses this issue.

49.2.1. Using audit2allow to Build a Local Policy Module

The audit2allow utility now has the ability to build policy modules. Use the following command to build a policy module based on specific contents of the audit.log file:
ausearch -m AVC --comm setsebool | audit2allow -M mysemanage
The audit2allow utility has built a type enforcement file (mysemanage.te). It then executed the checkmodule command to compile a module file (mysemanage.mod). Lastly, it uses the semodule_package command to create a policy package (mysemanage.pp). The semodule_package command combines different policy files (usually just the module and potentially a file context file) into a policy package.

49.2.2. Analyzing the Type Enforcement (TE) File

Use the cat command to inspect the contents of the TE file:
~]# cat mysemanag.te
module mysemanage 1.0;

require {
	class fd use;
	type init_t;
	type semanage_t;
	role system_r;
};

allow semanage_t init_t:fd use;
The TE file is comprised of three sections. The first section is the module command, which identifies the module name and version. The module name must be unique. If you create an semanage module using the name of a pre-existing module, the system would try to replace the existing module package with the newly-created version. The last part of the module line is the version. semodule can update module packages and checks the update version against the currently installed version.
The next block of the TE file is the require block. This informs the policy loader which types, classes and roles are required in the system policy before this module can be installed. If any of these fields are undefined, the semodule command will fail.
Lastly are the allow rules. In this example, you could modify this line to dontaudit, because semodule does not need to access the file descriptor.

49.2.3. Loading the Policy Package

The last step in the process of creating a local policy module is to load the policy package into the kernel.
Use the semodule command to load the policy package:
~]# semodule -i mysemanage.pp
This command recompiles the policy file and regenerates the file context file. The changes are permanent and will survive a reboot. You can also copy the policy package file (mysemanage.pp) to other machines and install it using semodule.
The audit2allow command outputs the commands it executed to create the policy package so that you can edit the TE file. This means you can add new rules as required or change the allow rule to dontaudit. You could then recompile and repackage the policy package to be installed again.
There is no limit to the number of policy packages, so you could create one for each local modification you want to make. Alternatively, you could continue to edit a single package, but you need to ensure that the "require" statements match all of the allow rules.

第50章 参考文献

以下の参考文献は、 SELinux 及び Red Hat Enterprise Linux に関連する詳細方法へのポインタとなりますが、本ガイドの範疇を超えています。 SELinux の急速な進歩により、資料のなかには Red Hat Enterprise Linux の特定のリリースにしか対応しない場合がありますので注意してください。
書籍
SELinux by Example
Mayer、 MacMillan、及び Caplan
Prentice Hall, 2007
チュートリアルとヘルプ
Understanding and Customizing the Apache HTTP SELinux Policy (Apache HTTP SELinux ポリシーとそのカスタマイズ方法について)
Russell Coker のチュートリアルとトーク
SELinux ポリシー HOWTO 全般
Red Hat ナレッジベース
全般情報
NSA SELinux のメインウェブサイト
NSA SELinux FAQ
Fedora SELinux FAQ
SELinux NSA's Open Source Security Enhanced Linux
テクノロジー
An Overview of Object Classes and Permissions
Integrating Flexible Support for Security Policies into the Linux Operating System (Linux での Flask 実装の履歴)
Implementing SELinux as a Linux Security Module
A Security Policy Configuration for the Security-Enhanced Linux
コミュニティ
SELinux コミュニティページ
IRC
irc.freenode.net, #rhel-selinux

パート VIII. Red Hat トレーニングと認定資格

Red Hat コース及び認定資格は Linux において、恐らくは IT 業界全体において世界的に認知されています。 Red Hat エキスパートによれば、当社の各種認定プログラムは実際に実稼働環境にあるシステムで適応することができるため、雇用側や IT プロフェッショナルなどによる人気が高く大きな需要があると言われています。
自分にあった認定資格を選択するには、ご自分のバックグラウンドそして目標が重要となってきます。 UNIX または Linux に関して高度な経験を有しているのか、最小限の知識があるのか、あるいはこれから始める初心者であるのかにより、その方に応じた適切な認定へのパスを Red Hat トレーニングは用意しています。

目次

51. Red Hat Training and Certification
51.1. Three Ways to Train
51.2. Microsoft Certified Professional Resource Center
52. Certification Tracks
52.1. Free Pre-assessment tests
53. RH033: Red Hat Linux 基礎コース
53.1. コースの概要
53.1.1. 前提条件
53.1.2. 目標
53.1.3. 対象者
53.1.4. コースの概要
53.1.5. 継続コース
54. RH035: Red Hat Linux Essentials for Windows Professionals
54.1. Course Description
54.1.1. Prerequisites
54.1.2. Goal
54.1.3. Audience
54.1.4. Course Objectives
54.1.5. Follow-on Courses
55. RH133: Red Hat Linux System Administration and Red Hat Certified Technician (RHCT) Certification
55.1. Course Description
55.1.1. Prerequisites
55.1.2. Goal
55.1.3. Audience
55.1.4. Course Objectives
55.1.5. Follow-on Courses
56. RH202 RHCT 認定試験 - 全ての Linux の中でも最も速く成長している認定です。
56.1. コースの説明
56.1.1. 前提条件
57. RH253 Red Hat Linux Networking and Security Administration
57.1. Course Description
57.1.1. Prerequisites
57.1.2. Goal
57.1.3. Audience
57.1.4. Course Objectives
57.1.5. Follow-on Courses
58. RH300: RHCE Rapid track course (and RHCE exam)
58.1. Course Description
58.1.1. Prerequisites
58.1.2. Goal
58.1.3. Audience
58.1.4. Course Objectives
58.1.5. Follow-on Courses
59. RH302 RHCE EXAM
59.1. Course Description
59.1.1. Prerequisites
59.1.2. Content
60. RHS333: RED HAT enterprise security: network services
60.1. Course Description
60.1.1. Prerequisites
60.1.2. Goal
60.1.3. Audience
60.1.4. Course Objectives
60.1.5. Follow-on Courses
61. RH401: Red Hat Enterprise Deployment and systems management
61.1. Course Description
61.1.1. Prerequisites
61.1.2. Goal
61.1.3. Audience
61.1.4. Course Objectives
61.1.5. Follow-on Courses
62. RH423: Red Hat Enterprise Directory services and authentication
62.1. Course Description
62.1.1. Prerequisites
62.1.2. Goal
62.1.3. Audience
62.1.4. Course Objectives
62.1.5. Follow-on Courses
63. SELinux Courses
63.1. RHS427: SELinux と Red Hat ターゲットポリシー入門
63.1.1. 対象者
63.1.2. コースの概要
63.2. RHS429: Red Hat Enterprise SELinux Policy Administration
64. RH436: Red Hat Enterprise storage management
64.1. Course Description
64.1.1. Prerequisites
64.1.2. Goal
64.1.3. Audience
64.1.4. Course Objectives
64.1.5. Follow-on Courses
65. RH442: Red Hat Enterprise system monitoring and performance tuning
65.1. Course Description
65.1.1. Prerequisites
65.1.2. Goal
65.1.3. Audience
65.1.4. Course Objectives
65.1.5. Follow-on Courses
66. Red Hat Enterprise Linux Developer Courses
66.1. RHD143: Red Hat Linux Programming Essentials
66.2. RHD221 Red Hat Linux Device Drivers
66.3. RHD236 Red Hat Linux Kernel Internals
66.4. RHD256 Red Hat Linux Application Development and Porting
67. JBoss Courses
67.1. RHD161 JBoss and EJB3 for Java
67.1.1. Prerequisites
67.2. RHD163 JBoss for Web Developers
67.2.1. Prerequisites
67.3. RHD167: JBOSS - HIBERNATE ESSENTIALS
67.3.1. Prerequisites
67.3.2. Course Summary
67.4. RHD267: JBOSS - ADVANCED HIBERNATE
67.4.1. Prerequisites
67.5. RHD261:JBOSS for advanced J2EE developers
67.5.1. Prerequisites
67.6. RH336: JBOSS for Administrators
67.6.1. Prerequisites
67.6.2. Course Summary
67.7. RHD439: JBoss Clustering
67.7.1. Prerequisites
67.8. RHD449: JBoss jBPM
67.8.1. Description
67.8.2. Prerequisites
67.9. RHD451 JBoss Rules
67.9.1. Prerequisites

第51章 Red Hat Training and Certification

51.1. Three Ways to Train

Open Enrollment
Open enrollment courses are offered continually in 50+ locations across North America and 125+ locations worldwide. Red Hat courses are performance—based—students have access to at least one dedicated system, and in some courses, as many as five. Instructors are all experienced Red Hat Certified Engineers (RHCEs) who are intimately familiar with course curriculum.
Course schedules are available at http://www.redhat.com/explore/training
Onsite Training
Onsite training is delivered by Red Hat at your facility for teams of 12 to 16 people per class. Red Hat's technical staff will assist your technical staff prior to arrival to ensure the training venue is prepared to run Red Hat Enterprise Linux, Red Hat or JBoss courses, and/or Red Hat certification exams. Onsites are a great way to train large groups at once. Open enrollment can be leveraged later for incremental training.
For more information, visit http://www.redhat.com/explore/onsite
eLearning
Fully updated for Red Hat Enterprise Linux 4! No time for class? Red Hat's e—Learning titles are delivered online and cover RHCT and RHCE track skills. Our growing catalog also includes courses on the latest programming languages, scripting and ecommerce.
For course listings visit http://www.redhat.com/explore/elearning

51.2. Microsoft Certified Professional Resource Center

Tailored info and offers for Microsoft® Certified Professionals looking to add a Red Hat certification to their personal portfolio.

第52章 Certification Tracks

Red Hat Certified Technician® (RHCT®)
Now entering its third year, Red Hat Certified Technician is the fastest-growing credential in all of Linux, with currently over 15,000 certification holders. RHCT is the best first step in establishing Linux credentials and is an ideal initial certification for those transitioning from non-UNIX®/ Linux environments.
Red Hat certifications are indisputably regarded as the best in Linux, and perhaps, according to some, in all of IT. Taught entirely by experienced Red Hat experts, our certification programs measure competency on actual live systems and are in great demand by employers and IT professionals alike.
Choosing the right certification depends on your background and goals. Whether you have advanced, minimal, or no UNIX or Linux experience whatsoever, Red Hat Training has a training and certification path that is right for you.
Red Hat Certified Engineer® (RHCE®)
Red Hat Certified Engineer began in 1999 and has been earned by more than 20,000 Linux experts. Called the "crown jewel of Linux certifications," independent surveys have ranked the RHCE program #1 in all of IT.
Red Hat Certified Security Specialist (RHCSS)
An RHCSS has RHCE security knowledge plus specialized skills in Red Hat Enterprise Linux, Red Hat Directory Server and SELinux to meet the security requirements of today's enterprise environments. RHCSS is Red Hat's newest certification, and the only one of its kind in Linux.
Red Hat Certified Architect (RHCA)
RHCEs who seek advanced training can enroll in Enterprise Architect courses and prove their competency with the newly announced Red Hat Certified Architect (RHCA) certification. RHCA is the capstone certification to Red Hat Certified Technician (RHCT) and Red Hat Certified Engineer (RHCE), the most acclaimed certifications in the Linux space.

52.1. Free Pre-assessment tests

Test your Linux smarts and identify your Red Hat course level with our automated pre-assessment tests.
Completely free, no obligations, 10 minutes of your time. http://www.redhat.com/explore/assess

第53章 RH033: Red Hat Linux 基礎コース

53.1. コースの概要

RHCT と RHCE 両方の認定試験への為の最初のコースである RH033 は Linux や UNIX の 経験がない方、及び他のオペレーティングシステム内でコマンドライン使用の経験がない方に 理想的なコースです。Red Hat Enterprise Linux 環境の基礎を取扱い、将来のシステム管理者への 準備となります。

53.1.1. 前提条件

ユーザーレベルでのコンピュータシステムでの経験、メニューの使用、グラフィカル ユーザーインターフェイスの使用。

53.1.2. 目標

Red Hat システムの使用とカスタム化により、コマンドラインプロセスとデスクトップ 生産性の向上に寄与できて、システム管理 (RH133) の学習に準備が出来ている パワーユーザーになること。

53.1.3. 対象者

Linux と UNIX の経験がなくコマンドラインに不慣れな為に、自分自身の Red Hat Linux システムを 使用し制御できるように基本的スキルを開発して実行をしたい方。

53.1.4. コースの概要

  1. Linux ファイルシステムを理解する
  2. 一般的ファイル保全を実行する
  3. GNOME インターフェイスを使用しカスタマイズする
  4. コマンドラインから基本的な Linux コマンドを発行する
  5. GNOME GUI を使用して一般的なタスクを実行する
  6. vi エディタの使用で、テキストドキュメントを開き、編集し、保存する
  7. ファイルアクセス権限を知る
  8. X Window システムをカスタマイズする
  9. 正規表現パターンの照合と I/O 転送操作をする
  10. 使用システム上でパッケージのインストール、アップグレード削除、クエリを実行する
  11. ユーザーのネットワークユーティリティを使用する
  12. パワーユーザーのユーティリティを使用する

53.1.5. 継続コース

RH133 Red Hat Linux システム管理コース
RH253 Red Hat Linux ネットワークとセキュリティ管理コース
RH300 Red Hat Linux RHCE 速習コース
"I would enthusiastically recommend this course to anyone interested in Linux."——Mike Kimmel, ITT Systems Division

第54章 RH035: Red Hat Linux Essentials for Windows Professionals

54.1. Course Description

Designed for Windows® professionals with no prior UNIX or Linux experience, this course teaches fundamental Red Hat Enterprise Linux system administration skills. The first day provides a conceptual and practical transition for individuals to successfully add Linux management competencies to their portfolio. The remaining four days combines with the highly-acclaimed RH033 course, immersing individuals in the basics of a Red Hat Enterprise Linux environment and preparing them for future roles as cross-platform system administrators. The course also serves as the first course in the RHCT and RHCE tracks.

54.1.1. Prerequisites

Have experience with job tasks using Windows OS products at technician or system administrator level; experience as an IT professional; no prior UNIX or Linux experience required.

54.1.2. Goal

A Red Hat Enterprise Linux power user familiar with common command line processes who can perform some system administration tasks using graphical tools. The individual will also be ready to develop a deeper understanding of Red Hat Enterprise Linux system administration (RH133).

54.1.3. Audience

The typical student will be a Windows technician who prefers to manage servers using a graphic user interface. The individual will also possess a desire to effectively manage Red Hat Enterprise Linux systems and broaden their individual skill set.

54.1.4. Course Objectives

  1. Learn to install software, configure the network, configure authentication, and install and configure various services using graphical tools
  2. Understand the Linux file system
  3. Issue essential Linux commands from the command line
  4. Understand file access permissions
  5. Customize X Window System
  6. Use regular expression pattern matching and I/O redirection

54.1.5. Follow-on Courses

RH133 Red Hat Linux Sys. Admin. (p. 8)
RH253 Red Hat Linux Net. and Sec. Admin. (p. 9)
RH300 Red Hat Linux RHCE Rapid Track (p. 10)
"All in all I would rate this training experience as one of the best I have ever attended, and I've been in this industry for over 15 years." — Bill Legge, IT Consultant

第55章 RH133: Red Hat Linux System Administration and Red Hat Certified Technician (RHCT) Certification

55.1. Course Description

RH133 focuses on skills in systems administration on Red Hat Linux, to a level where you can attach and configure a workstation on an existing network. This 4.5-day course provides intensive hands-on training on Red Hat Enterprise Linux, and includes the RH202 RHCT Certification Lab Exam on the last day.

55.1.1. Prerequisites

RH033 Red Hat Linux Essentials or equivalent experience with Red Hat Linux.

55.1.2. Goal

Upon successful completion of this course, students will possess basic Linux system administrator knowledge which can be proved by passing the RHCT Exam. The exam is a performance-based lab exam that tests actual ability to install, configure, and attach a new Red Hat Linux system to an existing production network.

55.1.3. Audience

Linux or UNIX users who understand the basics of Red Hat Linux and desire further technical training to begin the process of becoming a system administrator.

55.1.4. Course Objectives

  1. Install Red Hat Linux interactively and with Kickstart
  2. Control common system hardware; administer Linux printing subsystem
  3. Create and maintain the Linux filesystem
  4. Perform user and group administration
  5. Integrate a workstation with an existing network
  6. Configure a workstation as a client to NIS, DNS, and DHCP services
  7. Automate tasks with at, cron, and anacron
  8. Back up filesystems to tape and tar archive
  9. Manipulate software packages with RPM
  10. Configure the X Window System and the GNOME d.e.
  11. Perform performance, memory, and process mgmt.
  12. Configure basic host security

55.1.5. Follow-on Courses

RH253 Red Hat Linux Net. and Sec. Admin. (p. 9)

第56章 RH202 RHCT 認定試験 - 全ての Linux の中でも最も速く成長している認定です。

  1. RHCT 認定試験は RH133 に含まれています。試験は単独で購入することも可能で、47,250円です。
  2. RHCT 認定試験は RH133 クラスの五日目に実施されます。

56.1. コースの説明

RHCT (Red Hat Certified Technician) は、Red Hat Enterprise Linux のインストール、設定、及びトラブルシューティングなどの受講者の技能を実際に実践中心でパフォーマンスを基準にしたテストします。この認定実践試験は RH133 に含まれていますが、RH033 と RH133 の内容を修了した受講者は試験のみを受けることもできます。

56.1.1. 前提条件

受講者は認定試験の準備として RH033 と RH133 の受講を考慮すべきですが、試験を受ける義務はありません。

第57章 RH253 Red Hat Linux Networking and Security Administration

57.1. Course Description

RH253 arms students with in-depth knowledge needed to configure common Red Hat Enterprise Linux network services. Network and local security tasks are also topics of this course.

57.1.1. Prerequisites

RH133 Red Hat Linux System Administration or equivalent experience with Red Hat Enterprise Linux, LAN/WAN fundamentals or equivalent, internetworking with TCP/IP or equivalent.

57.1.2. Goal

Upon completion of this course, individuals can set up a Red Hat Enterprise Linux server and configure common network services and security at a basic level.

57.1.3. Audience

Linux or UNIX system administrators who already have some real-world experience with Red Hat Enterprise Linux systems administration, want a first course in networking services and security, and want to build skills at configuring common network services and security administration using Red Hat Enterprise Linux.

57.1.4. Course Objectives

  1. Networking services on Red Hat Linux server-side setup, configuration, and basic administration of common networking services: DNS, NIS, Apache, SMB, DHCP, Sendmail, FTP. Other common services: tftp, pppd, proxy.
  2. Introduction to security
  3. Developing a security policy
  4. Local security
  5. Files and filesystem security
  6. Password security
  7. Kernel security
  8. Basic elements of a firewall
  9. Red Hat Linux-based security tools
  10. Responding to a break-in attempt
  11. Security sources and methods
  12. Overview of OSS security tools

57.1.5. Follow-on Courses

RH302 RHCE Certification Exam
"This course was excellent. The teacher was fantastic—his depth of knowledge is amazing."——Greg Peters, Future Networks USA

第58章 RH300: RHCE Rapid track course (and RHCE exam)

The fastest path to RHCE certification for experienced UNIX/Linux users.

58.1. Course Description

Five days in duration, this course provides intensive hands-on training on Red Hat Linux, and includes the RHCE Certification Exam on the last day.

58.1.1. Prerequisites

RH033, RH133, RH253 or equivalent experience with UNIX. Please do not register for RH300 unless you are experienced with systems administration or are a power user in UNIX or Linux environments.

58.1.2. Goal

Upon successful completion of this course, individuals will be a Red Hat Linux system administrator who has been trained and then tested using the RHCE Exam.

58.1.3. Audience

UNIX or Linux system administrators who have significant real-world experience and who want a fast-track course to prepare for the RHCE Exam.

58.1.4. Course Objectives

  1. Hardware and Installation (x86 architecture)
  2. Configuration and administration
  3. Alternate installation methods
  4. Kernel services and configuration
  5. Standard networking services
  6. X Window system
  7. User and host security
  8. Routers, Firewalls, Clusters and Troubleshooting

58.1.5. Follow-on Courses

Enterprise Architect curriculum and RHCA certification

第59章 RH302 RHCE EXAM

  1. RHCE exams are included with RH300. It can also be purchased on its own.
  2. RHCE exams occur on the fifth day of all RH300 classes

59.1. Course Description

RHCE stands apart from many other certification programs in the IT sector because of its emphasis on hands-on, performance-based testing of actual skills in Red Hat Linux installation, configuration, debugging, and setup of key networking services.

59.1.1. Prerequisites

See RH300 course prerequisites. For further information, please refer to the RHCE Exam Prep Guide: www.redhat.com/training/rhce/examprep.html

59.1.2. Content

  1. Section I: Troubleshooting and System Maintenance (2.5 hrs)
  2. Section II: Installation and Configuration (3 hrs.)
"Seriously, this was an outstanding class. I feel very well prepared for the test tomorrow." — Logan Ingalls, Web developer, Texterity Inc., USA

第60章 RHS333: RED HAT enterprise security: network services

Security for the most commonly deployed services.

60.1. Course Description

Red Hat Enterprise Linux has gained considerable momentum as the operating system of choice for deploying network services such as web, ftp, email, and file sharing. Red Hat's RHCE curriculum provides training in deploying these services and on the essential elements of securing them.

60.1.1. Prerequisites

RH253, RH300, or RHCE certification or equivalent work experience is required for this course. Course participants should already know the essential elements of how to configure the services covered, as this course will be focusing on more advanced topics from the outset.

60.1.2. Goal

This class advances beyond the essential security coverage offered in the RHCE curriculum and delves deeper into the security features, capabilities, and risks associated with the most commonly deployed services.

60.1.3. Audience

The audience for this course includes system administrators, consultants, and other IT professionals responsible for the planning, implementation, and maintenance of network servers. While the emphasis is on running these services on Red Hat Enterprise Linux, and the content and labs will assume its use, system administrators and others using proprietary forms of UNIX may also find many elements of this course relevant.

60.1.4. Course Objectives

  1. Mastering basic service security
  2. Understanding cryptography
  3. Logging system activity
  4. Securing BIND and DNS
  5. Network user authentication security
  6. Improving NFS security
  7. The secure shell: OpenSSH
  8. Securing email with Sendmail and Postfix
  9. Managing FTP access
  10. Apache security
  11. Basics of intrusion response

60.1.5. Follow-on Courses

RH401 Red Hat Enterprise Deployment and System Mgmt. RH423 Red Hat Enterprise Directory Services and Authentication RH436 Red Hat Enterprise Storage Mgmt. RH442 Red Hat Enterprise System Monitoring and Performance Tuning

第61章 RH401: Red Hat Enterprise Deployment and systems management

Manage Red Hat Enterprise Linux deployments.

61.1. Course Description

RH401 is a four-day intensive hands-on lab course in skills and methods critical to large-scale deployment and management of mission-critical Red Hat Enterprise Linux systems, including failover and load-balancing, CVS for system administrators, RPM rebuilding, and performance tuning for specific applications.

61.1.1. Prerequisites

RH253 at a minimum, RHCE certification preferred, or comparable skills and knowledge. All prospective course participants without RHCE certification are encouraged to verify skills with Red Hat's free online pre—assessment tests. Note: Persons should not enroll in RH401 without meeting the above prerequisites.
All prospective course participants who do not possess RHCE certification are strongly advised to contact Red Hat Global Learning Services for a skills assessment when they enroll.

61.1.2. Goal

RH401 trains senior system administrators to manage large numbers of Enterprise Linux servers in a variety of roles, and/or manage them for mission—critical applications that require failover and load-balancing. Further, RH401 is benchmarked on expert—level competencies in managing operating systems for enterprise roles—the course teaches how to implement and manage enterprise Red Hat Enterprise Linux deployments efficiently and effectively in ways that make the entire enterprise deployment manageable by a team.

61.1.3. Audience

Senior Red Hat Enterprise Linux system administrators and other IT professionals working in enterprise environments and mission-critical systems.

61.1.4. Course Objectives

  1. Configuration management using CVS
  2. Construction of custom RPM packages
  3. Software management with Red Hat Network Proxy Server
  4. Assembling a host provisioning and management system
  5. Performance tuning and analysis
  6. High-availability network load-balancing clusters
  7. High-availability application failover clusters

61.1.5. Follow-on Courses

RHS333 Enterprise Security: Securing Network Services
RH423 Red Hat Enterprise Directory Services and Authentication
RH436 Red Hat Enterprise Storage Mgmt.
RH442 Red Hat Enterprise System Monitoring and Performance Tuning
"After taking RH401 I am completely confident that I can implement enterprise—scale high—availability solutions end-to-end."——Barry Brimer, Bunge North America

第62章 RH423: Red Hat Enterprise Directory services and authentication

Manage and deploy directory services for Red Hat Enterprise Linux systems.

62.1. Course Description

RH423 is an intensive course that provides four days of instruction and labs on cross-platform integration of directory services to provide authentication or information service across the enterprise.

62.1.1. Prerequisites

RH253 at a minimum, RHCE certification preferred, or comparable skills and knowledge. All prospective course participants without RHCE certification are encouraged to verify skills with Red Hat's free online pre—assessment tests. Note: Persons should not enroll in RH423 without meeting the above prerequisites. All prospective course participants who do not possess RHCE certification are strongly advised to contact Red Hat Global Learning Services for a skills assessment when they enroll.

62.1.2. Goal

RH423 trains senior system administrators to manage and deploy directory services on and for Red Hat Enterprise Linux systems. Gaining an understanding of the basic concepts, configuration, and management of LDAP—based services is central to this course. Students will integrate standard network clients and services with the directory service in order to take advantage of its capabilities. We will also look at PAM, the Pluggable Authentication Modules system, and how it is integrated with services that require authentication and authorization.

62.1.3. Audience

Senior Red Hat Enterprise Linux system administrators and other IT professionals working in enterprise environments and mission-critical systems.

62.1.4. Course Objectives

  1. Basic LDAP concepts
  2. How to configure and manage an OpenLDAP server
  3. Using LDAP as a "white pages" directory service
  4. Using LDAP for user authentication and management
  5. Integrating multiple LDAP servers

62.1.5. Follow-on Courses

RHS333 Enterprise Security: Securing Network Services
RH401 Red Hat Enterprise Deployment and Systems Management
RH436 Red Hat Enterprise Storage Mgmt. (p. 16)
RH442 Red Hat Enterprise System Monitoring and Performance Tuning

第63章 SELinux Courses

63.1. RHS427: SELinux と Red Hat ターゲットポリシー入門

SELinux への一日速習入門であり、Red Hat ターゲットポリシーと この強力な機能での操作に利用できるツール内での動作を習得します。 RHS427 は RH429.の第一日につながります。

63.1.1. 対象者

コンピュータセキュリティ専門家と Linux コンピュータ上でのセキュリティポリシーの 実装責任者。RHS429 は RHCE かそれに同等の資格を前提とします。

63.1.2. コースの概要

Red Hat Enterprise Linux の最も重要な 機能の一部として、 SELinux (Security Enhanced Linux) が あります。ユーザーとプロセスがシステム上でアクセスして実行するタスクへの 肌理細かい制御をする強力なカーネルレベルセキュリティレイヤーを提供します。 デフォルトで SELinux は Red Hat Enterprise Linux システムで有効になっており、 Red Hat がターゲットポリシーをコールする制御に対し 委任アクセスのセットを強要します。これらのアクセス制御はターゲットとする ネットワークサービスのセキュリティを実質的に強化しますが、時には他の Red Hat Enterprise Linux バージョンで機能していたサードパーティアプリケーションと スクリプトの 動作にも影響します。

63.2. RHS429: Red Hat Enterprise SELinux Policy Administration

Red Hat Enterprise Linux の最も重要な機能の一部として、SELinux (Security Enhanced Linux) が あります。 ユーザーとプロセスがシステム上でアクセスして実行するタスクへの 肌理細かい制御をする強力なカーネルレベルセキュリティレイヤーを提供します。 RHS429 は高度なシステム管理者、セキュリティ 管理者、及びアプリケーションプログラマーを SELinux ポリシー作成へと案内するものです。 本コースの受講者は SELinux の動作、SELinux の管理法、及び SELinux ポリシーの書き方を 習得します。

第64章 RH436: Red Hat Enterprise storage management

Deploy and manage Red Hat's cluster file system technology.
Equipment-intensive:
  1. five servers
  2. storage array

64.1. Course Description

RH436 provides intensive hands-on experience with the emerging Shared Storage technology delivered by Red Hat Global File System (GFS). This four-day course focuses on the implementation of native Red Hat Enterprise Linux technologies included in Red Hat Cluster Suite and GFS.

64.1.1. Prerequisites

RH253 at a minimum, RHCE certification preferred, or comparable skills and knowledge. All prospective course participants without RHCE certification are encouraged to verify skills with Red Hat's free online pre—assessment tests.

64.1.2. Goal

This course is designed to train people with RHCE-level competency on skills required to deploy and manage highly available storage data to the mission-critical enterprise computing environment. Complementing skills gained in RH401, this course delivers extensive hands-on training with the cluster file system, GFS.

64.1.3. Audience

Senior Red Hat Enterprise Linux system administrators and other IT professionals working in enterprise environments and mission-critical systems.

64.1.4. Course Objectives

  1. Review Red Hat Enterprise Linux storage management technologies
  2. Data storage design: Data sharing
  3. Cluster Suite overview
  4. Global File System (GFS) overview
  5. GFS management
  6. Modify the online GFS environment: Managing data capacity
  7. Monitor GFS
  8. Implement GFS modifications
  9. Migrating Cluster Suite NFS from DAS to GFS
  10. Re-visit Cluster Suite using GFS

64.1.5. Follow-on Courses

RHS333 Enterprise Security: Securing Network Services
RH401 Red Hat Enterprise Deployment and Systems Management
RH423 Red Hat Enterprise Directory Services and Authentication
RH442 Red Hat Enterprise System Monitoring and Performance Tuning
"The class gave me a chance to use some of the latest Linux tools, and was a reminder of the benefits of using Linux for high-availability systems."——Paul W. Frields, FBI — Operational Technology Division Quantico, VA, USA

第65章 RH442: Red Hat Enterprise system monitoring and performance tuning

Performance tuning and capacity planning for Red Hat Enterprise Linux

65.1. Course Description

RH442 is an advanced four-day hands-on lab course covering system architecture, performance characteristics, monitoring, benchmarking, and network performance tuning.

65.1.1. Prerequisites

RHCT at a minimum, RHCE certification recommended, or comparable skills and knowledge. All prospective course participants without RHCE certification are encouraged to verify skills with Red Hat's free online pre—assessment tests.

65.1.2. Goal

RH442 is designed to teach the methodology of performance tuning and capacity planning for Red Hat Enterprise Linux. This class will cover:
  1. A discussion of system architecture with an emphasis on understanding the implications of system architecture on system performance
  2. Methods for testing the effects of performance adjustments (benchmarking)
  3. Open source benchmarking utilities
  4. Methods for analyzing system performance and networking performance
  5. Tuning configurations for specific application loads

65.1.3. Audience

RH442 is aimed at senior Red Hat Enterprise Linux system administrators and other IT professionals working in enterprise environments and mission-critical systems.

65.1.4. Course Objectives

  1. Overview of system components and architecture as they relate to system performance
  2. Translating manufacturers' hardware specifications into useful information
  3. Using standard monitoring tools effectively to gather and analyze trend information
  4. Gathering performance-related data with SNMP
  5. Using open source benchmarking utilities
  6. Network performance tuning
  7. Application performance tuning considerations
  8. Tuning for specific configurations

65.1.5. Follow-on Courses

RHS333 Enterprise Security: Securing Network Services
RH401 Red Hat Enterprise Deployment and Systems Management
RH423 Red Hat Enterprise Directory Services and Authentication
RH436 Red Hat Enterprise Storage Mgmt.

第66章 Red Hat Enterprise Linux Developer Courses

66.1. RHD143: Red Hat Linux Programming Essentials

An intensive hands-on course designed to rapidly train staff in key skills for developing applications and programs on Red Hat Enterprise Linux. This five-day course provides hands-on training, concepts, demonstrations, with emphasis on realistic labs and programming exercises. Upon completion of the course, students will have learned and practiced the essential skills required to develop programs for Linux systems.

66.2. RHD221 Red Hat Linux Device Drivers

This course is designed to teach experienced programmers how to develop device drivers for Linux systems. Upon completion of the course, students will understand the Linux architecture, hardware and memory management, modularization, and the layout of the kernel source, and will have practiced key concepts and skills for development of character, block, and network drivers.

66.3. RHD236 Red Hat Linux Kernel Internals

This course is designed to provide a detailed examination of the Linux kernel architecture, including process scheduling, memory management, file systems, and driving peripheral devices. This five-day course provides hands-on training, concepts, and demonstrations, with emphasis on realistic labs and programming exercises.

66.4. RHD256 Red Hat Linux Application Development and Porting

A four-day developer course for experienced programmers who are already familiar with development on a UNIX-like system and want to develop new applications as well as port existing applications to Red Hat Enterprise Linux.

第67章 JBoss Courses

67.1. RHD161 JBoss and EJB3 for Java

Developers JBoss and EJB3 for Java Developers is targeted toward proficient Java developers who wish to extend their knowledge to EJB3 and J2EE middleware programming using the JBoss Application Server. This class is an in-depth introduction to EJB3 and J2EE using the JBoss Application Server. It provides a hands-on approach to EJB3 and J2EE application development, deployment and the tools necessary to facilitate both processes.

67.1.1. Prerequisites

Basic Java programming skills and knowledge of OOAD concepts are required. The student must have practical knowledge of, and/or experience with, the following:
  1. The object-oriented concepts of inheritance, polymorphism and encapsulation
  2. Java syntax, specifically for data types, variables, operators, statements and control flow
  3. Writing Java classes as well as using Java interfaces and abstract classes

67.2. RHD163 JBoss for Web Developers

JBoss for Web Developers focuses on web tier technologies in the JBoss Enterprise Middleware System (JEMS) product stack. We cover details on JBoss Portal, how to create and deploy portlets, integrating portlets with other web tier frameworks such as JavaServer Faces JSF) and configuring and tuning the Tomcat web container embedded in JBoss Application Server. Familiarity with JSP and Servlet development and related specification is heavily recommended. No previous experience with Portlets or JSF is required.

67.2.1. Prerequisites

The prerequisite skills for this class are basic J2EE Web Container (Servlet/JSP) programming skills and some experience with J2EE Web-based and multi-tier application deployments on the JBoss Application Server in conjunction with the Tomcat container (whether embedded with Apache or integrated with the JBoss Application server). The student should have development experience with the following technologies:
  1. JNDI
  2. The Servlet 2.3/2.4 API
  3. The JSP 2.0 API
  4. J2EE application development and deployment on the JBoss Application Server
  5. Deployment of a Web Application on embedded (stand alone) Tomcat or on integrated Tomcat (JBossWeb)
  6. A working knowledge of JDBC and EJB2.1 or EJB3.0
while not a prerequisite, is helpful.

67.3. RHD167: JBOSS - HIBERNATE ESSENTIALS

67.3.1. Prerequisites

  1. An understanding of the relational persistence model
  2. Competency with the Java language
  3. Knowledge of OOAD concepts
  4. Familiarity with the UML
  5. Experience with a dialect of SQL
  6. Using the JDK and creating the necessary environment for compilation and execution of a Java executable from the command line
  7. An understanding of JDB
No prior knowledge of J2EE or Hibernate is required. This training is based on Hibernate 3.2 series.

67.3.2. Course Summary

Hibernate Essentials is targeted toward Java developers who must become competent with the Hibernate or the Java Persistence API object/relational persistence and query service implementation. The primary audience is intended to be Java developers who work with SQL-based database systems or database developers who are looking for an introduction to object-oriented software development. Database administrators who are interested in how ORM may affect performance and how to tune the performance of the SQL database management system and persistence layer will also find this course of value. This course covers the JBoss, Inc. implementation of the JSR-220 sub-specification for Java Persistence and it covers the foundational APIs of version 3.x of the JBoss, Inc. Hibernate product, or simply, Hibernate 3.

67.4. RHD267: JBOSS - ADVANCED HIBERNATE

JBoss Advanced Hibernate training is targeted toward Java developers who wish to extract the full power of the Hibernate O/R Mapping framework. The primary target audience consists of Java developers who work with SQL-based database systems, database developers who are looking for an introduction to object-oriented software development and database administrators interested in how ORM affects performance and how to tune the performance of the SQL database management system and persistence layer. The training covers the new Hibernate 3 features.

67.4.1. Prerequisites

The prerequisite skills for this class are the following:
  1. Basic Hibernate knowledge.
  2. Competency with the Java language
  3. Knowledge of OOAD concepts
  4. Familiarity with the UML
  5. Experience with a dialect of SQL
  6. Using the JDK and creating the necessary environment for compilation and execution of a Java executable from the command line.
  7. Experience with, or comprehensive knowledge of JNDI and JDBC.
  8. Entity EJB2.1 or EJB3.0 knowledge, while not a prerequisite, is helpful.
  9. Prior reading of the book Hibernate in Action, by Christian Bauer and Gavin King (published by Manning) is recommended.
"The best part of the Advanced Hibernate course was networking with fellow engineers that had problems similar to my own, and working with a knowledgeable instructor to solve them."--Mike Pasternak, Consulting Engineer, United Switch & Signal

67.5. RHD261:JBOSS for advanced J2EE developers

JBoss for Advanced J2EE Developers is targeted toward J2EE professionals who wish to take advantage of the JBoss Application Server internal architecture to enhance the functionality and performance of J2EE applications on the JBoss Application Server. This course covers topics such as JMX and those beyond the J2EE specification such as Microkernel architecture, Security, Clustering, and Fine Tuning.

67.5.1. Prerequisites

It is highly recommended that students either complete the JBoss for Java Developers course OR take the Middleware Placement Exam prior to registering for the JBoss for Advanced J2EE Developers course. The developer should have practical experience with each of the following topics:
  1. JNDI
  2. JDBC
  3. Servlets and JSPs
  4. Enterprise Java Beans
  5. JMS
  6. The J2EE Security Model
  7. J2EE application development and deployment on the JBoss Application
  8. Experience with ANT and XDoclet or similar technologies.
While prior knowledge of JMX is helpful, it is not required. This training is based on the 4.x series of the JBoss Application Server.
"I thought the training materials were well-organized, including both the handbook and the labs. The instructor frequently asked for feedback on material and pace. It was apparent that he cared about our understanding of the material."--Jeremy Prellwitz, SiRAS.com, USA

67.6. RH336: JBOSS for Administrators

67.6.1. Prerequisites

Basic working knowledge of the Windows or Linux (Unix-based) operating system. The student must have experience with the following:
  1. Creating directories, files and modifying access rights to the file store
  2. Installing a JDK
  3. Configuring environment variables, such as JAVA_HOME, for an Operating system
  4. Launching Java applications and executing an OS-dependent script that launches a Java application.
  5. Creating and expanding a Java archive file (the jar utility)
No prior knowledge of J2EE or the JBoss Application Server is required. Some familiarity with supporting Java applications with XML configurations, however, is strongly recommended.

67.6.2. Course Summary

JBoss for Administrators is targeted toward application support individuals, such as system administrators, configuration management and quality assurance personnel who wish to become proficient in configuring and administrating the JBoss application server (3.2.x and 4.x series) and the applications deployed on the application server.
"The JBoss for Administrators course was a great balance of both lecture and labs. It is always nice to have hands on knowledge of the topics to make them seem more real and applicable."——Thomas Skowronek, Palm Harbor Homes, USA

67.7. RHD439: JBoss Clustering

Clustering is a 4-day training focusing on high availability services of JBoss Enterprise Middleware System (JEMS). You will learn how JBoss Application Server leverages JGroups and JBoss Cache for replication and fail-over, how to configure, tune and implement JGroups protocol stacks, how to leverage JBoss Cache in your own middleware application implementation and how to use and configure mod_jk for HTTP load balancing. We will also cover in some detail JBoss Application Server high availability services such as HA-JNDI, HA-JMS and HA-singleton.

67.7.1. Prerequisites

Completion of the JBoss for Advanced J2EE Developers course is strongly recommended before taking this course. It is also strongly recommended that the student has at minimum 18 month practical development experience using J2EE and other Java middleware technologies, and it is suggested that the student have some practical experience with JBoss Application Server. Solid Java programming experience (minimum 3 years) is required and understanding of basic TCP/IP topics is necessary.
The student must have the following skills:
  1. JTA, Transactions, Java concurrency
  2. EJB 2.1, JMS, reliable messaging technologies
  3. Previous experience with Apache httpd and some exposure to mod_jk and/or mod_proxy
  4. Familiar with JBoss AS microkernel and JMX
  5. Familiarity with TCP/IP, UDP, Multicasting
"The JBoss for Administrators course was very informative. Our instructor did a great job at answering our questions (some very specific to the student) while maintaining the course direction. I am very excited about applying what I have learned in the course."——Andy Beier, Arizona Statue University, USA

67.8. RHD449: JBoss jBPM

67.8.1. Description

JBoss jBPM training is targeted for system architects and developers who work closely with business analysts and are responsible for bringing business processes into J2EE environment using jBPM as a BPM engine. In addition, The JBoss jBPM training will provide students with a thorough understanding of the BPM landscape, types of engines and positioning of the buzzwords.
Students will acquire practical hands on expertise and will be ready to start developing business processes with JBoss jBPM after the course. Another goal of the training is to provide a thorough preparation for comparing workflow engines.

67.8.2. Prerequisites

  1. The student must have previous experience developing an Hibernate application. The student must know how to configure a simple Session Factory for Hibernate, utilize a Hibernate Session and transactional demarcation and how to perform basic queries on Hibernate objects.
  2. Competency with Java application development.
  3. Previous exposure to the concepts of workflow and business process modeling (BPM) is not required
  4. Experience with JBoss Eclipse or the Eclipse IDE with the JBoss plugin is recommended but not required
  5. Basic notions of JUnit test framework is recommended.

67.9. RHD451 JBoss Rules

The course covers the core engine for Drools 3 (JBoss Rules 3.0), as well as the various techniques and languages that can be used to manage business rules, and how the rule engine may be embedded in J2SE and J2EE applications. This course will be a complimentary course to any future courses on rule management using future releases of Jboss Rules.

67.9.1. Prerequisites

  1. Basic Java competency
  2. Some understanding of what constitutes an inferencing rule engine versus a scripting engine
  3. Viewing of the Jboss Rules webinars and demos is recommended but not required
  4. Java EE specific experience is not required for the course, but students who need to know how to integrate with Java EE will need the appropriate experience

Revision History

改訂履歴
改訂 10-0Thu Jul 21 2011Hradílek Jaromír [FAMILY Given]
Resolve BZ#720382: MinorMod: Network Interfaces: LINKDELAY parameter needs to be added to "Interface Configuration Files".
Resolve BZ#632028: MajorMod: Redundant Array of Independent Disks (RAID): Document mdadm Usage.
Resolve BZ#720009: MinorMod: LVM: Update screenshots in the "Manual LVM Partitioning" section.
Resolve BZ#711162: MinorMod: Network Interfaces: Incorrect static routes configuration.
Resolve BZ#707238: broadcast is calculated with ipcalc, not ifcalc.
Resolve BZ#678316: HOTPLUG network config file option is not documented.
Resolve BZ#562018: Ch.4 Redundant Array of Independent Disks (RAID) - screenshots need updating.
Resolve BZ#485033: iptables -p ALL --dport not allowed according to man 8 iptables.
改訂 9-0Thu Jan 13 2011Hradílek Jaromír [FAMILY Given]
Resolve BZ#249485: 'fsid=num' is listed under NFS client options, but it is a server-only option.
Resolve BZ#253659: additional commands required when adding machines to domain.
Resolve BZ#453242: guide does not tell you which packages you need to run an NFS server.
Resolve BZ#504250: cell should have newline characters, it shouldn't be all on one line.
Resolve BZ#520650: /proc/loadavg documentation error.
Resolve BZ#584075: vsftp typo for text_userdb_names.
Resolve BZ#625384: bonding configuration SLAVE=bond0 is invalid.
Resolve BZ#644617: misspelled word.
Resolve BZ#645123: spelling Errors in Deployment Guide II.
Resolve BZ#595366: RFE: document Shared Subtrees.
改訂 8-0Thu July 30 2010Silas Douglas [FAMILY Given]
Resolve BZ#239313: document oom_adj and oom_score.
Resolve BZ#526502: correct quotaon instructions with proper, safe operating procedures.
Resolve BZ#551367: correct SELinux dhcpd_disable_trans description.
Resolve BZ#521215: clarify NFS interaction with portmapper, rpc.mountd, rpc.lockd and rpc.statd.
Resolve BZ#453875: various OpenSSH chapter corrections.
Resolve BZ#455162: correct zone example configuration file, description.
Resolve BZ#460767: make it a proper daemon.
Resolve BZ#600702: correct directories used for SSL key generation.
改訂 7-0Wed Sep 30 2009Silas Douglas [FAMILY Given], Hradilek Jarek [FAMILY Given], Prpic Martin [FAMILY Given]
Change heading titles to correspond with actual headings used in 'man rpm'.
Resolve BZ#499053: /usr/sbin/racoon is correct install path.
Remove any mention of 'pkgpolicy' in /etc/yum.conf as per BZ#237773.
Resolve BZ#455162: correct example zone file with regard to records, description.
Resolve BZ#510851: /proc/cmdline has confusing descriptions of sample output.
Resolve BZ#510847: page with multiple footnotes formatted incorrectly in online PDF.
Resolve BZ#214326: more detailed usage info concerning vsftpd banners and secueerity.
Resolve BZ#241314: formatting problems in screen elements.
Resolve BZ#466239: postfix connect-from-remote-host configuration fix.
改訂 7-0Mon Sep 14 2009Silas Douglas [FAMILY Given]
Resolve BZ#214326: Server Security FTP Banner instructions: questions re: vsftpd.conf.
Resolve BZ#466239: insert line into Postfix config file to allow connecting remotely.
Resolve BZ#499053: path for racoon daemon is /usr/sbin/racoon, not /sbin/racoon.
Resolve BZ#510847: missing footnotes in PDF output.
Resolve BZ#510851: rewrite /proc/cmdline minor section to make more sense.
Resolve BZ#515613: correct location of RHEL5 GPG keys and key details.
Resolve BZ#523070: various minor fixes; --redhatprovides to rpm -q --whatprovides.
改訂 6-0Wed Sep 02 2009Silas Douglas [FAMILY Given]
Resolve BZ#492539: "This directive is useful..." to "This directive must be used in machines containing more than one NIC to ensure...".
Resolve BZ#241314: re: kernel-pae and hugemem support on RHEL 4 and 5.
Resolve BZ#453071: incorrect tag use led to config files and other screen elements being displayed on single lines.
Resolve BZ#507987: clarify and correct statements about partitions being in use while resizing or removing.
Resolve BZ#462550: recommended amount of swap space, according to http://kbase.redhat.com/faq/docs/DOC-15252.
Resolve BZ#466239: line omitted from Postfix configuration meant connecting remotely failed
Resolving other MODIFIED BZs (fixed previously): 468483, 480324, 481246, 481247, 438823, 454841, 485187, 429989, 452065, 453466.
改訂 5-0Wed Jan 28 2009Smith Michael Hideo [FAMILY Given]
Resolves: #460981
Changing 64GB *tested* support to support for 16GB.

Colophon

このマニュアルは DocBook XML v4.3 形式で書かれています。
Garrett LeSage が忠告のグラフィックス(注記、ヒント、重要、注意、警告)を作成しました。これらは Red Hat ドキュメントと共に自由に配布できます。
Contributing Writers: John Ha (System Administration, Filesystems, Kernel), Joshua Wulf (Installation and Booting), Brian Cleary (Virtualization), David O'Brien (Security and SELinux), Michael Hideo (System Administration), Don Domingo (System Administration), Michael Behm (System Administration), Paul Kennedy (Storage), Melissa Goldin (Red Hat Network)
過去の貢献者への称讃: Sandra Moore、Edward C. Bailey、Karsten Wade、Mark Johnson、Andrius Benokraitis、Lucy Ringland
エンジニアリング努力への称讃: Jeffrey Fearn
技術編集: Michael Behm
グラフィックアート: Andrew Fitzsimon
Red Hat 国際化チームは以下のメンバーで構成されています:
  • East Asian Languages
    • Simplified Chinese
      • Tony Tongjie Fu
      • Simon Xi Huang
      • Leah Wei Liu
      • Sarah Saiying Wang
    • Traditional Chinese
      • Chester Cheng
      • Terry Chuang
      • Ben Hung-Pin Wu
    • Japanese
      • Kiyoto Hashida
      • Junko Ito
      • Noriko Mizumoto
      • Takuro Nagamoto
    • Korean
      • Eun-ju Kim
      • Michelle Kim
  • Latin Languages
    • French
      • Jean-Paul Aubry
      • Fabien Decroux
      • Myriam Malga
      • Audrey Simons
      • Corina Roe
    • German
      • Jasna Dimanoski
      • Verena Furhuer
      • Bernd Groh
      • Daniela Kugelmann
      • Timo Trinks
    • Italian
      • Francesco Valente
    • Brazilian Portuguese
      • Glaucia de Freitas
      • Leticia de Lima
      • David Barzilay
    • Spanish
      • Angela Garcia
      • Gladys Guerrero
      • Yelitza Louze
      • Manuel Ospina
    • Russian
      • Yuliya Poyarkova
  • Indic Languages
    • Bengali
      • Runa Bhattacharjee
    • Gujarati
      • Ankitkumar Rameshchandra Patel
      • Sweta Kothari
    • Hindi
      • Rajesh Ranjan
    • Malayalam
      • Ani Peter
    • Marathi
      • Sandeep Shedmake
    • Punjabi
      • Amanpreet Singh Alam
      • Jaswinder Singh
    • Tamil
      • I Felix
      • N Jayaradha