Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
デプロイメントガイド
Red Hat Enterprise Linux 5 の導入、設定、および管理
概要
はじめに
- ネットワークインターフェイスカード(NIC)の設定
- 仮想プライベートネットワーク(VPN)の設定
- Samba 共有の設定
- RPM によるソフトウェアの管理
- システムに関する情報の決定
- カーネルのアップグレード
- ファイルシステム
- パッケージ管理
- ネットワーク関連の設定
- システムの設定
- システム監視
- カーネルおよびドライバーの設定
- セキュリティーおよび認証
- Red Hat のお客様および認定
1. 本書の表記慣例
- command
- Linux コマンド(およびその他のオペレーティングシステムコマンドを使用する場合)はこの方法になります。このスタイルは、コマンドラインで単語またはフレーズを 入力 し、Enter を押してコマンドを呼び出すことができることを示します。コマンドには、独自の(ファイル名など)の異なるスタイルで表示される単語が含まれる場合があります。このような場合は、コマンドの一部とみなされるため、フレーズ全体がコマンドとして表示されます。以下に例を示します。cat testfile コマンドを使用して、現在の作業ディレクトリーにある
testfile
という名前のファイルの内容を表示します。 ファイル名
- ファイル名、ディレクトリー名、パス、および RPM パッケージ名はこのように表されます。このスタイルは、特定のファイルまたはディレクトリーに、システム上にその名前が存在することを示します。例 :ホームディレクトリーの
.bashrc
ファイルには、bash シェル定義と独自の使用のエイリアスが含まれます。/etc/fstab
ファイルには、さまざまなシステムデバイスとファイルシステムに関する情報が含まれます。Web サーバーのログファイル分析プログラムを使用する場合は、webalizer
RPM をインストールします。 - application
- このスタイルは、プログラムが(システムソフトウェアではなく)エンドユーザーアプリケーションであることを示します。以下に例を示します。Mozilla を使用して Web を参照します。
- key
- このスタイルにはキーボードのキーが表示されます。以下に例を示します。Tab 補完を使用してディレクトリー内の特定のファイルを一覧表示するには、ls と入力してから 文字を入力し、最後に Tab キーを押します。ターミナルは、その文字で始まる作業ディレクトリー内のファイルの一覧を表示します。
- キー+組み合わせ
- このようにキーストロークの組み合わせを表現します。以下に例を示します。Ctrl+Alt+Backspace キーの組み合わせはグラフィカルセッションを終了し、グラフィカルログイン画面またはコンソールに戻ります。
- GUI インターフェイスにあるテキスト
- GUI インターフェイス画面またはウィンドウのタイトル、単語、またはフレーズがこのスタイルに表示されます。このスタイルに表示されるテキストは、特定の GUI 画面または GUI 画面の要素(チェックボックスまたはフィールドに関連付けられたテキストなど)を示します。以下に例を示します。スクリーンセーバーにパスワードを必要とする場合は、Require Password のチェックボックスを選択します。
- GUI 画面またはウィンドウのメニューのトップレベル
- このスタイルの単語は、単語がプルダウンメニューのトップレベルであることを示します。GUI 画面で単語をクリックすると、メニューの残りの部分が表示されます。以下に例を示します。GNOME 端末の File で、New Tab オプションでは、同じウィンドウで複数のシェルプロンプトを開くことができます。GUI メニューから一連のコマンドを入力する手順は、以下の例のようになります。Applications (パネルのメインメニュー)> Programming > Emacs Text Editor に移動して、Emacs テキストエディターを起動します。
- button on a GUI screen or window
- このスタイルは、GUI 画面のクリック可能なボタンでテキストが見つかることを示しています。以下に例を示します。Back ボタンをクリックして、最後に表示した Web ページに戻ります。
コンピューターの出力
- このスタイルのテキストは、エラーメッセージやコマンドへの応答などのシェルプロンプトに表示されるテキストを示します。以下に例を示します。ls コマンドはディレクトリーの内容を表示します。以下に例を示します。
Desktop about.html logs paulwesterberg.png Mail backupfiles mail reports
このスタイルでは、コマンド(この場合は ディレクトリーの内容)に応じて返される出力が表示されます。 prompt
- このスタイルには、コンピューターに入力できることを示すプロンプトが表示されます。例 :
$
#
[stephen@maturin stephen]$
leopard login:
user input
- このスタイルには、コマンドラインまたは GUI 画面のテキストボックスにユーザーが入力するテキストが表示されます。以下の例では、
text
がこのスタイルに表示されます。テキストベースのインストールプログラムでシステムを起動するには、boot:
プロンプトでtext
コマンドを入力する必要があります。 - <replaceable>
- このスタイルには、ユーザーが提供するデータに置き換えることが意図されている例で使用されるテキストが表示されます。以下の例では、< ;version-number> がこのスタイルに表示されます。カーネルソースのディレクトリーは
/usr/src/kernels/ <version-number> /
です。< version-number > は、このシステムにインストールされているカーネルのバージョンとタイプです。
/usr/share/doc/
ディレクトリーには、システムにインストールされているパッケージの追加ドキュメントが含まれています。
2. フィードバックをお寄せください
Deployment_Guide
に対して
Bugzilla ()でレポートを送信します。
パート I. ファイルシステム
第1章 ファイルシステム構造
1.1. 共通の構造を共有する理由
- 共有可能ファイルと非共有ファイル
- 変数ファイルと静的ファイル
1.2. ファイルシステム階層標準(FHS)の概要
/usr/
パーティションを読み取り専用としてマウントする機能です。ディレクトリーには共通の実行ファイルが含まれており、ユーザーが変更すべきではないため、この 2 番目の点は重要です。また、/usr/
ディレクトリーは読み取り専用としてマウントされているため、CD-ROM または読み取り専用 NFS マウントを介して別のマシンからマウントできます。
1.2.1. FHS 組織
1.2.1.1. /boot/
ディレクトリー
/boot/
ディレクトリーには、Linux カーネルなどのシステムの起動に必要な静的ファイルが含まれます。これらのファイルは、システムが正しく起動するためには不可欠です。
/boot/
ディレクトリーを削除しないでください。削除すると、システムが起動できなくなります。
1.2.1.2. /dev/
ディレクトリー
/dev/
ディレクトリーには、システムに接続されているデバイス、またはカーネルが提供する仮想デバイスを表すデバイスノードが含まれます。これらのデバイスノードは、システムが適切に機能するために不可欠です。udev デーモンは、/dev/
にあるこれらのデバイスノードをすべて作成し、削除します。
/dev
ディレクトリーおよびサブディレクトリー内のデバイスは、文字(入出力のシリアルストリームのみを提供)または block (ランダムにアクセス可能)のいずれかです。キャラクターデバイスにはマウス、キーボード、モデムが含まれ、ブロックデバイスにはハードディスク、フロッピードライブなどが含まれます。システムに GNOME または KDE がインストールされている場合は、外部ドライブや cd などのデバイスが接続時(例:usb など)または挿入(CD または DVD ドライブなど)時に自動的に検出され、コンテンツを表示するポップアップウィンドウが自動的に表示されます。/dev
ディレクトリー内のファイルは、システムが適切に機能するために不可欠です。
表1.1 /dev
内の一般的なファイルの例
File | 説明 |
---|---|
/dev/hda | プライマリー IDE チャネル上のマスターデバイス。 |
/dev/hdb | プライマリー IDE チャネルのスレーブデバイス。 |
/dev/tty0 | 最初の仮想コンソール。 |
/dev/tty1 | 2 番目の仮想コンソール |
/dev/sda | プライマリー SCSI または SATA チャネルの最初のデバイス。 |
/dev/lp0 | 最初の並列ポート。 |
1.2.1.3. /etc/
ディレクトリー
/etc/
ディレクトリーは、マシンのローカルとなる設定ファイル用に予約されています。/etc/
に配置されるバイナリーはありません。/etc/
に置かれたバイナリーは、/sbin/
または /bin/
に配置する必要があります。
/etc
内のディレクトリーの例は、X11/
および skel/
です。
/etc |- X11/ |- skel/
/etc/X11/
ディレクトリーは、xorg.conf
などの X Window System 設定ファイル用です。/etc/skel/
ディレクトリーは、ユーザーの初回作成時にホームディレクトリーを設定するために使用されるスケルトンユーザーファイル用です。また、アプリケーションはこのディレクトリーに設定ファイルを保存し、実行時にそれらを参照する可能性があります。
1.2.1.4. /lib/
ディレクトリー
/lib/
ディレクトリーには、/bin/
および /sbin/
でバイナリーを実行するために必要なライブラリーのみが含まれている必要があります。これらの共有ライブラリーイメージは、システムを起動し、root ファイルシステム内でコマンドを実行する場合に特に重要です。
1.2.1.5. /media/
ディレクトリー
/media/
ディレクトリーには、usb ストレージメディア、DVD、CD-ROM、Zip ディスクなどのリムーバブルメディアのマウントポイントとして使用されるサブディレクトリーが含まれます。
1.2.1.6. /mnt/
ディレクトリー
/mnt/
ディレクトリーは、NFS ファイルシステムのマウントなどの、一時的にマウントされたファイルシステム用に予約されています。すべてのリムーバブルメディアには、/media/
ディレクトリーを使用してください。自動的に検出されたリムーバブルメディアは、/media
ディレクトリーにマウントされます。
/mnt
ディレクトリーは、インストールプログラムでは使用しないでください。
1.2.1.7. /opt/
ディレクトリー
/opt/
ディレクトリーは、ほとんどのアプリケーションソフトウェアパッケージのストレージを提供します。
/opt/
ディレクトリーにファイルを配置するパッケージにより、パッケージと同じ名前を持つディレクトリーが作成されます。次に、このディレクトリーはファイルシステム全体に分散されるファイルを保持し、システム管理者は特定のパッケージ内の各ファイルのロールを簡単に判別できるようにします。
sample
が /opt/
ディレクトリーにある特定のソフトウェアパッケージの名前である場合、そのファイルはすべて /opt/sample/
bin/(バイナリーの場合は /opt/sample/bin/
、man ページの場合は /opt/sample/bin/
など)に配置されます。
/opt/
ディレクトリーに置かれ、その大きなパッケージ自体を整理する方法を提供します。このようにして、サンプルパッケージには、それぞれが /opt/ sample
/tool 1/ や /opt/sample/tool 2/
などの独自のサブディレクトリーに配置されるツール
があり、各パッケージは独自の bin/
、man/
、およびその他の同様のディレクトリーを持つことができます。
1.2.1.8. /proc/
ディレクトリー
/proc/
ディレクトリーには、カーネルから情報を抽出するか、カーネルへの情報送信を行う特別なファイルが含まれます。たとえば、システムメモリー、CPU 情報、ハードウェア設定などが挙げられます。
/proc/
で利用できる大量のデータや、このディレクトリーを使用してカーネルと通信する方法が多数あるため、章全体がサブジェクトに展開されています。詳細は、5章proc
ファイルシステム を参照してください。
1.2.1.9. /sbin/
ディレクトリー
/sbin/
ディレクトリーには、root ユーザーが使用する実行ファイルが保存されます。/sbin/
の実行可能ファイルは、システム管理とシステム復旧操作を実行するために、システムの起動時に使用されます。このディレクトリーでは、FHS は以下を示しています。
/sbin
には、/bin
のバイナリーに加えて、システムの起動、復元、リカバリー、および修復に不可欠なバイナリーが含まれています。/usr/
の後に実行されるプログラムは(問題がない場合に)マウントすることがわかっています。通常、/usr/sbin
に配置されます。ローカルにインストールされたシステム管理プログラムは、/usr/local/sbin
に配置する必要があります。
/sbin/
になければなりません。
arp
,clock
,halt
,init
,fsck.*
,grub
,ifconfig
,mingetty
,mkfs.*
,mkswap
,reboot
,route
,shutdown
,swapoff
,swapon
1.2.1.10. /srv/
ディレクトリー
/srv/
ディレクトリーには、Red Hat Enterprise Linux を実行しているシステムが提供するサイト固有のデータが含まれます。このディレクトリーは、FTP、WWW、または CVS などの特定サービスのデータファイルの場所をユーザーに提供します。特定のユーザーにのみ関連するデータは、/home/
ディレクトリー内になければなりません。
1.2.1.11. /sys/
ディレクトリー
/sys/
ディレクトリーは、2.6 カーネルに固有の新しい sysfs
仮想ファイルシステムを使用します。2.6 カーネルのホットプラグハードウェアデバイスのサポートが増えると、/sys/
ディレクトリーには同様の情報が /proc/
に保持されますが、ホットプラグデバイスに関する特定のデバイス情報の階層ビューが表示されます。
1.2.1.12. /usr/
ディレクトリー
/usr/
ディレクトリーは、複数のマシンにまたがって共有できるファイル用です。多くの場合、/usr/
ディレクトリーは独自のパーティションにあり、読み取り専用でマウントされます。少なくとも、以下のディレクトリーは /usr/
のサブディレクトリーである必要があります。
/usr |- bin/ |- etc/ |- games/ |- include/ |- kerberos/ |- lib/ |- libexec/ |- local/ |- sbin/ |- share/ |- src/ |- tmp -> ../var/tmp/
/usr/
ディレクトリーの bin/
サブディレクトリーには実行ファイルが含まれ、etc/
にはシステム全体の設定ファイル、games
is for games、include/
には C ヘッダーファイルが含まれ、kerberos/
にはバイナリーやその他の Kerberos 関連のファイルが含まれます。lib/
には、ユーザーまたはシェルスクリプトが直接使用されないように設計されていないオブジェクトファイルとライブラリーが含まれます。libexec/
ディレクトリーには、他のプログラムによって呼び出される小さなヘルパープログラムが含まれています。sbin/
はシステム管理バイナリー( /sbin/
ディレクトリーに属さないもの)用です。share/
には、アーキテクチャー固有ではないファイル、src/
はソースコード用です。
1.2.1.13. /usr/local/
ディレクトリー
/usr/local
階層は、ソフトウェアをローカルでインストールする場合にシステム管理者が使用します。システムソフトウェアの更新時に上書きされないようにする必要があります。これは、ホストのグループ間で共有できるが、/usr
にないプログラムやデータに使用できます。
/usr/
local/
ディレクトリーは、/usr/ ディレクトリーの構造に似ています。これには、/usr/
ディレクトリー内のサブディレクトリーと似た以下のサブディレクトリーがあります。
/usr/local |- bin/ |- etc/ |- games/ |- include/ |- lib/ |- libexec/ |- sbin/ |- share/ |- src/
/usr/local/
ディレクトリーに使用することが、FHS で指定されたものと若干異なります。FHS は、/usr/local/
が、システムソフトウェアのアップグレードで安全を確保できるソフトウェアが保存されている場所である必要があることを示しています。ソフトウェアアップグレードは RPM Package Manager (RPM)を使用して安全に実行できるため、ファイルを /usr/local/
に配置してファイルを保護する必要はありません。代わりに、/usr/local/
ディレクトリーは、マシンのローカルにあるソフトウェアに使用されます。
/usr/
ディレクトリーがリモートホストから読み取り専用の NFS 共有としてマウントされている場合でも、/usr/local/
ディレクトリーの下にパッケージまたはプログラムをインストールすることができます。
1.2.1.14. /var/
ディレクトリー
/usr/
を読み取り専用としてマウントする必要があるため、ログファイルを書き込むプログラムや、spool/
または lock/
ディレクトリーが必要なプログラムは、それらを /var/
ディレクトリーに書き込む必要があります。FHS の状態 /var/
は以下を対象にしています。
...変数データファイル。これには、スプールディレクトリーおよびファイル、管理およびロギングデータ、および一時および一時ファイルが含まれます。
/var/
ディレクトリーにあるディレクトリーの一部です。
/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/
messages
および lastlog
などのシステムログファイルは、/var/log/
ディレクトリーに移動します。/var/lib/rpm/
ディレクトリーには、RPM システムデータベースが含まれます。ロックファイルは、通常はファイルを使用するプログラムのディレクトリーにある /var/lock/
ディレクトリーに移動します。/var/spool/
ディレクトリーには、データファイルが保存されるプログラムのサブディレクトリーがあります。
1.3. Red Hat Enterprise Linux の特別なファイルの場所
/var/lib/rpm/
ディレクトリーに保持されます。RPM の詳細は、12章RPM でのパッケージ管理 を参照してください。
/var/cache/yum/
ディレクトリーには、システムの RPM ヘッダー情報を含む Package Updater が使用するファイルが含まれます。この場所は、システムの更新中にダウンロードされた RPM を一時的に保存するためにも使用できます。Red Hat Network の詳細は、15章システムの登録およびサブスクリプション管理 を参照してください。
/etc/sysconfig/
ディレクトリーです。このディレクトリーには、さまざまな設定情報が格納されています。システムの起動時に実行されるスクリプトの多くは、このディレクトリー内のファイルを使用します。このディレクトリー内の内容や、起動プロセスでこれらのファイルがプレイするロールの詳細は、32章sysconfig
ディレクトリー を参照してください。
第2章 mount コマンドの使い方
2.1. 現在マウントされているファイルシステムの一覧表示
mount
device on directory type type (options)
sysfs
やtmpfs
などのさまざまな仮想ファイルシステムが含まれます。特定のファイルシステムタイプのデバイスのみを表示するには、コマンドラインで -t
オプションを指定します。
mount -t
type
ext3
ファイルシステムの一覧表示」 を参照してください。
例2.1 現在マウントされている ext3
ファイルシステムの一覧表示
/
boot
パーティションはいずれも ext3
を使用するようにフォーマットされます。このファイルシステムを使用するマウントポイントのみを表示するには、シェルプロンプトで次のように入力します。
~]$ mount -t ext3
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
/dev/vda1 on /boot type ext3 (rw)
2.2. ファイルシステムのマウント
mount [option…] device directory
/etc/fstab
設定ファイルの内容を読み取り、指定したファイルシステムが一覧表示されているかどうかを確認します。このファイルには、デバイス名の一覧と、選択したファイルシステムがマウントされるディレクトリー、ファイルシステムタイプおよびマウントオプションが含まれます。このため、このファイルで指定されているファイルシステムをマウントする場合は、以下のいずれかのコマンドのバリアントを使用できます。
mount [option…] directory mount [option…] device
root
としてログインしていない限り、ファイルシステムをマウントするパーミッションが必要です( 「マウントオプションの指定」を参照してください)。
2.2.1. ファイルシステムタイプの指定
NFS
(Network File System) や CIFS
(Common Internet File System) などの認識できないファイルシステムがあるため、こうしたファイルシステムの場合は手動で指定しなければなりません。ファイルシステムのタイプを指定するには、以下の形式で mount コマンドを使用します。
mount -t
type device directory
表2.1 一般的なファイルシステムのタイプ
型 | 説明 |
---|---|
ext2 | ext2 ファイルシステム。 |
ext3 | ext3 ファイルシステム。 |
ext4 | ext4 ファイルシステム。 |
iso9660 | ISO 9660 ファイルシステム。通常、これは光学メディア (通常は CD) で使用されます。 |
jfs | IBM が作成した JFS ファイルシステム。 |
nfs | NFS ファイルシステム。通常、これはネットワーク経由でファイルにアクセスするために使用されます。 |
nfs4 | NFSv4 ファイルシステム。通常、これはネットワーク経由でファイルにアクセスするために使用されます。 |
ntfs | NTFS ファイルシステム。これは通常、Windows オペレーティングシステムを実行しているマシンで使用されます。 |
udf | UDF ファイルシステム。通常、これは光学メディア (通常は DVD) で使用されます。 |
vfat | FAT ファイルシステム。通常、これは Windows オペレーティングシステムを実行しているマシンや、USB フラッシュドライブやフロッピーディスクなどの特定のデジタルメディアで使用されます。 |
例2.2 USB フラッシドライブのマウント
/dev/sdc1
デバイスを使用し、/media/flashdisk/
ディレクトリーが存在すると仮定すると、root
で次のコマンドを実行します。
~]# mount -t vfat /dev/sdc1 /media/flashdisk
2.2.2. マウントオプションの指定
mount -o
options
表2.2 一般的なマウントオプション
オプション | 説明 |
---|---|
async | ファイルシステム上での非同期の入/出力を許可します。 |
auto | mount -a コマンドを使用したファイルシステムの自動マウントを許可します。 |
defaults | async,auto,dev,exec,nouser,rw,suid のエイリアスを指定します。 |
exec | 特定のファイルシステムでのバイナリーファイルの実行を許可します。 |
loop | イメージをループデバイスとしてマウントします。 |
noauto | mount -a コマンドを使用したファイルシステムの自動マウントを無効にします。 |
noexec | 特定のファイルシステムでのバイナリーファイルの実行は許可しません。 |
nouser | 普通のユーザー (つまり root 以外のユーザー) によるファイルシステムのマウントおよびアンマウントは許可しません。 |
remount | ファイルシステムがすでにマウントされている場合は再度マウントを行います。 |
ro | 読み取り専用でファイルシステムをマウントします。 |
rw | ファイルシステムを読み取りと書き込み両方でマウントします。 |
user | 普通のユーザー (つまり root 以外のユーザー) によるファイルシステムのマウントおよびアンマウントを許可します。 |
例2.3 ISO イメージのマウント
/media/cdrom/
ディレクトリーが存在すると仮定すると、root
で以下のコマンドを実行してイメージをこのディレクトリーにマウントできます。
~]# mount -o ro,loop Fedora-14-x86_64-Live-Desktop.iso /media/cdrom
2.2.3. マウントの共有
--bind
オプションを実装します。以下のような使用法になります。
mount --bind
old_directory new_directory
mount --rbind
old_directory new_directory
- 共有マウント
- 共有マウントを使用すると、特定のマウントポイントの正確なレプリカを作成できます。共有マウントが作成されると、元のマウントポイント内のすべてのマウントがそれに反映され、その逆も同様です。共有マウントを作成するには、シェルプロンプトで以下を入力します。
mount
--make-shared
mount_pointまたは、選択したマウントポイントとその下のすべてのマウントポイントのマウントタイプを変更できます。mount
--make-rshared
mount_point使用例は、例2.4「共有マウントポイントの作成」 を参照してください。例2.4 共有マウントポイントの作成
他のファイルシステムが一般的にマウントされる場所は 2 つあります。リムーバブルメディア用の/media
ディレクトリーと、一時的にマウントされるファイルシステム用の/mnt
ディレクトリーです。共有マウントを使用すると、この 2 つのディレクトリーで同じコンテンツを共有できます。そのためには、root
で、/media
ディレクトリーを 「shared」 としてマークします。~]# mount --bind /media /media ~]# mount --make-shared /media
以下のコマンドを使用して、複製を/mnt
ディレクトリーに作成します。~]# mount --bind /media /mnt
これで、/media
内のマウントが/mnt
にも表示されることを確認できます。たとえば、CD-ROM ドライブに空でないメディアがあり、/media/cdrom/
ディレクトリーが存在する場合は、以下のコマンドを実行します。~]# mount /dev/cdrom /media/cdrom ~]# ls /media/cdrom EFI GPL isolinux LiveOS ~]# ls /mnt/cdrom EFI GPL isolinux LiveOS
同様に、/mnt
ディレクトリーにマウントされているファイルシステムが/media
に反映されていることを確認できます。たとえば、/dev/sdc1
デバイスを使用する空でない USB フラッシュドライブがあり、/mnt/flashdisk/
ディレクトリーが存在する場合は、以下を入力します。~]# mount /dev/sdc1 /mnt/flashdisk ~]# ls /media/flashdisk en-US publican.cfg ~]# ls /mnt/flashdisk en-US publican.cfg
- スレーブマウント
- スレーブマウントを使用すると、指定したマウントポイントの限定的な複製を作成できます。スレーブマウントが作成されると、元のマウントポイント内のすべてのマウントがそれに反映されますが、スレーブマウント内のマウントは元のマウントに反映されません。スレーブマウントを作成するには、シェルプロンプトで以下を入力します。
mount
--make-slave
mount_pointまたは、選択したマウントポイントとその下のすべてのマウントポイントのマウントタイプを変更できます。mount
--make-rslave
mount_point使用例は、例2.5「スレーブマウントポイントの作成」 を参照してください。例2.5 スレーブマウントポイントの作成
/media
ディレクトリーのコンテンツが/mnt
にも表示されるようにし、/mnt
ディレクトリーのマウントを/media
に反映させないようにするとします。これを実行するには、root
で、最初に/media
ディレクトリーを 「共有」 としてマークします。~]# mount --bind /media /media ~]# mount --make-shared /media
次に、その複製を/mnt
で作成します。ただし、「slave」 としてマークします。~]# mount --bind /media /mnt ~]# mount --make-slave /mnt
これで、/media
内のマウントが/mnt
にも表示されることを確認できます。たとえば、CD-ROM ドライブに空でないメディアがあり、/media/cdrom/
ディレクトリーが存在する場合は、以下のコマンドを実行します。~]# mount /dev/cdrom /media/cdrom ~]# ls /media/cdrom EFI GPL isolinux LiveOS ~]# ls /mnt/cdrom EFI GPL isolinux LiveOS
また、/mnt
ディレクトリーにマウントされているファイルシステムが/media
に反映されて いない ことを確認することもできます。たとえば、/dev/sdc1
デバイスを使用する空でない USB フラッシュドライブがあり、/mnt/flashdisk/
ディレクトリーが存在する場合は、以下を入力します。~]# mount /dev/sdc1 /mnt/flashdisk ~]# ls /media/flashdisk ~]# ls /mnt/flashdisk en-US publican.cfg
- プライベートマウント
- プライベートマウントを使用すると、通常のマウントを作成できます。プライベートマウントが作成されると、元のマウントポイント内の後続のマウントがそれに反映されず、プライベートマウント内のマウントは元のマウントに反映されません。プライベートマウントを作成するには、シェルプロンプトで以下を入力します。
mount
--make-private
mount_pointまたは、選択したマウントポイントとその下のすべてのマウントポイントのマウントタイプを変更できます。mount
--make-rprivate
mount_point使用例は、例2.6「プライベートマウントポイントの作成」 を参照してください。例2.6 プライベートマウントポイントの作成
例2.4「共有マウントポイントの作成」 でシナリオを考慮に入れて、root
で以下のコマンドを使用して共有マウントポイントを作成していることを前提としています。~]# mount --bind /media /media ~]# mount --make-shared /media ~]# mount --bind /media /mnt
/mnt
ディレクトリーに 「private」 のマークを付けるには、次のように入力します。~]# mount --make-private /mnt
これで、/media
内のマウントが/mnt
に表示されないことを確認できます。たとえば、CD-ROM ドライブに空でないメディアがあり、/media/cdrom/
ディレクトリーが存在する場合は、以下のコマンドを実行します。~]# mount /dev/cdrom /media/cdrom ~]# ls /media/cdrom EFI GPL isolinux LiveOS ~]# ls /mnt/cdrom ~]#
また、/mnt
ディレクトリーにマウントされているファイルシステムが/media
に反映されていないことを確認することもできます。たとえば、/dev/sdc1
デバイスを使用する空でない USB フラッシュドライブがあり、/mnt/flashdisk/
ディレクトリーが存在する場合は、以下を入力します。~]# mount /dev/sdc1 /mnt/flashdisk ~]# ls /media/flashdisk ~]# ls /mnt/flashdisk en-US publican.cfg
- バインド不可能なマウント
- バインド不可能なマウントを使用すると、特定のマウントポイントが重複しないようにすることができます。バインド不可能なマウントを作成するには、シェルプロンプトで以下を入力します。
mount
--make-unbindable
mount_pointまたは、選択したマウントポイントとその下のすべてのマウントポイントのマウントタイプを変更できます。mount
--make-runbindable
mount_point使用例は、例2.7「バインド不可能なマウントポイントの作成」 を参照してください。例2.7 バインド不可能なマウントポイントの作成
/media
ディレクトリーが共有されないようにするには、root
として、シェルプロンプトで次のように入力します。~]# mount --bind /media /media ~]# mount --make-unbindable /media
こうすることで、これ以降、このマウントの複製を作成しようとすると、以下のエラーが出て失敗します。~]# 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. マウントポイントの移動
mount --move
old_directory new_directory
例2.8 既存の NFS マウントポイントの移動
/mnt/userdirs/
にマウントされている場合、root
として次のコマンドを使用して、このマウントポイントを /home
に移動できます。
~]# mount --move /mnt/userdirs /home
~]# ls /mnt/userdirs ~]# ls /home jill joe
2.3. ファイルシステムのアンマウント
umount directory umount device
root
としてログインしていない限り、ファイルシステムのマウントを解除する権限が必要であることに注意してください( 「マウントオプションの指定」を参照してください)。使用例は、例2.9「CD のアンマウント」 を参照してください。
fuser -m
directory
/media/cdrom/
ディレクトリーにマウントされているファイルシステムにアクセスしているプロセスの一覧を表示するには、次のコマンドを入力します。
~]$ fuser -m /media/cdrom
/media/cdrom: 1793 2013 2022 2435 10532c 10672c
例2.9 CD のアンマウント
/media/cdrom/
ディレクトリーにマウントされた CD をアンマウントするには、シェルプロンプトで次のように入力します。
~]$ umount /media/cdrom
2.4. 関連情報
2.4.1. インストールされているドキュメント
- man 8 mount: mount コマンドの man ページです。使い方などに関する詳細が記載されています。
- man 8 umount: umount コマンドの man ページです。使い方などに関する詳細が記載されています。
- man 5 fstab:
/etc/fstab
ファイル形式に関する詳細が記載されている man ページです。
2.4.2. 便利な Web サイト
- 『Shared subtrees』 — 共有サブツリーの概念について解説されている LWN の記事です。
- 『sharedsubtree.txt』: 共有サブツリーパッチに同梱されている拡張ドキュメント。
第3章 Ext3 ファイルシステム。
3.1. ext3 の機能
- 可用性
- 予期しない停電やシステムクラッシュ (クリーンでないシステムシャットダウン とも言われる) が発生すると、マシンにマウントしている各 ext2 ファイルシステムは、e2fsck プログラムで整合性をチェックする必要があります。これは時間を浪費するプロセスであり、大量のファイルを含む大型ボリュームでは、システムの起動時間を著しく遅らせます。このプロセスの間、そのボリュームにあるデータは使用できません。ext3 ファイルシステムで提供されるジャーナリングは、クリーンでないシステムシャットダウンが発生してもこの種のファイルシステムのチェックが不要であることを意味します。ext3 の使用していても整合性チェックが必要になる唯一の場面は、ハードドライブの障害が発生した場合など、ごく稀なハードウェア障害のケースのみです。クリーンでないシャットダウンの発生後に ext3 ファイルシステムを復元する時間は、ファイルシステムのサイズやファイルの数量ではなく、一貫性を維持するために使用される ジャーナル のサイズに依存します。デフォルトのジャーナルサイズは、ハードウェアの速度に応じて、復旧するのに約 1 秒かかります
- データの整合性
- ext3 ファイルシステムは、クリーンでないシステムシャットダウンが発生した際にデータの整合性が失われることを防止します。ext3 ファイルシステムにより、データが受けることのできる保護のタイプとレベルを選択できるようになります。デフォルトでは、ext3 ボリュームは、ファイルシステムの状態に関して高いレベルのデータの整合性を維持するように設定されています。
- 速度
- 一部のデータを複数回書き込みますが、ext3 のジャーナリングにより、ハードドライブのヘッドモーションが最適化されるため、ほとんどの場合、ext3 のスループットは ext2 よりも高くなります。速度を最適化するために 3 つのジャーナリングモードから選択できますが、システムに障害が発生する可能性のある状況では、モードの選択はデータの整合性がトレードオフの関係になることがあります。
- 簡単なトランジション
- ext2 から ext3 に簡単に移行でき、再フォーマットをせずに、堅牢なジャーナリングファイルシステムの恩恵を受けることができます。このタスクの実行方法は、「ext3 ファイルシステムへの変換」 を参照してください。
3.2. Ext3 ファイルシステムの作成
- mkfs を使用して、ext3 ファイルシステムでパーティションをフォーマットします。
- e2label を使用してパーティションにラベルを付けます。
3.3. ext3 ファイルシステムへの変換
ext2
ファイルシステムを ext3
に変換できます。
ext2
ファイルシステムを ext3
に変換するには、root としてログインし、ターミナルで以下のコマンドを入力します。
tune2fs -j <block_device>
- マップされたデバイス - ボリュームグループの論理ボリューム(例: /dev/mapper/VolGroup00-LogVol02 )。
- 静的デバイス - 従来のストレージボリューム(例: /dev/hdbX )。hdb はストレージデバイス名で、X はパーティション番号です。
/dev/mapper/VolGroup00-LogVol02
initrd
を読み込んでいることを確認してください。
3.4. ext2 ファイルシステムへの復元
umount /dev/mapper/VolGroup00-LogVol02
tune2fs -O ^has_journal /dev/mapper/VolGroup00-LogVol02
e2fsck -y /dev/mapper/VolGroup00-LogVol02
mount -t ext2 /dev/mapper/VolGroup00-LogVol02 /mount/point
.journal
ファイルを削除します。
rm -f .journal
/etc/fstab
ファイルを更新するようにしてください。
第4章 ext4 ファイルシステム
4.1. ext4 の機能
- 主な特長
- ext4 ファイルシステムはエクステントを使用します (ext2 および ext3 で使用される従来のブロックマッピングスキームとは異なります)。これにより、大きなファイルを使用する際のパフォーマンスが向上し、大きなファイルのメタデータオーバーヘッドが低減します。また、ext4 では、未使用のブロックグループと inode テーブルのセクションにそれぞれラベル付けが行なわれます。これにより、ファイルシステムのチェック時にこれらを省略することができます。また、ファイルシステムチェックの速度が上がるため、ファイルシステムが大きくなるほどその便宜性は顕著になります。
- 割り当て機能
- Ext4 ファイルシステムには、以下のような割り当てスキームが備わっています。
- 永続的な事前割り当て
- 遅延割り当て
- マルチブロック割り当て
- ストライプ認識割り当て
遅延割り当てや他のパフォーマンスが最適化されるため、ext4 のディスクへのファイル書き込み動作は ext3 の場合とは異なります。ext4 では、プログラムが後で fsync () 呼び出しを発行しない限り、ファイルシステムへの書き込みがオンディスクになる保証はありません。ext3 では、fsync() の呼び出しがなくても、ファイルが新たに作成されると、そのほぼ直後にデフォルトでディスクへの書き込みが強制されます。この動作により、書き込まれたデータがオンディスクにあることを、fsync() を使用して確認しないというプログラムのバグが表面化しませんでした。一方、ext4 ファイルシステムは、ディスクへの変更書き込みの前に数秒間待機することが多く、書き込みを結合して再度順序付けを行うことにより、ext3 を上回るディスクパフォーマンスを実現しています。警告ext3 とは異なり、ext4 ファイルシステムでは、トランザクションコミット時にディスクへのデータの書き込みを強制しません。このため、バッファーされた書き込みがディスクにフラッシュされるまでに時間がかかります。他のファイルシステムと同様、永続的なストレージにデータが書き込まれたことを確認するには、fsync() などのデータ整合性チェックの呼び出しを使用してください。 - Ext4 のその他の機能
- ext4 ファイルシステムでは次の機能にも対応しています。
- 拡張属性 (
xattr
)。これにより、システムはファイルごとに追加の名前と値のペアを関連付けることができます。 - クォータジャーナリング により、クラッシュ後の時間がかかるクォータの整合性チェックが不要になります。注記ext4 で対応しているジャーナリングモードは data=ordered (デフォルト) のみです。
- サブセカンドのタイムスタンプ: inode タイムスタンプフィールドをナノ秒で指定できるようにします。
4.2. ext4 ファイルシステムの管理
~]# yum install e4fsprogs
- mke4fs - ext4 ファイルシステムの作成に使用するユーティリティー。
- mkfs.ext4 - ext4 ファイルシステムの作成に使用するもう 1 つのコマンドです。
- e4fsck - ext4 ファイルシステムの不整合を修復するために使用されるユーティリティー。
- tune4fs - ext4 ファイルシステムの属性を変更するために使用されるユーティリティー。
- resize4fs - ext4 ファイルシステムのサイズを変更するのに使用するユーティリティー。
- e4label - ext4 ファイルシステムのラベルを表示または変更するために使用されるユーティリティー。
- dumpe4fs - ext4 ファイルシステムのスーパーブロックおよびブロックグループ情報を表示するのに使用するユーティリティー。
- debuge4fs - インタラクティブなファイルシステムデバッガーで、ext4 ファイルシステムを調べ、破損したファイルシステムを手動で修復し、e4fsck のテストケースを作成するために使用されます。
4.3. Ext4 ファイルシステムの作成
/etc/mke4fs.conf
の設定ファイルを調べて変更することもできます。
- mkfs.ext4 または mke4fs コマンドを使用して、ext4 ファイルシステムでパーティションをフォーマットします。
~]# mkfs.ext4 block_device
~]# mke4fs -t ext4 block_device
block_device は、作成する ext4 ファイルシステムを含むパーティションです。 - e4label コマンドを使用して、パーティションにラベルを付けます。
~]# e4label <block_device> new-label
- マウントポイントを作成し、新しいファイルシステムをそのマウントポイントにマウントします。
~]# mkdir /mount/point ~]# mount block_device /mount/point
- マップされたデバイス - ボリュームグループの論理ボリューム(例: /dev/mapper/VolGroup00-LogVol02 )。
- 静的デバイス - 従来のストレージボリューム(例: /dev/hdbX )。hdb はストレージデバイス名で、X はパーティション番号です。
- stride=value
- RAID チャンクサイズを指定します。
- stripe-width=value
- RAID デバイス内のデータディスク数、または 1 ストライプ内のストライプユニット数を指定します。
~]# mkfs.ext4 -E stride=16,stripe-width=64 block_device
4.4. ext4 ファイルシステムのマウント
~]# mount block_device /mount/point
no acl
、data
、quota、noquota
、user_xattr、nouser_xattr
などのオプション、ext2 および ext3 ファイルシステムですでに使用されているものの多くは後方互換性があり、同じ使用方法や機能を持ちます。また、ext4 ファイルシステムでは、ext4 固有のマウントオプションが複数追加されました。以下に例を示します。
- barrier / nobarrier
- 書き込みキャッシュが有効になっているデバイスへの電力供給が停止した場合でも、ファイルシステムの整合性を確保できるようにするため、ext4 ではデフォルトで書き込みバリアを使用します。書き込みキャッシュのないデバイス、またはバッテリーでバックアップされた書き込みキャッシュがあるデバイスの場合、nobarrier オプションを使用してバリアを無効にします。
~]# mount -o nobarrier block_device /mount/point
- stripe=value
- このオプションを使用すると、1 つのファイル操作に割り当てられるファイルシステムブロックの数を指定できます。RAID5 の場合、この数はディスク数で乗算した RAID チャンクサイズと同じでなければなりません。
- journal_ioprio=value
- このオプションを使用すると、コミット操作中に送信された I/O 操作の優先度を設定できます。オプションには、7 から 0 までの値を指定でき(0 が最も高い優先度)、はデフォルトでは 3 に設定されます。これは、デフォルトの I/O 優先度よりも若干高いです。
/dev/mapper/VolGroup00-LogVol02
デバイスのファイルシステムをマウントするように設定します。
~]# tune4fs -o ^debug,user_xattr,acl /dev/mapper/VolGroup00-LogVol02
~]# mount -t ext4 block_device /mount/point
遅延割り当て
と マルチブロックの割り当て
、エクステントマッピング
などの除外機能が含まれます。
/etc/fstab
ファイルを更新するようにしてください。以下に例を示します。
/dev/mapper/VolGroup00-LogVol02 /test ext4 defaults 0 0
4.5. ext4 ファイルシステムのサイズ変更
~]# resize4fs block_devicenew_size
- s — 512 バイトのセクター
- K — キロバイト
- M — メガバイト
- G — ギガバイト
size
パラメーターは任意(多くの場合冗長)です。resize4fs は、コンテナーで利用可能な領域(通常は論理ボリュームまたはパーティション)をすべて埋めるように自動的に拡張します。ext4 ファイルシステムのサイズ変更に関する詳細は、resize4fs(8) man ページを参照してください。
第5章 proc
ファイルシステム
/proc/
ディレクトリー( proc
ファイルシステムとも呼ばれます)には、カーネルの現在の状態を表す特別なファイルの階層が含まれており、アプリケーションとユーザーがシステムのカーネルビューにピア接続できるようにします。
/proc/
ディレクトリー内で、システムのハードウェアと現在実行しているプロセスの詳細情報を見つけることができます。さらに、/proc/
ディレクトリーツリー内のファイルの一部をユーザーおよびアプリケーションが操作して、設定の変更をカーネルに通信できます。
5.1. 仮想ファイルシステム
/proc/
ディレクトリーには、仮想 ファイル と呼ばれる別のタイプのファイルが含まれます。このため、/proc/
は 仮想ファイルシステム と呼ばれることがよくあります。
/proc/interrupts
、/proc/meminfo
、/proc/mounts
、および /proc/partitions
などの仮想ファイルは、システムのハードウェアを最大から移動できます。/proc/filesystems
ファイルや /proc/sys/
ディレクトリーなどの他の場合は、システム設定情報とインターフェイスを提供します。
/proc/ide/
には、すべての物理 IDE デバイスの情報が含まれます。同様に、プロセスディレクトリーには、システムで実行している各プロセスに関する情報が含まれます。
5.1.1. 仮想ファイルの表示
/proc/
ディレクトリー内のファイルで cat コマンド、より多く の、または less コマンドを使用すると、ユーザーはシステムに関する膨大な量の情報にすぐにアクセスできます。たとえば、コンピューターが持つ CPU のタイプを表示するには、cat /proc/cpuinfo と入力して、以下のような出力を受信します。
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
/proc/
ファイルシステムでさまざまな仮想ファイルを表示すると、人間が判読できないものの、一部の情報を簡単に理解できます。これは、仮想ファイルからデータを取得し、それを便利な方法で表示するユーティリティーが存在する理由の一部です。このユーティリティーの例には、lspci、apm、free、および top が含まれます。
/proc/
ディレクトリー内の仮想ファイルの一部は、root ユーザーのみが読み取り可能です。
5.1.2. 仮想ファイルの変更
/proc/
ディレクトリー内のほとんどの仮想ファイルは読み取り専用です。ただし、一部の を使用してカーネルの設定を調整することができます。これは、/proc/sys/
サブディレクトリー内のファイルに対して特に当てはまります。
echo www.example.com > /proc/sys/kernel/hostname
0
または 1
のいずれかが返されます。0
は、カーネルがネットワークパケットを転送していないことを示します。echo コマンドを使用して ip_forward
ファイルの値を 1
に変更すると、すぐにパケット転送が有効になります。
/proc/sys/
サブディレクトリーで設定を変更するために使用されるもう 1 つのコマンドは、/sbin/sysctl です。このコマンドの詳細については、を参照してください。 「sysctl コマンドの使用」
/proc/sys/
サブディレクトリーで利用可能なカーネル設定ファイルの一部の一覧は、「 /proc/sys/
」 を参照してください。
5.1.3. プロセスディレクトリーへのアクセス制限
/proc/
に保存されているプロセスディレクトリーを保護し、root
ユーザーのみが表示できるようにすることが便利なことがよくあります。hidepid
オプションを使用すると、これらのディレクトリーへのアクセスを制限できます。
-o remount
オプションを指定して実行します。root
で以下のコマンドを実行します。
mount-o remount
,hidepid
=value/proc
hidepid
に渡される 値 は以下のいずれかになります。
0
(デフォルト): すべてのユーザーが、プロセスディレクトリーに保存されている全ユーザーが読み取り可能なファイルを読み取ることができます。1
- ユーザーは自分のプロセスディレクトリーにのみアクセスできます。これにより、cmdline
、sched
、またはstatus
などの機密ファイルが root 以外のユーザーによるアクセスから保護されます。この設定は、実際のファイルパーミッションには影響しません。2
- プロセスファイルは、root 以外のユーザーには表示されません。プロセスの存在は他の手段で学習できますが、有効な UID と GID は非表示になっています。これらの ID を非表示にすると、侵入者が実行中のプロセスに関する情報を収集するタスクが複雑になります。
例5.1 プロセスディレクトリーへのアクセス制限
root
ユーザーのみがプロセスファイルにアクセスできるようにするには、以下を入力します。
~]# mount-o remount
,hidepid
=1
/proc
hidepid
=1
を使用すると、root 以外のユーザーはプロセスディレクトリーのコンテンツにアクセスできません。これを試みると、以下のメッセージで失敗します。
~]$ ls /proc/1/
ls: /proc/1/: Operation not permitted
hidepid
=2
を有効にすると、root 以外のユーザーにプロセスディレクトリーが非表示になります。
~]$ ls /proc/1/
ls: /proc/1/: No such file or directory
hidepid
が 1 または 2 に設定されている場合でも、ファイルを処理するユーザーグループを指定できます。これを行うには、gid
オプションを使用します。root
で以下のコマンドを実行します。
mount-o remount
,hidepid
=value,gid
=gid/proc
hidepid
が 0 に設定されているかのように動作します。ただし、システム全体のタスクを監視しないユーザーは、グループに追加しないでください。ユーザーおよびグループの管理に関する詳細は、37章ユーザーとグループ を参照してください。
5.2. proc
ファイルシステム内のトップレベルファイル
/proc/
ディレクトリーの最上位にある、より有用な仮想ファイルの一覧です。
5.2.1. /proc/apm
1.16 1.2 0x07 0x01 0xff 0x80 -1% -1 ?
APM BIOS 1.2 (kernel driver 1.16ac) AC on-line, no system battery
1.16 1.2 0x03 0x01 0x03 0x09 100% -1 ?
apm
ファイルの内容は以下のように変更されます。
1.16 1.2 0x03 0x00 0x00 0x01 99% 1792 min
APM BIOS 1.2 (kernel driver 1.16) AC off-line, battery status high: 99% (1 day, 5:52)
5.2.2. /proc/buddyinfo
DMA
行は、システムの最初の 16 MB を参照し、HighMem
行はシステム上の 4 GB を超えるすべてのメモリーを参照し、Normal
行は の間のすべてのメモリーを参照します。
/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 ...
5.2.3. /proc/cmdline
/proc/cmdline
ファイルの例を以下に示します。
ro root=/dev/VolGroup00/LogVol00 rhgb quiet 3
- ro
- ルートデバイスは、システムの起動時に読み取り専用でマウントされます。カーネルブート行に
ro
が存在すると、rw
のインスタンスが上書きされます。 - root=/dev/VolGroup00/LogVol00
- これは、どのディスクデバイスを使用するか、この場合は論理ボリューム(root ファイルシステムイメージがある)を指示します。
/proc/cmdline
の出力例では、root ファイルシステムイメージは、最初の LVM ボリュームグループ(VolGroup00
)の最初の論理ボリューム(LogVol00
)にあります。論理ボリューム管理を使用しないシステムでは、root ファイルシステムが/dev/sda1
または/dev/sda2
に置かれている可能性があります。つまり、そのドライブ上で別の(事前の)起動パーティションまたは swap パーティションがあるかどうかによって、最初の SCSI ディスクドライブまたは SATA ディスクドライブの最初のパーティションまたは 2 番目のパーティションのいずれかになります。Red Hat Enterprise Linux で使用される LVM の詳細は、http://www.tldp.org/HOWTO/LVM-HOWTO/index.html を参照してください。 - rhgb
- Red Hat グラフィカル ブートを表す短い小文字の acronym で、カーネルコマンドラインで "rhgb" を指定すると、
/etc/inittab
でデフォルトのランレベルが 5 に設定されていることが前提となります。id:5:initdefault:
- quiet
- 起動時に非常に深刻なカーネルメッセージ以外のすべての詳細なカーネルメッセージを表示しないことを示します。
5.2.4. /proc/cpuinfo
/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
プロセッサー
: 各プロセッサーに識別番号を提供します。プロセッサーが 1 つあるシステムでは、0
のみが存在します。CPU ファミリー
: 作成者はシステム内のプロセッサーのタイプを識別します。Intel ベースのシステムの場合は、値を決定するために、86 の前に番号を付けます。これは、586、486、386 などの古いシステムのアーキテクチャーを特定しようとする場合に特に役立ちます。特定のアーキテクチャーごとに RPM パッケージがコンパイルされているので、この値はユーザーがインストールするパッケージを決定するのに役立ちます。モデル名
: プロジェクト名を含むプロセッサーの共通名を表示します。CPU MHz
- プロセッサーの megahertz の正確な速度を数十小数点に表示します。キャッシュサイズ
: プロセッサーで利用可能なレベル 2 のメモリーキャッシュの量を表示します。siblings
: ハイパースレッディングを使用するアーキテクチャーの同じ物理 CPU 上のシブリング CPU の数を表示します。フラグ
: 浮動小数点ユニット(FPU)の存在や MMX 命令を処理する機能など、プロセッサーに関するさまざまな特性を定義します。
5.2.5. /proc/crypto
/proc/crypto
ファイルは以下のようになります。
name : sha1 module : kernel type : digest blocksize : 64 digestsize : 20 name : md5 module : md5 type : digest blocksize : 64 digestsize : 16
5.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
/proc/devices
の出力には、デバイスのメジャー番号と名前が含まれており、Character devices
と Block devices
の 2 つの主要なセクションに分かれています。
- キャラクターデバイスにはバッファーは必要ありません。ブロックデバイスには利用可能なバッファーがあり、要求に対応する前にそれらを順序付けできます。これは、ハードドライブなどの情報を保存するために設計されたデバイスにとって重要です。デバイスに書き込む前に情報を順序付ける機能により、より効率的な順序で情報を配置することができるためです。
- キャラクターデバイスは、サイズが事前設定されていないデータを送信します。ブロックデバイスは、デバイスごとに設定されたサイズのブロック内の情報を送受信できます。
/usr/share/doc/kernel-doc-<version>/Documentation/devices.txt
5.2.7. /proc/dma
/proc/dma
ファイルは以下のようになります。
4: cascade
5.2.8. /proc/execdomains
0-0 Linux [kernel]
PER_LINUX
実行ドメインを除き、さまざまなパーソナリティーを動的にロード可能なモジュールとして実装できます。
5.2.9. /proc/fb
/proc/fb
の一般的な出力は以下のようになります。
0 VESA VGA
5.2.10. /proc/filesystems
/proc/filesystems
ファイルからの出力例を以下に示します。
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
nodev
で始まるものは、デバイスにマウントされません。2 番目のコラムには、サポートされているファイルシステムの名前が記載されています。
5.2.11. /proc/interrupts
/proc/interrupts
は以下のようになります。
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
XT-PIC
: これは古い AT コンピューター割り込みです。IO-APIC-edge
- この割り込みの電圧シグナルは低から高に移行され、割り込みが発生して 1 回だけシグナルを受ける エッジ が作成されます。この種の割り込みとIO-APIC レベル
の割り込みは、586 ファミリー以降のプロセッサーを持つシステムでのみ表示されます。IO-APIC-level
- シグナルが再び低いまで電圧シグナルが高い場合に割り込みを生成します。
5.2.12. /proc/iomem
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
5.2.13. /proc/ioports
/proc/ioports
の出力は、デバイスとの入出力通信に使用される現在登録されているポートリージョンの一覧を提供します。このファイルは非常に長くなる可能性があります。以下は部分的なリストです。
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
5.2.14. /proc/kcore
/proc/
ファイルとは異なり、kcore
はサイズを表示します。この値はバイト単位で指定され、使用される物理メモリー(RAM)のサイズに 4 KB を加えたサイズと同じです。
/proc/kcore
仮想ファイルは表示しないでください。端末上のファイルの Sramble テキスト出力の内容。このファイルが誤って表示されたら、Ctrl+C を押してプロセスを停止し、reset と入力してコマンドラインプロンプトを元に戻します。
5.2.15. /proc/kmsg
5.2.16. /proc/loadavg
/proc/loadavg
ファイルの例を以下に示します。
0.20 0.18 0.12 1/80 11206
5.2.17. /proc/locks
/proc/locks
ファイルの例を以下に示します。
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
FLOCK
は flock システムコールからの古いスタイルの UNIX ファイルロックを示し、lockf システムコールから新しい POSIX
ロックを表します。
ADVISORY
または MANDATORY
の 2 つの値を指定できます。ADVISORY
は、ロックが他のユーザーがデータにアクセスできないことを意味します。他のユーザーがロックするのを防ぐだけです。MANDATORY
は、ロックが保持される間、データへの他のアクセスが許可されないことを意味します。4 番目のコラムは、ロックが所有者の READ
または WRITE
アクセスを許可するかどうかを示します。5 番目のコラムには、ロックを保持するプロセスの ID が表示されます。6 番目のコラムには、ロックされているファイルの ID が MAJOR-DEVICE:MINOR-DEVICE:INODE-NUMBER
の形式で表示されます。7 番目と 8 番目のコラムは、ファイルのロックされたリージョンの開始と終了を示しています。
5.2.18. /proc/mdstat
/proc/mdstat
は以下のようになります。
Personalities : read_ahead not set unused devices: <none>
md
デバイスが存在しない限り、上記と同じ状態のままになります。この場合は、/proc/mdstat
を表示して、mdX
RAID デバイスの現在の状態を見つけます。
/proc/mdstat
ファイルは、md0
が RAID 1 デバイスとして設定されているシステムを示していますが、現在ディスクを再同期しています。
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>
5.2.19. /proc/meminfo
/proc/
ディレクトリーで一般的に使用されるファイルの 1 つです。
/proc/meminfo
仮想ファイルの例は、256 MB の RAM と 512 MB のスワップ領域があるシステムのものです。
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
/proc/meminfo
の内容と構造と同様のものです。ただし、/proc/meminfo
で直接確認すると、詳細が表示されます。
MemTotal
: 物理 RAM の合計容量(キロバイト単位)。MemFree
- システムが使用していない物理メモリーの量(キロバイト単位)。バッファー
- ファイルバッファーに使用される物理 RAM の容量(キロバイト単位)。cached
- キャッシュメモリーとして使用される物理メモリーの量(キロバイト単位)。SwapCached
: キャッシュメモリーとして使用されるスワップの量(キロバイト単位)。Active
- アクティブな使用時のバッファーまたはページキャッシュメモリーの合計量(キロバイト単位)。これは最近使用されたメモリーであり、通常は他の目的で回収されません。inactive
- 空きかつ利用可能なバッファーまたはページキャッシュメモリーの合計量(キロバイト単位)。これは最近使用されていないメモリーであり、他の目的で回収できます。HighTotal
andHighFree
: カーネル領域に直接マッピングされないメモリーの合計および空き容量(キロバイト単位)。HighTotal
値は、使用されるカーネルのタイプによって異なります。LowTotal
andLowFree
: カーネル領域に直接マップされるメモリーの合計および空き容量(キロバイト単位)。LowTotal
値は、使用されるカーネルのタイプによって異なります。SwapTotal
- 利用可能なスワップの合計量(キロバイト単位)。swapfree
- 空きスワップの合計量(キロバイト単位)。dirty
: ディスクに書き戻されるのを待つメモリーの合計量(キロバイト単位)。writeback -
ディスクにアクティブに書き込むメモリーの合計量(キロバイト単位)。mapped
- mmap コマンドを使用してデバイス、ファイル、またはライブラリーをマッピングするために使用されたメモリーの合計量(キロバイト単位)。slab -
カーネルが独自の使用のためにデータ構造をキャッシュするために使用するメモリーの合計量(キロバイト単位)。Committed_AS
: ワークロードの完了に推定されるメモリーの合計量(キロバイト単位)。この値は最も悪いケースのシナリオ値を表し、スワップメモリーも含まれます。pagetables
- 最小のページテーブルレベル専用のメモリーの合計量(キロバイト単位)。VMallocTotal
- 割り当てられた仮想アドレス空間の合計量(キロバイト単位)。VMallocUsed
- 使用されている仮想アドレス空間の合計量(キロバイト単位)。VMallocChunk
: 利用可能な仮想アドレス空間の最大連続するメモリーブロック(キロバイト単位)。HugePages_Total
: システムのヒュージページの合計数この数は、/proc/sys/vm/hugetlb_pool
で指定されたヒュージページ用に確保されるメガバイト単位で dividing----------|-----size
によって派生します。この統計は、x86、Itanium、および AMD64 アーキテクチャーにのみ表示されます。HugePages_Free
: システムで利用可能なヒュージページの合計数この統計は、x86、Itanium、および AMD64 アーキテクチャーにのみ表示されます。ubuntusize
- 各ヒュージページユニットのサイズ(キロバイト単位)。デフォルトでは、32 ビットアーキテクチャーの uniprocessor カーネルでは、値は 4096 KB です。SMP、hugemem カーネル、および AMD64 の場合、デフォルトは 2048 KB です。Itanium アーキテクチャーの場合、デフォルトは 262144 KB です。この統計は、x86、Itanium、および AMD64 アーキテクチャーにのみ表示されます。
5.2.20. /proc/misc
63 device-mapper 175 agpgart 135 rtc 134 apm_bios
5.2.21. /proc/modules
/proc/modules
ファイル出力と同様の方法で整理する必要があります。
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
oprofile
などのプロファイリングツールに役立ちます。
5.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
/etc/mtab
の内容と似ていますが、/proc/mount
が最新です。
ro
)または読み取り/書き込み(rw
)がマウントされているかどうかを示します。5 番目と 6 番目の列は、/etc/mtab
で使用される形式に一致するように設計されたダミー値です。
5.2.23. /proc/mtrr
/proc/mtrr
ファイルは以下のようになります。
reg00: base=0x00000000 ( 0MB), size= 256MB: write-back, count=1 reg01: base=0xe8000000 (3712MB), size= 32MB: write-combining, count=1
/proc/mtrr
ファイルにより、150% を超えるパフォーマンスが向上します。
/usr/share/doc/kernel-doc-<version>/Documentation/mtrr.txt
5.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
: このパーティションを持つデバイスのメジャー番号。/proc/partitions
のメジャー番号(3
)は、/proc/devices
のブロックデバイスide0
に対応します。minor
: このパーティションを持つデバイスのマイナー番号。これは、パーティションを異なる物理デバイスに分割し、パーティション名の末尾の番号に関連するものです。#blocks
- 特定のパーティションに含まれる物理ディスクブロックの数を一覧表示します。名前
- パーティションの名前。
5.2.25. /proc/pci
/proc/pci
が長くなる可能性があります。基本的なシステムからのこのファイルのサンプリングは以下のようになります。
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.
lspci -vb
5.2.26. /proc/slabinfo
/proc/slabinfo
ファイルを手動で解析する代わりに、/usr/bin/slabtop
プログラムはカーネルスラブキャッシュ情報をリアルタイムで表示します。このプログラムは、列のソートや画面のリフレッシュなど、カスタム設定を行うことができます。
/usr/bin/slabtop
のスクリーンショットは以下のようになります。
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
/usr/bin/slabtop
に含まれる /proc/slabinfo
で、より一般的に使用される統計の一部は次のとおりです。
OBJS
- 使用中のオブジェクト(メモリーブロック)や使用されていないスペアを含むオブジェクトの合計数(メモリーブロック)。ACTIVE
- 使用中のオブジェクト(メモリーブロック)の数(割り当て済み)USE
- アクティブなオブジェクトの合計パーセンテージ((ACTIVE/OBJS) (100))OBJ SIZE
- オブジェクトのサイズSLABS
: スラブの合計数。OBJ/SLAB
: スラブに適合するオブジェクト数。CACHE SIZE
: スラブのキャッシュサイズ。NAME
- slab の名前。
/usr/bin/slabtop
プログラムの詳細は、slabtop
の man ページを参照してください。
5.2.27. /proc/stat
/proc/stat
の内容は通常、以下の例のように開始します。
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
- システムがユーザーモード、低優先度(nice)、システムモード、アイドルタスク、I/O 待機、IRQ (hardirq)、softirq になっている jiffies の数(1/100)を表します。IRQ (hardirq)は、ハードウェアイベントへの直接応答です。IRQ は、softirq の実行で大きさの作業をキューに入れるには最小限の作業を行います。softirq は IRQ よりも優先度が低いため、頻繁に中断される可能性があります。すべての CPU の合計は上部に表示され、各 CPU は以下の独自の統計と共に一覧表示されます。以下の例は、マルチスレッドが有効な 4 方向の Intel Pentium Xeon 設定であるため、4 つの物理プロセッサーと、合計 8 つのプロセッサー 4 つの仮想プロセッサーを表示します。ページ
- システムがディスクに書き込んだメモリーページ数。swap
: システムが送受信したスワップページの数。intr
- システムが経験した割り込みの数。btime
- 起動時間(1970 年 1 月 1 日からの秒数で測定)で、それ以外は エポック と呼ばれています。
5.2.28. /proc/swaps
/proc/swaps
の出力は以下のようになります。
Filename Type Size Used Priority /dev/mapper/VolGroup00-LogVol01 partition 524280 0 -1
/proc/
ディレクトリー内の他のファイルにありますが、/proc/swaps
は各スワップファイル名のスナップショット、スワップ領域のタイプ、合計サイズ、および使用中の領域のサイズ(キロバイト単位)を提供します。優先度の列は、複数のスワップファイルが使用されている場合に役立ちます。優先度が低いほど、スワップファイルが使用される可能性が高くなります。
5.2.29. /proc/sysrq-trigger
/proc/sys/kernel/sysrq
を 0
以外の値に設定する必要があります。システム要求キーの詳細は、「 /proc/sys/kernel/
」 を参照してください。
5.2.30. /proc/uptime
/proc/uptime
の出力は非常に最小限です。
350735.47 234388.90
5.2.31. /proc/version
gcc
のバージョンと、システムにインストールされている Red Hat Enterprise Linux のバージョンを指定します。
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
5.3. /proc/
内のディレクトリー
/proc/
ディレクトリー内のディレクトリーおよびサブディレクトリーにグループ化されます。
5.3.1. プロセスディレクトリー
/proc/
ディレクトリーには、数値名を持つディレクトリーが多数含まれます。これらのリストは、以下のようになります。
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
/proc/
プロセスディレクトリーが消失します。
cmdline
- プロセスの起動時に発行されたコマンドが含まれます。CWD
: プロセスの現在の作業ディレクトリーへのシンボリックリンク。environ
: プロセスの環境変数の一覧。環境変数はすべての大文字で指定され、値は小文字です。exe
: このプロセスの実行ファイルへのシンボリックリンクです。fd
: 特定のプロセスのファイル記述子をすべて含むディレクトリー。番号付きのリンクには、以下のものがあります。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
: このプロセスに関連するさまざまな実行ファイルおよびライブラリーファイルにマップするメモリーの一覧。プロセスの複雑さによっては、このファイルが長くなる可能性がありますが、sshd プロセスからの出力例は以下のように始まります。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
: プロセスによって保持されるメモリー。このファイルはユーザーが読み取ることはできません。root
: プロセスのルートディレクトリーへのリンク。stat
- プロセスのステータスstatm
- プロセスによって使用されているメモリーのステータス以下は、/proc/statm
ファイルの例です。263 210 210 5 0 205 0
7 列は、プロセスの異なるメモリー統計に関連します。左から右に、使用されているメモリーの次の側面を報告します。- プログラムの合計サイズ(キロバイト単位)。
- メモリー部分のサイズ(キロバイト単位)。
- 共有されるページ数。
- コードであるページ数。
- データ/スタックページ数。
- ライブラリーページ数。
- ダーティーページの数。
status
-stat
またはstatm
よりも読み取り可能な形式のプロセスのステータス。sshd の出力例を以下に示します。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
この出力の情報には、プロセス名と ID、状態(S (sleeping)
、R (実行中)、プロセスを実行しているユーザー/グループ ID、メモリー使用量に関する詳細なデータ)
が含まれます。
5.3.1.1. /proc/self/
/proc/self/
ディレクトリーは、現在実行中のプロセスへのリンクです。これにより、プロセスはプロセス ID を把握せずに自身を確認することができます。
/proc/self/
ディレクトリーを一覧表示すると、そのプロセスのプロセスディレクトリーを一覧表示するのと同じコンテンツが生成されます。
5.3.2. /proc/bus/
/proc/bus/
pci/ などの同じ名前の /proc/bus/
サブディレクトリー内で利用できます。
/proc/bus/
内で使用できるサブディレクトリーとファイルは、システムに接続されているデバイスによって異なります。ただし、各バスタイプには少なくとも 1 つのディレクトリーがあります。これらのバスディレクトリー内には通常、バイナリーファイルを含む 001
などの数値名の少なくとも 1 つのサブディレクトリーがあります。
/proc/bus/usb/
サブディレクトリーには、USB バス上のさまざまなデバイスと、そのデバイスに必要なドライバーを追跡するファイルが含まれます。以下は、/proc/bus/usb/
ディレクトリーの一覧表示例です。
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
/proc/bus/usb/001/
ディレクトリーには、最初の USB バス上のすべてのデバイスが含まれ、デバイス
ファイルはマザーボード上の USB ルートハブを識別します。
/proc/bus/usb/devices
ファイルの例です。
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
5.3.3. /proc/driver/
rtc
で、システムの Real Time Clock (RTC) のドライバーからの出力を提供します。これは、システムがオフになった間に時間を維持するデバイスです。/proc/driver/rtc
からの出力例を以下に示します。
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
/usr/share/doc/kernel-doc-<version>/Documentation/rtc.txt
.
5.3.4. /proc/fs
5.3.5. /proc/ide/
/proc/ide/ide0
や /proc/ide/ide1
などの個別のディレクトリーとして表されます。さらに、ドライバー
ファイルを利用できます。これにより、IDE チャネルで使用されるさまざまなドライバーのバージョン番号が提供されます。
ide-floppy version 0.99. newide ide-cdrom version 4.61 ide-disk version 1.18
/proc/ide/piix
ファイルを生成し、IDE チャネルのデバイスに対して DMA または UDMA が有効になっているかどうかを示します。
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
ide0
などの IDE チャネルのディレクトリーに移動すると、追加情報が提供されます。チャネルファイルはチャネル
番号を提供し、モデル
はチャネルのバスタイプを特定します( pci
など)。
5.3.5.1. デバイスディレクトリー
/dev/
ディレクトリーのドライブ文字に対応します。たとえば、ide0
の最初の IDE ドライブは hda
になります。
/proc/ide/
ディレクトリーには、これらの各デバイスディレクトリーへのシンボリックリンクがあります。
cache
- デバイスキャッシュ。容量
- デバイスの容量(512 バイトブロック)。driver
- デバイスの制御に使用するドライバーおよびバージョンジオメトリー
- デバイスの物理的および論理ジオメトリー。メディア
-ディスク
などのデバイスのタイプ。model
- デバイスのモデル名または数。設定
- 現在のデバイスパラメーターのコレクション。通常、このファイルには非常に便利な技術情報が含まれています。標準 IDE ハードディスクの設定
ファイルのサンプルは以下のようになります。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
5.3.6. /proc/irq/
/proc/irq/prof_cpu_mask
ファイルは、IRQ ディレクトリー内の smp_affinity
ファイルのデフォルト値が含まれるビットマスクです。smp_affinity
の値は、その特定の IRQ を処理する CPU を指定します。
/proc/irq/
ディレクトリーの詳細は、以下のインストール済みドキュメントを参照してください。
/usr/share/doc/kernel-doc-<version>/Documentation/filesystems/proc.txt
5.3.7. /proc/net/
/proc/net/
ディレクトリーの部分的なリストです。
arp
: カーネルの ARP テーブルを一覧表示します。このファイルは、ハードウェアアドレスをシステムの IP アドレスに接続する際に特に便利です。- ATM
/
ディレクトリー - このディレクトリー内のファイルには Asynchronous Transfer Mode (ATM) の設定と統計が含まれます。このディレクトリーは、主に ATM ネットワークおよび ADSL カードで使用されます。 dev
: システムに設定したさまざまなネットワークデバイスの一覧を表示し、統計の送受信を完了します。このファイルは、各インターフェイスが送受信したバイト数、インバウンドおよびアウトバウンドのパケット数、発生したエラーの数、ドロップされたパケット数などを表示します。dev_mcast
- 各デバイスがリッスンしている Layer2 マルチキャストグループを一覧表示します。IGMP
: このシステムが参加する IP マルチキャストアドレスを一覧表示します。ip_conntrack
- IP 接続を転送するマシンの追跡されたネットワーク接続を一覧表示します。ip_tables_names
- 使用中の iptables のタイプを一覧表示します。このファイルは、iptables がシステムでアクティブで、1 つ以上の値(filter
、mangle
、またはnat
)が含まれる場合にのみ存在します。ip_mr_cache
- マルチキャストルーティングキャッシュを一覧表示します。ip_mr_vif
- マルチキャスト仮想インターフェイスを一覧表示します。netstat
: TCP タイムアウト、SYN クッキーの送受信など、非常に詳細なネットワーク統計収集が含まれます。psched
: グローバルパケットスケジューラーパラメーターを一覧表示します。raw
- raw デバイスの統計を一覧表示します。route
- カーネルのルーティングテーブルを一覧表示します。rt_cache
: 現在のルーティングキャッシュが含まれます。SNMP
: 使用中のさまざまなネットワークプロトコルの Simple Network Management Protocol (SNMP)データのリスト。sockstat
- ソケット統計を提供します。- TCP
:
詳細な TCP ソケット情報が含まれます。 tr_rif
- トークンリング RIF ルーティングテーブルを一覧表示します。- UDP
:
詳細な UDP ソケット情報が含まれます。 - UNIX
-
現在使用中の UNIX ドメインソケットを一覧表示します。 ワイヤレス - ワイヤレス
インターフェイスデータを一覧表示します。
5.3.8. /proc/scsi/
/proc/ide/
ディレクトリーに似ていますが、接続 SCSI デバイス用です。
/proc/scsi/scsi
で、認識されているすべての SCSI デバイスの一覧が含まれます。このリストから、デバイスのタイプ、モデル名、ベンダー、SCSI チャネル、および ID データが利用できます。
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
/proc/scsi/
内に独自のディレクトリーがあります。これには、そのドライバーを使用する各 SCSI コントローラーに固有のファイルが含まれます。上記の例では、2 つのドライバーが使用されているため、aic7xxx/
ディレクトリーおよび megaraid/
ディレクトリーが存在します。各ディレクトリーのファイルには、通常、そのドライバーを使用する SCSI コントローラーの I/O アドレス範囲、IRQ 情報、および統計が含まれます。各コントローラーは、異なるタイプおよび量の情報を報告することができます。この例の Adaptec AIC-7880 Ultra SCSI ホストアダプターの ファイルにより、以下の出力が生成されます。
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
5.3.9. /proc/sys/
/proc/sys/
ディレクトリーは、/proc/
の他のディレクトリーとは異なります。これは、システムに関する情報を提供するだけでなく、システム管理者がカーネル機能をすぐに有効および無効にできるためです。
/proc/sys/
ディレクトリーのさまざまなファイルを使用して実稼働システムの設定を変更する場合には注意が必要です。誤った設定を変更すると、カーネルが不安定になり、システムの再起動が必要になる場合があります。
/proc/sys/
の値を変更する前に、そのファイルに対してオプションが有効であることを確認してください。
-l
オプションを使用して一覧表示することです。ファイルが書き込み可能である場合、これを使用してカーネルを設定できます。たとえば、/proc/sys/fs
の部分的なリストは以下のようになります。
-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
dir-notify-enable
ファイルおよび file-max
ファイルを に書き込めるため、カーネルを設定するために使用できます。その他のファイルは、現在の設定に関するフィードバックのみを提供します。
/proc/sys/
ファイル内の値を変更するには、新しい値をファイルに echo します。たとえば、実行中のカーネルで System Request Key を有効にするには、以下のコマンドを入力します。
echo 1 > /proc/sys/kernel/sysrq
sysrq
の値が 0
(off)から 1
(on)に変わります。
/proc/sys/
設定ファイルには、複数の値が含まれています。新しい値を正しく送信するには、echo コマンドで渡される各値の間に空白文字を配置します。以下に例を示します。
echo 4 2 45 > /proc/sys/kernel/acct
/proc/sys/
ディレクトリーには、実行中のカーネルのさまざまな側面を制御するサブディレクトリーが複数含まれています。
5.3.9.1. /proc/sys/dev/
cdrom/
と raid/
の少なくとも 2 つのディレクトリーがあります。カスタマイズされたカーネルには、parport/
などの他のディレクトリーを設定できます。これにより、複数のデバイスドライバー間で 1 つの並列ポートを共有できます。
cdrom/
ディレクトリーには、いくつかの重要な CD-ROM パラメーターを示す info
というファイルが含まれます。
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
/proc/sys/dev/cdrom
内のさまざまなファイル( autoclose
や checkmedia
など)を使用して、システムの CD-ROM を制御できます。これらの機能を有効または無効にするには、echo コマンドを使用します。
/proc/sys/dev/raid/
ディレクトリーが少なくとも 2 つのファイル( speed_limit_min
および speed_limit_max
)で利用できます。この設定により、ディスクの再同期など、I/O 集約タスク用の RAID デバイスのアクセラレーションを決定します。
5.3.9.2. /proc/sys/fs/
binfmt_misc/
ディレクトリーは、その他のバイナリー形式のカーネルサポートを提供するために使用されます。
/proc/sys/fs/
の重要なファイルには、以下が含まれます。
dentry-state
: ディレクトリーキャッシュのステータスを指定します。ファイルは以下のようになります。57411 52939 45 0 0 0
最初の番号は、ディレクトリーキャッシュエントリーの合計数を示し、2 番目の番号には未使用のエントリーの数が表示されます。3 番目の番号は、ディレクトリーが解放された場合と回収可能な時点までの秒数を示し、システムによって現在要求されたページを 4 番目に測定します。最後の 2 つの数字は使用されず、ゼロのみを表示します。- D
quot-nr
: キャッシュされたディスククォータエントリーの最大数を一覧表示します。 file-max
: カーネルが割り当てるファイルハンドルの最大数を一覧表示します。このファイルの値を増やすと、利用可能なファイルハンドルがないためにエラーを解決できます。file-nr
: 割り当てファイルハンドルの数、使用済みファイルハンドル、およびファイルハンドルの最大数を一覧表示します。overflowgid
およびoverflowuid
: 16 ビットグループとユーザー ID のみをサポートするファイルシステムで使用するために、それぞれ固定グループ ID とユーザー ID を定義します。super-max
: 利用可能なスーパーブロックの最大数を制御します。super-nr
: 現在使用中のスーパーブロックの数を表示します。
5.3.9.3. /proc/sys/kernel/
acct
- ログを含むファイルシステムで利用可能な空き領域の割合に基づいて、プロセスアカウンティングの一時停止を制御します。デフォルトでは、ファイルは以下のようになります。4 2 30
最初の値は、ロギングの再開に必要な空き容量の割合を決定し、2 番目の値はロギングが一時停止されたときの空き領域のしきい値パーセンテージを設定します。3 番目の値は、カーネルがファイルシステムをポーリングして、ロギングを一時停止または再開する必要があるかどうかを確認する間隔を秒単位で設定します。cap-bound
: システム上のプロセス の機能 一覧を提供する機能バウンディング設定を制御します。機能がここに一覧表示されていない場合は、特権の種類に関係なく、プロセスが実行できません。これは、ブートプロセスの特定地点を超えた特定の事態を確実に行わないようにすることで、システムをよりセキュアにすることです。この仮想ファイルの有効な値の一覧については、以下のインストール済みドキュメントを参照してください。/lib/modules/<kernel-version>/build/include/linux/capability.h
.Ctrl-alt-del -
Ctrl+Alt+Delete で init (0
)を使用してコンピューターを正常に再起動するか、ダーティーバッファーをディスクと同期せずに直ちに再起動を行うか(1
)を制御します。- domainName:
example.com
などのシステムドメイン名を設定します。 exec-shield
- カーネルの Exec Shield 機能を設定します。exec Shield は、特定タイプのバッファーオーバーフロー攻撃に対する保護を提供します。この仮想ファイルには、以下の 2 つの値を使用できます。- 0 - Exec Shield を無効にします。
- 1 - Exec Shield を有効にします。これはデフォルト値です。
重要な影響Exec Shield が無効になっている間に起動したセキュリティーの影響を受けるアプリケーションを実行している場合は、Exec Shield を有効にするために Exec Shield が有効な場合にこれらのアプリケーションを再起動する必要があります。exec-shield-randomize
- メモリー内のさまざまな項目の場所のランダム化を有効にします。これにより、潜在的な攻撃者がメモリー内のプログラムやデーモンを見つけるのを防ぐことができます。プログラムまたはデーモンが起動するたびに、静的メモリーまたは絶対メモリーアドレスで決して、毎回異なるメモリーの場所に配置されます。この仮想ファイルには、以下の 2 つの値を使用できます。- 0 - Exec Shield のランダム化を無効にします。これは、アプリケーションのデバッグに役立ちます。
- 1 - Exec Shield のランダム化を有効にします。これはデフォルト値です。注記:
exec-shield
-randomize を有効にするには、exec-shield
ファイルも 1 に設定する必要があります。
hostname
-www.example.com
などのシステムホスト名を設定します。ホットプラグ
: システムによって設定の変更が検出されたときに使用されるユーティリティーを設定します。これは主に USB および Cardbus PCI で使用されます。このロールを実行するために新しいプログラムをテストしない限り、デフォルト値の/sbin/hotplug
は変更しないでください。modprobe
- カーネルモジュールの読み込みに使用するプログラムの場所を設定します。デフォルト値は/sbin/modprobe
で、カーネルスレッドが kmod を呼び出すときにモジュールをロードするために kmod を呼び出すことを意味します。msgmax
: あるプロセスから別のプロセスに送信されるメッセージの最大サイズを設定し、デフォルトでは8192
バイトに設定されます。プロセス間のキューに置かれたメッセージはスワップ不可能なカーネルメモリーに保存されるため、この値を引き上げる際には注意してください。msgmax
を増やすと、システムの RAM 要件が増えます。msgmnb
- 1 つのメッセージキューに最大バイト数を設定します。デフォルトは16384
です。MSGMNI
: メッセージキュー識別子の最大数を設定します。デフォルトは16
です。osrelease
: Linux カーネルのリリース番号を一覧表示します。このファイルは、カーネルソースを変更して再コンパイルするだけで変更できます。OSType
: オペレーティングシステムの種類を表示します。デフォルトでは、このファイルはLinux
に設定されています。この値は、カーネルソースを変更して再コンパイルするだけで変更できます。overflowgid
およびoverflowuid
: 16 ビットグループとユーザー ID のみをサポートするアーキテクチャーのシステムコールで使用するために、それぞれ固定グループ ID とユーザー ID を定義します。panic
- システムがカーネルパニックが発生したときにカーネルが再起動を延期する秒数を定義します。デフォルトでは、値は0
に設定されています。これにより、パニック後の自動再起動が無効になります。printk
: このファイルは、エラーメッセージの出力またはロギングに関連するさまざまな設定を制御します。カーネルによって報告される各エラーメッセージには、メッセージ の重要性を定義するログレベルが関連付けられています。ログレベルの値は、以下の順序で分類されます。0
- カーネル緊急。システムが利用できません。1
- カーネルアラート。すぐに対処する必要があります。2
- 重大な問題があると見なされるカーネルの状態。3
- 一般的なカーネルエラー状態。4
- 一般的なカーネルの警告状態。5
- 正常だが重大な状態のカーネル通知。6
: カーネル情報メッセージ。7
- カーネルのデバッグレベルのメッセージ。
printk
ファイルには 4 つの値があります。6 4 1 7
これらの値はそれぞれ、エラーメッセージを処理するための異なるルールを定義します。コンソールログレベル と呼ばれる最初の値は 、コンソール に出力されるメッセージの最も低い優先度を定義します。(優先順位が低いほど、ログレベル番号が高いことに注意してください。) 2 番目の値は、明示的なログレベルが付いていないメッセージのデフォルトログレベルを設定します。3 番目の値は、コンソールログレベルに可能な限り低いログレベル設定を設定します。最後の値は、コンソールログレベルのデフォルト値を設定します。random/
ディレクトリー:カーネルの乱数の生成に関連する多数の値を一覧表示します。rtsig-max
- いつでもシステムがキューに置かれた可能性のある POSIX リアルタイムシグナルの最大数を設定します。デフォルト値は1024
です。rtsig-nr
- カーネルによってキューに入れられた POSIX リアルタイムシグナルの現在の数を一覧表示します。sem
- カーネル内でセ マフォ を設定します。セマフォとは、特定のプロセスの使用状況を制御するために使用される System V IPC オブジェクトです。shmall
: システム全体で使用できる共有メモリーページの合計量を設定します。デフォルトでは、この値は2097152
です。shmmax
- カーネルで許可される最大共有メモリーセグメントサイズを設定します。デフォルトでは、この値は33554432
です。ただし、カーネルは、これよりもはるかに大きな値をサポートします。SHMMN
I: システム全体で共有メモリーセグメントの最大数を設定します。デフォルトでは、この値は4096
です。ubuntu
: この値がゼロ(0
)以外の値に設定されている場合は、システム要求キーを有効にします。System Request Key を使用すると、単純なキーの組み合わせでカーネルに即時入力できます。たとえば、System Request Key を使用すると、システムを直ちにシャットダウンまたは再起動したり、マウントされたすべてのファイルシステムを同期したり、コンソールに重要な情報をダンプしたりできます。System Request Key を開始するには、Alt+ system request code> と入力します 。< ;system request code> を、以下のシステム要求コードのいずれかに置き換えます。- r - キーボードの raw モードを無効にし、これを XLATE に設定します(すべてのキーで Alt、Ctrl、または Shift など、Alt、Ctrl、Shift など)は認識しません。
- k - 仮想コンソールでアクティブなすべてのプロセスを強制終了します。SAK( Secure Access Key )とも呼ばれ、ユーザー名とパスワードを取得するように設計された Trojan コピーではなく、init からログインプロンプトが生成されることを確認するために使用されます。
- b - 最初にファイルシステムのマウントを解除したり、システムに接続されているディスクを同期したりせずにカーネルを再起動します。
- c - 最初にファイルシステムのマウントを解除したり、システムに接続されているディスクを同期したりせずにシステムがクラッシュします。
- o - システムをシャットオフします。
- s: システムに接続されているディスクの同期を試みます。
- u - すべてのファイルシステムのアンマウントと再マウントを読み取り専用として試行します。
- p: すべてのフラグを出力し、コンソールに登録します。
- T: コンソールにプロセスの一覧を出力します。
- m: コンソールにメモリー統計を出力します。
- 0 から 9: コンソールのログレベルを設定します。
- e: SIGTERM を使用して init 以外のすべてのプロセスを強制終了します。
- i - SIGKILL を使用して init 以外のすべてのプロセスを強制終了します。
- l - SIGKILL ( initを含む)を使用してすべてのプロセスを強制終了します。この System Request Key コードを発行すると、システムは使用できなくなります。
- H: ヘルプテキストを表示します。
この機能は、開発カーネルを使用する場合や、システムのフリーズが発生した場合に最も有益です。注意無人コンソールは攻撃者にシステムにアクセスできるため、System Request Key 機能はセキュリティーリスクとみなされます。このため、デフォルトでは無効になっています。システム要求キーの詳細は、/usr/share/doc/kernel-doc- <version> /Documentation/sysrq.txt
を参照してください。ubuntu-key
: System Request Key のキーコードを定義します(84
がデフォルトです)。ubuntu-sticky
: システム要求キーが予約されたキーの組み合わせかどうかを定義します。許可される値は以下のとおりです。0
: Alt+とシステム 要求コードを同時に押す必要があります。これはデフォルト値です。1
- Alt+0 -9] は同時に押す必要がありますが、/proc/sys/kernel/sysrq-timer
elapses で指定する秒数の前に、システム要求コードはいつでも押します。
ubuntu-timer
- システムリクエストコードをスキップするまでに許可される秒数を指定します。デフォルト値は 10 です。tainted
: GPL 以外のモジュールが読み込まれているかどうかを示します。0
- GPL 以外のモジュールがロードされません。1
- GPL ライセンスのない少なくとも 1 つのモジュール(ライセンスのないモジュールを含む)が読み込まれます。2
- 少なくとも 1 つのモジュールが insmod -f コマンドで強制的に読み込まれました。
threads-max
: デフォルト値の2048
で、カーネルが使用するスレッドの最大数を設定します。version
- カーネルが最後にコンパイルされた日時を表示します。#3
など、このファイルの最初のフィールドは、カーネルがソースベースからビルドされた回数に関連しています。
5.3.9.4. /proc/sys/net/
イーサネット/、ipv 4/、ipx/
、ipv
6/
などの異なるディレクトリーがここで利用可能になります。これらのディレクトリー内のファイルを変更することで、システム管理者は実行中のシステムでネットワーク設定を調整できます。
/proc/sys/net/
ディレクトリーのみについて説明します。
/proc/sys/net/core/
ディレクトリーには、カーネルとネットワーク層間の相互作用を制御するさまざまな設定が含まれています。これらのファイルの最も重要なものは以下のとおりです。
message_burst
: 新しい警告メッセージを書き込むために必要な 10 秒の時間を設定します。この設定は、サービス 拒否(DoS )攻撃を軽減するために使用されます。デフォルト設定は50
です。message_cost
- すべての警告メッセージにコストを設定します。このファイルの値が高い(デフォルトは5
)、警告メッセージが無視される可能性が高くなります。この設定は、DoS 攻撃を軽減するために使用されます。DoS 攻撃の概念は、ターゲットシステムにエラーを生成し、ログファイルでディスクパーティションを埋めるか、またはエラーログを処理するためにシステムのリソースをすべて要求する要求で調整することです。message_burst
およびmessage_cost
の設定は、システムの許容リスクと包括的なロギングの必要性に基づいて変更されるように設計されています。netdev_max_backlog
- 特定のインターフェイスがパケットを処理できるよりも早く受信した場合にキューに入れることができるパケットの最大数を設定します。このファイルのデフォルト値は300
です。optmem_max
: ソケットごとに許可される最大補助バッファーサイズを設定します。rmem_default
: 受信ソケットバッファーのデフォルトサイズをバイト単位で設定します。rmem_max
: 受信ソケットバッファーの最大サイズをバイト単位で設定します。wmem_default
: 送信ソケットバッファーのデフォルトサイズをバイト単位で設定します。wmem_max
: 送信ソケットバッファーサイズをバイト単位で設定します。
/proc/sys/net/ipv4/
ディレクトリーには、追加のネットワーク設定が含まれます。この設定の多くは、システムに対する攻撃を防止したり、システムをルーターとして機能させるために使用する場合に便利です。
/proc/sys/net/ipv4/
ディレクトリー内の重要なファイルの一部の一覧です。
icmp_destunreach_rate
、icmp_echoreply_rate
、icmp_paramprob_rate
、およびicmp_timeexeed_rate
- 特定の条件下でホストに最大 ICMP 送信パケットレートを設定します。設定0
は遅延を取り除くため、適切ではありません。icmp_echo_ignore_all
およびicmp_echo_ignore_broadcasts
- カーネルは、すべてのホストからの ICMP ECHO パケットを無視することや、ブロードキャストアドレスとマルチキャストアドレスから発信されたパケットのみを無視することを許可します。値が0
の場合はカーネルが応答し、1
の値はパケットを無視します。ip_default_ttl
- デフォルトの Time To Live (TTL) を設定します。これにより、宛先に到達する前にパケットが行うホップ数を制限します。この値を増やすと、システムパフォーマンスが低下する可能性があります。ip_forward
- システムのインターフェイスを許可して、パケットを相互に転送できるようにします。デフォルトでは、このファイルは0
に設定されています。このファイルを1
に設定すると、ネットワークパケットの転送が可能になります。ip_local_port_range
- ローカルポートが必要な場合に TCP または UDP が使用するポートの範囲を指定します。最初の番号は使用する一番小さいポートで、2 番目の番号は最高のポートを指定します。デフォルトの 1024 から 4999 よりも多くのポートを必要とすることが予想されるシステムでは、32768 から 61000 の範囲を使用する必要があります。tcp_syn_retries
- 接続の試行時にシステムが SYN パケットを再送信する回数に制限を指定します。tcp_retries1
- 受信接続への応答を試行する許可される再送信の数を設定します。デフォルトは3
です。tcp_retries2
- TCP パケットの許可される再送信数を設定します。デフォルトは15
です。
/usr/share/doc/kernel-doc-<version>/Documentation/networking/ ip-sysctl.txt
/proc/sys/net/ipv4/
ディレクトリーで利用可能なファイルおよびオプションの完全な一覧が含まれます。
/proc/sys/net/ipv4/
ディレクトリー内に他の多数のディレクトリーが存在し、各ディレクトリーはネットワークスタックのさまざまな側面に対応します。/proc/sys/net/ipv4/conf/
ディレクトリーを使用すると、未設定のデバイス(/proc/sys/net/ipv4/conf/default / サブディレクトリー内)のデフォルト設定や、すべての特別な設定(/proc/sys/net/ipv4/conf
/ all/
サブディレクトリー)を上書きする設定など、各システムインターフェイスをさまざまな方法で設定できます。
/proc/sys/net/ipv4/neigh/
ディレクトリーには、システムに直接接続されたホスト(ネットワーク近接)と通信するための設定が含まれ、複数のホップが離れるシステム用の異なる設定も含まれます。
/proc/sys/net/ipv4/route/
もあります。conf/
と neigh/
とは異なり、/ proc/sys/net/ipv4/route/
ディレクトリーには、システム上の任意のインターフェイスとのルーティングに適用される仕様が含まれます。max_size
、max_delay
、min_delay
などのこれらの設定の多くは、ルーティングキャッシュのサイズの制御に関連します。ルーティングキャッシュを削除するには、フラッシュ
ファイルに値を書き込みます。
/usr/share/doc/kernel-doc-<version>/Documentation/filesystems/proc.txt
5.3.9.5. /proc/sys/vm/
/proc/sys/vm/
ディレクトリーにあります。
block_dump
: ブロック I/O デバッグが有効な場合を設定します。ファイルに実行される読み取り/書き込みおよびブロックのダーティー操作はすべて、それに応じてログに記録されます。これは、ディスクスピンアップおよびラップトップのバッテリー消費のためにスピンダウンする場合に役立ちます。block_dump
が有効な場合には、dmesg からすべての出力を取得できます。デフォルト値は0
です。ヒントblock_dump
がカーネルのデバッグと同時に有効になっている場合は、block_dump
によって生じる誤ったディスクアクティビティーが生成されるため、klogd デーモンを停止するのが prudent になります。dirty_background_ratio
: pdflush デーモンを介して、合計メモリーのこのパーセンテージでダーティーデータのバックグラウンドライトバックを開始します。デフォルト値は 10 です。dirty_expire_centisecs
: ダーティーインメモリーデータが書き込みの対象となるのに十分な古いかどうかを定義します。この間隔よりも長いダーティーインメモリーデータは、次に pdflush デーモンがウェイクアップしたときに書き込まれます。デフォルト値は 3000 で、1 秒の 100 番目の値で表されます。dirty_ratio
: pdflush を使用して、ダーティーデータのジェネレーターの合計メモリーの割合で、ダーティーデータのライトバックを開始します。デフォルト値は 40 です。dirty_writeback_centisecs
: pdflush デーモンのウェイクアップの間隔を定義します。これは、ダーティーインメモリーデータをディスクに定期的に書き込みます。デフォルト値は 500 で、1 秒の 100 番目の値で表されます。laptop_mode
: ディスクを可能な限り停止したままにすることで、ハードディスクをスピンアップする回数を最小限に抑えるため、ノートパソコンのバッテリー電源を節約します。これにより、将来のすべての I/O プロセスを組み合わせてスピンアップの頻度が削減され、効率が向上します。デフォルト値は0
ですが、ラップトップでバッテリーが使用される場合には自動的に有効になります。この値は、ユーザーにバッテリー電源が有効になると、acpid デーモンによって自動的に制御されます。ラップトップが ACPI (Advanced Configuration and Power Interface)仕様をサポートする場合は、ユーザーの変更や対話は必要ありません。詳細は、以下のインストール済みドキュメントを参照してください。/usr/share/doc/kernel-doc-<version>/Documentation/laptop-mode.txt
lower_zone_protection
: カーネルがメモリー割り当ての少ないゾーンを定める方法を決定します。これは、highmem
メモリー領域が有効なマシンで使用される場合に有効です。デフォルト値は0
で、保護はまったくありません。他のすべての整数値はメガバイト単位であるため、低メモリーは
ユーザーによって割り当てられないように保護されます。詳細は、以下のインストール済みドキュメントを参照してください。/usr/share/doc/kernel-doc-<version>/Documentation/filesystems/proc.txt
max_map_count
: プロセスが持つことができるメモリーマップ領域の最大数を設定します。ほとんどの場合、65536
のデフォルト値が適切です。min_free_kbytes
- Linux 仮想マシン(仮想メモリーマネージャー)が最小キロバイト数を解放するように強制します。仮想マシンは、この数を使用して、システム内の低mem
ゾーンごとにpages_min
の値を計算します。デフォルト値は、マシンの合計メモリーに関するものです。nr_hugepages
: カーネルで現在設定されているhugetlb
ページの数を示します。詳細は、以下のインストール済みドキュメントを参照してください。/usr/share/doc/kernel-doc-<version>/Documentation/vm/hugetlbpage.txt
nr_pdflush_threads
: 現在実行している pdflush デーモンの数を示します。このファイルは読み取り専用であるため、ユーザーが変更しないでください。I/O 負荷が大きい場合、カーネルによりデフォルト値の 2 が増加します。overcommit_memory
: 大規模なメモリー要求が許可または拒否される条件を設定します。以下の 3 つのモードを使用できます。- 0: カーネルは、利用可能なメモリー量と無効な要求の失敗要求の量を見積もることで、コミット処理でヒューリスティックメモリーを実行します。ただし、メモリーは正確なアルゴリズムではなくヒューリスティックを使用して割り当てられるため、この設定は、システムで利用可能なメモリーをオーバーロードできることがあります。これはデフォルト設定です。
- 1 - カーネルは、コミット処理でメモリーを実行しません。この設定では、メモリーのオーバーロードの可能性が高まりますが、メモリー集約型タスク(一部のサイエンティックソフトウェアによって実行されるタスクなど)のパフォーマンスになります。
- 2 - すべての swap を追加するメモリーに対する要求に失敗し、
/proc/sys/vm/overcommit_ratio
で指定した物理 RAM のパーセント。この設定は、メモリーのオーバーコミットのリスクが低いユーザーにとって最適です。注記この設定は、物理メモリーよりも大きいスワップ領域があるシステムにのみ推奨されます。
overcommit_ratio
:/proc/sys/vm/overcommit_memory
が 2 に設定されている場合に考慮される物理 RAM の割合を指定します。デフォルト値は 50 です。page-cluster
: 1 回の試行で読み取られるページ数を設定します。実際には 16 ページに関連するデフォルト値の3
は、ほとんどのシステムに適しています。swappiness
: マシンをスワップする容量を決定します。値が高いほど、スワップがより多くなります。パーセンテージとしてデフォルト値が60
に設定されています。
/usr/share/doc/kernel-doc- <version> /Documentation/
を追加情報が含まれています。
5.3.10. /proc/sysvipc/
msg
)、セマフォ(sem
)、共有メモリー(shm
)に対する System V IPC 呼び出しに関連します。
5.3.11. /proc/tty/
drivers
ファイルは、以下の例のように、使用中の現在の tty デバイスの一覧です。
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
/proc/tty/driver/serial
ファイルは、各シリアル tty 行の使用状況の統計とステータスを一覧表示します。
ldiscs
ファイルに保存され、より詳細な情報は ldisc/
ディレクトリー内にあります。
5.3.12. /proc/<PID>/
/proc/sys/vm/panic_on_oom
には OOM の動作を制御するスイッチがあります。1
に設定すると、カーネルは OOM でパニックになります。0
の設定は、OOM で oom_killer
という名前の関数を呼び出すようカーネルに指示します。通常、oom_killer
は不正なプロセスを強制終了でき、システムは存続します。
/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
oom_killer
スコアを調整することで、プロセスが強制終了される優先順位を設定することもできます。/proc/<PID>/ に
は、oom_adj
と oom_score
の 2 つのツールがラベル付けされています。oom_adj
の有効なスコアは、-16 から +15 の範囲にあります。現在の oom_killer
スコアを表示するには、プロセスの oom_score
を表示します。oom_killer
はスコアが最も高いプロセスを最初に強制終了します。
oom_killer
がこれを強制終了する可能性が低くなります。
~]# cat /proc/12465/oom_score 79872 ~]# echo -5 > /proc/12465/oom_adj ~]# cat /proc/12465/oom_score 78
oom_killer
を無効にします。以下の例では、oom_score
は 0 の値を返します。これは、このプロセスが強制終了されないことを示しています。
~]# cat /proc/12465/oom_score 78 ~]# echo -17 > /proc/12465/oom_adj ~]# cat /proc/12465/oom_score 0
badness ()
と呼ばれる関数は、各プロセスの実際のスコアを決定するために使用されます。これには、確認した各プロセスに 'points' を追加します。プロセススコアは以下の方法で行われます。
- 各プロセスのスコアは、メモリーサイズになります。
- (カーネルスレッドを含まない)プロセスの子のメモリーサイズもスコアに追加されます。
- プロセススコアは 'niced' プロセスのスコアを増やし、長時間実行されるプロセスの場合に減少します。
CAP_SYS_ADMIN
およびCAP_SYS_RAWIO
機能を持つプロセスのスコアは減少します。- 最後のスコアは、
oom_adj
ファイルに保存されている値でビットシフトされます。
oom_score
値が最も高いプロセスは、おそらく特権のない、最近起動したプロセスであり、その子とともに大量のメモリーを使用し、'niced' があり、生の I/O を処理しません。
5.4. sysctl コマンドの使用
/proc/sys/
ディレクトリーでカーネル設定を表示、設定、および自動化するために使用されます。
/proc/sys/
ディレクトリーで設定可能なすべての設定の概要については、root で /sbin/sysctl -a コマンドを入力します。これにより、以下のような小さな部分で大きな包括的なリストが作成されます。
net.ipv4.route.min_delay = 2 kernel.sysrq = 0 kernel.sem = 250 32000 32 128
/proc/sys/net/ipv4/route/min_delay
ファイルは net.ipv4.route.min_delay
として一覧表示され、ディレクトリーのスラッシュはドットに置き換えられ、proc.sys
部分が想定されます。
/proc/sys/
ディレクトリー内の書き込み可能なファイルに値を割り当てることができます。たとえば、コマンドを使用する代わりに、以下を実行します。
echo 1 > /proc/sys/kernel/sysrq
~]# sysctl -w kernel.sysrq="1"
kernel.sysrq = 1
/proc/sys/
でこのような単一の値をすばやく設定するとテスト時に役立ちますが、この方法は実稼働システムではマシンを再起動すると /proc/sys/
内の特別な設定が失われるためです。カスタム設定を保持するには、/etc/sysctl.conf
ファイルに追加します。
/etc/rc.d/rc.sysinit
スクリプトを実行します。このスクリプトには、/etc/ sysctl.conf
を使用して sysctl を実行し、カーネルに渡される値を判断するコマンドが含まれています。したがって、/etc/sysctl.conf
に追加した値は、システムが起動するたびに有効になります。
5.5. 関連情報
proc
ファイルシステムに関する追加情報の追加ソースです。
5.5.1. インストールされているドキュメント
proc
ファイルシステムに関する最適なドキュメントの一部がシステムにインストールされている。
/usr/share/doc/kernel-doc- <version> /Documentation/filesystems/proc.txt:
ディレクトリーのすべての側面に関する情報が含まれていますが、これらに限定されています。/proc/
/usr/share/doc/kernel-doc- <version> /Documentation/sysrq.txt
- システム要求キーオプションの概要。/usr/share/doc/kernel-doc- <version> /Documentation/sysctl/
- さまざまな sysctl のヒントを含むディレクトリー。これには、カーネルに関する値の変更(kernel.txt
)、ファイルシステムへのアクセス(fs.txt
)、および仮想メモリーの使用(vm.txt
)が含まれます。/usr/share/doc/kernel-doc- <version> /Documentation/networking/ip-sysctl.txt
: IP ネットワークオプションの詳細な概要
5.5.2. 便利な Web サイト
- http://www.linuxhq.com/: この Web サイトでは、Linux カーネルのさまざまなバージョンに関するソース、パッチ、およびドキュメントの完全なデータベースを維持します。
第6章 RAID (Redundant Array of Independent Disks)
6.1. RAID とは
6.1.1. RAID を使用する理由
- 速度を高める
- 1 台の仮想ディスクを使用してストレージ容量を増加する
- ディスク障害を最小限に抑える
6.1.2. ハードウェア RAID とソフトウェア RAID
- ハードウェア RAID
- ハードウェアベースのアレイは、RAID サブシステムをホストとは別に管理します。ホストに対して、1 RAID アレイごとに 1 つのディスクを表します。ハードウェア RAID デバイスは SCSI コントローラーに接続し、RAID アレイを 1 つの SCSI ドライブとして表示します。外部 RAID システムは、すべての RAID 処理 「インテリジェンス」 を、外部ディスクサブシステムにあるコントローラーに移動します。サブシステム全体が通常の SCSI コントローラーを介してホストに接続され、ホストには単一のディスクとして表示されます。RAID コントローラーカードは、オペレーティングシステムへの SCSI コントローラーのように動作し、実際のドライブ通信をすべて処理します。ユーザーはドライブを RAID コントローラー(通常の SCSI コントローラーと同様)にプラグインし、RAID コントローラー設定に追加し、オペレーティングシステムで違いを認識しません。
- ソフトウェア RAID
- ソフトウェア RAID では、カーネルディスク (ブロックデバイス) コード内に各種の RAID レベルを実装しています。高価ディスクコントローラーカードやホットスワップシャーシなど、最優先的な解決策を提供します。[1] 必須ではありません。ソフトウェア RAID は、SCSI ディスクだけでなく安価な IDE ディスクでも機能します。現代の高速な CPU により、ソフトウェア RAID はハードウェア RAID を上回ります。Linux カーネルには MD ドライバーが含まれており、RAID ソリューションは完全にハードウェアに依存しないようにすることができます。ソフトウェアベースのアレイのパフォーマンスは、サーバーの CPU パフォーマンスと負荷によって異なります。ソフトウェア RAID の詳細は、以下の主要な機能を参照してください。
- スレッド再構築プロセス
- カーネルベースの設定
- 再構築なしで Linux マシン間でのアレイの移植性
- アイドルシステムリソースを使用したバックグラウンドのアレイ再構築
- ホットスワップ可能なドライブのサポート
- 特定の CPU 最適化を活用するための自動 CPU 検出
6.1.3. RAID レベルとリニアサポート
- レベル 0
- RAID レベル 0 は、多くの場合 「ストライピング」 と呼ばれ、パフォーマンス指向のストライプ化データマッピング手法です。これは、アレイに書き込まれるデータがストライプに分割され、アレイのメンバーディスク全体に書き込まれることを意味します。これにより低い固有コストで高い I/O パフォーマンスを実現できますが、冗長性は提供されません。レベル 0 アレイのストレージ容量は、ハードウェア RAID のメンバーディスクの合計容量またはソフトウェア RAID のメンバーパーティションの合計容量と等しくなります。
- レベル 1
- RAID レベル 1、または 「ミラーリング」 は、他の RAID 形式よりも長く使用されています。レベル 1 は、アレイ内の各メンバーディスクに同一データを書き込むことで冗長性を提供し、各ディスクに 「ミラーリングされた」 コピーを残します。ミラーリングは、データの可用性の単純化と高レベルにより、いまでも人気があります。レベル 1 は、読み取り時にデータ転送レートに並列アクセスを使用する可能性のある 2 つ以上のディスクで動作しますが、より一般的に I/O トランザクションレートを提供するために独立して動作します。レベル 1 は、非常に優れたデータの信頼性を提供し、読み取り集約型アプリケーションのパフォーマンスを向上させますが、比較的コストが高くなります。レベル 1 アレイのストレージ容量は、ハードウェア RAID 内のミラーリングされたハードディスクの 1 つまたはソフトウェア RAID 内のミラーリングされたパーティションの 1 つの容量と同じです。注記RAID レベル 1 は、ドライブ領域を無駄にしたアレイ内のすべてのディスクに同じ情報を書き込むため、コストが高くなります。たとえば、ルート(
/
)パーティションが 2 つの 40G ドライブに存在するように RAID レベル 1 を設定している場合は、合計 80G ですが、その 80G の 40G のみにアクセスできます。もう 1 つの 40G は、最初の 40G のミラーのように動作します。 - レベル 4
- RAID レベル 4 でパリティーを使用[2] データを保護するため、1 つのディスクドライブで連結します。大規模なファイル転送ではなく、トランザクション I/O に適しています。専用パリティーディスクは固有のボトルネックを表すため、レベル 4 は、ライトバックキャッシュなどの付随する技術なしではほとんど使用されません。RAID レベル 4 は、一部の RAID パーティションスキームのオプションですが、Red Hat Enterprise Linux RAID インストールで許可されるオプションではありません。ハードウェア RAID レベル 4 のストレージ容量は、メンバーディスクの容量と同じで、1 つのメンバーディスクの容量を引いたものになります。ソフトウェア RAID レベル 4 のストレージ容量は、メンバーパーティションの容量と同じで、パーティションのサイズが等しい場合は、パーティションの 1 つを引いたサイズになります。注記RAID レベル 4 は、RAID レベル 5 と同じ領域を使用しますが、レベル 5 にはより多くの利点があります。このため、レベル 4 はサポートされません。
- レベル 5
- RAID レベル 5 は RAID の最も一般的なタイプです。RAID レベル 5 は、アレイのメンバーディスクドライブの一部またはすべてにパリティーを分散することにより、レベル 4 に固有の書き込みボトルネックを排除します。パリティー計算プロセスは、パフォーマンスのボトルネックのみです。最新の CPU とソフトウェア RAID では、通常は非常に大きな問題ではありません。レベル 4 と同様に、結果は非対称パフォーマンスであり、読み取りは書き込みを大幅に上回ります。レベル 5 は多くの場合、非対称を減らすためにライトバックキャッシュで使用されます。ハードウェア RAID レベル 5 のストレージ容量は、メンバーディスクの容量と同じで、1 つのメンバーディスクの容量を引いたものになります。ソフトウェア RAID レベル 5 のストレージ容量は、メンバーパーティションの容量と同じで、パーティションのサイズが等しい場合は、パーティションの 1 つを引いたサイズになります。
- リニア RAID
- リニア RAID は、より大きな仮想ドライブを作成するドライブの簡易グループ化です。リニア RAID では、あるメンバードライブからチャンクが順次割り当てられます。最初のドライブが完全に満杯になったときにのみ次のドライブに移動します。これにより、メンバードライブ間の I/O 操作が分割される可能性はないため、パフォーマンスの向上は見られません。リニア RAID には冗長性がなく、実際に、信頼性は低下します。いずれかのメンバードライブに障害が発生した場合は、アレイ全体を使用することができません。容量はすべてのメンバーディスクの合計になります。
6.2. ソフトウェア RAID の設定
- 物理ハードドライブでの ソフトウェア RAID パーティション の作成
- ソフトウェア RAID パーティションからの RAID デバイス の作成
- (オプション)RAID デバイスからの LVM の設定
- RAID デバイスから ファイルシステム を作成する。
/dev/hda
および /dev/hdb
)を使用して、単純な RAID 1 および RAID 0 設定の作成について説明し、複数の RAID デバイスを実装して簡単な RAID 設定を作成する方法について詳しく説明します。
6.2.1. RAID パーティションの作成
図6.1 2 つの空白ドライブ(準備完了)
[D]
- Disk Druid で RAID ボタンをクリックして、ソフトウェア RAID 作成画面を入力します。
- 図6.2「RAID パーティションオプション」 に示されるよう に、ソフトウェア RAID パーティションの作成 を 選択して RAID パーティションを作成します。RAID パーティションや RAID デバイスが作成されるまで、他の RAID オプション(マウントポイントの入力など)は利用できないことに注意してください。OK をクリックして選択を確定します。
図6.2 RAID パーティションオプション
[D] - ソフトウェア RAID パーティションは、1 つのドライブに制限する必要があります。Allowable Drives には、RAID に使用するドライブを選択します。複数のドライブがある場合は、デフォルトですべてのドライブが選択されるため、不要なドライブの選択を解除する必要があります。
図6.3 RAID パーティションの追加
[D] - サイズ (MB) フィールドを編集し、パーティションのサイズ(MB 単位)を入力します。
- Fixed Size を選択して、パーティションサイズを指定します。Fill all space up (MB)を選択し、値(MB 単位)を入力してパーティションサイズの範囲を指定します。ハードディスクの 最大使用可能容量を確保するために、最大許容サイズ を選択します。複数の領域を増やすと、ディスクで利用可能な空き領域が共有されることに注意してください。
- パーティションをプライマリーパーティションにする場合は、Force to be a primary partition を選択します。プライマリーパーティションは、ハードドライブの最初の 4 つのパーティションの 1 つです。選択されていない場合は、パーティションが論理パーティションとして作成されます。他のオペレーティングシステムがすでにシステム上にある場合は、このオプションの選択を解除する必要があります。プライマリーパーティションと論理/拡張パーティションの詳細は、『Red Hat Enterprise Linux インストールガイド』 の付録セクションを参照してください。
/boot
パーティションのみをソフトウェア RAID デバイスとして設定し、root パーティション(/
)、/home
、および swap
を通常のファイルシステムとして残すことができます。図6.4「RAID 1 パーティションの準備が Ready、Pre-Device、およびマウントポイントの作成」 RAID 1 設定( /boot
用)に正常に割り当てられた領域を表示します。これは、RAID デバイスおよびマウントポイントの作成の準備ができています。
図6.4 RAID 1 パーティションの準備が Ready、Pre-Device、およびマウントポイントの作成
[D]
6.2.2. RAID デバイスとマウントポイントの作成
図6.5 RAID オプション
[D]- RAID デバイスの作成 オプションを選択し、OK をクリックします。図6.6「RAID デバイスの作成およびマウントポイントの割り当て」 に示すように、Make RAID Device ダイアログが表示されます。これにより、RAID デバイスを作成してマウントポイントを割り当てることができます。
図6.6 RAID デバイスの作成およびマウントポイントの割り当て
[D] - マウントポイント プルダウン リストから マウント ポイントを選択します。
- File System Type プルダウンリストからパーティションのファイルシステムタイプを選択します。この時点で、動的 LVM ファイルシステムまたは従来の静的 ext2/ext3 ファイルシステムのいずれかを設定できます。インストールプロセス中に LVM とその設定の詳細は、11章LVM (論理ボリュームマネージャー) を参照してください。LVM が必要ない場合は、次の手順に進みます。
- RAID Device pulldown リストから、md0 などのデバイス名を選択します。
- RAID レベル から、必要 な RAID レベルを選択します。注記
/boot
の RAID パーティションを作成する場合は、RAID レベル 1 を選択し、最初の 2 つのドライブ(IDE first、SCSI 秒)のいずれかを使用する必要があります。/boot
の個別の RAID パーティションを作成しておらず、ルートファイルシステム(つまり/
)に RAID パーティションを作成する場合は、RAID レベル 1 で、最初の 2 つのドライブ(IDE first、SCSI second)のいずれかを使用する必要があります。 - 作成した RAID パーティションが RAID Members 一覧に表示されます。RAID デバイスの作成に使用するパーティションを選択します。
- RAID 1 または RAID 5 を設定する場合は、スペアの数 フィールドに 予備のパーティションの数 を指定します。ソフトウェア RAID パーティションに障害が発生した場合、スペアは自動的に代替として使用されます。指定するスペアごとに、(RAID デバイスのパーティションに加えて)追加のソフトウェア RAID パーティションを作成する必要があります。RAID デバイスのパーティションと、スペアのパーティションを選択します。
- OK をクリックして設定を確定します。RAID デバイスがドライブの 概要一覧に表示 されます。
- root パーティション(/)、ホームディレクトリー(
/
)、swap
などの追加のパーティション、デバイス、マウントポイントを設定するには、この章全体を繰り返します。
図6.7 RAID 設定の例
[D]
図6.8 LVM 設定を使用した RAID の例
[D]
6.3. ソフトウェア RAID の管理
- 既存のソフトウェア RAID 設定の確認
- 新しい RAID デバイスの作成
- アレイ内の障害のあるデバイスの置き換え
- 既存のアレイに新しいデバイスを追加する。
- 既存の RAID デバイスの非アクティブ化および削除
- 設定を保存します。
6.3.1. RAID 設定の確認
/proc/mdstat
特殊ファイルに保存されます。これらのデバイスを一覧表示するには、シェルプロンプトで以下を入力して、このファイルの内容を表示します。
cat /proc/mdstat
root
で以下の形式で コマンドを実行します。
mdadm --query
device…
mdadm --detail
raid_device…
mdadm --examine
component_device…
例6.1 RAID 設定の確認
/dev/md0
が RAID デバイスであることを確認できます。
~]# 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.
~]# 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
~]$ 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>
6.3.2. 新しい RAID デバイスの作成
root
で以下の形式の コマンドを使用します。
mdadm--create
raid_device--level
=level--raid-devices
=number component_device…
mdadm
(8)の 『CREATE MODE』 セクションを参照してください。
例6.2 新しい RAID デバイスの作成
~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sdb /dev/sdb1
/dev/sda1
および /dev/sdb1
から新しい RAID レベル 1 アレイとして /dev/md3
を作成するには、次のコマンドを実行します。
~]# mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
mdadm: array /dev/md3 started.
6.3.3. 障害のあるデバイスの置き換え
root
で以下のコマンドを実行して、最初に faulty とマークされていることを確認します。
mdadm raid_device --fail
component_device
mdadm raid_device --remove
component_device
mdadm raid_device --add
component_device
例6.3 障害のあるデバイスの置き換え
/dev/md3
があり、以下のレイアウト(つまり、例6.2「新しい RAID デバイスの作成」で作成した RAID デバイス)があるとします。
~]# 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
/dev/sdb1
デバイスを faulty とマークします。
~]# mdadm /dev/md3 --fail /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md3
~]# mdadm /dev/md3 --remove /dev/sdb1
mdadm: hot removed /dev/sdb1
~]# mdadm /dev/md3 --add /dev/sdb1
mdadm: added /dev/sdb1
6.3.4. RAID デバイスの拡張
root
で以下の形式のコマンドを使用します。
mdadm raid_device --add
component_device
mdadm--grow
raid_device--raid-devices
=number
例6.4 RAID デバイスの拡張
/dev/md3
があり、以下のレイアウト(つまり、例6.2「新しい RAID デバイスの作成」で作成した RAID デバイス)があるとします。
~]# 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
/dev/sdc
が追加され、パーティションが 1 つだけあることを前提としています。/dev/md3
アレイに追加するには、シェルプロンプトで以下を入力します。
~]# mdadm /dev/md3 --add /dev/sdc1
mdadm: added /dev/sdc1
/dev/sdc1
が予備デバイスとして追加されます。アレイのサイズを実際に使用するように変更するには、以下を入力します。
~]# mdadm --grow /dev/md3 --raid-devices=3
6.3.5. RAID デバイスの削除
root
で以下のコマンドを実行して無効にします。
mdadm --stop
raid_device
mdadm --remove
raid_device
mdadm --zero-superblock
component_device…
例6.5 RAID デバイスの削除
/dev/md3
があり、以下のレイアウト(つまり、例6.4「RAID デバイスの拡張」で作成した RAID デバイス)があるとします。
~]# 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
~]# mdadm --stop /dev/md3
mdadm: stopped /dev/md3
/dev/md3
デバイスを削除できます。
~]# mdadm --remove /dev/md3
~]# mdadm --zero-superblock /dev/sda1 /dev/sdb1 /dev/sdc1
6.3.6. 設定の保持
mdmonitor
サービスは /etc/mdadm.conf
設定ファイルの内容を読み取り、起動する RAID デバイスを確認します。ソフトウェア RAID がグラフィカルインストールプロセス中に設定されている場合、このファイルには、デフォルトで 表6.1「一般的な mdadm.conf ディレクティブ」 に記載されているディレクティブが含まれています。
表6.1 一般的な mdadm.conf ディレクティブ
オプション | 説明 |
---|---|
ARRAY |
特定のアレイを特定できます。
|
デバイス |
RAID コンポーネントをスキャンするデバイスの一覧を指定できます(例: 「/dev/hda1」)。キーワード partitions を使用して、
/proc/ にリストされているすべてのパーティションを使用するか、またはコンテナーを使用してアレイコンテナーを指定することもできます。
|
MAILADDR | アラートの場合に、使用するメールアドレスを指定できます。 |
ARRAY
行を一覧表示するには、root
で以下のコマンドを実行します。
mdadm--detail
--scan
/etc/mdadm.conf
ファイルに追加する行を確認します。特定のデバイスの ARRAY
行を表示することもできます。
mdadm--detail
--brief
raid_device
mdadm--detail
--brief
raid_device >>/etc/mdadm.conf
例6.6 設定の保持
/etc/mdadm.conf
には、システムのインストール時に作成されたソフトウェア RAID 設定が含まれます。
# 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
/dev/md3
デバイスを作成した場合は、以下のコマンドを実行してこれを永続化できます。
~]# mdadm --detail --brief /dev/md3 >> /etc/mdadm.conf
6.4. 関連情報
6.4.1. インストールされているドキュメント
mdadm
man ページ: mdadm ユーティリティーの man ページです。mdadm.conf
の man ページ:利用可能な/etc/mdadm.conf
設定オプションの包括的なリストを提供する man ページです。
第7章 swap 領域
7.1. スワップ領域とは
表7.1 システムの推奨 swap 領域
システム内の RAM の容量 | 推奨されるスワップ領域 |
---|---|
4GB 以下の RAM | 最小 2GB のスワップ領域 |
4GB から 16GB の RAM | 最小 4GB のスワップ領域 |
16GB から 64GB の RAM | 最小 8GB のスワップ領域 |
64GB から 256GB の RAM | 最小 16GB のスワップ領域 |
256GB から 512GB の RAM | 最小 32GB のスワップ領域 |
7.2. スワップ領域の追加
7.2.1. LVM2 論理ボリュームでのスワップ領域の拡張
/dev/VolGroup00/LogVol01
が拡張するボリュームであるとします)。
- 関連付けられている論理ボリュームのスワップ機能を無効にします。
swapoff -v /dev/VolGroup00/LogVol01
- LVM2 論理ボリュームのサイズを 256 MB 増やします。
lvm lvresize /dev/VolGroup00/LogVol01 -L +256M
- 新しいスワップ領域をフォーマットします。
mkswap /dev/VolGroup00/LogVol01
- 拡張論理ボリュームを有効にします。
swapon -va
- 論理ボリュームが適切に拡張されていることを確認します。
cat /proc/swaps free
7.2.2. スワップの LVM2 論理ボリュームの作成
/dev/VolGroup00/LogVol02
が追加するスワップボリュームであると想定)、以下を実行します。
- サイズが 256 MB の LVM2 論理ボリュームを作成します。
lvm lvcreate VolGroup00 -n LogVol02 -L 256M
- 新しいスワップ領域をフォーマットします。
mkswap /dev/VolGroup00/LogVol02
- 次のエントリーを
/etc/fstab
ファイルに追加します。/dev/VolGroup00/LogVol02 swap swap defaults 0 0
- 拡張論理ボリュームを有効にします。
swapon -va
- 論理ボリュームが適切に拡張されていることを確認します。
cat /proc/swaps free
7.2.3. スワップファイルの作成
- 新しいスワップファイルのサイズをメガバイト単位で指定してから、そのサイズに 1024 をかけてブロック数を指定します。たとえばスワップファイルのサイズが 64 MB の場合は、ブロック数が 65536 になります。
- root でシェルプロンプトで、count を目的のブロックサイズと同じにして以下のコマンドを入力します。
dd if=/dev/zero of=/swapfile bs=1024 count=65536
- 新規に作成されたファイルの送信を変更します。
chmod 0600 /swapfile
- 次のコマンドでスワップファイルをセットアップします。
mkswap /swapfile
- スワップファイルを起動時に自動的にではなく、すぐに有効にする場合は、以下を実行します。
swapon /swapfile
- 起動時に有効にするには、
/etc/fstab
を編集して以下のエントリーを含めます。/swapfile swap swap defaults 0 0
次にシステムが起動すると、新しいスワップファイルが有効になります。 - 新しいスワップファイルを追加して有効にしたら、cat /proc/swaps コマンドまたは free コマンドの出力を表示して、そのファイルが有効であることを確認します。
7.3. スワップ領域の削除
7.3.1. LVM2 論理ボリュームでのスワップ領域の縮小
/dev/VolGroup00/LogVol01
が縮小するボリュームであるとします)。
- 関連付けられている論理ボリュームのスワップ機能を無効にします。
swapoff -v /dev/VolGroup00/LogVol01
- LVM2 論理ボリュームのサイズを変更して 512 MB 削減します。
lvm lvreduce /dev/VolGroup00/LogVol01 -L -512M
- 新しいスワップ領域をフォーマットします。
mkswap /dev/VolGroup00/LogVol01
- 拡張論理ボリュームを有効にします。
swapon -va
- 論理ボリュームが正しく縮小されたことをテストします。
cat /proc/swaps free
7.3.2. スワップの LVM2 論理ボリュームの削除
/dev/VolGroup00/LogVol02
が削除するボリュームであるとします)。
- 関連付けられている論理ボリュームのスワップ機能を無効にします。
swapoff -v /dev/VolGroup00/LogVol02
- サイズ 512MB の LVM2 論理ボリュームを削除します。
lvm lvremove /dev/VolGroup00/LogVol02
/etc/fstab
ファイルから次のエントリーを削除します。/dev/VolGroup00/LogVol02 swap swap defaults 0 0
- 論理ボリュームが削除されていることをテストします。
cat /proc/swaps free
7.3.3. スワップファイルの削除
- root としてシェルプロンプトで、以下のコマンドを実行してスワップファイルを無効にします(
/swapfile
は swap ファイル)。swapoff -v /swapfile
/etc/fstab
ファイルから該当するエントリーを削除します。- 実際のファイルを削除します。
rm /swapfile
7.4. Swap 領域の移動
第8章 ディスクストレージの管理
8.1. partedを使用した標準パーティション
- 既存パーティションテーブルの表示
- 既存パーティションのサイズ変更
- 空き領域または他のハードドライブからの、パーティションの追加
parted
パッケージが含まれています。parted を開始するには、root としてログインし、シェルプロンプトで parted /dev/sda コマンドを入力します (/dev/sda は、設定するドライブのデバイス名です)。
表8.1 parted コマンド
コマンド | 説明 |
---|---|
check minor-num | ファイルシステムの簡単なチェックを実行します。 |
cp from to | ファイルシステムをあるパーティションから別のパーティションにコピーします。from と to はパーティションのマイナー番号です。 |
help | 利用可能なコマンドの一覧を表示します。 |
mklabel label | パーティションテーブル用のディスクラベルを作成します。 |
mkfs minor-num file-system-type | タイプ 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 のディスクラベル用のみのパーティションに名前を付けます。 |
パーティションテーブルを表示します。 | |
quit | parted を終了します。 |
rescue start-mb end-mb | start-mb から end-mb へ、消失したパーティションを復旧します。 |
resize minor-num start-mb end-mb | パーティションのサイズを start-mb から end-mb に変更します。 |
rm minor-num | パーティションを削除します。 |
select device | 設定する別のデバイスを選択します。 |
set minor-num flag state | パーティションにフラグを設定します。state はオンまたはオフのいずれかになります。 |
toggle [NUMBER [FLAG] | パーティション NUMBER 上の FLAG の状態を切り替えます。 |
unit UNIT | デフォルトのユニットを UNIT に設定します。 |
8.1.1. パーティションテーブルの表示
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 のパーティションは、/dev/sda1
に対応します。Start
および End
の値はメガバイト単位です。有効な タイプ
は、metadata、free、primary、extended、または logical です。Filesystem
はファイルシステムタイプで、次のいずれかになります。
- ext2
- ext3
- fat16
- fat32
- hfs
- jfs
- linux-swap
- ntfs
- reiserfs
- hp-ufs
- sun-ufs
- xfs
Filesystem
の値が表示されない場合は、ファイルシステムのタイプが不明であることを意味します。
8.1.2. パーティションの作成
parted /dev/sda
print
8.1.2.1. パーティションの作成
mkpart primary ext3 1024 2048
cat /proc/partitions
8.1.2.2. パーティションのフォーマット
mkfs -t ext3 /dev/sda6
8.1.2.3. パーティションのラベル付け
/dev/sda6
で、/work
のラベルを付けたいとします。
e2label /dev/sda6 /work
8.1.2.4. マウントポイントの作成
mkdir /work
8.1.2.5. /etc/fstab
への追加
/etc/fstab
ファイルを編集して新しいパーティションを含めます。新しい行は、以下のようになります。
LABEL=/work /work ext3 defaults 1 2
LABEL=
の後にパーティションを付けたラベルが含まれている必要があります。2 番目の列には、新しいパーティションのマウントポイントが含まれている必要があり、その次の列はファイルシステムタイプ (たとえば、ext3 または swap) である必要があります。フォーマットの詳細が必要な場合は、コマンド man fstab を使用して man ページを参照してください。
defaults
という単語の場合、パーティションは起動時にマウントされます。再起動せずにパーティションをマウントするには、root で次のコマンドを入力します。
mount /work
8.1.3. パーティションの削除
parted /dev/sda
print
rm 3
cat /proc/partitions
/etc/fstab
ファイルからそれを削除することです。削除したパーティションを宣言している行を見つけ、ファイルから削除します。
8.1.4. パーティションのサイズ変更
parted /dev/sda
print
resize 3 1024 2048
8.2. LVM パーティションの管理
表8.2 lvm コマンド
コマンド | 説明 |
---|---|
dumpconfig | アクティブな設定をダンプします。 |
形式 | 利用可能なメタデータ形式の一覧表示 |
help | ヘルプコマンドの表示 |
lvchange | 論理ボリュームの属性を変更します。 |
lvcreate | 論理ボリュームを作成します。 |
lvdisplay | 論理ボリュームに関する情報を表示します。 |
lvextend | 論理ボリュームに領域を追加 |
lvmchange | デバイスマッパーの使用により、このコマンドは非推奨になりました。 |
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 | ソフトウェアおよびドライバーのバージョン情報を表示します。 |
第9章 ディスククォータの実装
9.1. ディスククォータの設定
/etc/fstab
を修正することで、ファイルシステムごとのクォータを有効にします。- ファイルシステムを再マウントします。
- クォータデータベースファイルを作成して、ディスク使用状況テーブルを生成します。
- クォータポリシーを割り当てます。
9.1.1. クォータの有効化
/etc/fstab
ファイルを編集します。クォータを必要とするファイルシステムに usrquota オプションや grpquota オプションを追加します。
/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 . . .
/home
ファイルシステムがユーザーとグループの両方のクォータを有効にしています。
/etc/fstab
ファイル内でクォータポリシーを設定するために使用できます。
9.1.2. ファイルシステムの再マウント
fstab
エントリーが変更された各ファイルシステムを再マウントします。ファイルシステムがどのプロセスでも使用されていない場合は、以下のいずれかの方法を使用します。
- umount コマンドを発行してから mount コマンドを実行してファイルシステムを再マウントします(さまざまなファイルシステムタイプをマウントおよびアンマウントするための特定の構文については、umount および mount の両方の man ページを参照してください)。
- mount -o remount < file-system > コマンド(< file-system > はファイルシステムの名前)を発行して、ファイルシステムを再マウントします。たとえば、
/home
ファイルシステムを再マウントする場合、発行するコマンドは mount -o remount /home です。
9.1.3. クォータデータベースファイルの作成
aquota.user
および aquota.group
) を作成するには、quotacheck コマンドの -c
オプションを使用します。たとえば、/home
ファイルシステムでユーザーとグループのクォータが有効になっている場合は、/home
ディレクトリーにファイルを作成します。
quotacheck -cug /home
-c
オプションは、クォータが有効になっているファイルシステムごとにクォータファイルを作成することを指定し、-u
オプションは、ユーザークォータをチェックすることを指定し、-g
オプションは、グループクォータをチェックすることを指定します。
-u
オプションまたは -g
オプションのいずれも指定しない場合は、ユーザークォータファイルのみが作成されます。-g
のみを指定すると、グループクォータファイルのみが作成されます。
quotacheck -avug
- A: クォータが有効
な
ローカルマウントのファイルシステムをすべてチェックします。 v
: クォータチェックの進行時に詳細なステータス情報を表示します。u
- ユーザーディスククォータ情報の確認g
- グループディスククォータ情報の確認
/home
などの、クォータが有効になっているローカルにマウントされた各ファイルシステムのデータが取り込まれます。
9.1.4. ユーザーごとのクォータ割り当て
edquota username
/home
パーティションの /etc/fstab
(以下の例では /dev/VolGroup00/LogVol02
) に対して有効であり、コマンド edquota testuser を実行すると、システムでデフォルトとして設定されたエディターで以下のような出力が表示されます。
Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440436 0 0 37418 0 0
EDITOR
環境変数により定義されたテキストエディターは、edquota により使用されます。エディターを変更するには、~/.bash_profile
ファイルの EDITOR
環境変数を、使用するエディターのフルパスに設定します。
inodes
列は、ユーザーが現在使用している inode の数を示します。最後の 2 列は、ファイルシステムのユーザーに対するソフトおよびハードの inode 制限を設定するのに使用されます。
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
9.1.5. グループごとのクォータ割り当て
devel
グループのグループクォータを設定するには(グループはグループクォータを設定する前に存在している必要があります)、次のコマンドを使用します。
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
9.1.6. ソフト制限の猶予期間の設定
edquota -t
9.2. ディスククォータの管理
9.2.1. 有効化と無効化
quotaoff -vaug
-u
オプションまたは -g
オプションのいずれも指定しない場合は、ユーザークォータのみが無効になります。-g
のみを指定すると、グループクォータのみが無効になります。-v スイッチにより、コマンドの実行時に詳細なステータス情報が表示されます。
quotaon -vaug
/home
などの特定のファイルシステムにクォータを有効にするには、以下のコマンドを使用します。
quotaon -vug /home
-u
オプションまたは -g
オプションのいずれも指定しない場合は、ユーザークォータのみが有効になります。-g
のみが指定されている場合は、グループのクォータのみが有効になります。
9.2.2. ディスククォータに関するレポート
*** 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
--
を利用すると、ブロック制限または inode 制限を超えたかどうかをすばやく判断できます。いずれかのソフト制限を超えると、対応する -
の代わりに +
が表示されます。最初の -
はブロックの制限を表し、2 つ目は inode の制限を表します。
grace
列は通常空白です。ソフト制限が超過した場合、その列には猶予期間に残り時間量に相当する時間指定が含まれます。猶予期間が過ぎると、代わりに none
が表示されます。
9.2.3. クォータの精度維持
- 次回の再起動時に quotacheck を確実に実行する
- ほとんどのシステムで最適な方法この方法は、定期的に再起動する (ビジーな) 複数ユーザーシステムに最も適しています。root で、シェルスクリプトを touch /forcequotacheck コマンドを含む
/etc/cron.daily/
または/etc/cron.weekly/
ディレクトリーに置くか、crontab -e コマンドを使ってスケジュールを設定します。このスクリプトは root ディレクトリーに空のforcequotacheck
ファイルを作成するため、起動時にシステムの init スクリプトがこれを検索します。このディレクトリーが検出されると、init スクリプトは quotacheck を実行します。その後、init スクリプトは/forcequotacheck
ファイルを削除します。このように、cron
でこのファイルが定期的に作成されるようにスケジュールすることにより、次回の再起動時に quotacheck を確実に実行することができます。cron
の設定に関する詳細は、39章自動タスク を参照してください。 - シングルユーザーモードで quotacheck を実行
- quotacheck を安全に実行する別の方法として、クォータファイルのデータ破損の可能性を防ぐために、システムをシングルユーザーモードで再起動(再)する方法があります。
~]# quotaoff -vaug /<file_system> ~]# quotacheck -vaug /<file_system> ~]# quotaon -vaug /<file_system>
- 実行中のシステムで quotacheck を実行
- 必要な場合には、いずれのユーザーもログインしておらず、チェックされているファイルシステムに開いているファイルがない状態のマシン上で quotacheck を実行することができます。quotacheck -vaug < file_system > コマンドを実行します。このコマンドは、quotacheck が指定された < file_system > を読み取り専用として再マウントできない場合に失敗します。チェックの後には、ファイルシステムは読み込み/書き込みとして再マウントされることに注意してください。ライブファイルシステムで quotacheck を実行しない読み込み/書き込みでマウントされているライブのファイルシステム上での quotacheck の実行は、quota ファイルが破損する可能性があるため、推奨されません。
9.3. 関連情報
9.3.1. インストールされているドキュメント
- quotacheck、edquota、repquota、quota on、および quotaoff の man ページ
9.3.2. 関連書籍
- 『Red Hat Enterprise Linux Introduction to System Administration』; Red Hat, Inc. - http://www.redhat.com/docs/ および ドキュメント CD で利用可能なマニュアルには、新しい Red Hat Enterprise Linux システム管理者向けのストレージ管理(ディスククォータを含む)に関する背景情報が含まれています。
第10章 アクセス制御リスト
acl
パッケージが必要になります。このパッケージには、ACL 情報の追加、修正、削除および、取得のためのユーティリティーが同梱されています。
10.1. ファイルシステムのマウント
mount -t ext3 -o acl <device-name> <partition>
mount -t ext3 -o acl /dev/VolGroup00/LogVol02 /work
/etc/fstab
ファイルにリストされている場合は、パーティションのエントリーに acl
オプションを含めることができます。
LABEL=/work /work ext3 acl 1 2
--with-acl-support
オプションでコンパイルされているためです。Samba 共有のアクセス時またはマウント時に特別なフラグは必要ありません。
10.1.1. NFS
/etc/exports
ファイルに no_acl
オプションを追加します。クライアントに NFS 共有をマウントする際に ACL を無効にするには、コマンドラインまたは /etc/fstab
ファイルで no_acl
オプションでマウントします。
10.2. アクセス ACL の設定
- 各ユーザー
- 各グループ
- 実効権マスクを使用して
- ファイルのユーザーグループに属さないユーザーに対して
-m
オプションを使用して、ファイルまたはディレクトリーの ACL を追加または変更します。
setfacl -m <rules> <files>
u:<uid>:<perms>
- ユーザーにアクセス ACL を設定します。ユーザー名または UID を指定できます。システムで有効な任意のユーザーを指定できます。
g:<gid>:<perms>
- グループにアクセス ACL を設定します。グループ名または GID を指定できます。システムで有効な任意のグループを指定できます。
m:<perms>
- 実効権マスクを設定します。このマスクは、所有グループの全権限と、ユーザーおよびグループの全エントリーを結合したものです。
o:<perms>
- ファイルのグループに属さないユーザーにアクセス ACL を設定します。
r
、w
、x
の文字の組み合わせでなければなりません。
setfacl -m u:andrius:rw /project/somefile
-x
オプションを使用して権限を指定しません。
setfacl -x <rules> <files>
setfacl -x u:500 /project/somefile
10.3. デフォルト ACL の設定
d:
を追加して、ファイル名ではなくディレクトリーを指定します。
/share/
ディレクトリーにデフォルト ACL を設定し、ユーザーグループに属さないユーザーの読み取りと実行を設定するには、以下のコマンドを実行します (これにより、個別ファイルのアクセス ACL が上書きされます)。
setfacl -m d:o:rx /share
10.4. ACL の取り込み
getfacl home/john/picture.png
# file: home/john/picture.png # owner: john # group: john user::rw- group::r-- other::r--
[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
10.5. ACL が設定されているファイルシステムのアーカイブ作成
star
パッケージが必要になります。
表10.1 star のコマンドラインオプション
オプション | 説明 |
---|---|
-c | アーカイブファイルを作成します。 |
-n | ファイルを抽出しません。-x と併用すると、ファイルが行う抽出を表示します。 |
-r | アーカイブ内のファイルを入れ替えます。パスとファイル名が同じファイルが置き換えられ、アーカイブファイルの末尾に書き込まれます。 |
-t | アーカイブファイルのコンテンツを表示します。 |
-u | アーカイブファイルを更新します。アーカイブにファイルが存在しない場合や、アーカイブ内の同じ名前のファイルよりも新しい場合は、ファイルはアーカイブの最後に書き込まれます。このオプションは、アーカイブがファイルであるか、またはバックスペースがあるブロックされていないテープの場合にのみ機能します。 |
-x | アーカイブからファイルを抽出します。-U と併用すると、アーカイブ内のファイルがファイルシステムにあるファイルよりも古い場合、そのファイルは抽出されません。 |
-help | 最も重要なオプションを表示します。 |
-xhelp | 最も重要ではないオプションを表示します。 |
-/ | アーカイブからファイルを抽出する際に、ファイル名から先頭のスラッシュを削除します。デフォルトでは、ファイルの抽出時にストライプ化されます。 |
-acl | 作成時または抽出時に、ファイルおよびディレクトリーに関連する ACL をアーカイブまたは復元します。 |
10.6. 旧システムとの互換性
tune2fs -l <filesystem-device>
e2fsprogs
パッケージ (Red Hat Enterprise Linux 2.1 および 4 のバージョンも含む) に含まれている e2fsck ユーティリティーのバージョンは、ext_attr 属性を使用してファイルシステムを確認できます。古いバージョンではこの確認が拒否されます。
10.7. 関連情報
10.7.1. インストールされているドキュメント
- ACL の man ページ - ACL の説明
- gedit の man ページ:ファイルアクセス制御リストの取得方法
- setfacl の man ページ:ファイルアクセス制御リストの設定方法
- star の man ページ: star ユーティリティーとそのオプションの詳細を説明します。
10.7.2. 便利な Web サイト
- http://acl.bestbits.at/ - ACL の Web サイト
第11章 LVM (論理ボリュームマネージャー)
11.1. LVM とは
/boot
パーティションを除き、物理 ボリュームは論理ボリューム に結合されます。/boot
パーティションは、ブートローダーが読み取ることができないため、論理ボリュームグループでは配置できません。root (/
)パーティションが論理ボリュームにある場合は、ボリュームグループの一部ではない別の /boot
パーティションを作成します。
図11.1 論理ボリューム
[D]
/home
や /
などのマウントポイント、ext2 や ext3 などのファイルシステムタイプが割り当てられます。パーティションが最大容量に達すると、ボリュームグループの空き領域を論理ボリュームに追加して、パーティションのサイズを増やすことができます。新しいハードドライブをシステムに追加すると、それをボリュームグループに追加したり、論理ボリュームであるパーティションのサイズを大きくしたりできます。
図11.2 論理ボリューム
[D]
11.1.1. LVM2 とは
11.2. LVM 設定
system-config-lvm
ユーティリティーを使用して、インストール後に独自の LVM 設定を作成できます。次の 2 つのセクションでは、インストール時に ディスク Druid を使用してこのタスクを完了することに重点を置いています。3 番目のセクションでは、LVM ユーティリティー(system-config-lvm
)を紹介します。これにより、X ウィンドウまたはグラフィカルに LVM ボリュームを管理できます。
- ハードドライブからの 物理ボリューム の作成
- 物理 ボリュームからのボリュームグループ の作成
- ボリュームグループから 論理ボリューム を作成し、論理ボリュームのマウントポイントを割り当てます。
11.3. 自動パーティション設定
- /boot パーティションは、LVM 以外のパーティションにあります。以下の例では、最初のドライブ(/dev/sda1)の最初のパーティションになります。ブート可能なパーティションは、LVM 論理ボリュームには存在 できません。
- 1 つの LVM ボリュームグループ(VolGroup00)が作成されます。これは、選択したすべてのドライブと、残りのすべての領域にまたがるものです。以下の例では、最初のドライブの残り(/dev/sda2)と、2 番目のドライブ全体(/dev/sdb1)がボリュームグループに割り当てられます。
- 2 つの LVM 論理ボリューム(LogVol00 および LogVol01)が、新たに作成したスパンのボリュームグループから作成されます。以下の例では、推奨されるスワップ領域は自動的に計算され LogVol01 に割り当てられ、残りはルートファイルシステム LogVol00 に割り当てられます。
図11.3 2 つの SCSI ドライブを使用した自動 LVM 設定
[D]
11.4. 手動 LVM パーティション設定
11.4.1. /boot パーティションの作成
図11.4 空白ドライブを 2 つ(準備完了)
[D]
/boot
パーティションは LVM ボリュームには存在できません。
- New を選択します。
- Mount Point プルダウンメニューから /boot を選択します。
- File System Type プルダウンメニューから ext3 を選択します。
- Allowable Drives エリアから sda チェックボックスを選択します。
- Size (MB) メニューの 100 (デフォルト)のままにします。
- Additional Size Options エリアで Fixed size (デフォルトの)ラジオボタンを選択したままにします。
- パーティションをプライマリーパーティションにするには、Force to be a primary partition を選択します。プライマリーパーティションは、ハードドライブの最初の 4 つのパーティションの 1 つです。選択されていない場合は、パーティションが論理パーティションとして作成されます。他のオペレーティングシステムがすでにシステム上にある場合は、このオプションの選択を解除する必要があります。プライマリーパーティションと論理/拡張パーティションの詳細は、『Red Hat Enterprise Linux インストールガイド』 の付録セクションを参照してください。
図11.5 ブートパーティションの作成
[D]
図11.6 表示される /boot パーティション
[D]
11.4.2. LVM 物理ボリュームの作成
- New を選択します。
図11.7 物理ボリュームの作成
[D]- マウントポイントは入力できません(すべての物理ボリュームを作成してから、すべてのボリュームグループを作成したら)。
- 物理ボリュームを 1 つのドライブに制限する必要があります。Allowable Drives には、物理ボリュームを作成するドライブを選択します。複数のドライブがある場合は、すべてのドライブが選択されるため、1 つのドライブ以外のすべてのドライブの選択を解除する必要があります。
- 物理ボリュームのサイズを入力します。
- Fixed size を選択して、指定したサイズに物理ボリュームを設定し、Fill all space up (MB) を選択し、物理ボリュームサイズの範囲を割り当てるサイズを MB 単位で入力するか、Fill to maximum allowable size を選択して拡張し、ハードディスクで利用可能な領域をすべて埋めます。複数の拡張可能がある場合には、ディスクで利用可能な空き領域を共有します。
- パーティションをプライマリーパーティションにする場合は、Force to be a primary partition を選択します。
- OK をクリックしてメイン画面に戻ります。
図11.8 2 つの物理ボリュームが作成されている
[D]
11.4.3. LVM ボリュームグループの作成
- LVM ボタンをクリックして、物理ボリュームをボリュームグループに収集します。ボリュームグループは基本的に物理ボリュームの集合です。論理ボリュームは複数指定できますが、物理ボリュームは 1 つのボリュームグループにしか存在できません。注記ボリュームグループには、オーバーヘッドのディスク領域があります。ボリュームグループのサイズは、物理ボリュームサイズの合計よりもわずかに小さくなります。
図11.9 LVM ボリュームグループの作成
[D] - 必要に応じて 、ボリュームグループ名 を変更します。
- ボリュームグループに使用する物理ボリュームを選択します。
11.4.4. LVM 論理ボリュームの作成
/
、/home
、swap 領域などのマウントポイントを使用して論理ボリュームを作成します。/boot
は論理ボリュームにすることはできません。論理ボリュームを追加するには、Logical Volumes セクションの Add ボタンをクリックします。図11.10「論理ボリュームの作成」 に示されるようにダイアログウィンドウが表示されます。
図11.10 論理ボリュームの作成
[D]
図11.11 保留中の論理ボリューム
[D]
図11.12 最終的な手動設定
[D]
11.5. LVM ユーティリティー system-config-lvm
の使用
/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).
/dev/hda2
に作成され、/boot
は /dev/hda1
に作成されました。このシステムは、初期化されていないエンティティーも設定されており、図11.17「初期化されていないエンティティー」 で説明されています。次の図は、LVM ユーティリティーのメインウィンドウを示しています。上記の設定の論理ビューと物理ビューを以下に示します。3 つの論理ボリュームは、同じ物理ボリューム (hda2) に存在します。
図11.13 メイン LVM ウィンドウ
[D]
図11.14 物理ビューウィンドウ
[D]
図11.15 論理ビューウィンドウ
[D]
/
(root)ディレクトリーで使用されている場合、ボリュームのアンマウントはできないため、このタスクは成功しません。
図11.16 論理ボリュームの編集
[D]
11.5.1. 初期化されていないエンティティーの使用
/boot
であるため初期化できません。初期化されていないエンティティーを以下に示します。
図11.17 初期化されていないエンティティー
[D]
11.5.2. 未割り当てボリュームのボリュームグループへの追加
- 新しいボリュームグループの作成
- 未割り当てのボリュームの既存のボリュームグループへの追加
- LVM からのボリュームの削除
図11.18 未割り当てのボリューム
[D]
図11.19 ボリュームグループへの物理ボリュームの追加
[D]
- 新しい論理ボリュームを作成します( Create New Logical Volume (s) ボタンをクリックします。
- 既存の論理ボリュームの 1 つを選択し、エクステントを増やす (「ボリュームグループの拡張」 を参照)
- 既存の論理ボリュームを選択し、Remove Selected Logical Volume(s) ボタンをクリックして、ボリュームグループから削除する。この操作を実行するために未使用のスペースを選択できないことに注意してください。
図11.20 ボリュームグループの論理ビュー
[D]
図11.21 ボリュームグループの論理ビュー
[D]
11.5.3. エクステントの移行
図11.22 エクステントの移行
[D]
図11.23 進行中のエクステントの移行
[D]
図11.24 ボリュームグループの論理的および物理的ビュー
[D]
11.5.4. LVM を使用した新しいハードディスクの追加
図11.25 初期化されていないハードディスク
[D]
11.5.5. 新しいボリュームグループの追加
図11.26 新しいボリュームグループの作成
[D]
図11.27 新しい論理ボリュームを作成する
[D]
図11.28 新しいボリュームグループの物理ビュー
[D]
11.5.6. ボリュームグループの拡張
/dev/hda6
が選択されています。
図11.29 ディスクエンティティーの選択
[D]
図11.30 拡張ボリュームグループの論理的および物理的ビュー
[D]
11.5.7. 論理ボリュームの編集
図11.31 論理ボリュームの編集
[D]
/mnt/backups
にマウントされます。これを以下の図に示します。
図11.32 論理ボリュームの編集 - マウントオプションの指定
[D]
図11.33 論理ボリュームの編集
[D]
11.6. 関連情報
11.6.1. インストールされているドキュメント
- rpm -qd lvm2 —このコマンドは、man ページを含む lvm パッケージから入手可能なすべてのドキュメントを表示します。
- lvm help —このコマンドは、使用可能なすべての LVM コマンドを表示します。
11.6.2. 便利な Web サイト
- http://sources.redhat.com/lvm2 — LVM2 Web ページ。概要、メーリングリストへのリンクなどが含まれています。
- http://tldp.org/HOWTO/LVM-HOWTO/ — Linux ドキュメントプロジェクトの LVM HOWTO ページ。
パート II. パッケージ管理
第12章 RPM でのパッケージ管理
rpm
パッケージによって処理されるように構築されたパッケージでのみ機能します。エンドユーザーの場合、RPM によりシステムの更新が容易になります。RPM パッケージのインストール、アンインストール、およびアップグレードは、短いコマンドで実行できます。RPM は、インストールされたパッケージとそのファイルのデータベースを維持するため、システム上で強力なクエリーと検証を呼び出すことができます。グラフィカルインターフェイスを使用する場合は、Package Management Tool を使用して多くの RPM コマンドを実行できます。詳細は、13章パッケージ管理ツール を参照してください。
.tar.gz
ファイルで実行できないもの)。
12.1. RPM 設計ゴール
- アップグレード可能性
- RPM を使用すると、完全に再インストールしなくても、システムの個別コンポーネントをアップグレードすることができます。RPM (Red Hat Enterprise Linux など)に基づくオペレーティングシステムの新しいリリースを取得する場合は、(他のパッケージシステムに基づくオペレーティングシステムと同様に)マシンに を再インストールする必要はありません。RPM を使用すると、システムのインテリジェントな完全自動化のインプレースアップグレードが可能になります。パッケージの設定ファイルはアップグレード後も保持されるため、カスタマイズを失うことはありません。パッケージをアップグレードするのに特別なアップグレードファイルは必要ありません。これは、同じ RPM ファイルを使用してシステムにパッケージをインストールおよびアップグレードするためです。
- 強力なクエリー
- RPM は、強力なクエリーオプションを提供するように設計されています。データベース全体からパッケージの検索や、特定のファイルの検索が可能です。また、どのパッケージがパッケージに属しているかを簡単に確認することもできます。また、パッケージが存在する場所から簡単に確認することができます。RPM パッケージに含まれるファイルは圧縮アーカイブにあり、パッケージとそのコンテンツに関する有用な情報が含まれるカスタムのバイナリーヘッダーとともに、個々のパッケージにすばやく簡単にクエリーできます。
- システムの検証
- もう 1 つの強力な RPM 機能は、パッケージを検証する機能です。一部のパッケージで重要なファイルを削除した場合は、パッケージを確認できます。その後、異常が通知されます。その時点では、必要に応じてパッケージを再インストールできます。変更した設定ファイルは、再インストール時に保持されます。
- 純粋なソース
- 重要な設計目標は、ソフトウェアの元の作成者が配布する 初期 ソフトウェアソースを使用できるようにすることでした。RPM では、元のソースと、使用されたパッチ、完全なビルド命令があります。これは、いくつかの理由で重要な利点です。たとえば、新しいバージョンのプログラムがリリースされた場合は、コンパイルするためにゼロから開始する必要はありません。パッチを確認して、必要 な 操作を確認できます。コンパイル済みのデフォルトと、適切に構築するためにソフトウェアを正しく構築するために行われたすべての変更については、この手法を使用して簡単に確認できます。ソースを保持する目的は、開発者にとってのみ重要であると思われるかもしれませんが、エンドユーザー向けの品質の高いソフトウェアも向上します。
12.2. RPM の使用
12.2.1. RPM パッケージの検索
- Red Hat Enterprise Linux CD-ROM
- http://www.redhat.com/apps/support/errata/から入手できる Red Hat エラータページ
- Red Hat Network: Red Hat Network の詳細は、15章システムの登録およびサブスクリプション管理 を参照してください。
12.2.2. インストール
foo-1.0-1.i386.rpm
などのファイル名があります。ファイル名には、パッケージ名(foo
)、バージョン(1.0
)、リリース(1
)、およびアーキテクチャー(i386
)が含まれます。パッケージをインストールするには、root でログインして、シェルプロンプトで以下のコマンドを入力します。
rpm -ivh foo-1.0-1.i386.rpm
rpm -Uvh foo-1.0-1.i386.rpm
Preparing... ########################################### [100%] 1:foo ########################################### [100%]
error: V3 DSA signature: BAD, key ID 0352860f
error: Header V3 DSA signature: BAD, key ID 0352860f
NOKEY
という単語が含まれます。
warning: V3 DSA signature: NOKEY, key ID 0352860f
12.2.2.1. インストール済みパッケージの準備
Preparing... ########################################### [100%] package foo-1.0-1 is already installed
rpm -ivh --replacepkgs foo-1.0-1.i386.rpm
12.2.2.2. 競合するファイル
Preparing... ########################################### [100%] file /usr/bin/foo from install of foo-1.0-1 conflicts with file from package bar-2.0.20
rpm -ivh --replacefiles foo-1.0-1.i386.rpm
12.2.2.3. 解決できない依存関係
error: Failed dependencies: bar.so.2 is needed by foo-1.0-1 Suggested resolutions: bar-2.0.20-3.i386.rpm
rpm -ivh foo-1.0-1.i386.rpm bar-2.0.20-3.i386.rpm
Preparing... ########################################### [100%] 1:foo ########################################### [ 50%] 2:bar ########################################### [100%]
-q --whatprovides
オプションの組み合わせを試して、必要なファイルが含まれているパッケージを判断できます。
rpm -q --whatprovides bar.so.2
--nodeps
オプションを使用します。
12.2.3. アンインストール
rpm -e foo
foo
-1.0-1.i386.rpm ではなく、パッケージ名 foo
を使用していた点に注意してください。パッケージをアンインストールするには、foo
を元のパッケージの実際のパッケージ名に置き換えます。
error: Failed dependencies: foo is needed by (installed) bar-2.0.20-3.i386.rpm
--nodeps
オプションを使用します。
12.2.4. アップグレード
rpm -Uvh foo-2.0-1.i386.rpm
foo
パッケージの古いバージョンを自動的にアンインストールします。-U
は、以前のバージョンの パッケージがインストールされていなくても、パッケージをインストールするため注意してください。
-U
オプションを使用することは推奨されません。これは実行中のシステムに影響を与えませんが、次回の再起動時に新しいカーネルが起動できない場合は、他のカーネルが起動できなくなります。
-i
オプションを使用すると、GRUB ブートメニュー(/etc/grub.conf
)にカーネルが追加されます。同様に、古い不要なカーネルを削除すると、GRUB からカーネルが削除されます。
saving /etc/foo.conf as /etc/foo.conf.rpmsave
package foo-2.0-1 (which is newer than foo-1.0-1) is already installed
rpm -Uvh --oldpackage foo-1.0-1.i386.rpm
12.2.5. Freshening
rpm -Fvh foo-1.2-1.i386.rpm
rpm -Fvh *.rpm
12.2.6. クエリー
/var/lib/rpm/
ディレクトリーに保存され、インストールされているパッケージ、各パッケージのバージョン、およびその他からパッケージ内のファイルへの変更をクエリーするために使用されます。
foo
をクエリーすると、以下のような出力が生成される可能性があります。
foo-2.0-1
- -a - 現在インストールされているすべてのパッケージをクエリーします。
- -f <
;filename>
; - パッケージがf <filename> を所有する RPM データベースを照会し
ます。ファイルを指定する場合は、ファイルの絶対パスを指定します(例: rpm -qf/bin/ls
)。 - -p <
packagefile> - アン
インストールされたパッケージ <packagefile> にクエリーを実行し
ます。
- -i は、名前、説明、リリース、サイズ、ビルド日、インストール日、ベンダーなどのパッケージ情報を表示します。
- -l は、パッケージに含まれるファイルの一覧を表示します。
- -s は、パッケージ内のすべてのファイルの状態を表示します。
- -d は、ドキュメントとしてマークされたファイル(man ページ、情報ページ、README など)を表示します。
- -c は、設定ファイルとしてマークされているファイルの一覧を表示します。インストール後に編集してシステムにパッケージ(
sendmail.cf
、passwd
、inittab
など)に合わせて編集するファイルです。
12.2.7. 検証中
- 特定のファイルを含むパッケージを確認するには、次のコマンドを実行します。
rpm -Vf /usr/bin/foo
この例では、/usr/bin/foo
は、パッケージのクエリーに使用されるファイルへの絶対パスです。 - システム全体にインストールされているパッケージをすべて確認するには、次のコマンドを実行します。
rpm -Va
- RPM パッケージファイルに対してインストールされたパッケージを確認するには、次のコマンドを実行します。
rpm -Vp foo-1.0-1.i386.rpm
このコマンドは、RPM データベースが破損していると思われる場合に役立ちます。
c
は設定ファイルを表す)の文字列で、ファイル名になります。8 文字は、ファイルの 1 つの属性を、RPM データベースで記録した属性の値と比較した結果を示します。シングルピリオド(.
)は、テストに合格することを意味します。以下の文字は、特定の不一致を示しています。
5
- MD5 チェックサムs
- ファイルサイズl
- シンボリックリンクt
- ファイルの変更時間d
- deviceu
- userg
- グループm
- モード(パーミッションとファイルタイプを含む)?
: 読み取りできないファイル
12.3. パッケージの署名の確認
rpm -K --nosignature <rpm-file>
;rpm-file>: md5 OK
が表示されます。この簡単なメッセージは、ダウンロードによってファイルが破損していないことを意味します。詳細なメッセージを表示するには、コマンドで -K
を -Kvv
に置き換えます。
12.3.1. キーのインポート
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
rpm -qa gpg-pubkey*
gpg-pubkey-37017186-45761324
rpm -qi gpg-pubkey-37017186-45761324
12.3.2. パッケージの署名の確認
rpm -K <rpm-file>
md5 gpg OK
というメッセージが表示されます。これは、パッケージの署名が検証され、破損していないことを意味します。
12.4. RPM 使用率の実用的な例および一般的な例
- 誤って一部のファイルを削除したが、削除したものは確認されていない可能性があります。システム全体を確認し、何が欠落しているかを確認するには、次のコマンドを試してください。
rpm -Va
一部のファイルが見つからないか、破損しているように見える場合は、パッケージを再インストールするか、アンインストールしてから、パッケージを再インストールする必要があります。 - 場合によっては、認識していないファイルが表示される場合があります。所有しているパッケージを検索するには、次のコマンドを実行します。
rpm -qf /usr/bin/ggv
出力は以下のようになります。ggv-2.6.0-2
- 以下のシナリオで、上記の 2 つの例を組み合わせることができます。
/usr/bin/paste
に問題があるとします。そのプログラムを所有するパッケージを確認しますが、どのパッケージを所有するかを確認して ください。以下のコマンドを入力します。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.
- おそらく、
crontabs
RPM によってインストールされるファイルを確認します。以下を入力します。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
12.5. 関連情報
12.5.1. インストールされているドキュメント
- rpm --help - このコマンドは、RPM パラメーターのクイックリファレンスを表示します。
- man rpm: RPM の man ページには、rpm --help コマンドよりも RPM パラメーターに関する詳細が記載されています。
12.5.2. 便利な Web サイト
- http://www.rpm.org/ - RPM の Web サイトです。
- https://lists.rpm.org/mailman/listinfo/rpm-list - このリンクにアクセスして、アーカイブされた RPM メーリングリストにサブスクライブします。
12.5.3. 関連書籍
- Eric Foster-Johnson の 『Red Hat RPM ガイド』 は、RPM パッケージ形式と RPM パッケージ管理ユーティリティーのすべての詳細に関する優れたリソースです。でオンラインで http://docs.fedoraproject.org/drafts/rpm-guide-en/ 使用できます。
第13章 パッケージ管理ツール
図13.1 パッケージ管理ツール
[D]
13.1. パッケージの一覧表示および分析
図13.2 オプションパッケージ
[D]
13.2. パッケージのインストールと削除
図13.3 パッケージのインストール
[D]
図13.4 パッケージの依存関係:インストール
[D]
図13.5 パッケージの削除
[D]
図13.6 パッケージの依存関係:削除
[D]
図13.7 パッケージの同時インストールと削除
[D]
第14章 YUM (Yellowdog Updater Modified)
14.1. Yum リポジトリーの設定
createrepo
パッケージをインストールします。~]# yum install createrepo
- リポジトリーに指定するすべてのパッケージを 1 つのディレクトリー(例:
/mnt/local_repo
)にコピーします。 - そのディレクトリー(例: createrepo /mnt/local_repo)で createrepo を実行します。これにより、Yum リポジトリーに必要なメタデータが作成されます。
14.2. yum コマンド
- yum install & lt;package name/s>
- パッケージまたはパッケージグループの最新バージョンをインストールするために使用されます。指定したパッケージ名に一致するパッケージがない場合は、シェルグロブであると想定され、一致するものがインストールされます。
- yum update & lt;package name/s>
- 指定したパッケージを利用可能な最新バージョンに更新するために使用されます。パッケージ名や指定がない場合は、yum はインストール済みパッケージの更新を試みます。--obsoletes オプションが使用されている場合(つまり、yum --obsoletes < package name/s >)、yum は廃止されたパッケージを処理します。そのため、更新間で廃止されるパッケージは削除され、それに応じて置き換えられます。
- yum check-update
- このコマンドを使用すると、インストール済みパッケージで利用可能な更新を確認できます。yum は、すべてのリポジトリーからパッケージの更新が利用可能な場合に一覧を返します。
- yum remove & lt;package name/s>
- 指定したパッケージと、削除されるパッケージに依存するその他のパッケージを削除するために使用されます。
- yum provides < ;file name>
- 特定のファイルまたは機能を提供するパッケージを決定するために使用されます。
- yum search <keyword>
- このコマンドは、すべてのリポジトリーの RPM の説明、要約、パッケージャー、およびパッケージ名フィールドで指定されたキーワードを含むパッケージを見つけるために使用されます。
- yum localinstall & lt;absolute path to package name/s>
- yum を使用して、マシン内にローカルにあるパッケージをインストールする場合に使用されます。
14.3. yum オプション
- -y
- トランザクションのすべての質問に yes と回答します。
- -t
- トランザクションで指定されたパッケージに関するエラーに対するエラーの許容性が yum に設定します。たとえば、yum update package1 package2 を実行し、
package2
がすでにインストールされている場合は、yum は引き続き package1 をインストールします。 - --exclude=<package name>
- 特定のトランザクションで、名前または glob で特定のパッケージを除外します。
14.4. yumの設定
/etc/yum.conf
で設定されます。一般的な /etc/yum.conf
ファイルの例を以下に示します。
[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
/etc/yum.conf
ファイルは、[main] セクションとリポジトリーセクションという 2 種類のセクションで設定されています。[main] セクションは 1 つだけ指定できますが、1 つの /etc/yum.conf
内に複数のリポジトリーを指定できます。
14.4.1. [main] オプション
- cachedir
- このオプションは、yum がキャッシュとデータベースファイルを保存するディレクトリーを指定します。デフォルトでは、yum のキャッシュディレクトリーは
/var/cache/yum
です。 - keepcache= <1 or 0>
- keepcache=1 を設定すると、インストールの成功後もヘッダーとパッケージのキャッシュを維持するように yum に指示します。keepcache=1 がデフォルトです。
- reposdir= <absolute path to directory of .repo files>
- このオプションを使用すると、
.repo
ファイルが置かれているディレクトリーを指定できます。.repo
ファイルには、リポジトリー情報が含まれます(/etc/yum.conf
の [repository] セクションと同様)。yum は、.repo
ファイルおよび/etc/yum.conf
ファイルの [repository] セクションからすべてのリポジトリー情報を収集して、各トランザクションに使用するリポジトリーのマスターリストを作成します。[repository] セクションと.repo
ファイルの両方に使用できるオプションの詳細は、「 [repository] Options」 を参照してください。reposdir が設定されていない場合、yum はデフォルトのディレクトリー/etc/yum.repos.d
を使用します。 - gpgcheck=<1 or 0>
- これにより、ローカルパッケージのインストールなど、全リポジトリーのパッケージで GPG 署名の確認を無効または有効にします。デフォルトは gpgcheck=0 で、GPG チェックを無効にします。このオプションが
/etc/yum.conf
ファイルの [main] セクションで設定されている場合は、すべてのリポジトリーの GPG チェックルールが設定されます。ただし、これを個別のリポジトリーに設定することもできます。つまり、あるリポジトリーで GPG チェックを有効にしつつ、別のリポジトリーで無効にすることもできます。 - assumeyes= <1 or 0>
- これにより、yum が重要なアクションの確認を要求するかどうかを決定します。assumeyes=0 の場合のデフォルト。これは、yum により確認を求めるプロンプトが表示されることを意味します。assumeyes=1 を設定すると、yum はコマンドラインオプション -y と同じように動作します。
- tolerant= <1 または 0>
- 有効にすると(tolerant=1)、yum はパッケージに関してコマンドラインでエラーを許容します。これは、yum コマンドラインオプション -t と似ています。このデフォルト値は tolerant=0 (トレラントではありません)です。
- exclude=<package name/s>
- このオプションを使用すると、インストール/更新時にキーワードでパッケージを除外できます。複数のパッケージを指定する場合は、スペースで区切られたリストになります。ワイルドカードを使用したシェル glob (* や ? など)を使用できます。
- retries= <number of retries>
- これにより、エラーを返す前に yum がファイルの取得を試行する回数が設定されます。これを 0 に設定すると、yum は永久に再試行されます。デフォルト値は 6 です。
14.4.2. [repository] Options
/etc/yum.conf
ファイルの [repository] セクションには、yum がパッケージのインストール、更新、および依存関係の解決時にパッケージを検索するために使用できるリポジトリーに関する情報が含まれます。リポジトリーエントリーは以下の形式になります。
[repository ID] name=repository name baseurl=url, file or ftp://path to repository
.repo
ファイルにリポジトリー情報を指定することもできます(例: rhel5.repo
)。.repo
ファイルに置かれたリポジトリー情報の形式は、/etc/yum.conf
の [repository] と同じです。
.repo
ファイルは、reposdir= を使用して /etc/yum.conf
の [main] セクションで別のリポジトリーパスを指定しない限り、通常は /etc/yum.repos.d
に配置されます。.repo
ファイルと /etc/yum.conf
ファイルには、複数のリポジトリーエントリーを含めることができます。
- [repository ID]
- リポジトリー ID は、リポジトリー識別子として機能する一意の 1 単語の文字列です。
- name=repository name
- これは、人間が判読可能な、リポジトリーを記述する文字列です。
- baseurl=http、file、または ftp://path
- これは、リポジトリーの
repodata
ディレクトリーが置かれているディレクトリーへの URL です。リポジトリーがマシンのローカルにある場合は、ローカルリポジトリー への baseurl=file:// パスを 使用します。HTTP を使用してリポジトリーがオンラインにある場合は、baseurl=http://リンク を使用します。リポジトリーがオンラインで FTP を使用する場合は、baseurl=ftp://リンク を使用します。特定のオンラインリポジトリーで基本的な HTTP 認証が必要な場合は、username: password @link として追加して、baseurl 行でユーザー名とパスワードを指定できます。たとえば、のリポジトリーで http://www.example.com/repo/ user というユーザー名とパスワード os password が必要な場合、baseurl リンクは baseurl=http://user:/repo/ として指定できます。
- gpgcheck=<1 or 0>
- これにより、特定のリポジトリーの確認を GPG 署名を無効化/有効にします。デフォルトは gpgcheck=0 で、GPG チェックを無効にします。
- gpgkey=URL
- このオプションを使用すると、リポジトリーの ASCII アラームされた GPG キーファイルの URL を参照できます。このオプションは、通常、yum がパッケージの検証に公開鍵を必要とし、必要な鍵が RPM データベースにインポートされていない場合に使用されます。このオプションを設定すると、yum は指定された URL からキーを自動的にインポートします。assumeyes=1 (
/etc/yum.conf
の [main] セクションに)または -y ( yum トランザクション)を設定しない限り、キーをインストールする前にプロンプトが表示されます。 - exclude=<package name/s>
- このオプションは、
/etc/yum.conf
の [main] セクションの exclude オプションと似ています。ただし、指定したリポジトリーにのみ適用されます。 - includepkgs=<package name/s>
- このオプションは、除外の とは異なり ます。このオプションをリポジトリーに設定すると、yum はそのリポジトリーで指定されたパッケージのみを表示できます。デフォルトでは、リポジトリー内の全パッケージが yum に表示されます。
14.5. ISO と Yum を使用してシステムをオフラインでアップグレード
- ISO イメージをマウントするターゲットディレクトリーを作成します。このディレクトリーはマウント時に自動的に作成されないため、
root
で次の手順に進む前に作成します。mkdir mount_dir
mount_dir をマウントディレクトリーへのパスに置き換えます。Typicaly は、/media/
ディレクトリーにサブディレクトリーとして作成します。 - Red Hat Enterprise Linux 5 インストール ISO イメージを、以前に作成したターゲットディレクトリーにマウントします。
root
で以下のコマンドを実行します。mount
-o
loop
iso_name mount_diriso_name を ISO イメージへのパスに置き換え、mount_dir をターゲットディレクトリーへのパスに置き換えます。ブロックデバイスとしてファイルをマウントするには、-o
loop
オプションが必要です。 - マウントディレクトリーから、
.discinfo
ファイルの最初の行にある数値を確認します。head
-n1
mount_dir/.discinfo
このコマンドの出力は ISO イメージの ID 番号で、以下の手順を実行するのに知っておく必要があります。 /etc/yum.repos.d/
ディレクトリーに新しいファイル(例: new.repo )を作成し、以下の形式でコンテンツを追加します。正常に機能するために、このディレクトリーの設定ファイルの拡張子は .repo である必要があります。[repository] mediaid=media_id name=repository_name baseurl=repository_url gpgkey=gpg_key enabled=1 gpgcheck=1
media_id を、mount_dir/.discinfo
にある数値に置き換えます。repository_name の代わりにリポジトリー名を設定します。repository_url はマウントポイント内のリポジトリーディレクトリーへのパスに、gpg_key は GPG キーへのパスに置き換えます。たとえば、Red Hat Enterprise Linux 5 Server ISO のリポジトリー設定は以下のようになります。[rhel5-Server] mediaid=1354216429.587870 name=RHEL5-Server baseurl=file:///media/rhel5/Server gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release enabled=1 gpgcheck=1
- 前の手順で作成した
/etc/yum.repos.d/new.repo
を含むすべての yum リポジトリーを更新します。root
で以下のコマンドを実行します。yum
update
これにより、システムはマウントされた ISO イメージで提供されたバージョンにアップグレードされます。 - アップグレードに成功したら、
root
権限で ISO イメージをアンマウントできます。umount mount_dir
ここで、mount_dir はマウントディレクトリーへのパスです。また、最初の手順で作成されたマウントディレクトリーを削除することもできます。root
で以下のコマンドを実行します。rmdir mount_dir
- 以前に作成された設定ファイルを別のインストールまたは更新に使用しない場合は、その設定ファイルを削除できます。
root
で以下のコマンドを実行します。rm
/etc/yum.repos.d/new.repo
例14.1 Red Hat Enterprise Linux 5.8 から 5.9 へのアップグレード
RHEL5.9-Server-20121129.0-x86_64-DVD1.iso
)。ターゲットディレクトリー /media/rhel5/
を複製している。root
で ISO イメージがあるディレクトリーに移動し、以下のコマンドを入力します。
~]# mount-o
loop
RHEL5.9-Server-20121129.0-x86_64-DVD1.iso
/media/rhel5/
~]# head-n1
/media/rhel5/.discinfo
1354216429.587870
/etc/yum.repos.d/rhel5.repo ファイルを作成し、以下のテキストを挿入します
。
[rhel5-Server] mediaid=1354216429.587870 name=RHEL5-Server baseurl=file:///media/rhel5/Server gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release enabled=1 gpgcheck=1
RHEL5.9-Server-20121129.0-x86_64-DVD1.iso
が提供するバージョンに効果的にアップグレードされます。root
で以下のコマンドを実行します。
~]# yum update
~]# umount /media/rhel5/
~]# rmdir /media/rhel5/
~]# rm /etc/yum.repos.d/rhel5.repo
14.6. 便利な yum 変数
/etc/ yum.conf
ファイルおよび .repo
ファイル)の両方に使用できる変数の一覧です。
- $releasever
- これは、distroverpkg に記載されているように、パッケージのバージョンに置き換えられます。デフォルトは redhat-release パッケージのバージョンです。
- $arch
- これは、Python の os.uname () に記載されているように、システムのアーキテクチャーに置き換えられます。
- $basearch
- これは、ベースアーキテクチャーに置き換えられます。たとえば、$arch=i686 の場合は、$basearch=i386 となります。
- $YUM0-9
- これは、同じ名前のシェル環境変数の値に置き換えられます。シェル環境変数が存在しない場合は、設定ファイルの変数は置き換えられません。
第15章 システムの登録およびサブスクリプション管理
15.1. Red Hat Subscription Manager ツールの使用
15.1.1. Red Hat Subscription Manager GUI の起動
図15.1 Red Hat Subscription Manager メニューオプション
[root@server1 ~]# subscription-manager-gui
15.1.2. subscription-manager コマンドラインツールの実行
[root@server1 ~]# subscription-manager command [options]
表15.1 一般的な subscription-manager コマンド
コマンド | 説明 |
---|---|
register | サブスクリプションサービスに新しいシステムを登録するか、または識別します。 |
unregister | マシンの登録を解除します。これにより、そのサブスクリプションが削除され、サブスクリプションサービスからマシンが削除されます。 |
subscribe | 特定のサブスクリプションをマシンにアタッチします。 |
redeem | ハードウェアおよび BIOS 情報に基づいて、マシンをベンダーから購入した事前に指定したサブスクリプションに自動的にアタッチします。 |
unsubscribe | 特定のサブスクリプションまたはマシンからすべてのサブスクリプションを削除します。 |
list | マシンと互換性があるすべてのサブスクリプションを一覧表示します。マシンに実際にアタッチされているサブスクリプション、またはマシンで利用可能な未使用のサブスクリプションを一覧表示します。 |
15.2. システムの登録と登録解除
15.2.1. GUI からの登録
- Subscription Manager を起動します。以下に例を示します。
[root@server ~]# subscription-manager-gui
- システムがまだ登録されていない場合は、My Installed Products タブの右上にあるウィンドウの上部に Register ボタンがあります。
- 登録に使用するサブスクリプションサーバーを特定するには、サービスのホスト名を入力します。デフォルトのサービスは、カスタマーポータルの Subscription Management で、ホスト名が subscription.rhn.redhat.com になります。Subscription Asset Manager などの別のサブスクリプションサービスを使用するには、ローカルサーバーのホスト名を入力します。証明書ベースのサブスクリプションを使用し、認識するサブスクリプションサービスがあり、システムは初回起動時にそれらのいずれかに登録できます。
- カスタマーポータルの Subscription Management。Red Hat がホストしているサービスです (デフォルト)。
- Subscription Asset Manager。オンプレミスのサブスクリプションサーバーです。プロキシーとして動作し、コンテンツ配信をカスタマーポータルのサービスに送信します。
- CloudForms System Engine。オンプレミスのサービスです。サブスクリプションサービスとコンテンツ配信の両方を処理します。
- ログインする サブスクリプションサービスの ユーザー認証情報を入力します。使用するユーザーの認証情報は、サブスクリプションサービスによって異なります。カスタマーポータルに登録する場合は、管理者または企業アカウントに Red Hat Network の認証情報を使用します。ただし、Subscription Asset Manager または CloudForms System エンジンの場合、使用するユーザーアカウントはオンプレミスサービス内に作成され、おそらくカスタマーポータルのユーザーアカウントと同じではありません。
- 必要に応じて、Manually assign subscriptions after registration チェックボックスを選択します。デフォルトでは、登録プロセスは自動的に最適なサブスクリプションをシステムに割り当てます。「サブスクリプションのアタッチと削除」 にあるように、サブスクリプションを手動で選択できるようにオフにできます。
- 登録が開始されると、Subscription Manager はシステムを登録する組織および環境 (組織内のサブドメイン) をスキャンします。カスタマーポータルのサブスクリプション管理を使用する IT 環境には 1 つの組織しかないため、追加設定は必要ありません。Subscription Asset Manager などのローカルのサブスクリプションサービスを使用する IT インフラストラクチャーには複数の組織が設定されている場合があり、それらの組織内に複数の環境が設定されている場合があります。複数の組織が検出されると、Subscription Manager は参加する組織を選択するよう要求します。
- デフォルト設定では、サブスクリプションが自動的に選択され、システムにアタッチされます。システムにアタッチするサブスクリプションを確認し、確定します。
- 要求されたら、検出されたサブスクリプションに使用するサービスレベルを選択します。
- Subscription Manager は、選択したサブスクリプションを表示します。ウィザードを完了するには、Subscribe ボタンをクリックして、このサブスクリプションの選択を確認する必要があります。
15.2.2. コマンドラインからの登録
例15.1 カスタマーポータルへのシステムの登録
[root@server1 ~]# subscription-manager register --username admin-example --password secret The system has been registered with id: 7d133d55-876f-4f47-83eb-0ee931cb0a97
例15.2 登録時の自動サブスクライブ
--autosubscribe
オプションがあります。これにより、システムをサブスクリプションサービスに登録し、1 回のステップでシステムのアーキテクチャーに最適なサブスクリプションを即座にアタッチします。
[root@server1 ~]# subscription-manager register --username admin-example --password secret --autosubscribe
例15.3 Subscription Asset Manager へのシステムの登録
--org
オプションを使用して行います。指定のユーザーには、その組織にシステムを追加するためのアクセス権限も必要です。
- サブスクリプションサービス自体を持つユーザーアカウントのユーザー名およびパスワード
--serverURL -
サブスクリプションサービスのホスト名を指定します。--baseurl
- コンテンツ配信サービスのホスト名を指定します(CloudForms System Engine のみ)。--org
- システムを登録する組織の名前を指定します。--environment
- システムを追加する組織内の環境(グループ)の名前を指定します。デフォルトの環境がどの組織にも設定されているため、これはオプションです。システムは、登録時にのみ環境に追加できます。
[root@server1 ~]# subscription-manager register --username=admin-example --password=secret --org="IT Department" --environment="dev" --serverurl=sam-server.example.com
The system has been registered with id: 7d133d55-876f-4f47-83eb-0ee931cb0a97
表15.2 登録オプション
オプション | 説明 | 必須 |
---|---|---|
--username=name | コンテンツサーバーのユーザーアカウント名を指定します。 | 必須 |
--password=password | ユーザーアカウントのパスワードを指定します。 | 必須 |
--serverurl=hostname | 使用するサブスクリプションサービスのホスト名を指定します。デフォルトはカスタマーポータルのサブスクライブ管理 subscription.rhn.redhat.com です。このオプションを使用しない場合、システムはカスタマーポータルのサブスクリプション管理に登録されます。 | Subscription Asset Manager または CloudForms System Engine で必須 |
--baseurl=URL | 更新を受け取るのに使用するコンテンツ配信サーバーのホスト名を指定します。カスタマーポータルのサブスクリプション管理および Subscription Asset Manager はいずれも、URL https://cdn.redhat.com で Red Hat がホストするコンテンツ配信サービスを使用します。CloudForms System Engine は独自のコンテンツをホストするため、この URL は System Engine に登録されているシステムに使用する必要があります。 | CloudForms System Engine で必須 |
--org=name | システムに参加する組織を指定します。 | 必須 (ホスト型環境を除く) |
--environment=name | システムを組織内の環境に登録します。 | 任意 |
--name=machine_name | 登録するシステムの名前を設定します。デフォルトは hostname と同じです。 | 任意 |
--autosubscribe | 最適な互換性のあるサブスクリプションを自動的に実施します。システムは 1 つのステップで設定できるため、自動セットアップ操作に適しています。 | 任意 |
--activationkey=key | 登録プロセスの一環として既存のサブスクリプションをアタッチします。サブスクリプションは、ベンダーまたはシステム管理者によって、Subscription Asset Manager を使用して事前に割り当てられます。 | 任意 |
--servicelevel=None|Standard|Premium | そのマシンのサブスクリプションに使用するサービスレベルを設定します。これは、--autosubscribe オプションとのみ使用されます。 | 任意 |
--release=NUMBER | システムのサブスクリプションに使用するオペレーティングシステムのマイナーリリースを設定します。製品および更新は、その特定のマイナーリリースバージョンに限定されます。これは、--autosubscribe オプションとのみ使用されます。 | 任意 |
--force | すでに登録済みでもシステムを登録します。通常、マシンがすでに登録されている場合は、レジスター操作は失敗します。 | 任意 |
15.2.3. 登録解除
例15.4 システムの登録解除
[root@server1 ~]# subscription-manager unregister
- Subscription Manager UI を開きます。
[root@server ~]# subscription-manager-gui
- System メニューを開き、Unregister 項目を選択します。
- システムの登録解除を確認します。
15.3. サブスクリプションのアタッチと削除
15.3.1. GUI によるサブスクリプションのアタッチと削除
15.3.1.1. サブスクリプションのアタッチ
- Subscription Manager を起動します。以下は例になります。
[root@server ~]# subscription-manager-gui
- All Available Subscriptions タブを開きます。
- 必要に応じて、日付の範囲を設定してFilters ボタンをクリックし、利用可能なサブスクリプションの検索に使用するフィルターを設定します。サブスクリプションは、アクティブ化の日付と名前でフィルターリングできます。このチェックボックスで、より細かなフィルターリングが可能です。
- match my systemを選択すると、システムのアーキテクチャーに適合するサブスクリプションのみが表示されます。
- match my installed products を選択すると、システムに現在インストールされている製品で機能するサブスクリプションが表示されます。
- have no overlap with existing subscriptionsを選択すると、重複した製品を持つサブスクリプションが除外されます。特定の製品について、サブスクリプションがすでにのシステムにアタッチされている場合や、複数のサブスクリプションが同じ製品を提供する場合は、サブスクリプションサービスがこれらのサブスクリプションをフィルターし、最適なもののみを表示します。
- contain the textは、サブスクリプションまたはプール内の製品名などの文字列を検索します。
日付およびフィルターの設定後に、Update ボタンをクリックしてそれらを適用します。 - 利用可能なサブスクリプションの中から 1 つ選択します。
- Subscribe ボタンをクリックします。
15.3.1.2. サブスクリプションの削除
- Subscription Manager を起動します。以下は例になります。
[root@server ~]# subscription-manager-gui
- My Subscriptions タブを開きます。システムが現在アタッチされているアクティブなサブスクリプションがすべて表示されます。(サブスクリプションで利用可能な製品は、インストールされている場合とされていない場合があります。)
- 削除するサブスクリプションを選択します。
- ウィンドウ右下にある 登録解除 ボタンをクリックします。
15.3.2. コマンドラインでのサブスクリプションのアタッチと削除
15.3.2.1. サブスクリプションのアタッチ
--pool
オプションを使用して、個別の製品またはアタッチするサブスクリプションを指定する必要があります。
[root@server1 ~]# subscription-manager subscribe --pool=XYZ01234567
[root@server1 ~]# subscription-manager list --available +-------------------------------------------+ Available Subscriptions +-------------------------------------------+ ProductName: RHEL for Physical Servers ProductId: MKT-rhel-serverPoolId:
ff8080812bc382e3012bc3845ca000cb
Quantity: 10 Expires: 2011-09-20
--auto
オプションを使用してシステムにアタッチすることができます( register コマンドの --autosubscribe
オプションと類似しています)。
[root@server1 ~]# subscription-manager subscribe --auto
表15.3 サブスクライブオプション
オプション | 説明 | 必須 |
---|---|---|
--pool=pool-id | システムにアタッチするサブスクリプションの ID を指定します。 | --auto が使用されていない限り必須 |
--auto | システムを最も適するサブスクリプションに自動的にアタッチします。 | 任意 |
--quantity=number | 複数のサブスクリプションをシステムにアタッチします。これは、数の上限が定義されるサブスクリプションに対応するのに使用されます (例 : 2 ソケットサーバー用のサブスクリプションを 2 つ使用して 4 ソケットマシンに対応する)。 | 任意 |
--servicelevel=None|Standard|Premium | そのマシンのサブスクリプションに使用するサービスレベルを設定します。これは、--auto オプションとだけ併用されます。 | 任意 |
15.3.2.2. コマンドラインからのサブスクリプションの削除
--all
オプションを指定して unsubscribe コマンドを実行すると、システムに現在アタッチされているすべての製品サブスクリプションとサブスクリプションプールが削除されます。
[root@server1 ~]# subscription-manager unsubscribe --all
- 1 つの製品サブスクリプションを削除する場合は、製品証明書のシリアル番号を取得します。シリアル番号は、subscription#
.pem
ファイル (例 :392729555585697907.pem
) から、または list コマンドを使用して取得できます。以下は例になります。[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
--serial
オプションを指定して subscription-manager ツールを実行し、証明書を指定します。[root@server1 ~]# subscription-manager unsubscribe --serial=11287514358600162
15.4. ベンダーサブスクリプションの引き換え
15.4.1. GUI によるサブスクリプションの引き換え
- Subscription Manager を起動します。以下は例になります。
[root@server ~]# subscription-manager-gui
- 必要に応じて、「GUI からの登録」の説明に従ってシステムを登録します。
- ウィンドウ左上にある System メニューを開き、Redeem 項目をクリックします。
- ダイアログウィンドウで、引き換えが完了した時に通知を送信するメールアドレスを入力します。引き換えプロセスでは、ベンダーに連絡して事前設定されたサブスクリプションに関する情報を受信するのに数分かかる可能性があるため、通知メッセージは Subscription Manager のダイアログウィンドウではなくメールで送信されます。
- Redeem ボタンをクリックします。
15.4.2. コマンドラインを使用したサブスクリプションの引き換え
# subscription-manager redeem --email=jsmith@example.com
15.5. Subscription Asset Manager のアクティベーションキーからのサブスクリプションのアタッチ
# subscription-manager register --username=jsmith --password=secret --org="IT Dept" --activationkey=abcd1234
15.6. システムの優先条件の設定
- サブスクリプションのサービスレベル
- 使用するオペレーティングシステムのマイナーバージョン (X.Y)
15.6.1. UI での優先条件の設定
- Subscription Manager を開きます。
- System メニューを開きます。
- System Preferences メニュー項目を選択します。
- ドロップダウンメニューから、希望のサービスレベルアグリーメントの優先条件を選択します。すべてのアクティブなサブスクリプション基づいて、Red Hat アカウントで利用可能なサービスレベルのみが一覧表示されます。
- Release version ドロップダウンメニューで、オペレーティングシステムのリリースの優先条件を選択します。一覧表示されているバージョンだけが、アカウントにアクティブなサブスクリプションがある Red Hat Enterprise Linux バージョンです。
- 優先条件は保存され、今後のサブスクリプション操作に適用されます。ダイアログを閉じるには、Close をクリックします。
15.6.2. コマンドラインでのサービスレベルの設定
例15.5 サービスレベルの優先条件の設定
--list
オプションを使用して、システムで利用可能なサービスレベルを一覧表示します。
[root@server ~]# subscription-manager service-level --list +-------------------------------------------+ Available Service Levels +-------------------------------------------+ Standard None Premium Self-Support
[root@server ~]# subscription-manager service-level --set=self-support Service level set to: self-support
--show
オプションで表示されます。
[root#server ~]# subscription-manager service-level --show Current service level: self-support
--servicelevel
オプションがあり、そのアクションの優先度を設定します。
例15.6 プレミアムサービスレベルのサブスクリプションの自動アタッチ
[root#server ~]# subscription-manager subscribe --auto --servicelevel Premium Service level set to: Premium Installed Product Current Status: ProductName: Red Hat Enterprise Linux 5 Server Status: Subscribed
--servicelevel
オプションには、--autosubscribe
オプション(register 用)または --auto
オプション(サブスクライブ用)が必要です。指定したプールをアタッチする場合や、サブスクリプションをインポートする場合には使用できません。
15.6.3. コマンドラインでの優先オペレーティングシステムリリースバージョンの設定
例15.7 登録時のオペレーティングシステムリリースの設定
--release
オプションを使用して、システムの登録時に設定できます。これにより、リリースの優先条件が、登録時にシステムに選択されたサブスクリプションおよび自動アタッチされたサブスクリプションに適用されます。
--autosubscribe
オプションが必要です。これは、自動アタッチするサブスクリプションを選択するために使用される基準の 1 つであるためです。
[root#server ~]# subscription-manager register --autosubscribe --release=5.9
--username=admin@example.com...
例15.8 オペレーティングシステムリリースの優先条件の設定
[root#server ~]# subscription-manager release --list +-------------------------------------------+ Available Releases +-------------------------------------------+ 5.8 5.9 5Server
--set
は、利用可能なリリースバージョンの 1 つに優先条件を設定します。
[root#server ~]# subscription-manager release --set=5.9 Release version set to: 5.9
15.6.4. Preference の削除
--unset
を使用します。たとえば、リリースバージョンの設定を解除するには、以下を実行します。
[root#server ~]# subscription-manager release --unset Release version set to:
- Subscription Manager を開きます。
- System メニューを開きます。
- System Preferences メニュー項目を選択します。
- 対応するドロップダウンメニューで、サービスレベルまたはリリースバージョンの値を空白行に設定します。
- Close をクリックします。
15.7. サブスクリプションの有効期限および通知の管理
図15.2 有効期限
図15.3 色分けされステータスビュー
[root@server ~]# subscription-manager list
+-------------------------------------------+
Installed Product Status
+-------------------------------------------+
ProductName: Red Hat Enterprise Linux Server
Status: Not Subscribed
Expires:
SerialNumber:
ContractNumber:
AccountNumber:
図15.4 サブスクリプション通知アイコン
図15.5 サブスクリプション警告メッセージ
図15.6 自動サブスクライブボタン
図15.7 システムのサブスクライブ
パート III. ネットワーク関連の設定
第16章 Network Interfaces
/etc/sysconfig/network-scripts/
ディレクトリーにあります。これらのネットワークインターフェイスをアクティブまたは非アクティブにするために使用されるスクリプトもここにあります。インターフェイスファイルの数とタイプはシステムによって異なる場合がありますが、このディレクトリーには 3 つのカテゴリーがあります。
- インターフェイス設定ファイル
- インターフェイス制御スクリプト
- ネットワーク機能ファイル
16.1. ネットワーク設定ファイル
-
/etc/hosts
- このファイルの主な目的は、他の方法で解決できないホスト名を解決することです。また、これを使用して、
DNS
サーバーのない小規模なネットワークでホスト名を解決することもできます。コンピューターが存在するネットワークのタイプに関係なく、このファイルには、ループバックデバイス(127.0.0.1
)のIP
アドレスをlocalhost.localdomain
として指定する行が含まれている必要があります。詳細は、man ページのhosts (5)
を参照してください。 -
/etc/resolv.conf
- このファイルは、
DNS
サーバーおよび検索ドメインのIP
アドレスを指定します。特に設定されていない限り、ネットワーク初期化スクリプトにこのファイルが入力されます。このファイルの詳細は、resolv.conf (5)
man ページを参照してください。 -
/etc/sysconfig/network
- このファイルは、すべてのネットワークインターフェイスのルーティングおよびホスト情報を指定します。これは、インターフェイス固有のものではなく、グローバル効果を持ち、ディレクティブを含めるために使用されます。このファイルと、ファイルで使用できるディレクティブの詳細は、「
/etc/sysconfig/network
」 を参照してください。 -
/etc/sysconfig/network-scripts/ifcfg-<interface-name>
- ネットワークインターフェイスごとに、対応するインターフェイス設定スクリプトがあります。これらの各ファイルは、特定のネットワークインターフェイスに固有の情報を提供します。このタイプのファイルと、許可するディレクティブの詳細は、「インターフェイス設定ファイル」 を参照してください。
/etc/sysconfig/networking/
ディレクトリーは、ネットワーク 管理ツール (system-config-network)によって使用され、その内容を手動で編集し ない でください。設定を削除するリスクがあるため、ネットワーク設定には 1 つの方法のみを使用することが強く推奨されます。
16.2. インターフェイス設定ファイル
ifcfg- <name
> です。ここで、<name> は設定ファイルが制御するデバイスの名前を指します。
16.2.1. イーサネットインターフェイス
/etc/sysconfig/network
-scripts/ifcfg-eth0 です。複数の NIC を持つシステムでは、複数の ifcfg-eth <X
> ファイルがあります。< X > は、特定のインターフェイスに対応する一意の番号になります。各デバイスには独自の設定ファイルがあるため、管理者は各インターフェイスの機能を個別に制御できます。
IP
アドレスを使用するシステムの ifcfg-eth0
ファイルの例です。
DEVICE=eth0 BOOTPROTO=none ONBOOT=yes NETMASK=255.255.255.0 IPADDR=10.0.1.27 USERCTL=no
ifcfg-eth0
ファイルは、 DHCP
サーバーにより IP
情報が提供されるため、異なるように見えます。
DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes
- BONDING_OPTS=<parameters>
- ボンディングデバイスの設定パラメーターを設定し、
/etc/sysconfig/network-scripts/ifcfg-bond <N
> で使用されます( 「チャンネルボンディングインターフェイス」を参照してください)。これらのパラメーターは、/sys/class/net/ <
モジュールのディレクティブで説明されているように、ボンディングドライバーのモジュールパラメーターと同じ です。bonding
device> /bonding のボンディングデバイスに使用されるパラメーターと、ボンディングこの設定方法を使うと、複数のボンディングデバイスに異なる設定をすることが可能になります。ifcfg- <name
> で BONDING_OPTS を使用する場合は、/etc/modprobe.conf
を使用してボンディングデバイスのオプションを指定し ない でください。 - BOOTPROTO=<protocol>
- ここで、<protocol& gt; は以下のいずれかになります。
- none - ブートタイムプロトコルは使用しないでください。
- BOOTP - BOOTP プロトコルを使用する必要があります。
- DHCP -
DHCP
プロトコルを使用する必要があります。
- BROADCAST=<address>
- ここで 、<address > はブロードキャストアドレスです。値は自動的に ipcalc で計算されるため、このディレクティブは非推奨になりました。
- DEVICE=<name>
- ここで 、< ;name> は物理デバイスの名前です( 論理名は となる動的に割り当てられた PPP デバイスを除く)。
- DHCP_HOSTNAME=<name>
- ここで 、<name > は
DHCP
サーバーに送信される短いホスト名です。このオプションは、DHCP
サーバーがIP
アドレスを受け取る前にホスト名を指定する必要がある場合にのみ使用します。 - DNS{1,2}=<address>
- ここで 、<address > は、PEERDNS ディレクティブが yes に設定されている場合に
/etc/resolv.conf
に配置されるネームサーバーアドレスです。 - ETHTOOL_OPTS=<options>
- < ;options& gt; は、ethtool がサポートするデバイス固有のオプションです。たとえば、100Mb に強制する場合は、完全なデュプレックスを行います。
ETHTOOL_OPTS="autoneg off speed 100 duplex full"
カスタムの init スクリプトの代わりに、ETHTOOL_OPTS を使用してインターフェイスの速度とデュプレックスの設定を行います。カスタム initscripts run は、ネットワーク init スクリプト以外で実行すると、ブート後のネットワークサービスの再起動時に予期しない結果になります。注記速度またはデュプレックス設定を変更するには、ほとんどの場合、オート ネガオフ オプションでオートネゴシエーションを無効にする必要があります。オプションエントリーは順序に依存するため、最初にこれを指定する必要があります。 - GATEWAY=<address>
- ここで 、<address > は、ネットワークルーターまたはゲートウェイデバイス(存在する場合)の
IP
アドレスです。 - HOTPLUG=<answer>
- ここで、<answer& gt; は以下のいずれかになります。
- yes - このデバイスは、ホットプラグ時にアクティベートする必要があります(これはデフォルトのオプションです)。
- No - このデバイスは、ホットプラグ時にアクティブ化しないでください。
HOTPLUG=no
オプションを使用すると、ボンディングカーネルモジュールがロードされたときにチャンネルボンディングインターフェイスがアクティブにならないようにすることができます。チャンネルボンディングインターフェイスの詳細は、「チャンネルボンディングインターフェイス」 を参照してください。 - HWADDR=<MAC-address>
- & lt;MAC-address > は、AA:BB:CC:DD:EE:FF 形式のイーサネットデバイスのハードウェアアドレスです。このディレクティブは、各 NIC のモジュールに設定されたロード順序に関係なく、インターフェイスに正しいデバイス名が割り当てられているように、複数の NIC を含むマシンで使用する必要があります。このディレクティブは、MACADDR と併用し ない でください。
- IPADDR=<address>
- ここで 、<address > は
IP
アドレスです。 - LINKDELAY=<time>
- & lt;time& gt; は、デバイスを設定する前にリンクネゴシエーションを待機する秒数です。
- MACADDR=<MAC-address>
- & lt;MAC-address > は、AA:BB:CC:DD:EE:FF 形式のイーサネットデバイスのハードウェアアドレスです。このディレクティブは、MAC アドレスをインターフェイスに割り当てるために使用され、物理 NIC に割り当てられたアドレスを上書きします。このディレクティブは、HWADDR と併用し ない でください。
- MASTER=<bond-interface>
- ここで 、<bond-interface > は、イーサネットインターフェイスがリンクされるチャンネルボンディングインターフェイスです。このディレクティブは、SLAVE ディレクティブとともに使用されます。チャンネルボンディングインターフェイスの詳細は、「チャンネルボンディングインターフェイス」 を参照してください。
- NETMASK=<mask>
- ここで、<mask& gt; はネットマスクの値です。
- NETWORK=<address>
- ここで 、<address > はネットワークアドレスです。値は自動的に ipcalc で計算されるため、このディレクティブは非推奨になりました。
- ONBOOT=<answer>
- ここで、<answer& gt; は以下のいずれかになります。
- yes - このデバイスは、システムの起動時にアクティベートする必要があります。
- no - このデバイスは、システムの起動時にアクティブ化しないでください。
- PEERDNS=<answer>
- ここで、<answer& gt; は以下のいずれかになります。
- yes - DNS ディレクティブが設定されている場合は、
/etc/resolv.conf
を変更します。DHCP
を使用している場合は、yes がデフォルトになります。 - No -
/etc/resolv.conf
は変更しないでください。
- SLAVE=<answer>
- ここで、<answer& gt; は以下のいずれかになります。
- yes - このデバイスは、MASTER ディレクティブで指定されたチャンネルボンディングインターフェイスによって制御されます。
- no: このデバイスは、MASTER ディレクティブで指定されたチャンネルボンディングインターフェイスで制御され ません。
このディレクティブは、MASTER ディレクティブとともに使用されます。チャンネルボンディングインターフェイスの詳細は、「チャンネルボンディングインターフェイス」 を参照してください。 - SRCADDR=<address>
- < ;address> ; は、送信パケットの指定されたソース
IP
アドレスです。 - USERCTL=<answer>
- ここで、<answer& gt; は以下のいずれかになります。
- はい - root 以外のユーザーはこのデバイスを制御できます。
- no: root 以外のユーザーはこのデバイスを制御することができません。
16.2.2. IPsec インターフェイス
ifcfg
ファイルを示しています。この例では接続を識別する一意の名前は ipsec1
であるため、生成されるファイルには /etc/sysconfig/network-scripts/ifcfg-ipsec1
という名前が付けられます。
TYPE=IPsec ONBOOT=yes IKE_METHOD=PSK SRCNET=192.168.1.0/24 DSTNET=192.168.2.0/24 DST=X.X.X.X
IP
アドレスです。
- DST=<address>
- ここで 、<address > は IPsec 宛先ホストまたはルーターの
IP
アドレスです。これは、ホスト間およびネットワーク間 IPsec 設定の両方に使用されます。 - DSTNET=<network>
- ここで 、<network > は IPsec 宛先ネットワークのネットワークアドレスです。これは、ネットワーク間 IPsec 設定にのみ使用されます。
- SRC=<address>
- ここで 、<address > は IPsec ソースホストまたはルーターの
IP
アドレスです。この設定はオプションで、ホスト間の IPsec 設定にのみ使用されます。 - SRCNET=<network>
- ここで 、<network > は IPsec ソースネットワークのネットワークアドレスです。これは、ネットワーク間 IPsec 設定にのみ使用されます。
- TYPE=<interface-type>
- ここで 、<interface-type> は IPSEC です。どちらのアプリケーションも ipsec-tools パッケージに含まれます。
/usr/share/doc/initscripts- <version-number> /sysconfig.txt
(< version-number > を initscripts パッケージのバージョンに置き換えます)を参照してください。
- IKE_METHOD=<encryption-method>
- ここで 、<encryption-method& gt; は PSK、X509、または GSSAPI のいずれかです。PSK を指定する場合は、IKE_PSK パラメーターも設定する必要があります。X509 を指定する場合は、IKE_CERTFILE パラメーターも設定する必要があります。
- IKE_PSK=<shared-key>
- ここ で、<shared-key > は PSK (事前共有鍵)メソッドの共有秘密値です。
- IKE_CERTFILE=<cert-file>
- ここで 、<cert-file > は、ホストの有効な
X.509
証明書ファイルです。 - IKE_PEER_CERTFILE=<cert-file>
- ここで 、<cert-file > は、リモート ホストの有効な
X.509
証明書ファイルです。 - IKE_DNSSEC=<answer>
- ここで、<answer> は yes になります。racoon デーモンは、DNS 経由でリモートホストの
X.509
証明書を取得します。IKE_PEER_CERTFILE が指定されている場合は、このパラメーターを含め ない でください。
16.2.3. チャンネルボンディングインターフェイス
ボンディングカーネルモジュールと、チャンネルボンディング
インターフェイス と呼ばれる特別なネットワークインターフェイスを使用して、複数のネットワークインターフェイスを 1 つの チャンネル にバインドできます。このチャンネルボンディングにより、複数のネットワークインターフェイスが 1 つとして機能できるようになり、また同時に帯域幅が増加し、冗長性を提供します。
/etc/sysconfig/network-scripts/
ディレクトリーに ifcfg-bond <N
> という名前のファイルを作成し、< N > をそのインターフェイスの番号(例: 0
)に置き換えます。
ifcfg-bond0
の例です。
DEVICE=bond0 IPADDR=192.168.1.1 NETMASK=255.255.255.0 ONBOOT=yes BOOTPROTO=none USERCTL=no BONDING_OPTS="<bonding parameters separated by spaces>"
eth0
と eth1
の両方の例を以下に示します。
DEVICE=eth<N> BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes USERCTL=no
/etc/modprobe.conf
に追加します。
alias bond<N> bonding
ifcfg-bondN
インターフェイスファイルの BONDING_OPTS="ボンディングパラメーター"
ディレクティブでスペース区切りリストとして指定する必要があります。/etc/modprobe.conf
ファイルでボンディングデバイスのオプションを指定し ない でください。
debug
パラメーターおよび max_bonds
パラメーターはインターフェイス固有ではないため、必要な場合は以下のように /etc/modprobe.conf
で指定する必要があります。
options bonding debug=1 max_bonds=1
ifcfg-bondN
ファイルを使用する場合は、max_bonds
パラメーターを設定し ない でください。このディレクティブにより、ネットワークスクリプトが必要に応じてボンドインターフェイスを作成するためです。
/etc/modprobe.conf
への変更は、モジュールが次に読み込まれるまで反映されません。実行中のモジュールを最初にアンロードする必要があります。ボンディングモジュールの設定に関する指示やアドバイス、およびボンディングパラメーターの一覧は、「Channel Bonding モジュール」 を参照してください。
16.2.4. エイリアスとクローンファイル
ifcfg- <if-name > : <alias-value
> 命名スキームを使用します。
ifcfg-eth0:
0 ファイルは、DEVICE=eth
0:0 と静的 IP
アドレス 10
.0.0.2 を指定するように設定でき、ifcfg-eth0
で DHCP
を介して IP
情報を受け取るように設定済みのイーサネットインターフェイスのエイリアスとして機能します。この設定では、eth0
は動的 IP
アドレスにバインドされますが、同じ物理ネットワークカードは固定の 10.0.0 .2
IP
アドレスを介して要求を受信できます。
DHCP
をサポートしません。
ifcfg- <if-name> - <clone-name> の命名規則を使用する必要があります
。エイリアスファイルは既存のインターフェイスに対して複数のアドレスを許可しますが、クローンファイルを使用してインターフェイスの追加オプションを指定します。たとえば、eth0
と呼ばれる標準の DHCP
イーサネットインターフェイスは以下のようになります。
DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp
ifcfg-eth0
-user
にコピーしてクローンを作成し、以下の行を ifcfg-eth0-user
に追加します。
USERCTL=yes
ifcfg- eth0
-user の設定オプションが組み合わされているため、/sbin/ifup eth0- user
コマンドを使用して eth0 インターフェイスを起動できます。これは非常に基本的な例ですが、この方法はさまざまなオプションおよびインターフェイスで使用できます。
16.2.5. Dialup インターフェイス
ifcfg-ppp<X>
- ここで 、<X > は特定のインターフェイスに対応する一意の番号になります。
ifcfg-ppp0
ファイルです。
DEVICE=ppp0 NAME=test WVDIALSECT=test MODEMPORT=/dev/modem LINESPEED=115200 PAPNAME=test USERCTL=true ONBOOT=no PERSIST=no DEFROUTE=yes PEERDNS=yes DEMAND=no IDLETIMEOUT=600
ifcfg-sl0
などのインターフェイス設定ファイル名があります。
- DEFROUTE=<answer>
- ここで、<answer& gt; は以下のいずれかになります。
- Yes: このインターフェイスをデフォルトルートとして設定します。
- no: このインターフェイスをデフォルトルートとして設定しません。
- DEMAND=<answer>
- ここで、<answer& gt; は以下のいずれかになります。
- Yes : このインターフェイスを使用すると、あるユーザーが接続を使用しようとすると、pppd が接続を開始できます。
- No: このインターフェイスに対して手動で接続を確立する必要があります。
- IDLETIMEOUT=<value>
- ここで 、<value > は、インターフェイスが切断されるまでのアイドルアクティビティーの秒数です。
- INITSTRING=<string>
- ここで 、<string > は、モデムデバイスに渡される初期化文字列です。このオプションは主に SLIP インターフェイスと併用されます。
- LINESPEED=<value>
- ここで 、<value > はデバイスのボーレートです。使用できる標準値には、57600、38400、19200、および 9600 があります。
- MODEMPORT=<device>
- & lt;device& gt; は、インターフェイスの接続を確立するために使用されるシリアルデバイスの名前です。
- MTU=<value>
- & lt;value& gt; は、インターフェイスの Maximum Transfer Unit (MTU) 設定です。MTU は、ヘッダー情報をカウントしない、フレームが伝送できるデータの最大バイト数を指します。ダミーの状況では、この値を 576 に設定すると、パケットが破棄され、接続のスループットがわずかに向上します。
- NAME=<name>
- ここで 、<name > は、ダイヤルアップ接続設定のコレクションに指定されたタイトルへの参照です。
- PAPNAME=<name>
- ここで 、<name > は、リモートシステムへの接続を許可するために発生する Password Authentication Protocol (PAP) 交換中に指定されるユーザー名です。
- PERSIST=<answer>
- ここで、<answer& gt; は以下のいずれかになります。
- yes: モデムのハング後に非アクティブ化された場合でも、このインターフェイスはいつでもアクティブな状態に維持する必要があります。
- No: このインターフェイスは、常にアクティブな状態に維持しないでください。
- REMIP=<address>
- ここで 、<address > はリモートシステムの
IP
アドレスです。通常、これは指定されないままになります。 - WVDIALSECT=<name>
- ここで 、<name > はこのインターフェイスを
/etc/wvdial.conf
のダイヤル設定に関連付けます。このファイルには、ダイアル対象の電話番号と、そのインターフェイスのその他の重要な情報が含まれています。
16.2.6. その他のインターフェイス
-
ifcfg-lo
- ローカル ループバックインターフェイス は、多くの場合、テスト内で使用され、同じシステムを参照する
IP
アドレスを必要とするさまざまなアプリケーションで使用されます。ループバックデバイスに送信されたデータはすべて、ホストのネットワーク層に即座に返されます。警告ループバックインターフェイススクリプト/etc/sysconfig/network-scripts/ifcfg-lo
は手動で編集しないでください。これを行うと、システムが正常に動作できなくなる可能性があります。 -
ifcfg-irlan0
- infrared インターフェイス を使用すると、ラップトップやプリンターなどのデバイス間の情報を infrared リンクで流れることができます。これは、イーサネットデバイスと同様の方法で機能します。ただし、これは、一般的にピアツーピア接続を介して発生する点が異なります。
-
ifcfg-plip0
- Parallel Line Interface Protocol (PLIP) 接続は、イーサネットデバイスと同じように機能しますが、並列ポートを使用する点が異なります。
-
ifcfg-tr0
- トークンリング トポロジーは、以前と同様に ローカルエリアネットワーク (LAN)で共通ではありません。イーサネットによって Eclipse を持っています。
16.3. インターフェイス制御スクリプト
/etc/sysconfig/network-scripts/
ディレクトリーにある制御スクリプトを呼び出す主なインターフェイス制御スクリプトは、/sbin/ifdown および /sbin/ifup の 2 つです。
ifup
および ifdown
インターフェイススクリプトは、/sbin/
ディレクトリーのスクリプトへのシンボリックリンクです。これらのスクリプトのいずれかが呼び出されると、以下のようなインターフェイスの値を指定する必要があります。
ifup eth0
ifup
および ifdown
インターフェイススクリプトは、ユーザーがネットワークインターフェイスを起動してダウンさせるために使用する唯一のスクリプトです。
/etc/rc.d/init.d/functions
および /etc/sysconfig/network-scripts/network-functions
です。詳細は、「ネットワーク機能仮想化ファイル」 を参照してください。
/etc/sysconfig/network-scripts/
ディレクトリーにある一般的なインターフェイス制御スクリプトです。
-
ifup-aliases
- 複数の
IP
アドレスがインターフェイスに関連付けられている場合は、インターフェイス設定ファイルからIP
エイリアスを設定します。 -
ifup-ippp
およびifdown-ippp
- ISDN インターフェイスをアップまたはダウンにします。
-
ifup-ipsec
およびifdown-ipsec
- IPsec インターフェイスをアップおよびダウンにします。
-
ifup-ipv6
およびifdown-ipv6
IPv6
インターフェイスをアップまたはダウンにします。-
ifup-ipx
- IPX インターフェイスを起動します。
-
ifup-plip
- PLIP インターフェイスを起動します。
-
ifup-plusb
- ネットワーク接続用の USB インターフェイスを起動します。
-
ifup-post
およびifdown-post
- インターフェイスの起動またはダウン後に実行されるコマンドが含まれます。
-
ifup-ppp
およびifdown-ppp
- PPP インターフェイスをアップまたはダウンにします。
-
ifup-routes
- デバイスの静的ルートを、インターフェイスの起動時に追加します。
-
ifdown-sit
およびifup-sit
IPv4
接続内でのIPv6
トンネルのアップとダウンに関連する関数呼び出しが含まれます。-
ifup-sl
およびifdown-sl
- SLIP インターフェイスをアップまたはダウンにします。
-
ifup-wireless
- ワイヤレスインターフェイスを起動します。
/etc/sysconfig/network-scripts/
ディレクトリーのスクリプトを削除または変更すると、インターフェイス接続が不規則に機能するか、失敗する可能性があります。ネットワークインターフェイスに関連するスクリプトを変更する必要があるのは、上級ユーザーのみです。
/etc/rc.d/init.d/network
)で /sbin/service コマンドを使用することです。
service network <action>
service network status
16.4. 静的ルートおよびデフォルトゲートウェイ
コマンドラインを使用した静的ルートの設定
ip route [ add | del | change | append | replace ] destination-address
の形式を取ります。オプションおよび形式の詳細は、man ページの ip-route (8)
を参照してください。
IP
ルーティングテーブルを表示します。以下に例を示します。
~]$ ip route default via 192.168.122.1 dev eth0 proto static metric 1024 192.168.122.0/24 dev ens9 proto kernel scope link src 192.168.122.107 192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.126
IP
アドレス)に静的ルートを追加するには、root
で以下のコマンドを実行します。
~]# ip route add 192.0.2.1 via 10.0.0.1 [dev
ifname]
ここでの 192. 0.2.1 は、ドット付き 10 進数表記のホストの IP
アドレスに、10.0.0.1 はネクストホップアドレスに、ifname は次のホップにつながる終了インターフェイスです。
IP
アドレスの範囲を表す IP
アドレス)に静的ルートを追加するには、root
で以下のコマンドを実行します。
~]# ip route add 192.0.2.0/24 via 10.0.0.1 [dev
ifname]
ここでの 192.0.2.0 はドット形式 10 進法での宛先ネットワークの IP
アドレスに、/24 はネットワーク接頭辞になります。ネットワーク接頭辞は、サブネットマスク内の有効なビット数です。ネットワークアドレスにスラッシュ、ネットワーク接頭辞長を続けるこの形式は、classless inter-domain routing (CIDR) 表記と呼ばれることもあります。
/etc/sysconfig/network-scripts/route-インターフェイス
ファイルに保存できます。たとえば、の静的ルートです。 eth0 インターフェイスは /etc/sysconfig/network-scripts/route-eth0
ファイルに保存されます。route-インターフェイス
ファイルには、ip コマンド引数とネットワーク/ネットマスクディレクティブの 2 つの形式があります。これについては、以下で説明します。
ip-route(8)
man ページを参照してください。
デフォルトゲートウェイの設定
/etc/sysconfig/network
を解析し、「up」 状態のインターフェイスについてネットワークインターフェイス ifcfg
ファイルを解析します。ifcfg
ファイルは数字の小さい順に解析され、最後に読み取られる GATEWAY ディレクティブがルーティングテーブルのデフォルトルートを作成するために使用されます。
/etc/sysconfig/network
ファイルに保存されます。このファイルは、すべてのネットワークインターフェイスのゲートウェイおよびホスト情報を指定します。このファイルと、ファイルで使用できるディレクティブの詳細は、「/etc/sysconfig/network
」 を参照してください。
16.5. ifcfg ファイルでの静的ルートの設定
/etc/sysconfig/network-scripts/
ディレクトリーに保存されているインターフェイス別の設定ファイルに追加する必要があります。ファイル名は、route-ifname
の形式で指定する必要があります。設定ファイルで使用するコマンドには 2 種類あります。「IP コマンド引数形式を使用した静的ルート」 で説明されている ip コマンドと、「ネットワーク/ネットマスクディレクティブの形式」 で説明しているように Network/Netmask フォーマットの 2 つのタイプがあります。
16.5.1. IP コマンド引数形式を使用した静的ルート
/etc/sysconfig/network-scripts/route-eth0
)で必要な場合は、1 行目でデフォルトゲートウェイへのルートを定義します。これは、ゲートウェイが DHCP
経由で設定されておらず、/etc/sysconfig/network
ファイルでグローバルに設定されていない場合にのみ必要です。
default via 192.168.1.1 dev
interface
IP
アドレスになります。interface は、デフォルトゲートウェイに接続されている、または到達可能なインターフェイスになります。dev
オプションは省略できます。これはオプションです。この設定は、/etc/sysconfig/network
ファイルの設定よりも優先されます。
10.10.10.0/24 via 192.168.1.1 [dev
interface]
IP
アドレスです。ネクストホップアドレス の方が好ましいですが、出口インターフェイスのアドレスでも機能します。「ネクストホップ」とは、ゲートウェイやルーターなどリンクのリモート側を意味します。dev
オプションを使用して、終了 インターフェイス を指定できますが、必須ではありません。必要に応じて静的ルートを追加します。
route-interface
ファイルの例です。デフォルトゲートウェイは 192.168.0.1
です。 eth0 リース行または WAN 接続が 192.168.0.10
で利用できます。2 つの静的ルートは、10.10.10.0/24
ネットワークおよび 172.16.1.10/32
ホストに到達するためのものです。
default via 192.168.0.1 dev eth0 10.10.10.0/24 via 192.168.0.10 dev eth0 172.16.1.10/32 via 192.168.0.10 dev eth0
192.168.0.0/24
ネットワークに向かうパケットはそのネットワークに接続されているインターフェイスに移動します。10.10.10.0/24
ネットワークおよび 172.16.1.10/32
ホストに向かうパケットは、192.168.0.10
に移動します。既知でないリモートネットワークに向かうパケットはデフォルトゲートウェイを使用するので、デフォルトルートが適切でない場合は、静的ルートはリモートネットワークもしくはホスト用のみに設定すべきです。ここでのリモートとは、システムに直接繋がれていないネットワークやホストを指します。
DHCP
から割り当てられている場合、IP
コマンドの引数形式により、起動中に起動中または ifup コマンドを使用して down 状態からインターフェイスを起動する際に、RTNETLINK 応答の 2 つのエラーが発生する可能性があります。 ファイルが存在するか、Error: either "to" が重複しているか、またはX.X.X.Xはガベージコレクションです。X.X.X.X はゲートウェイ、または別の IP
アドレスです。これらのエラーは、デフォルトゲートウェイを使用して別のネットワークへの別のルートがある場合にも発生する可能性があります。これらのエラーはいずれも無視しても安全です。
16.5.2. ネットワーク/ネットマスクディレクティブの形式
route-interface
ファイルに使用することも可能です。以下は、ネットワーク/ネットマスク形式のテンプレートで、後に説明が続きます。
ADDRESS0=10.10.10.0 NETMASK0=255.255.255.0 GATEWAY0=192.168.1.1
ADDRESS0=10.10.10.
0 は、到達するリモートネットワークまたはホストのネットワークアドレスです。NETMASK0=255.255.255.
0 は、ADDRESS0=10.10.10.0 で定義されているネットワークアドレスのネットマスク
です。GATEWAY0=192.168.
1.1 はデフォルトゲートウェイ、またはADDRESS0=10.10.10.0 に到達するために使用できる
IP
アドレスです。
route-interface
ファイルの例です。デフォルトゲートウェイは 192.168.0.1
ですが、専用回線または WAN 接続が 192.168.0.10
で利用可能です。2 つの静的ルートは、10.10.10.0/24
および 172.16.1.0/24
のネットワークに到達するためのものです。
ADDRESS0=10.10.10.0 NETMASK0=255.255.255.0 GATEWAY0=192.168.0.10 ADDRESS1=172.16.1.10 NETMASK1=255.255.255.0 GATEWAY1=192.168.0.10
ADDRESS0
、ADDRESS1
、ADDRESS2
などです。
16.6. ネットワーク機能仮想化ファイル
/etc/sysconfig/network-scripts/network-functions
ファイルには、最も一般的に使用される IPv4
機能が含まれています。これは、多くのインターフェイス制御スクリプトに役立ちます。これらの関数には、で変更に関する情報を要求する実行中のプログラムへの問い合わせ、ホスト名の設定、ゲートウェイデバイスの検索、a 特定のデバイスがダウンしているかどうかの確認、およびデフォルトルートの追加が含まれます。
IPv6
インターフェイスに必要な機能は IPv4
インターフェイスとは異なるため、/etc/sysconfig/network-scripts/network-functions-ipv6
ファイルはこの情報を保持するために特別に存在します。このファイルの関数は、静的 IPv6
ルートの設定および削除、トンネルの作成と削除、IPv6
アドレスのインターフェイスへの追加および削除、インターフェイスに IPv6
アドレスの存在のテストを行います。
16.7. 関連情報
16.7.1. インストールされているドキュメント
-
/usr/share/doc/initscripts-<version>/sysconfig.txt
- 本章で説明されていない
IPv6
オプションなど、ネットワーク設定ファイルで利用可能なオプションについてのガイド。 -
/usr/share/doc/iproute-<version>/ip-cref.ps
- このファイルには、ip コマンドに関する多くの情報が含まれています。これはルーティングテーブルの操作に使用できます。ggv または kghostview アプリケーションを使用してこのファイルを表示します。
第17章 Network Configuration
- イーサネット
- ISDN
- modem
- xDSL
- トークンリング
- CIPE
- ワイヤレスデバイス
/etc/hosts
ファイルの管理にも使用できます。
図17.1 ネットワーク管理ツール
[D]
17.1. 概要
- 物理ハードウェアデバイスに関連付けられたネットワークデバイスを追加します。
- 物理ハードウェアデバイスがまだ存在しない場合は、ハードウェア一覧に追加します。
- ホスト名および DNS 設定を設定します。
- DNS 経由で検索できないホストを設定します。
17.2. イーサネット接続の確立
- Devices タブをクリックします。
- ツールバーの New ボタンをクリックします。
- デバイスタイプ 一覧から イーサネット接続 を 選択し、Forward をクリックします。
- ネットワークインターフェイスカードをハードウェア一覧に追加した場合は、イーサネットカード リストから選択します。それ以外の場合は、Other Ethernet Card を選択してハードウェアデバイスを追加します。注記インストールプログラムは、対応しているイーサネットデバイスを検出し、それらを設定するよう要求します。インストール中にイーサネットデバイスを設定した場合は、ハードウェア タブのハードウェア一覧に表示されます。
- Other Ethernet Card を選択した場合は、Select Ethernet Adapter ウィンドウが表示されます。イーサネットカードの製造元とモデルを選択します。デバイス名を選択します。これがシステムの最初のイーサネットカードの場合は、デバイス名として eth0 を選択します。2 番目のイーサネットカードの場合は、eth1 (など)を選択します。ネットワーク管理ツール では、NIC のリソースを設定することもできます。進む をクリックして続けます。
- の Configure Network Settings ウィンドウで、DHCP と静的 IP アドレスを選択します。図17.2「イーサネット設定」ネットワークが起動されるたびにデバイスが異なる IP アドレスを受信する場合は、ホスト名を指定しないでください。
- Set MTU の値を に指定しないでください。または MRU を フィールドに設定 しないでください。MTU は Maximum Transmission Unit を、Maximum Receive Unit の MRU を表します。ネットワーク設定ツールは、これらのパラメーターの両方に適切な値を選択します。進む をクリックして続けます。
- Create Ethernet Device ページで Apply をクリックします。
図17.2 イーサネット設定
[D]
図17.3 イーサネットデバイス
[D]
17.3. ISDN 接続の確立
- Devices タブをクリックします。
- ツールバーの New ボタンをクリックします。
- Device Type 一覧から ISDN 接続 を選択し、Forward をクリックします。
- プルダウンメニューから ISDN アダプターを選択します。次に、アダプターのリソースおよび D チャネルプロトコルを設定します。進む をクリックして続けます。
図17.4 ISDN 設定
[D] - インターネットサービスプロバイダー(ISP)が事前設定された一覧にある場合は、これを選択します。それ以外の場合は、ISP アカウントに必要な情報を入力します。値が分からない場合は、ISP にお問い合わせください。Forward をクリックします。
- IP Settings ウィンドウで Encapsulation Mode を選択し、IP アドレスを自動的に取得するか、または a static IP を設定するかどうかを選択します。終了したら Forward (進む)をクリックします。
- Create Dialup Connection ページで Apply をクリックします。
図17.5 ISDN デバイス
[D]
17.4. モデム接続の確立
- Devices タブをクリックします。
- ツールバーの New ボタンをクリックします。
- Device Type 一覧から Modem connection を選択し、Forward をクリックします。
- ハードウェア一覧にモデムが設定されている場合(ハードウェアタブ上)、Network Administration Tool は、これを使用してモデム接続を確立することを想定します。すでにモードが設定されていない場合は、システム内のモデムを検出しようとします。このプローブには時間がかかる場合があります。モデムが見つからない場合、表示される設定がプローブから見つからないことを警告するメッセージが表示されます。
- プローブ後、図17.6「モデム設定」 のウィンドウが表示されます。
図17.6 モデム設定
[D] - モデムデバイス、ボーレート、フロー制御、およびモデムボリュームを設定します。これらの値が分からない場合は、モデムが正常にプローブされた場合は、デフォルトを受け入れます。ダイヤルトが必要ない場合は、対応するチェックボックスの選択を解除します。Forward をクリックします。
- ISP が事前設定された一覧にある場合は選択します。それ以外の場合は、ISP アカウントに必要な情報を入力します。これらの値が分からない場合は、ISP にお問い合わせください。Forward をクリックします。
- IP Settings ページで、IP アドレスを自動的に取得するか、1 つの静的に設定するかどうかを選択します。終了したら Forward (進む)をクリックします。
- Create Dialup Connection ページで Apply をクリックします。
Modem
タイプのデバイス一覧に表示されます。
図17.7 Modem Device
[D]
17.5. xDSL 接続の確立
- Devices タブをクリックします。
- New ボタンをクリックします。
図17.8 デバイスタイプの選択
[D]- イーサネットカードがハードウェア一覧に存在する場合は、図17.9「xDSL 設定」 に記載されているページから イーサネットデバイス を選択します。それ以外の場合は、Select Ethernet Adapter ウィンドウが表示されます。注記インストールプログラムは、対応しているイーサネットデバイスを検出し、それらを設定するよう要求します。インストール中にイーサネットデバイスを設定した場合は、ハードウェア タブのハードウェア一覧に表示されます。
図17.9 xDSL 設定
[D] - Provider Name、Login Name、および Password を入力します。T-On ラインアカウントを設定していない場合は、Account Type プルダウンメニューから Normal を選択します。T-On ラインアカウントを設定する場合は、Account Type プルダウンメニューから T-Online を選択し、Login name および Password フィールドに任意の値を入力します。DSL 接続が完全に設定されたら、T-On のアカウント設定をさらに設定できます( T-On オンラインアカウントの設定を参照してください)。
- Forward をクリックして Create DSL Connection メニューに移動します。設定を確認し、Apply をクリックして終了します。
- DSL 接続の設定後、図17.10「xDSL デバイス」 に示されるように、デバイス一覧に表示されます。
図17.10 xDSL デバイス
[D] - xDSL 接続を追加した後、デバイス一覧からデバイスを選択し、Edit をクリックして設定を編集できます。
図17.11 xDSL 設定
[D]たとえば、デバイスが追加されると、デフォルトではブート時に起動しないように設定されています。設定を編集してこの設定を変更します。終了したら OK をクリックします。 - xDSL 接続の設定が適切になったら、ファイル > 保存 を選択 し て変更を保存します。
T-On オンラインアカウントの設定
T-On オンラインアカウントを設定する場合は、以下の追加の手順に従います。
- デバイス一覧からデバイスを選択し、編集 をクリックします。
図17.12 xDSL 設定:プロバイダータブ
[D]- T-Online Account Setup ボタンをクリックします。図17.13「アカウントの設定」 に示すように、T-Online アカウントの Account Setup ウィンドウが開きます。
図17.13 アカウントの設定
[D] - Adapter ID、AssoatedT-Online number、Concurrent user number/suffix、および Personal パスワードを入力します。終了したら OK をクリックして、Account Setup ウィンドウを閉じます。
- xDSL 設定 ウィンドウで、OK をクリックします。Network Administration Tool から File > Save を選択して変更を保存します。
17.6. トークンリング接続の確立
- Devices タブをクリックします。
- ツールバーの New ボタンをクリックします。
- Device Type 一覧から Token Ring connection を選択し、Forward をクリックします。
- トークンリングカードをハードウェア一覧に追加した場合は、Tokenring カード リストから選択します。それ以外の場合は、Other Tokenring Card を選択してハードウェアデバイスを追加します。
- Other Tokenring Card を選択した場合は、図17.14「トークンリング設定」 に示されるように、Select Token Ring Adapter ウィンドウが表示されます。アダプターの製造元およびモデルを選択します。デバイス名を選択します。これがシステムの最初のトークンリングカードの場合は、tr0 を選択します。これが 2 番目のトークンリングカードの場合は、tr1 (等)を選択します。Network Administration Tool を使用すると、ユーザーはアダプターのリソースを設定することもできます。進む をクリックして続けます。
図17.14 トークンリング設定
[D] - Configure Network Settings ページで、DHCP と静的 IP アドレスのいずれかを選択します。デバイスのホスト名を指定できます。ネットワークが起動されるたびにデバイスが動的 IP アドレスを受信する場合は、ホスト名を指定しないでください。進む をクリックして続けます。
- Create Tokenring Device ページで Apply をクリックします。
図17.15 トークンリングデバイス
[D]
17.7. ワイヤレス接続の確立
- Devices タブをクリックします。
- ツールバーの New ボタンをクリックします。
- Device Type 一覧から Wireless connection を選択し、Forward をクリックします。
- ワイヤレスネットワークインターフェイスカードをハードウェア一覧に追加した場合は、ワイヤレスカード リストから選択します。それ以外の場合は、Other Wireless Card を選択してハードウェアデバイスを追加します。注記インストールプログラムは通常、対応しているワイヤレスイーサネットデバイスを検出し、設定を求めるプロンプトを表示します。インストール時に設定すると、ハードウェア タブのハードウェア一覧に表示されます。
- Other Wireless Card を選択した場合は、Select Ethernet Adapter ウィンドウが表示されます。イーサネットカードとデバイスの製造元とモデルを選択します。システムの最初のイーサネットカードの場合は、eth0 を選択します。これがシステムの 2 番目のイーサネットカードである場合は、eth1 (など)を選択します。 Network Administration Tool を使用すると、ユーザーはワイヤレスネットワークインターフェイスカードのリソースを設定することもできます。進む をクリックして続けます。
- 図17.16「ワイヤレス設定」 に示されるように Configure Wireless Connection ページで、ワイヤレスデバイスの設定を設定します。注記:Open System and Shared Key AuthenticationAuthentication ドロップダウンでは、WEP 暗号化を使用したワイヤレスアクセスポイントは、オープンシステムと共有鍵認証の使用を選択することに注意してください。共有鍵認証では、関連付けプロセスでクライアントとアクセスポイント間の交換が必要です。これは、クライアントに正しい WEP キーがあることを証明します。システム認証を開くと、すべてのワイヤレスクライアントが接続できるようになります。直感的に、共有鍵認証はオープンシステムよりも安全ではないため、広く展開されません。そのため、アクセスポイントが必要とする方法が分からない場合は、認証方法として Open System (open) を選択することが推奨されます。open system を使用してアクセスポイントへの接続に失敗した場合は、共有鍵認証への切り替えを試みてください。
図17.16 ワイヤレス設定
[D] - Configure Network Settings ページで、DHCP と静的 IP アドレスのいずれかを選択します。デバイスのホスト名を指定できます。ネットワークが起動されるたびにデバイスが動的 IP アドレスを受信する場合は、ホスト名を指定しないでください。進む をクリックして続けます。
- Create Wireless Device ページで Apply をクリックします。
図17.17 ワイヤレスデバイス
[D]
17.8. DNS 設定の管理
図17.18 DNS 設定
[D]
17.9. ホストの管理
/etc/hosts
ファイルからホストを追加、編集、または削除できます。このファイルには、IP アドレスと対応するホスト名が含まれます。
/etc/hosts
ファイルを参照します(デフォルトの Red Hat Enterprise Linux 設定を使用している場合)。IP アドレスが /etc/hosts
ファイルにリストされている場合は、ネームサーバーは使用されません。ネットワークに IP アドレスが DNS に記載されていないコンピューターが含まれている場合は、/etc/hosts
ファイルに追加することが推奨されます。
/etc/hosts
ファイルにエントリーを追加するには、ホスト タブに移動し、ツールバーの New ボタンをクリックして、要求された情報を入力して OK をクリックします。File > Save を選択するか、Ctrl+S を押して変更を /etc/hosts
ファイルに保存します。現行バージョンのファイルはアドレスが解決されるたびに参照されるため、ネットワークサービスを再起動する必要はありません。
localhost
エントリーを削除しないでください。システムにネットワーク接続がない場合や、ネットワーク接続が継続的に実行されている場合でも、一部のプログラムは localhost ループバックインターフェイスを介してシステムに接続する必要があります。
図17.19 ホストの設定
[D]
/etc/host.conf
ファイルを編集します。行の 順序ホストである bind は、
ネームサーバーよりも /etc/hosts
の優先度を指定します。行を 順序バインドに変更すると、ホスト
はまずネームサーバーを使用してホスト名と IP アドレスを解決するよう設定します。ネームサーバーで IP アドレスを解決できない場合、システムは /etc/hosts
ファイルで IP アドレスを検索します。
17.10. プロファイルの使用
eth0_office
など、より簡単に認識できるように、より分かりやすい名前に変更できます。新しいプロファイルの編集が終了したら、File メニューから Save をクリックして保存します。プロファイルの作成後に保存を忘れると、そのプロファイルが失われます。
Office
というプロファイルに eth0_office
という名前の論理デバイスを作成し、プロファイルが選択された場合に論理デバイスをアクティベートする場合は、eth0
デバイスの選択を解除して、eth0_office
デバイスを確認します。
図17.20 オフィスプロファイル
[D]
図17.21 ホームプロファイル
[D]
eth0
を設定し、Home プロファイルでのみ PPP (modem)デバイスをアクティブにすることもできます。もう 1 つの例は、Common プロファイルが eth0
をアクティブにし、移動中に PPP デバイスをアクティベートすることです。
netprofile= <profilename> オプションを
含めます。たとえば、システムがブートローダーとして GRUB を使用し、/boot/grub/grub.conf
には以下が含まれます。
title Red Hat Enterprise Linux (2.6.9-5.EL) root (hd0,0) kernel /vmlinuz-2.6.9-5.EL ro root=/dev/VolGroup00/LogVol00 rhgb quiet initrd /initrd-2.6.9-5.EL.img
title Red Hat Enterprise Linux (2.6.9-5.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-5.EL ro root=/dev/VolGroup00/LogVol00 \
netprofile=<profilename>
\ rhgb quiet
initrd /initrd-2.6.9-5.EL.img
system-config-network-cmd --profile <profilename> --activate
17.11. デバイスエイリアス
eth0
などのイーサネットデバイスを設定したら、静的 IP アドレス(DHCP がエイリアスでは機能しません)を使用するよう、Devices タブに移動し、New をクリックします。エイリアスで設定する Ethernet カードを選択し、エイリアスの静的 IP アドレスを設定し、Apply をクリックして作成します。イーサネットカードにデバイスがすでに存在しているため、作成したデバイスは eth0:1 などのエイリアスになります
。
eth0
デバイスに対する 1 つのエイリアスの例を示しています。eth0 :1 デバイス( eth
0
の最初のエイリアス)に注意してください。eth0
の 2 番目のエイリアスは、デバイス名 eth0:2
などになります。起動時にデバイスエイリアスをアクティブにするかどうかやエイリアス番号の設定を変更する場合は、リストから選択し、編集 ボタンをクリックします。
図17.22 ネットワークデバイスエイリアスの例
[D]
eth0 Link encap:Ethernet HWaddr 00:A0:CC:60:B7:G4 inet addr:192.168.100.5 Bcast:192.168.100.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:161930 errors:1 dropped:0 overruns:0 frame:0 TX packets:244570 errors:0 dropped:0 overruns:0 carrier:0 collisions:475 txqueuelen:100 RX bytes:55075551 (52.5 Mb) TX bytes:178108895 (169.8 Mb) Interrupt:10 Base address:0x9000 eth0:1 Link encap:Ethernet HWaddr 00:A0:CC:60:B7:G4 inet addr:192.168.100.42 Bcast:192.168.100.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:10 Base address:0x9000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:5998 errors:0 dropped:0 overruns:0 frame:0 TX packets:5998 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1627579 (1.5 Mb) TX bytes:1627579 (1.5 Mb)
17.12.
system-config-network-cmd -e > /tmp/network-config
system-config-network-cmd -i -c -f /tmp/network-config
第18章
- ntsysv
- chkconfig
18.1.
id:5:initdefault:
18.2.
18.2.1. xinetd
18.3.
図18.1
[D]
18.4. ntsysv
図18.2
[D]
18.5. chkconfig
rsync on
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
chkconfig --level 345 nscd off
18.6. 関連情報
18.6.1. インストールされているドキュメント
18.6.2. 便利な Web サイト
第19章
19.1. DNS の概要
19.1.1.
bob.sales.example.com
19.1.2.
- master
- slave
- 転送
19.1.3.
-
/etc/named.conf
-
/var/named/
directory
19.2. /etc/named.conf
<statement-1> ["<statement-1-name>"] [<statement-1-class>] { <option-1>; <option-2>; <option-N>; }; <statement-2> ["<statement-2-name>"] [<statement-2-class>] { <option-1>; <option-2>; <option-N>; }; <statement-N> ["<statement-N-name>"] [<statement-N-class>] { <option-1>; <option-2>; <option-N>; };
19.2.1. 一般的なステートメントのタイプ
/etc/named.conf
では、通常、以下のタイプのステートメントが使用されます。
19.2.1.1.
acl <acl-name> { <match-element>; [<match-element>; ...] };
acl black-hats { 10.0.2.0/24; 192.168.0.0/24; }; acl red-hats { 10.0.1.0/24; }; options { blackhole { black-hats; }; allow-query { red-hats; }; allow-recursion { red-hats; }; };
19.2.1.2.
include "<file-name>"
19.2.1.3.
options { <option>; [<option>; ...] };
- allow-query
- allow-recursion
- blackhole
- directory
- forwarders
- forward
- listen-on
options { listen-on { 10.0.1.1; }; };
- notify
- 以下のオプションを取ります。
- pid-file
- root-delegation-only
options { root-delegation-only exclude { "ad"; "ar"; "biz"; "cr"; "cu"; "de"; "dm"; "id"; "lu"; "lv"; "md"; "ms"; "museum"; "name"; "no"; "pa"; "pf"; "se"; "sr"; "to"; "tw"; "us"; "uy"; }; };
- statistics-file
- 統計ファイルの代替の場所を指定します。
19.2.1.4.
zone <zone-name> <zone-class> { <zone-options>; [<zone-options>; ...] };
- allow-query
- allow-transfer
- allow-update
- file
- masters
- notify
- type
- zone-statistics
19.2.1.5.
zone "example.com" IN { type master; file "example.com.zone"; allow-update { none; }; };
zone "example.com" { type slave; file "example.com.zone"; masters { 192.168.0.1; }; };
19.2.2. その他のステートメントタイプ
- controls
- key "<key-name>"
- キーは、安全な更新や、あるいは、rndc コマンドの使用など各種動作を認証するために使用されます。
- logging
- ロギングプロセスのカスタマイズは詳細なプロセスとなるため、本章の範囲外になります。
- server
- ステートメントを使うと、安全な DNS (DNSSEC) に使用される各種パブリックキーを指定できるようになります。
- view "<view-name>"
- これにより、他のホストが全く異なる情報を受け取る間、ゾーンに関する応答が 1 つの応答を受け取ることができます。また、信頼されないホスト以外のホストでは他のゾーンに対するクエリーしか実行できません。
19.2.3. コメントタグ
19.3.
/var/named/chroot/var/named
にあります。
19.3.1. ゾーンファイルのディレクティブ
- $INCLUDE
- ディレクティブが表示される場所に、このゾーンファイルに別のゾーンファイルを含めるように named を設定します。これにより、メインのゾーンファイルとは別に、追加のゾーン設定を保存できます。
- $ORIGIN
- ホスト名などの修飾されていないレコードにドメイン名を追加します。たとえば、ゾーンファイルには次の行を含めることができます。
$ORIGIN example.com.
末尾のピリオド(.)で終了しないリソースレコードで使用される名前には、example.com が追加されます。注記ゾーン名が $ORIGIN ディレクティブの値として使用されるため、/etc/named.conf
にゾーンが指定されている場合は、$ORIGIN ディレクティブの使用は必要ありません。 - $TTL
- ゾーンのデフォルトの Time to Live (TTL) 値を設定します。これは、ゾーンリソースレコードが有効である期間(秒単位)です。各リソースレコードはそれ自身の TTL 値を含むことができるため、それがこのディレクティブを上書きします。この値を増やすと、リモートのネームサーバーはより長い期間ゾーン情報をキャッシュし、ゾーンのクエリー数を減らし、リソースレコードの変更の延長に必要な時間を長くすることができます。
19.3.2. ゾーンファイルリソースレコード
- A
- 以下の例のように、名前に割り当てる IP アドレスを指定する Address レコードを参照します。
<host> IN A <IP-address>
< ;host> 値を省略すると、A レコードは namespace の上部にあるデフォルトの IP アドレスを参照します。このシステムは、FQDN 以外のすべての要求のターゲットです。example.com ゾーンファイルの以下の A レコードの例を見てみましょう。server1 IN A 10.0.1.3 IN A 10.0.1.5
example.com の要求は 10.0.1.3 または 10.0.1.5 を参照します。 - CNAME
- これは、名前を別の名前にマップする正規名レコードを参照します。このタイプのレコード は、エイリアスレコード とも呼ばれます。以下の例では、< alias-name> に送信された要求がホスト < real-name > を参照する必要があることを named に指示し ます。CNAME レコードは、Web サーバーの www など、共通の命名スキームを使用するサービスを参照するために最も一般的に使用されます。
<alias-name> IN CNAME <real-name>
以下の例では、A レコードはホスト名を IP アドレスにバインドし、CNAME レコードが一般的に使用される www ホスト名をこれにポイントします。server1 IN A 10.0.1.5 www IN CNAME server1
- MX
- これはメール eXchange レコードを指し、このゾーンによって制御される特定の名前空間に送信されたメールの移動先を指示します。
IN MX <preference-value> <email-server-name>
ここで、& lt;preference-value > は namespace のメールサーバーの数値ランクを許可し、一部のメールシステムを他のシステムよりも優先されます。最も低い < preference-value> を 持つ MX リソースレコードは、他よりも優先されます。しかし複数メールサーバーが同じ値を持つ可能性があり、その場合はメールトラフィックをサーバー間で均等に分配することになります。< ;email-server-name> はホスト名または FQDN です。IN MX 10 mail.example.com. IN MX 20 mail2.example.com.
この例では、example.com ドメイン宛てのメールを受信する際に、最初の mail.example.com メールサーバーは mail2. example.com メールサーバーよりも優先されます。 - NS
- これは、特定ゾーンの権威ネームサーバーをアナウンスする NameServer レコードを参照します。以下は、NS レコードのレイアウトを示しています。
IN NS <nameserver-name>
ここで、& lt;nameserver-name> は FQDN である必要があります。次に、2 つのネームサーバーがドメインに対して権威として一覧表示されます。これらのネームサーバーがスレーブであるか、マスターであるかが重要ではなく、いずれも権威があると見なされます。IN NS dns1.example.com. IN NS dns2.example.com.
- PTR
- これは、名前空間の別の部分をポイントするように設計された PoinTeR レコードを参照します。
- SOA
- これは Start Of Authority リソースレコードを参照します。これは、名前空間に関する重要な信頼できる情報をネームサーバーに提案します。SOA リソースレコードは、ディレクティブの後に配置され、ゾーンファイルの最初のリソースレコードです。以下の SOA リソースレコードの基本構造を表示します。
@ IN SOA <primary-name-server> <hostmaster-email> ( <serial-number> <time-to-refresh> <time-to-retry> <time-to-expire> <minimum-TTL> )
@ 記号は、$ORIGIN ディレクティブ(または $ORIGIN ディレクティブが設定されていない場合はゾーンの名前)をこの SOA リソースレコードで定義されている名前空間として配置します。このドメインに対して権威のあるプライマリーネームサーバーのホスト名は < primary-name-server > ディレクティブで、この namespace と通信するユーザーの電子メールは < hostmaster-email> ディレクティブ です。< ;serial-number> ディレクティブは、named がゾーンを再ロードする時間であることを示すためにゾーンファイルが変更されるたびに増加する数値です。& lt;time-to-refresh > ディレクティブは、ゾーンに変更を加えたかどうかをマスターネームサーバーに尋ねるまでの待機時間を判断するために使用する数値スレーブサーバーです。< ;serial-number > ディレクティブは、古いゾーンデータを使用しているかどうかを判断するためにスレーブサーバーが使用する数値であるため、更新する必要があります。& lt;time-to-retry > ディレクティブは、マスターネームサーバーが応答しない場合に更新要求を発行するまでの待機時間を判断するためにスレーブサーバーが使用する数値です。マスターが <time-to -expire> ディレクティブで指定された時間が経過する前に更新要求に 応答しなかった場合、スレーブサーバーはその名前空間に関する要求の権威として応答しなくなります。BIND 4 および 8 では、& lt;minimum-TTL& gt; ディレクティブは amount of time のネームサーバーでゾーンの情報をキャッシュします。ただし、BIND 9 では、< minimum-TTL> ディレクティブ は、負の応答がキャッシュされる期間を定義します。負の回答のキャッシュは、最大 3 時間 (3H
) に設定できます。BIND の設定時には、すべての時間は秒で指定されます。ただし、秒以外の時間単位を指定する場合は省略形を使用できます。たとえば、分(M)、時間(H)、日(D)、および週(W)などです。表19.1「秒表示とその他の時間単位」 の表は、秒単位で、同等の時間を別の形式で示しています。表19.1 秒表示とその他の時間単位
秒 他の時間単位 60 1M 1800 30M 3600 1H 10800 3H 21600 6H 43200 12H 86400 1D 259200 3D 604800 1W 31536000 365D 以下の例は、実際の値が入力されると SOA リソースレコードが取る可能性のあるフォームを示しています。@ IN SOA dns1.example.com. hostmaster.example.com. ( 2001062501 ; serial 21600 ; refresh after 6 hours 3600 ; retry after 1 hour 604800 ; expire after 1 week 86400 ) ; minimum TTL of 1 day
19.3.3. ゾーンファイルの例
$ORIGIN example.com. $TTL 86400 @ IN SOA dns1.example.com. hostmaster.example.com. ( 2001062501 ; serial 21600 ; refresh after 6 hours 3600 ; retry after 1 hour 604800 ; expire after 1 week 86400 ) ; minimum TTL of 1 day ; ; IN NS dns1.example.com. IN NS dns2.example.com. dns1 IN A 10.0.1.1 IN AAAA aaaa:bbbb::1 dns2 IN A 10.0.1.2 IN AAAA aaaa:bbbb::2 ; ; @ IN MX 10 mail.example.com. IN MX 20 mail2.example.com. mail IN A 10.0.1.5 IN AAAA aaaa:bbbb::5 mail2 IN A 10.0.1.6 IN AAAA aaaa:bbbb::6 ; ; ; This sample zone file illustrates sharing the same IP addresses ; for multiple services: ; services IN A 10.0.1.10 IN AAAA aaaa:bbbb::10 IN A 10.0.1.11 IN AAAA aaaa:bbbb::11 ftp IN CNAME services.example.com. www IN CNAME services.example.com. ; ;
named.conf
内にあるサービスに対して呼び出されます。
zone "example.com" IN { type master; file "example.com.zone"; allow-update { none; }; };
19.3.4. 逆引き名前解決ゾーンファイル
<last-IP-digit> IN PTR <FQDN-of-system>
/var/named/example.com.rr.zone
にあります。
$ORIGIN 1.0.10.in-addr.arpa. $TTL 86400 @ IN SOA dns1.example.com. hostmaster.example.com. ( 2001062501 ; serial 21600 ; refresh after 6 hours 3600 ; retry after 1 hour 604800 ; expire after 1 week 86400 ) ; minimum TTL of 1 day ; @ IN NS dns1.example.com. ; 1 IN PTR dns1.example.com. 2 IN PTR dns2.example.com. ; 5 IN PTR server1.example.com. 6 IN PTR server2.example.com. ; 3 IN PTR ftp.example.com. 4 IN PTR ftp.example.com.
named.conf
ファイルにあるサービスに対して呼び出されます。
zone "1.0.10.in-addr.arpa" IN { type master; file "example.com.rr.zone"; allow-update { none; }; };
19.4. rndcの使用
/etc/named.conf
と rndc 設定ファイル /etc/rndc.conf
の両方に存在する必要があります。
bind-chroot
パッケージをインストールしている場合、BIND サービスは /var/named/chroot 環境で実行されます。すべての設定ファイルはそこに移動します。そのため、rndc.conf
ファイルは /var/named/chroot/etc/rndc.conf
にあります。
/etc/rndc.conf
は /var/named/chroot/etc/rndc.conf
へのシンボリックリンクであることに注意してください。
19.4.1. /etc/named.conf
の設定
/etc/named.conf
ファイルに control ステートメントが必要です。
controls { inet 127.0.0.1 allow { localhost; } keys { <key-name>; }; };
/etc/named.conf
ファイル内の キー ステートメントの名前を指定します。次の例は、サンプルの キー ステートメントを示しています。
key "<key-name>" { algorithm hmac-md5; secret "<key-value>"; };
dnssec-keygen -a hmac-md5 -b <bit-length> -n HOST <key-file-name>
key-file-name
> ファイルにあります。
/etc/named.conf
は誰でも読み取り可能であるため、キー ステートメントを別のファイルに置き、root のみが読み取り可能にし、include ステートメントを使用して参照することができます。以下に例を示します。
include "/etc/rndc.key";
19.4.1.1. ファイアウォールによる通信のブロック
53
をクエリーソースポートとして使用し、ファイアウォール上のそのポートからの DNS クエリーのみを許可するように BIND を設定することが一般的でした。
19.4.2. /etc/rndc.conf
の設定
/etc/rndc.conf
の最も重要なステートメントです。
key "<key-name>" { algorithm hmac-md5; secret "<key-value>"; };
/etc/named.conf
の設定と全く同じです。
/etc/named.conf
で指定した鍵と一致するには、以下の行を /etc/rndc.conf
に追加します。
options { default-server localhost; default-key "<key-name>"; };
rndc
設定ファイルは、以下の例のように異なるサーバーに異なるキーを指定することもできます。
server localhost { key "<key-name>"; };
/etc/rndc.conf
ファイルに対して読み取りまたは書き込みを行うことができることを確認してください。
/etc/rndc.conf
ファイルの詳細は、rndc.conf
の man ページを参照してください。
19.4.3. コマンドラインオプション
rndc <options> <command> <command-options>
- halt:
named
サービスをすぐに停止します。 - querylog: このネームサーバーに対して行われたすべてのクエリーをログに記録します。
- refresh: ネームサーバーのデータベースを更新します。
- reload - ゾーンファイルを再読み込みしますが、以前にキャッシュされた応答をすべて保持します。このコマンドでは、保存された名前解決をすべて失わずにゾーンファイルに変更を加えることもできます。変更が特定のゾーンのみに影響する場合は、reload コマンドの後にゾーンの名前を追加して、その特定のゾーンのみを再読み込みします。
- stats: 現在の名前付き統計を
/var/ named /named.stats
ファイルにダンプします。 - stop - サーバーを正常に停止し、終了する前に動的更新および 増分ゾーンの転送 (IXFR)データを保存します。
/etc/rndc.conf
ファイルのデフォルト設定を上書きする必要がある場合があります。以下のオプションを設定できます。
- -c & lt;configuration-file& gt;: 設定ファイルの代替の場所を指定します。
- -p <port-number > - デフォルトのポート 953 以外の rndc 接続に使用するポート番号を指定します。
- -s & lt;server& gt;:
/etc/rndc.conf
に一覧表示されている default-server 以外のサーバーを指定します。 - -y & lt;key-name > -
/etc/rndc.conf
の default-key オプション以外のキーを指定します。
19.5. BIND の高度な機能
19.5.1. DNS プロトコルの機能強化
19.5.2. 複数表示
named.conf
の view ステートメントを使用すると、BIND は、要求が発信するネットワークに応じて異なる情報を提供できます。
19.5.3. セキュリティー
- DNSSEC
- DNS SECurity の略です。この機能により、ゾーンを ゾーンキー で暗号で署名できます。これにより、受信者がそのネームサーバーの公開鍵を持っている限り、特定のゾーンに関する情報を、特定の秘密鍵で署名したネームサーバーからの情報を確認できます。BIND バージョン 9 は、メッセージ認証の SIG (0)パブリック/秘密鍵メソッドもサポートします。
- TSIG
- Transaction SIGnatures の略でこの機能は、共有の秘密鍵が両方のネームサーバーに存在することを確認した後のみ、マスターからスレーブへ転送できるようにします。この機能は、転送承認の標準の IP アドレスベースの方法を強化します。攻撃者は、ゾーンを転送するために IP アドレスにアクセスする必要があるだけでなく、秘密鍵も知っておく必要があります。BIND バージョン 9 は、ゾーン転送を承認するもう 1 つの共有秘密鍵メソッドである TKEY にも対応しています。
19.5.4. IP バージョン 6
19.6. 回避すべき一般的な間違い
- ゾーンファイルを編集するときは、シリアル番号を増やすようにしてください。シリアル番号がインクリメントされない場合、マスターネームサーバーは正しく新しい情報を持ちますが、スレーブネームサーバーには変更は通知されず、そのゾーンのデータの更新は試行されません。
/etc/named.conf
ファイルで、ellipses と semi-colons を正しく使用するようにしてください。セミコロンまたは閉じていない省略セクションを使用すると、named の起動を拒否する場合があります。- すべての FQDN の後にゾーンファイルにピリオド(.)を配置するのを忘れて、ホスト名で省略するようにしてください。ドメイン名の最後にあるピリオドは、完全修飾ドメイン名を示します。ピリオドを省略すると、named はゾーンの名前または $ORIGIN 値を追加して完了します。
- ファイアウォールが named デーモンから他のネームサーバーへの接続をブロックしている場合は、可能な限りファイアウォール設定を変更することが推奨されます。固定 UDP ソースポートに関する重要なセキュリティー情報については、を参照してください。 「ファイアウォールによる通信のブロック」
19.7. 関連情報
19.7.1. インストールされているドキュメント
バインド
のバージョンに置き換えます。
-
/usr/share/doc/bind-<version-number>/
- このディレクトリーには、最新の機能が一覧表示されます。
-
/usr/share/doc/bind-<version-number>/arm/
- このディレクトリーには、HTML および SGML 形式の 『BIND 9 Administrator Reference Manual』 が含まれています。このマニュアルでは、BIND リソース要件、異なるタイプのネームサーバーの設定方法、負荷分散の実行方法、およびその他の高度なトピックについて詳しく説明します。BIND のほとんどの新規ユーザーでは、これを開始するのが最適な場所です。
-
/usr/share/doc/bind-<version-number>/draft/
- このディレクトリーには、DNS サービスに関連する問題をレビューし、それらに対応する方法を提案するさまざまな技術ドキュメントが含まれています。
-
/usr/share/doc/bind-<version-number>/misc/
- このディレクトリーには、特定の高度な問題に対処するために設計されたドキュメントが含まれています。BIND バージョン 8 のユーザーは、BIND 9 に
移行する際に必要な特定の変更については、移行
ドキュメントを参照してください。options
ファイルには、/etc/named.conf
で使用される BIND 9 に実装されたすべてのオプションが一覧表示されます。 -
/usr/share/doc/bind-<version-number>/rfc/
- このディレクトリーは、BIND に関連するすべての RFC ドキュメントを提供します。
- 管理アプリケーション
- man rndc: rndc コマンドを使用して BIND ネームサーバーを制御する際に使用できるさまざまなオプションを説明します。
- サーバーアプリケーション
- man named - BIND nameserver デーモンの制御に使用できるさまざまな引数を調べます。
- man lwresd: 軽量リゾルバーデーモンで利用可能な および オプションの目的を説明します。
- 設定ファイル
- man named.conf: named 設定ファイル内で利用可能なオプションの包括的な一覧です。
- man rndc.conf: rndc 設定ファイル内で利用可能なオプションの包括的な一覧。
19.7.2. 便利な Web サイト
- http://www.isc.org/index.pl?/sw/bind/ - BIND プロジェクトのホームページには、現在のリリースに関する情報と 『BIND 9 Administrator Reference Manual』 の PDF バージョンが含まれています。
- http://www.redhat.com/mirrors/LDP/HOWTO/DNS-HOWTO.html - BIND を解決、キャッシュネームサーバーとして使用すること、およびドメインのプライマリーネームサーバーとして機能するために必要なさまざまなゾーンファイルの設定を説明します。
19.7.3. 関連書籍
- Paul Albitz 『および Cricket Liu による DNS および BIND』: O'Reilly & Associates - 一般的な BIND 設定オプションと、DNS サーバーのセキュリティーを保護するストラテジーを提供する一般的なリファレンスです。
- Nicolai Langfeldt 『による DNS と BIND の Concise Guide』、Que - 複数のネットワークサービスと BIND 間の接続を見て、タスク指向の技術トピックを中心としています。
第20章 OpenSSH
20.1. SSH の機能
- クライアントは、初回接続後に、以前接続したサーバーと同じサーバーに接続していることを確認できます。
- クライアントは、強力な 128 ビット暗号化を使用して、サーバーへ認証情報を送信します。
- セッション中に送受信された全データは、128 ビット暗号化を使用して転送されるため、傍受された送信データの暗号解読と読み取りは非常に困難になります。
- クライアントは X11 を転送できます。[4] サーバーからのアプリケーション。X11 転送 と呼ばれるこの手法は、ネットワーク上でグラフィカルアプリケーションを使用する安全な手段を提供します。
openssh
)と、OpenSSH サーバー(openssh-server
)およびクライアント(openssh-clients
)のパッケージが含まれます。OpenSSH パッケージには、OpenSSL パッケージ(openssl
)が必要です。このパッケージは、重要な暗号化ライブラリーを複数インストールし、OpenSSH が暗号化された通信を提供するようにします。
20.1.1. SSH を使用する理由
- 2 つのシステム間の通信の 傍受:このシナリオでは、攻撃者は通信者間で渡される情報をネットワーク上のどこかに置くことができます。攻撃者は情報を傍受して維持したり、情報を変更したり、目的の受信者に送信したりする可能性があります。この攻撃は、一般的なネットワークユーティリティーであるパケットスニッファーを使用してマウントできます。
- 特定ホストの偽装 - このストラテジーを使用すると、攻撃者のシステムは、送信の対象となる受信者として機能するように設定されています。このストラテジーが機能すると、ユーザーのシステムは間違ったホストと通信していることを認識しません。
20.2. SSH プロトコルのバージョン
20.3. SSH 接続のイベントシーケンス
- 暗号化ハンドシェイクが行われ、クライアントが正しいサーバーと通信していることを確認できます。
- クライアントとリモートホストとの間の接続のトランスポート層が、対称暗号方式を使用して暗号化されます。
- クライアントが、サーバーに対して自己認証します。
- リモートクライアントは、暗号化された接続でリモートホストと対話します。
20.3.1. トランスポート層
- 鍵を交換する
- 公開鍵暗号化アルゴリズムが決定する
- 対称暗号化アルゴリズムが決定する
- メッセージ認証アルゴリズムが決定する
- ハッシュアルゴリズムが決定する
20.3.2. 認証
20.3.3. チャネル
20.4. OpenSSH サーバーの設定
openssh-server
パッケージが必要で、openssh
パッケージに依存します。
/etc/ssh/sshd_config
を使用します。デフォルトの設定ファイルは、ほとんどの目的で十分です。デフォルトの sshd_config
では提供されない方法で デーモンを設定する場合は、設定ファイルで定義できるキーワードの一覧については、sshd の man ページを参照してください。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed.
/etc/ssh/ssh_host*key*
ファイルをバックアップし、再インストール後に復元します。このプロセスはシステムのアイデンティティーを保持し、再インストール後にクライアントがシステムに接続しようとすると、警告メッセージを受信しません。
20.4.1. リモート接続に必要な SSH
- telnet
- rsh
- rlogin
- vsftpd
20.5. OpenSSH 設定ファイル
/etc/ssh/
ディレクトリーに保存されます。
moduli
- 安全なトランスポート層を構築する際に重要な Diffie-Hellman 鍵交換に使用される Diffie-Hellman グループが含まれます。SSH セッションの初めに鍵が交換される時、共有秘密値が作成されますが、どちらか一方の当事者だけでは決定できません。この値は、ホスト認証を行うのに使用されます。ssh_config
: システム全体のデフォルトの SSH クライアント設定ファイル。これは、ユーザーのホームディレクトリー(~/.ssh/config
)にもある場合に上書きされます。sshd_config
- sshd デーモンの設定ファイルです。ssh_host_dsa_key
: sshd デーモンが使用する DSA 秘密鍵です。ssh_host_dsa_key.pub
: sshd デーモンが使用する DSA 公開鍵です。ssh_host_key
- sshd デーモンが使用する SSH プロトコルのバージョン 1 用の RSA 秘密鍵です。ssh_host_key.pub
: sshd デーモンが使用する SSH プロトコルのバージョン 1 用の RSA 公開鍵です。ssh_host_rsa_key
: sshd デーモンが使用する SSH プロトコルのバージョン 2 用の RSA 秘密鍵です。ssh_host_rsa_key.pub
: sshd が使用する SSH プロトコルのバージョン 2 用の RSA 公開鍵です。
~/.ssh/
ディレクトリー内のユーザーのホームディレクトリーに保存されます。
authorized_keys
: このファイルは、サーバーの認証済み公開鍵の一覧を保持します。クライアントがサーバーに接続すると、サーバーが、このファイル内に格納されている署名済み公開鍵を確認してクライアントを認証します。id_dsa
: ユーザーの DSA 秘密鍵が含まれます。id_dsa.pub
: ユーザーの DSA 公開鍵です。id_rsa
: ssh が使用する SSH プロトコルのバージョン 2 用の RSA 秘密鍵です。id_rsa.pub
: SSH プロトコルのバージョン 2 用の ssh が使用する RSA 公開鍵です。identity
- ssh が使用する SSH プロトコルのバージョン 1 用の RSA 秘密鍵です。identity.pub
: ssh が使用する SSH プロトコルのバージョン 1 用の RSA 公開鍵です。known_hosts
: このファイルには、ユーザーがアクセスする SSH サーバーの DSA ホストキーが含まれます。このファイルは、SSH クライアントが正しい SSH サーバーに接続していることを確認するために非常に重要です。重要な影響SSH サーバーのホストキーが変更された場合、クライアントは、テキストエディターを使用してサーバーのホストキーがknown_hosts
ファイルから削除されるまで接続が続行できないことをユーザーに通知します。ただし、これを実行する前に、SSH サーバーのシステム管理者に連絡して、サーバーが被害を受けていないことを確認してください。
20.6. OpenSSH クライアントの設定
openssh-clients
パッケージおよび openssh
パッケージをインストールする必要があります。
20.6.1. ssh コマンドの使用
ssh penguin.example.net
The authenticity of host 'penguin.example.net' can't be established. DSA key fingerprint is 94:68:3a:3a:bc:f3:9a:9b:01:5d:b3:07:38:e2:11:0c. Are you sure you want to continue connecting (yes/no)?
yes
と入力します。これにより、以下のメッセージに示されるように、サーバーが既知のホスト(~/.ssh/known_hosts
)の一覧に追加されます。
Warning: Permanently added 'penguin.example.net' (RSA) to the list of known hosts.
ssh username@penguin.example.net
ssh penguin.example.net ls /usr/share/doc
/usr/share/doc
の内容が表示され、ローカルのシェルプロンプトに戻ります。
20.6.2. scp コマンドの使用
scp <localfile> username@tohostname:<remotefile>
/var/log/maillog
などのファイルへのパスを含むソースを指定します。< ;remotefile> は宛先を指定します。これは、/tmp/hostname-maillog
などの新しいファイル名にすることができます。リモートシステムでは、前に / がない場合、パスはユーザー名(通常は /home/ username /
)のホームディレクトリーと相対的になります。
shadowman
を penguin.example.net 上のアカウントのホームディレクトリーに転送するには、シェルプロンプトで以下を入力します( username はユーザー名に置き換えてください)。
scp shadowman username@penguin.example.net:shadowman
shadowman
が penguin.example.net の /home/username/shadowman
に転送されます。または、scp コマンドで最後の shadowman
をオフにすることもできます。
scp username@tohostname:<remotefile> <newlocalfile>
downloads/
の内容を、リモートマシン penguin.example.net の upload /
と呼ばれる既存のディレクトリーに転送するには、シェルプロンプトで以下を入力します。
scp downloads/* username@penguin.example.net:uploads/
20.6.3. sftp コマンドの使用
20.7. セキュアなシェルの追加
20.7.1. X11 転送
-Y
オプションを使用し、ローカルマシンで X プログラムを実行して SSH サーバーへの接続を簡単に実行できます。
ssh -Y <user>@example.com
system-config-printer &
20.7.2. ポート転送
ssh -L local-port:remote-hostname:remote-port username@hostname
ssh -L 1100:mail.example.com:110 mail.example.com
ssh -L 1100:mail.example.com:110 other.example.com
/etc/ssh/sshd_config
の AllowTcpForwarding 行に No パラメーターを指定して sshd サービスを再起動することで、この機能をサーバー上で無効にできます。
20.7.3. 鍵ペアの生成
~/.ssh/authorized_keys2
、~/ssh/known_hosts2
、および /etc/ssh_known_hosts2
は廃止されました。SSH プロトコル 1 と 2 は、~/.ssh/authorized_keys
、~/.ssh/known_hosts
ファイル、および /etc/ssh/ssh_known_hosts
ファイルを共有します。
.ssh
ディレクトリーのバックアップを作成します。再インストール後に、このディレクトリーをホームディレクトリーにコピーします。このプロセスは、システムの全ユーザー(root など)で実行できます。
20.7.3.1. バージョン 2 用の RSA 鍵ペアの生成
- プロトコルのバージョン 2 と連携するように RSA 鍵ペアを生成するには、シェルプロンプトで以下のコマンドを入力します。
ssh-keygen -t rsa
~/.ssh/id_rsa
のデフォルトのファイルの場所を受け入れます。アカウントのパスワードとは別のパスフレーズを入力し、再度入力して確認します。公開鍵は~/.ssh/id_rsa.pub
に書き込まれます。秘密鍵は~/.ssh/id_rsa
に書き込まれます。秘密鍵を誰にも配布しないでください。 - 以下のコマンドを使用して、
.ssh
ディレクトリーのパーミッションを変更します。chmod 755 ~/.ssh
~/.ssh/id_rsa.pub
の内容を、接続するマシンの~/.ssh/authorized_keys
ファイルにコピーします。~/.ssh/authorized_keys
ファイルが存在する場合は、~/.ssh/id_rsa.pub
ファイルの内容を他のマシンの~/.ssh/authorized_keys
ファイルに追加します。- 以下のコマンドを使用して
authorized_keys
ファイルのパーミッションを変更します。chmod 644 ~/.ssh/authorized_keys
- GNOME を実行しているか、GTK2+ ライブラリーがインストールされているグラフィカルデスクトップで実行している場合は、「GUI を使用した ssh-agent の設定」 に進みます。X Window System を実行していない場合は、「ssh-agentの設定」 に進みます。
20.7.3.2. バージョン 2 用の DSA キーペアの生成
- プロトコルのバージョン 2 と連携するように DSA キーペアを生成するには、シェルプロンプトで以下のコマンドを入力します。
ssh-keygen -t dsa
~/.ssh/id_dsa
のデフォルトファイルの場所を受け入れます。アカウントのパスワードとは別のパスフレーズを入力し、再度入力して確認します。ヒントパスフレーズは、ユーザーの認証に使用される単語と文字の文字列です。パスフレーズは、パスフレーズのスペースまたはタブを使用できるパスワードとは異なります。通常、パスフレーズは単一の単語ではなくフレーズであるため、通常はパスワードよりも長い時間がかかります。公開鍵は~/.ssh/id_dsa.pub
に書き込まれます。秘密鍵は~/.ssh/id_dsa
に書き込まれます。秘密鍵には決して付与しないことが重要です。 - 以下のコマンドを使用して、
.ssh
ディレクトリーのパーミッションを変更します。chmod 755 ~/.ssh
~/.ssh/id_dsa.pub
の内容を、接続するマシンの~/.ssh/authorized_keys
ファイルにコピーします。~/.ssh/authorized_keys
ファイルが存在する場合は、~/.ssh/id_dsa.pub
ファイルの内容を他のマシンの~/.ssh/authorized_keys
ファイルに追加します。- 以下のコマンドを使用して
authorized_keys
ファイルのパーミッションを変更します。chmod 644 ~/.ssh/authorized_keys
- GTK2+ ライブラリーがインストールされている GNOME またはグラフィカルデスクトップ環境を実行している場合は、「GUI を使用した ssh-agent の設定」 に進みます。X Window System を実行していない場合は、「ssh-agentの設定」 に進みます。
20.7.3.3. バージョン 1.3 および 1.5 の RSA 鍵ペアの生成
- RSA (バージョン 1.3 および 1.5 プロトコル用)のキーペアを生成するには、シェルプロンプトで以下のコマンドを入力します。
ssh-keygen -t rsa1
デフォルトのファイルの場所(~/.ssh/identity
)を受け入れます。アカウントパスワードとは異なるパスフレーズを入力します。パスフレーズを再度入力して確認します。公開鍵は~/.ssh/identity.pub
に書き込まれます。秘密鍵は~/.ssh/identity
に書き込まれます。秘密鍵には付与しないでください。 - chmod 755 ~/.ssh コマンドおよび chmod 644 ~/.ssh/identity.pub コマンドを使用して、
.ssh
ディレクトリーおよびキーのパーミッションを変更します。 ~/.ssh/identity.pub
の内容を、接続するマシンの~/.ssh/authorized_keys
ファイルにコピーします。~/.ssh/authorized_keys
ファイルが存在しない場合は、~/.ssh/identity.pub
ファイルをリモートマシンのファイル~/.ssh/authorized_keys
にコピーします。- GNOME を実行している場合は、「GUI を使用した ssh-agent の設定」 に進みます。GNOME を実行していない場合は、「ssh-agentの設定」 に進みます。
20.7.3.4. GUI を使用した ssh-agent の設定
- パッケージ
gnome-ssh-askpass
をインストールする必要があります。rpm -q openssh-askpass コマンドを使用して、インストールされているかどうかを判断できます。インストールされていない場合は、Red Hat Enterprise Linux CD-ROM セット、Red Hat FTP ミラーサイト、または Red Hat Network を使用してインストールします。 - Main Menu Button (パネル上)> Preferences > More Preferences > Sessions の順に選択し、Startup Programs タブをクリックします。Add をクリックして、Startup Command テキストエリアに
/usr/bin/ssh-add
と入力します。最後に実行されるように、既存のコマンドよりも高い数値に優先度を設定します。ssh-add の適切な優先度番号は 70 以上です。優先度番号が高いほど優先度は低くなります。他のプログラムの一覧を表示している場合は、優先度が最も低いはずです。Close をクリックしてプログラムを終了します。 - GNOME からログアウトしてからログインし直します。つまり、X を再起動します。GNOME が起動すると、ダイアログボックスが表示され、パスフレーズの入力が求められます。要求されたパスフレーズを入力します。DSA キーペアと RSA キーペアの両方が設定されている場合は、両方の入力を求められます。この時点から、ssh、scp、または sftp によるパスワードの入力を要求されることはありません。
20.7.3.5. ssh-agentの設定
- シェルプロンプトで、以下のコマンドを入力します。
exec /usr/bin/ssh-agent $SHELL
- 次に、コマンドを入力します。
ssh-add
パスフレーズを入力します。複数のキーペアが設定されている場合は、それぞれにプロンプトが表示されます。 - ログアウトすると、パスフレーズは忘れられます。仮想コンソールにログインするか、またはターミナルウィンドウを開くたびに、これらの 2 つのコマンドを実行する必要があります。
20.8. 関連情報
20.8.1. インストールされているドキュメント
- man ページの ssh、scp、sftp、sshd、および ssh-keygen には、これらのコマンドの使用方法と、そのコマンドで使用できるすべてのパラメーターに関する情報が記載されています。
20.8.2. 便利な Web サイト
- http://www.openssh.com/ - OpenSSH の FAQ ページ、バグレポート、メーリングリスト、プロジェクトの目標、およびセキュリティー機能のより詳細な説明があります。
- http://www.openssl.org/: OpenSSL FAQ ページ、メーリングリスト、およびプロジェクトゴールの説明。
- http://www.freesshd.com/: 他のプラットフォーム用の SSH クライアントソフトウェアです。
第21章 Network File System (NFS)
21.1. 仕組み
-p
コマンドラインオプションがあり、ファイアウォールの設定が容易になります。
/etc/exports
を参照して、クライアントがエクスポートしたファイルシステムにアクセスできるかどうかを判断します。アクセスが許可されると、ユーザーはファイルおよびディレクトリーの全操作を使用できます。
21.1.1. 必要なサービス
- nfs -(/sbin/service nfs start)は、NFS サーバーと、共有 NFS ファイルシステムの要求を処理する適切な RPC プロセスを起動します。
- nfslock -(/sbin/service nfslock start)は、適切な RPC プロセスを開始して、NFS クライアントがサーバー上のファイルをロックできるようにする必須のサービスです。
- portmap: ローカルの RPC サービスからのポート予約を受け入れます。その後、これらのポートは公開され、対応するリモートの RPC サービスはそれらにアクセスします。Port map は RPC サービスの要求に応答し、要求された RPC サービスへの接続を設定します。
- rpc.mountd: このプロセスは NFS クライアントからマウント要求を受け取り、要求されたファイルシステムが現在エクスポートされていることを確認します。このプロセスは、nfs サービスにより自動的に起動されるため、ユーザー設定は必要ありません。
- rpc.nfsd: サーバーが公開している明示的な NFS バージョンとプロトコルを定義できます。NFS クライアントが接続するたびにサーバースレッドを提供するなど、NFS クライアントの動的な要求に対応するため、Linux カーネルと連携して動作します。このプロセスは、nfs サービスに対応します。
- rpc.lockd: NFS クライアントがサーバー上のファイルをロックできるようにします。rpc.lockd が起動しないと、ファイルのロックに失敗します。rpc.lockd は Network Lock Manager (NLM) プロトコルを実装します。このプロセスは、nfslock サービスに対応します。このプロセスは NFSv4 では使用されません。
- rpc.statd: このプロセスは、Network Status Monitor (NSM) RPC プロトコルを実装します。このプロトコルは、NFS サーバーが正常に停止せずに再起動すると NFS クライアントに通知します。このプロセスは、nfslock サービスにより自動的に起動されるため、ユーザー設定は必要ありません。このプロセスは NFSv4 では使用されません。
- rpc.rquotad: このプロセスは、リモートユーザーのユーザークォータ情報を提供します。このプロセスは、nfs サービスにより自動的に起動されるため、ユーザー設定は必要ありません。
- rpc.idmapd: このプロセスは、ネットワーク上の NFSv4 名(user@domain 形式の文字列)とローカル UID と GID の間のマッピングを行う NFSv4 クライアントおよびサーバーアップコールを提供します。idmapd が NFSv4 で機能するには、
/etc/idmapd.conf
を設定する必要があります。このサービスは、NFSv4 での使用に必要です。
21.2. NFS クライアント設定
mount -t <nfs-type> -o <options> <host>:</remote/export> </local/directory>
/etc/fstab
ファイルまたは autofs サービス)提供します。
21.2.1. /etc/fstab
を使用した NFS ファイルシステムのマウント
/etc/fstab
ファイルに行を追加することです。/etc/fstab
ファイルは起動時に netfs サービスによって参照されるため、NFS 共有を参照する行は、起動プロセス中に手動で mount コマンドを入力する場合と同じ効果が得られます。このファイルの各行には、NFS サーバーのホスト名、エクスポートされるサーバーの ディレクトリー、および NFS 共有がマウントされるローカルマシンの ディレクトリーを指定する必要があります。/etc/fstab
ファイルを変更するには、root でなければなりません。
/etc/fstab
の行の一般的な構文は以下のとおりです。
<server>:</remote/export> </local/directory> <nfs-type> <options> 0 0
;server&
gt; を、ファイルシステムをエクスポートするサーバーのホスト名、IP アドレス、または完全修飾ドメイン名に置き換えます。< ;/remote/export
> をエクスポートされたディレクトリーのパスに置き換え、</ local/directory
> を、エクスポートしたディレクトリーがマウントされるローカルファイルシステムに置き換えます。< ;nfs-type>
を、NFSv2 または NFSv3 サーバーの場合は nfs、NFSv4 サーバーの場合は nfs4 のいずれかに置き換えます。最後に、< ;options> を NFS ファイルシステムのオプションのコンマ区切りリストに置き換えます(詳細は、「一般的な NFS マウントオプション」 を参照してください)。マウントポイントは、/etc/fstab
が読み取られる前に存在しておく必要があります。存在していないとマウントに失敗します。
/etc/fstab
行の例です。
server:/usr/local/pub /pub nfs defaults 0 0
/etc/fstab
にこの行を追加した後、シェルプロンプトでコマンド mount /pub
を入力し、マウントポイント /pub
をサーバーからマウントします。このコマンドを実行する前に、マウントポイント /pub
がクライアントマシンに存在している必要があります。
/etc/fstab
設定ファイルとそのコンテンツの詳細は、fstab
の man ページを参照してください。
21.3. autofs
/etc/fstab
を使用する場合の欠点の 1 つは、NFS マウントされたファイルシステムにユーザーがアクセスする頻度に関わらず、マウントされたファイルシステムを所定の場所で維持するために、システムがリソースを割り当てる必要があることです。これは 1 つまたは 2 つのマウントでは問題になりませんが、システムが一度に多くのシステムへのマウントを維持している場合、システム全体のパフォーマンスに影響を与える可能性があります。/etc/fstab
の代替は、カーネルベースの automount ユーティリティーを使用することです。自動マウント機能は 2 つのコンポーネントで設定されます。1 つはファイルシステムを実装するカーネルモジュールで、もう 1 つは他のすべての機能を実行するユーザー空間デーモンです。automount ユーティリティーは、(オンデマンドでマウント)NFS ファイルシステムを自動的にマウントおよびアンマウントできるため、システムリソースを節約できます。automount ユーティリティーを使用すると、AFS、SMBFS、CIFS、およびローカルファイルシステムなどの他のファイルシステムをマウントできます。
/etc/auto.master
(マスターマップ) を使用します。これは、Name Service Switch メカニズムとともに autofs 設定( /etc/sysconfig/autofs
内)を使用して別のネットワークソースと名前を使用するように変更できます。バージョン 4 デーモンのインスタンスはマスターマップに設定された各マウントポイントに対して実行されるため、指定のマウントポイントに対してコマンドラインから手動で実行できました。バージョン 5 では、設定されたすべてのマウントポイントの管理に単一のデーモンが使用されるため、すべての自動マウントをマスターマップで設定する必要があります。これは、他の業界標準の自動マウント機能の通常の要件と一致しています。マウントポイント、ホスト名、エクスポートしたディレクトリー、および各種オプションは各ホストに対して手動で設定するのではなく、すべて 1 つのファイルセット (またはサポートされている別のネットワークソース) 内に指定することができます。このサービスを使用する場合は、autofs パッケージがインストールされていることを確認してください。
21.3.1. autofs バージョン 5 の新機能
- ダイレクトマップのサポート
- autofs ダイレクトマップは、ファイルシステム階層の任意の時点でファイルシステムを自動的にマウントするメカニズムを提供します。ダイレクトマップは、マスターマップの /- のマウントポイントによって示されます。ダイレクトマップのエントリーには、(間接マップで使用される相対パス名の代わりに) 絶対パス名がキーとして含まれています。
- レイジーマウントとアンマウントのサポート
- マルチマウントマップエントリーは、1 つのキーの下にあるマウントポイントの階層を記述します。この良い例として、-hosts マップがあります。これは通常、
/net/
<host> 下のホストからのすべてのエクスポートをマルチマウントマップエントリーとして自動マウントするために使用されます。"-hosts
"マップを使用すると、'ls' of "/net/<host> " は autofs トリガーを < host > から各エクスポートのマウントをマウントし、マウントしてアクセスする際に期限切れにします。これにより、エクスポートが多数あるサーバーにアクセスする際に必要なアクティブなマウントの数を大幅に減らすことができます。 - 強化された LDAP サポート
- autofs バージョン 5 での Lightweight Directory Access Protocol (LDAP)のサポートが、autofs バージョン 4 に関する複数の方法で強化されました。autofs 設定ファイル(
/etc/sysconfig/autofs
)は、サイトが実装する autofs スキーマを指定するメカニズムを提供します。そのため、アプリケーション自体でトライアルとエラーでこれを判断する必要がなくなります。さらに、共通の LDAP サーバー実装でサポートされるほとんどのメカニズムを使用して、LDAP サーバーへの認証済みバインドがサポートされるようになりました。このサポートには、新しい設定ファイル (/etc/autofs_ldap_auth.conf
) が追加されました。デフォルトの設定ファイルは自己文書化されており、XML 形式を使用します。 - Name Service Switch (nsswitch) 設定の適切な使用
- Name Service Switch 設定ファイルは、特定の設定データがどこから来るのかを判別する手段を提供するために存在します。この設定の理由は、データにアクセスするための統一されたソフトウェアインターフェイスを維持しながら、管理者が最適なバックエンドデータベースを柔軟に使用できるようにするためです。バージョン 4 の自動マウント機能は、ネームサービスのスイッチ設定の処理にますます厳しくなっていますが、まだ完了していません。一方、autofs バージョン 5 は完全な実装です。このファイルのサポートされる構文の詳細は、nsswitch.conf の man ページを参照してください。すべての nss データベースが有効なマップソースであるわけではなく、パーサーは無効なデータベースを拒否することに注意してください。有効なソースは、ファイル、yp、nis、nisplus、ldap および hesiod です。
- autofs マウントポイントごとの複数のマスターマップエントリー
- 頻繁に使用されますが、まだ記述されていないのは、ダイレクトマウントポイント/-の複数のマスターマップエントリーの処理です。各エントリーのマップキーはマージされ、1 つのマップとして機能します。以下は、ダイレクトマウントの connectathon テストマップの例です。
/- /tmp/auto_dcthon /- /tmp/auto_test3_direct /- /tmp/auto_test4_direct
21.3.2. autofs 設定
/etc/auto.master
です。マスターマップとも呼ばれます。マスターマップは、上記の紹介セクションで説明されているように変更される可能性があります。マスターマップには、システム上の autofs 制御マウントポイントと、それに対応する設定ファイルまたは自動マウントマップと呼ばれるネットワークソースが一覧表示されます。マスターマップの形式は次のとおりです。
<mount-point> <map-name> <options>
- mount-point は、
/home
などの autofs マウントポイントです。 - map-name は、マウントポイントの一覧と、マウントポイントがマウントされるファイルシステムの場所を含むマップソースの名前です。マップエントリーの構文を以下に説明します。
- オプション は、それ自体にオプションが指定されていない限り、指定のマップのすべてのエントリーに適用されます。この動作は、累積するオプションがある autofs バージョン 4 とは異なります。これは、混合環境互換性の主な目的を達成するために変更されました。
/etc/auto.master
ファイルの例です。
~]$ cat /etc/auto.master
/home /etc/auto.misc
<mount-point> [<options>] <location>
- <mount-point& gt; は autofs マウントポイントです。これは 1 つのインダイレクトマウント用の 1 つのディレクトリー名にすることも、複数のダイレクトマウント用のマウントポイントの完全パスにすることもできます。ダイレクトマップと間接マップの各エントリーキー(上記の <mount-point >)の後に、スペースで区切られたオフセットディレクトリー(それぞれ/で始まるサブディレクトリー名)のリストが続き、ミューリマウントエントリーと呼ばれるものが続きます。
- <options> が指定されている場合は、独自のオプションを指定しないマップエントリーのマウントオプションです。
- <location> は、ローカルファイルシステムのパス(Sun マップ形式のエスケープ文字 : が先頭に付き、マップ名が / で始まります)、NFS ファイルシステム、その他の有効なファイルシステムの場所などのファイルシステムの場所です。
~]$ cat /etc/auto.misc
payroll -fstype=nfs personnel:/dev/hda3
sales -fstype=ext3 :/dev/hda4
sales
および payroll
)を示し ます
。2 番目のコラムは autofs マウントのオプションを示し、3 番目のコラムはマウントのソースを示しています。任意の設定に基づき、autofs マウントポイントは、/home/payroll
と /home/sales
になります。-fstype= オプションは省略されることが多く、通常は正しい操作には必要ありません。
service autofs start
service autofs restart
/home/payroll/2006/July.sxc
などのアンマウントされた autofs ディレクトリーにアクセスする必要がある場合、自動マウントデーモンはディレクトリーを自動的にマウントします。タイムアウトを指定した場合は、タイムアウト期間中ディレクトリーにアクセスしないと、ディレクトリーが自動的にアンマウントされます。
/sbin/service/autofs status
21.3.3. autofs の一般的なタスク
21.3.3.1. サイト設定ファイルの上書きまたは拡張
/etc/nsswitch.conf
ファイルに以下のディレクティブがあるとします。
automount: files nis
auto.master
マップファイルには以下が含まれています。
/home auto.home
auto.home
マップに以下が含まれていることを前提としています。
beth fileserver.example.com:/export/home/beth joe fileserver.example.com:/export/home/joe * fileserver.example.com:/export/home/&
/etc/auto.home
は存在しません。
/etc/auto.master
マップを使用する必要があります。
/home /etc/auto.home2 +auto.master
/etc/auto.home2
マップにはエントリーが含まれます。
* labserver.example.com:/export/home/&
/home
には NIS auto.home
マップではなく /etc/auto.home2
の内容が含まれます。
auto.home
マップをいくつかのエントリーで拡張する場合は、/etc/auto.home
ファイルマップを作成して、新しいエントリーと最後に NIS auto.home マップを追加します。次に、/etc/auto.home
ファイルマップは以下のようになります。
mydir someserver:/export/mydir +auto.home
auto.home
マップを指定すると、/home
の ls により以下が提供されます。
~]$ ls /home
beth joe mydir
autofs
は、読み取り中のファイルマップと同じ名前のファイルマップの内容を含まないことを認識しているため、この最後の例は期待どおりに動作します。したがって、nsswitch
設定の次のマップソースに移動します。
21.3.3.2. LDAP を使用した自動マウント機能マップの格納
openldap
パッケージは自動マウント機能 の依存関係として自動的にインストールされ ます
。LDAP アクセスを設定する際は /etc/openldap/ldap.conf
ファイルを編集します。BASE と URI がサイトに適切に設定されていることを確認します。スキーマが設定に設定されていることも確認してください。
rfc2307bis
に記載されています。このスキーマを使用するには、スキーマ定義からコメント文字を削除して、autofs
設定 (/etc/sysconfig/autofs
) に設定する必要があります。以下に例を示します。
DEFAULT_MAP_OBJECT_CLASS="automountMap" DEFAULT_ENTRY_OBJECT_CLASS="automount" DEFAULT_MAP_ATTRIBUTE="automountMapName" DEFAULT_ENTRY_ATTRIBUTE="automountKey" DEFAULT_VALUE_ATTRIBUTE="automountInformation"
rfc2307bis
スキーマの cn 属性に代わることに注意してください。サンプル設定の LDIF
について以下に説明します。
# extended LDIF # # LDAPv3 # base <> with scope subtree # filter: (&(objectclass=automountMap)(automountMapName=auto.master)) # requesting: ALL # # auto.master, example.com dn: automountMapName=auto.master,dc=example,dc=com objectClass: top objectClass: automountMap automountMapName: auto.master # extended LDIF # # LDAPv3 # base <automountMapName=auto.master,dc=example,dc=com> with scope subtree # filter: (objectclass=automount) # requesting: ALL # # /home, auto.master, example.com dn: automountMapName=auto.master,dc=example,dc=com objectClass: automount cn: /home automountKey: /home automountInformation: auto.home # extended LDIF # # LDAPv3 # base <> with scope subtree # filter: (&(objectclass=automountMap)(automountMapName=auto.home)) # requesting: ALL # # auto.home, example.com dn: automountMapName=auto.home,dc=example,dc=com objectClass: automountMap automountMapName: auto.home # extended LDIF # # LDAPv3 # base <automountMapName=auto.home,dc=example,dc=com> with scope subtree # filter: (objectclass=automount) # requesting: ALL # # foo, auto.home, example.com dn: automountKey=foo,automountMapName=auto.home,dc=example,dc=com objectClass: automount automountKey: foo automountInformation: filer.example.com:/export/foo # /, auto.home, example.com dn: automountKey=/,automountMapName=auto.home,dc=example,dc=com objectClass: automount automountKey: / automountInformation: filer.example.com:/export/&
21.3.3.3. Autofs v4 マップの Autofs v5 への適合
v4 マルチマップエントリー
autofs バージョン 4 では、マスターマップにマルチマップエントリーの概念が導入されました。マルチマップエントリーの形式は以下のとおりです。
<mount-point> <maptype1> <mapname1> <options1> -- <maptype2> <mapname2> <options2> -- ...
/home file /etc/auto.home -- nis auto.home
/etc/nsswitch.conf
は以下を一覧表示する必要があります。
automount: files nis
/etc/auto.master
には以下が含まれている必要があります。
/home auto.home
/etc/auto.home
には以下が含まれている必要があります。
<entries for the home directory> +auto.home
/etc/auto.home
からのエントリーと nis auto.home
マップが組み合わされます。
複数マスターマップ
autofs バージョン 4 では、ファイル、nis、Hesiod、LDAP など、各ソースからマスターマップのコンテンツをマージできます。バージョン 4 の自動マウント機能は、/etc/nsswitch.conf
に記載されている各ソースのマスターマップを検索します。マップは存在する場合は読み取られ、その内容が 1 つの大きな auto.master
マップにマージされます。
nsswitch.conf
のソース一覧にある最初のマスターマップのみが参照されます。複数のマスターマップの内容をマージすることが望ましい場合は、含まれるマップを使用できます。以下の例を考慮してください。
/etc/nsswitch.conf: automount: files nis
/etc/auto.master: /home /etc/auto.home +auto.master
auto.master
と NIS ベースの auto.master
の内容を統合します。ただし、含まれるマップエントリーはファイルマップでのみ許可されるため、NIS auto.master
と LDAP auto.master
の両方を含める方法はありません。
auto.master.ldap
という名前の LDAP マスターマップがある場合は、"+auto.master.ldap"
をファイルベースのマスターマップに追加し、"ldap
" が nsswitch 設定のソースとしてリストされている場合は、それも含まれます。
21.4. 一般的な NFS マウントオプション
/etc/fstab
設定、autofs と併用できます。
hard
またはsoft
: NFS 接続を介してファイルを使用しているプログラムが、サーバーがオンラインに戻るのを停止および待機する(ハード
)するか、エクスポートしたファイルシステムを提供するホストが利用できない場合、またはエラー(ソフト
)を報告するかどうかを指定します。hard
を指定すると、intr
オプションも指定されていない限り、NFS 通信が再開するプロセスを終了できません。ソフト
が指定されている場合、ユーザーは追加のtimeo= <value
> オプションを設定できます。ここで、<value
> はエラーが報告されるまでの経過秒数を指定します。
intr
- サーバーがダウンした場合やサーバーに到達できない場合に、NFS 要求が中断されます。nfsvers=2
またはnfsvers=3
: 使用する NFS プロトコルのバージョンを指定します。これは、複数の NFS サーバーを実行するホストに役立ちます。バージョンを指定しないと、NFS はカーネルおよび mount コマンドで対応している最新バージョンを使用します。このオプションは NFSv4 では対応していないため、使用しないでください。noacl
- すべての ACL 処理をオフにします。古いバージョンの Red Hat Enterprise Linux、Red Hat Linux、Solaris と連動させる場合に必要となることがあります。こうした古いシステムには、最新の ACL テクノロジーに対する互換性がないためです。nolock
- ファイルのロックを無効にします。この設定は、古い NFS サーバーに接続するときに必要になる場合があります。noexec
- マウントされたファイルシステムでバイナリーの実行を行いません。これは、互換性のないバイナリーを含む NFS 経由で、Linux 以外のファイルシステムをマウントしている場合に便利です。nosuid
- set-user-identifier ビットまたは set-group-identifier ビットを無効にします。これにより、リモートユーザーは、setuid プログラムを実行してより高い権限を取得できなくなります。port=num
— NFS サーバーポートの数値を指定します。num が 0 (デフォルト)の場合、mount は、使用するポート番号のリモートホストの portmapper のクエリーを実行します。リモートホストの NFS デーモンがポートマッパーに登録されていない場合は、代わりに TCP 2049 の標準 NFS ポート番号が使用されます。rsize=num
およびwsize=num
: この設定により、読み取り(rsize
)および書き込み(wsize
)の NFS 通信を高速化します。これにより、大きなデータブロックサイズをバイト単位で一度に転送することができます。古い Linux カーネルやネットワークカードの中には、ブロックサイズを大きくするとうまく動作しないものがあるので、これらの値を変更する場合は注意が必要です。NFSv2 または NFSv3 では、両方のパラメーターのデフォルト値が 8192 に設定されます。NFSv4 の場合、両方のパラメーターのデフォルト値は 32768 に設定されます。sec=mode
: NFS 接続の認証時に使用するセキュリティーのタイプを指定します。sec=sys
はデフォルト設定で、AUTH_SYS を使用して NFS 操作を認証するのにローカルの UNIX UID および GID を使用します。sec=krb5
は、ユーザー認証に、ローカルの UNIX の UID と GID ではなく、Kerberos V5 を使用します。sec=krb5i
は、ユーザー認証に Kerberos V5 を使用し、データの改ざんを防ぐ安全なチェックサムを使用して、NFS 操作の整合性チェックを行います。sec=krb5p
は、ユーザー認証に Kerberos V5 を使用し、整合性チェックを実行し、トラフィックの傍受を防ぐため NFS トラフィックの暗号化を行います。これは最も安全な設定ですが、関連するパフォーマンスのオーバーヘッドも最も高くなります。tcp
: NFS マウントが TCP プロトコルを使用するように指定します。UDP
: NFS マウントが UDP プロトコルを使用するように指定します。
21.5. NFS の開始と停止
service portmap status
service nfs start
service nfs stop
restart
オプションは、NFS を停止して起動する簡単な方法です。これは、NFS の設定ファイルを編集した後に設定変更を有効にする最も効率的な方法です。
service nfs restart
condrestart
(conditional restart) オプションは、現在実行中の場合にのみ nfs を開始します。このオプションは、デーモンが実行されていない場合はデーモンを起動しないため、スクリプトに便利です。
service nfs condrestart
service nfs reload
21.6. NFS サーバーの設定
/etc/exports
)、または /usr/sbin/exportfs コマンドを使用します。
図21.1 NFS サーバー設定ツール
[D]
図21.2 NFS サーバーの設定
[D]
21.6.1. NFS ファイルシステムのエクスポートまたは共有
- directory:
/tmp
など、共有するディレクトリーを指定します。 - Host (s) - ディレクトリーを共有するホストを指定します。使用できる形式の説明は、「ホスト名の形式」 を参照してください。
- 基本パーミッション - ディレクトリーに読み取り専用パーミッションと読み取り/書き込みパーミッションを付与するかどうかを指定します。
図21.3 共有の追加
[D]
図21.4 NFS の一般的なオプション
[D]
- ポート 1024 以上からの接続を許可する - 1024 未満のポート番号で起動するサービスは、root で起動する必要があります。このオプションを選択して、root 以外のユーザーが NFS サービスを起動できるようにします。このオプションは、セキュアでない に対応します。
- Allow insecure file locking - ロック要求は必要ありません。このオプションは insecure_locks に対応します。
- Disable subtree checking - ファイルシステムのサブディレクトリーがエクスポートされていても、ファイルシステム全体がエクスポートされていない場合、サーバーは要求されたファイルがエクスポートされたサブディレクトリーにあるかどうかを確認します。このチェックは、サブツリーチェック と呼ばれます。このオプションを選択して、サブツリーのチェックを無効にします。ファイルシステム全体をエクスポートしている場合は、サブツリーチェックを無効にすると、転送率が増大する可能性があります。このオプションは no_subtree_check に対応します。
- Sync write operations on request - デフォルトでは有効になっており、このオプションでは、要求による変更がディスクに書き込まれる前に、サーバーが要求に応答することができません。このオプションは、同期 に対応します。これを選択しないと、async オプションが使用されます。
- Reforce sync of write operations immediately - ディスクへの書き込みを遅延させないでください。このオプションは no_wdelay に対応します。
- 以下 のファイルシステムを非表示にする と、nohide オプションがオンまたはオフになります。nohide オプションをオフにすると、ネストされたディレクトリーが表示されます。したがって、クライアントは変更を通知せずに親からファイルシステムを介して移動できます。
- マウントされている場合にのみエクスポート すると、mountpoint オプションが設定され、マウントされている場合にのみディレクトリーをエクスポートできます。
- オプションのマウントポイント は、オプションのマウントポイントへのパスを指定します。Browse をクリックして、優先マウントポイントに移動するか、または既知のパスを入力します。
- 明示的なファイルシステム ID を設定し ます。は fsid=X オプションを設定します。これは主にクラスター設定で使用されます。すべてのクラスターで一貫したファイルシステム ID を使用すると、古い NFS ファイル処理が回避されます。
図21.5 NFS ユーザーアクセス
[D]
- リモートの root ユーザーをローカル root として扱います。デフォルトでは、root ユーザーのユーザーおよびグループ ID は両方とも 0 です。root squashing は、ユーザー ID 0 とグループ ID 0 を anonymous のユーザー ID とグループ ID にマッピングし、クライアントの root が NFS サーバーで root 権限を持たないようにします。このオプションを選択すると、root は匿名にマッピングされず、クライアントの root にはエクスポートされたディレクトリーへの root 権限があります。このオプションを選択すると、システムのセキュリティーが大幅に低下する可能性があります。絶対に必要な場合を除き、選択しないでください。このオプションは、no_root_squash に対応します。
- すべてのクライアントユーザーを匿名ユーザーと して扱います。このオプションを選択すると、すべてのユーザー ID とグループ ID が匿名ユーザーにマッピングされます。このオプションは、all_squash に対応します。
- 匿名ユーザー のローカルユーザー ID を指定します。匿名 ユーザーが選択されると、すべてのクライアントユーザー が選択されている場合は、匿名ユーザーのユーザー ID を指定できます。このオプションは anonuid に対応します。
- 匿名ユーザー のローカルグループ ID を指定します。匿名 ユーザー が選択されると、すべてのクライアントユーザー が選択されている場合は、匿名ユーザーのグループ ID を指定できます。このオプションは、ongid に対応します。
/etc/exports.bak
として保存されます。新しい設定は /etc/exports
に書き込まれます。
/etc/exports
設定ファイルに直接読み取りおよび書き込みします。そのため、ツールを使用して手動でファイルを変更できます。また、ファイルを手動で修正した後は、ツールを使用できます(ファイルが正しい構文で変更された場合)。
/etc/exports
を手動で編集し、/usr/sbin/exportfs コマンドを使用して NFS ファイルシステムをエクスポートする方法を説明します。
21.6.2. コマンドラインからの設定
/etc/exports
ファイルは、NFS サーバーがエクスポートするディレクトリーを制御します。形式は以下のようになります。
directory hostname(options)
/misc/export speedy.example.com(sync)
speedy.example.com
がデフォルトの読み取り専用パーミッションで /misc/export
をマウントできます。
/misc/export speedy.example.com(rw,sync)
を持つ /misc/export
をマウントできるよう
になります。
/etc/exports
ファイルのスペースに注意してください。ホスト名とオプションの間のスペースが括弧でない場合、オプションはホスト名にのみ適用されます。ホスト名とオプションの間にスペースがある場合、オプションは残りの世界に適用されます。たとえば、以下の行を調べます。
/misc/export speedy.example.com(rw,sync) /misc/export speedy.example.com (rw,sync)
speedy.example.com
の読み取り/書き込みアクセスからユーザーに付与し、他のすべてのユーザーを拒否します。2 番目の行は、speedy.example.com
の読み取り専用アクセス(デフォルト)からのユーザーに付与し、残りのユーザーに読み取り/書き込みアクセスを許可します。
/etc/exports
を変更するたびに、以下のコマンドを実行して NFS デーモンに変更を通知したり、設定ファイルを再読み込みする必要があります。
service nfs reload
21.6.3. ファイアウォール背後での NFS の実行
/etc/sysconfig/nfs
設定ファイルを編集して、必要な RPC サービスが実行されるポートを制御できます。NFS を許可するようにファイアウォールを設定する方法は、「/etc/sysconfig/nfs
」 を参照してください。
21.6.4. ホスト名の形式
- 単一マシン:完全修飾ドメイン名(サーバーによって解決可能)、ホスト名(サーバーで解決可能)、または IP アドレス。
- ワイルドカードで指定された一連のマシン - * または ? 文字を使用して文字列の一致を指定します。ワイルドカードは IP アドレスでは使用しないことになっていますが、逆引き DNS ルックアップが失敗した場合には誤って動作する可能性があります。完全修飾ドメイン名でワイルドカードを指定する場合、ドット(.)はワイルドカードに含まれません。たとえば、
*.example.com
には one.example.com が含まれていますが one.two.example.com は含まれません。 - IP ネットワーク: a.b.c.d/z を使用します。ここで、a.b.c.d はネットワークであり、z はネットマスクのビット数です(例:0/24)。もう 1 つの使用可能な形式は a.b.c.d/netmask です。ここで、a.b.c.d はネットワークであり、netmask はネットマスクです(例:192.168.100.8/255.255.255.0)。
- netgroups - @group-name の形式で、group-name は NIS netgroup 名です。
21.7. /etc/exports
設定ファイル
/etc/exports
ファイルは、リモートホストにどのファイルシステムをエクスポートするかを制御し、オプションを指定します。空白行は無視され、ハッシュ記号(#)で行を開始することでコメントを作成できます。長い行はバックスラッシュ(\)でラップできます。エクスポートする各ファイルシステムは個別の行にする必要があり、エクスポートされたファイルシステムの後に配置された許可されたホストの一覧は、スペースで区切る必要があります。各ホストのオプションは、ホストの識別子の直後に括弧を追加し、その中に指定する。ホストと最初の括弧の間には空白を使用しない。有効なホストタイプは、gss/krb5、gss/krb5i、および gss/krb5p です。
<export> <host1>(<options>) <hostN>(<options>)...
- 単一ホスト: 特定のホストが完全修飾ドメイン名、ホスト名、または IP アドレスで指定されている場所。
- ワイルドカード - 特定の文字列に一致する完全修飾ドメイン名をグループ化するために * 文字または ? 文字を使用する場所。ワイルドカードは IP アドレスと併用しないでください。ただし、逆引き DNS ルックアップが失敗した場合、誤って動作する可能性があります。ワイルドカードを完全修飾ドメイン名で使用する場合は想定よりも正確である可能性があるため、注意してください。たとえば、ワイルドカードとして *.example.com を使用すると、sales.example.com はエクスポートされたファイルシステムにアクセスできますが、bob.sales.example.com はアクセスできません。* .example.com と *. *.example. com の両方に該当する必要があります。
- IP ネットワーク: 大規模なネットワーク内の IP アドレスに基づくホストの一致を許可します。たとえば、192.168.0. 0/28 では、最初の 16 の IP アドレスが 192.168.0.0 から 192.168.0.15 までで、エクスポートしたファイルシステムにアクセスできますが、192.168.0.16 以降にはアクセスできません。
- netgroups - 使用する NIS netgroup 名 @<group-name>書き込まれます。これにより、NIS サーバーが、このエクスポートしたファイルシステムのアクセス制御を担当することになります。この場合、
/etc/exports
に影響を及ぼさずに NIS グループでユーザーを追加および削除できます。
/etc/exports
ファイルに、エクスポートするディレクトリーと、そのディレクトリーへのアクセスを許可するホストを指定するだけです。以下の例のようになります。
/exported/directory bob.example.com
bob.example.com
は /exported/directory/
をマウントできます。この例ではオプションが指定されていないため、以下のデフォルトの NFS オプションが有効になります。
ro
: エクスポートしたファイルシステムのマウントは読み取り専用です。リモートホストは、ファイルシステムで共有されているデータに変更を加えることができません。ホストがファイルシステムに変更を加えることを許可するには、read/write (rw
)オプションを指定する必要があります。wdelay
: 別の書き込み要求が不満に疑われる場合は、NFS サーバーがディスクへの書き込みを遅らせます。これにより、書き込みコマンドによるディスクへのアクセス回数が減り、書き込みオーバーヘッドを削減することでパフォーマンスが向上します。no_wdelay
オプションはこの機能をオフにしますが、sync
オプションを使用する場合にのみ利用できます。root_squash
- リモートで接続した root ユーザーが root 権限を持たないようにし、ユーザーnfsnobody
のユーザー ID を割り当てます。これにより、リモート root ユーザーの権限を最も低いローカルユーザーに効果的に拒否し、リモートサーバーのファイルの不正な変更を防ぎます。または、no_root_squash
オプションは、root squashing をオフにします。root を含むすべてのリモートユーザーを非表示にするには、all_squash
オプションを使用します。特定のホストからリモートユーザーで使用するユーザーおよびグループ ID を指定するには、anonuid
オプションおよびanongid
オプションを指定します。この場合、リモート NFS ユーザーが共有して指定(anonuid=<uid-value>,anongid=<gid-value>)
するために特別なユーザーアカウントを作成できます。<uid-value>
is the user ID number and<gid-value>
はグループ ID 番号です。
rw
オプションを指定しないと、エクスポートするファイルシステムが読み取り専用として共有されます。以下は、/etc/exports
の例になりますが、ここでは 2 つのデフォルトオプションを上書きします。
/another/exported/directory 192.168.0.3(rw,sync)
/another/exported/directory/
の読み取り/書き込みをマウントでき、クライアントによる書き込み要求の完了前にディスクへのすべての転送がディスクにコミットされます。
exports
の man ページを参照してください。
/etc/exports
ファイルの形式では、特に空白文字の使用が非常に厳しく扱われます。ホストからエクスポートするファイルシステムの間、そしてホスト同士の間には、必ず空白文字を挿入してください。また、それ以外の場所 (コメント行を除く) には、空白文字を追加しないでください。
/home bob.example.com(rw) /home bob.example.com (rw)
bob.example.com
のユーザーにのみ、/home
ディレクトリーへの読み取り/書き込みアクセスを許可します。2 番目の行では、bob.example.com
からのユーザーにディレクトリーを読み取り専用 (デフォルト) でマウントすることを許可し、その他のユーザーに読み取り/書き込みでマウントすることを許可します。
21.7.1. exportfs コマンド
/etc/exports
ファイルに一覧表示されます。nfs サービスが開始すると、/usr/sbin/exportfs コマンドが起動してこのファイルを読み込み、実際のマウントプロセスのために制御を rpc.mountd (NFSv2 および NFSv3 の場合) に渡してから、rpc.nfsd に渡します。この時点でリモートユーザーがファイルシステムを使用できるようになります。
/var/lib/nfs/xtab
に書き込みます。ファイルシステムへのアクセス権を決定する際には、rpc.mountd がxtab
ファイルを参照するため、エクスポートしたファイルシステムの一覧への変更がすぐに反映されます。
-r
-/etc/exports
に一覧表示されているすべてのディレクトリーが、/etc/lib/nfs/xtab
に新しいエクスポートリストを作成することにより、エクスポートします。このオプションは、/etc/exports
に加えた変更でエクスポートリストを効果的に更新します。-a
- /usr/sbin/exportfs に渡される他のオプションに応じて、すべてのディレクトリーをエクスポートするか、エクスポート解除します。他のオプションが指定されない場合、/usr/sbin/exportfs は、/etc/exports
内に指定してあるすべてのファイルシステムをエクスポートします。-o file-systems
-/etc/exports
に記載されていないディレクトリーを指定します。file-systems の部分を、エクスポートされる追加のファイルシステムに置き換えます。これらのファイルシステムは、/etc/exports
で指定されたものと同じフォーマットでなければなりません。/etc/exports
構文の詳細は、「/etc/exports
設定ファイル」 を参照してください。このオプションは、エクスポートするファイルシステムのリストに永続的に追加する前に、エクスポートするファイルシステムをテストするためによく使用されます。-i
-/etc/exports
を無視します。コマンドラインから指定されたオプションのみが、エクスポートされるファイルシステムの定義に使用されます。-u
- すべての共有ディレクトリーのエクスポートを解除します。コマンド /usr/sbin/exportfs -ua は、すべての NFS デーモンを稼働状態に維持しながら、NFS ファイル共有を保留します。NFS 共有を再度有効にするには、exportfs -r と入力します。-v
- exportfs コマンドの実行時にエクスポートまたはエクスポートされていないファイルシステムがより詳細に表示されます。
21.7.1.1. NFSv4 で exportfs の使用
MOUNT
プロトコルを使用しなくなったため、ファイルシステムのマウントが変更されました。
fsid=0
オプションでエクスポート時に識別される単一の実際のファイルシステムとして識別されます。
mkdir /exports mkdir /exports/opt mkdir /exports/etc mount --bind /usr/local/opt /exports/opt mount --bind /usr/local/etc /exports/etc exportfs -o fsid=0,insecure,no_subtree_check gss/krb5p:/exports exportfs -o rw,nohide,insecure,no_subtree_check gss/krb5p:/exports/opt exportfs -o rw,nohide,insecure,no_subtree_check gss/krb5p:/exports/etc
--bind
オプションを使用して、マウントする複数のファイルシステムを持つクライアントが提供されます。
/home /home/sam /home/john /home/joe
/home *(rw,fsid=0,sync)
mount server:/home /mnt/home ls /mnt/home/joe
mount -t nfs4 server:/ /mnt/home ls /mnt/home/joe
/ *(ro,fsid=0) /home *(rw,sync,nohide)
21.8. NFS のセキュア化
21.8.1. ホストアクセス
21.8.1.1. NFSv2 または NFSv3 の使用
21.8.1.2. NFSv4 の使用
21.8.2. ファイル権限
nfsnobody
アカウントの値に設定されます。root squashing を無効にしないでください。
all_squash
オプションの使用を検討してください。これにより、エクスポートしたファイルシステムにアクセスするすべてのユーザーが nfsnobody
ユーザーのユーザー ID を取得します。
21.9. NFS と portmap
21.9.1. NFS と portmapのトラブルシューティング
rpcinfo -p
program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100021 1 udp 32774 nlockmgr 100021 3 udp 32774 nlockmgr 100021 4 udp 32774 nlockmgr 100021 1 tcp 34437 nlockmgr 100021 3 tcp 34437 nlockmgr 100021 4 tcp 34437 nlockmgr 100011 1 udp 819 rquotad 100011 2 udp 819 rquotad 100011 1 tcp 822 rquotad 100011 2 tcp 822 rquotad 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100005 1 udp 836 mountd 100005 1 tcp 839 mountd 100005 2 udp 836 mountd 100005 2 tcp 839 mountd 100005 3 udp 836 mountd 100005 3 tcp 839 mountd
21.10. TCP での NFS の使用
- 接続の持続性が向上し、
NFS の古いファイルがメッセージを処理
するのが少なくなります。 - TCP は、完了のみを確認する UDP とは異なり、すべてのパケットを確認するため、負荷の高いネットワークでパフォーマンスが向上しています。
- TCP の輻輳制御は UDP よりも優れています。非常に輻輳したネットワークでは、UDP パケットはドロップされる最初のパケットです。つまり、NFS がデータを書き込む場合(8K チャンク)、その 8K はすべて UDP で再送信する必要があります。TCP の信頼性により、その 8K データの一部のみが一度に送信されます。
- エラー検出。(サーバーが利用不可であることが原因で)TCP 接続が切断されると、クライアントはデータの送信を停止し、サーバーが利用可能になると接続プロセスを再起動します。UDP では、接続なしであるため、クライアントはサーバーが接続を再確立するまで、データでネットワークを保留し続けます。
21.11. 関連情報
21.11.1. インストールされているドキュメント
/usr/share/doc/nfs-utils- <version-number> / -
< version-number > を、インストールされている NFS パッケージのバージョン番号に置き換えます。このディレクトリーには、Linux 用の NFS 実装に関する情報が含まれています。これには、さまざまな NFS 設定やファイル転送パフォーマンスへの影響が含まれます。- man mount — NFS のサーバー設定およびクライアント設定に使用するマウントオプションに関して総合的に説明しています。
- man fstab — 起動時にファイルシステムをマウントするために使用される
/etc/fstab
ファイルの形式の詳細を提供します。 - man nfs — NFS 固有のファイルシステムのエクスポートおよびマウントオプションについて詳細に説明しています。
- man exports — NFS ファイルシステムのエクスポート時に
/etc/exports
ファイル内で使用する一般的なオプションを表示します。
21.11.2. 便利な Web サイト
- http://nfs.sourceforge.net/: Linux NFS プロジェクトのホームおよびプロジェクトステータスの更新に最適な場所です。
- http://www.citi.umich.edu/projects/nfsv4/linux/ — Linux 2.6 カーネル用 NFSv4 のリソースです。
- http://www.nfsv4.org - NFS バージョン 4 のホームおよび関連するすべての標準。
- http://www.vanemery.com/Linux/NFSv4/NFSv4-no-rpcsec.html — 2.6 カーネルを含む Fedora Core 2 での NFSv4 の詳細について説明しています。
- http://www.sane.nl/events/sane2000/papers/pawlowski.pdf: NFS バージョン 4 プロトコルの機能と機能拡張に関する優れた協力です。
- http://wiki.autofs.net - Autofs wiki、議論、ドキュメント、および機能拡張。
21.11.3. 関連書籍
- 『Managing NFS and NIS』 (Hal Stern、Mike Eisler および Ricardo Labiaga 著、O'Reilly & Associates 出版) — 利用可能な各種の NFS エクスポートやマウントオプションについて記載している優れた参考ガイドです。
- 『NFS Illustrated』 (Brent Callaghan 著、Addison-Wesley Publishing Company 出版): NFS と他のネットワークファイルシステムとの比較、NFS 通信がどのように発生するかなどが詳細に紹介されています。
第22章 Samba
22.1. Samba の概要
- LDAP および Kerberos を使用して Active Directory ドメインに参加する機能
- 国際化のための Unicode サポートが組み込まれています。
- ローカルレジストリーのハッキングを必要とせずに、Samba サーバーへの Microsoft Windows XP Professional クライアント接続のサポート
- 400+ ページ参照マニュアルを含む Samba.org チームによって開発された 2 つの新しいドキュメントと、300 以上のページ実装と統合マニュアルが含まれています。これらのタイトルの詳細については、「関連書籍」 を参照してください。
22.1.1. Samba の機能
- Linux、UNIX、Windows クライアントへのディレクトリーツリーとプリンターの提供
- ネットワーク参照を支援する(NetBIOS の有無にかかわらず)
- Windows ドメインログインの認証
- Windows Internet Name Service (WINS)ネームサーバー解決の提供
- Windows NT®-style Primary Domain Controller (PDC)として動作
- Samba ベースの PDC のバックアップドメインコントローラー(BDC)として動作する
- Active Directory ドメインメンバーサーバーとして動作する。
- Windows NT/2000/2003 PDC に参加
- Windows PDC の BDC として機能する(逆も同様)
- Active Directory ドメインコントローラーとして動作する
22.2. Samba デーモンと関連サービス
22.2.1. Samba デーモン
smbd
smbd サーバーデーモンは、Windows クライアントにファイル共有および印刷サービスを提供します。さらに、SMB プロトコルを使用したユーザー認証、リソースロック、およびデータ共有を行います。サーバーが SMB トラフィックをリッスンするデフォルトのポートは TCP ポート 139 および 445 です。
nmbd
nmbd サーバーデーモンは、Windows ベースのシステムの SMB/CIFS によって生成されたものなど、NetBIOS ネームサービス要求を理解して応答します。これらのシステムには、Windows 95/98/ME、Windows NT、Windows 2000、Windows XP、および LanManager クライアントが含まれます。また、Windows Network Neighborhood ビューを設定する参照プロトコルに参加します。サーバーが NMB トラフィックをリッスンするデフォルトのポートは UDP ポート 137 です。
winbindd
winbind サービスは、Windows NT 2000 または Windows Server 2003 を実行しているサーバーのユーザーおよびグループ情報を解決します。これにより、UNIX プラットフォームが理解できる Windows ユーザー/グループ情報が使用できるようになります。これは、Microsoft RPC 呼び出し、Pluggable Authentication Modules (PAM)、および Name Service Switch (NSS)を使用して実行されます。これにより、Windows NT ドメインユーザーが UNIX マシン上で UNIX ユーザーとして表示および操作できるようになります。Samba ディストリビューションにバンドルされていますが、winbind サービスは smb サービスとは別に制御されます。
22.3. Samba 共有への接続
smb:
を入力してワークグループを表示することもできます。
図22.1 Nautilus の SMB ワークグループ
[D]
図22.2 Nautilus の SMB マシン
[D]
smb://<servername>/<sharename>
22.3.1. コマンドライン
smbclient //<hostname>/<sharename> -U <username>
smb:\>
プロンプトが表示されている場合は、正常にログインしました。ログインしたら、コマンドのリストに help
と入力します。ホームディレクトリーの内容を参照する場合は、sharename をユーザー名に置き換えます。-U スイッチを使用しない場合、現行ユーザーのユーザー名が Samba サーバーに渡されます。
smb:\>
プロンプトで exit
と入力します。
22.3.2. 共有のマウント
mount -t cifs -o <username>,<password> //<servername>/<sharename> /mnt/point/
22.4. Samba サーバーの設定
/etc/samba/smb.conf
)を使用すると、ユーザーはホームディレクトリーを Samba 共有として表示できます。また、システム用に設定されたすべてのプリンターを Samba 共有プリンターとして共有します。つまり、システムにプリンターを接続し、ネットワーク上の Windows マシンからそのプリンターに印刷できます。
22.4.1. グラフィカル設定
/etc/samba/
ディレクトリーの設定ファイルを変更します。アプリケーションを使用していないこれらのファイルへの変更は保持されます。
system-config-samba
RPM パッケージがインストールされている必要があります。デスクトップから Samba Server Configuration Tool を起動するには、システム(パネル上)> Administration > Server Settings > Samba に移動するか、シェルプロンプトでコマンド system-config-samba を入力します(XTerm や GNOME 端末など)。
図22.3 Samba サーバー設定ツール
[D]
22.4.1.1. サーバー設定の設定
図22.4 基本的なサーバー設定の設定
[D]
smb.conf
の workgroup および server 文字列 オプションに対応します。
図22.5 セキュリティーサーバー設定の設定
[D]
- Authentication Mode: これは セキュリティー オプションに対応します。以下のタイプの認証のいずれかを選択します。
- ADS - Samba サーバーは、Active Directory Domain (ADS)レルムのドメインメンバーとして機能します。このオプションでは、Kerberos がサーバーにインストールおよび設定され、Samba は、
samba-client
パッケージに含まれる net ユーティリティーを使用して ADS レルムのメンバーになる必要があります。詳細は、net の man ページを参照してください。このオプションでは、Samba を ADS コントローラーとして設定することはできません。Kerberos Realm フィールドに Kerberos サーバーのレルムを指定します。注記Kerberos Realm フィールドは、EXAMPLE.COM などの大文字で指定する必要があります。Samba サーバーを ADS レルムのドメインメンバーとして使用すると、/etc/krb5.conf
ファイルを含む Kerberos が適切に設定されていることを前提としています。 - domain - Samba サーバーは、Windows NT Primary または Backup Domain Controller に依存してユーザーを検証します。サーバーはユーザー名とパスワードをコントローラーに渡し、返すまで待機します。Authentication Server フィールドに、プライマリーまたはバックアップドメインコントローラーの NetBIOS 名を指定します。これを選択する場合は、Encrypted Passwords オプションを Yes に設定する必要があります。
- server - Samba サーバーは、別の Samba サーバーに渡すことで、ユーザー名とパスワードの組み合わせを検証しようとします。そうでない場合、サーバーはユーザー認証モードを使用して検証を試みます。Authentication Server フィールドに他の Samba サーバーの NetBIOS 名を指定します。
- share - Samba ユーザーは、Samba サーバーごとにユーザー名とパスワードの組み合わせを入力する必要はありません。Samba サーバーから特定の共有ディレクトリーに接続しようとするまで、ユーザー名とパスワードの入力は求められません。
- user -(デフォルト)Samba ユーザーは、Samba サーバーごとに有効なユーザー名とパスワードを提供する必要があります。Windows ユーザー名 オプションを使用する場合は、このオプションを選択します。詳細は、「Samba ユーザーの管理」 を参照してください。
- encrypt Passwords - クライアントが Windows 98 のシステムから接続している場合は、Service Pack 3 を使用する Windows NT 4.0、またはその他の最新バージョンの Microsoft Windows を有効にする必要があります。パスワードは、傍受できるプレーンテキストの単語としてではなく、暗号化された形式でサーバーとクライアント間で転送されます。これは、暗号化されたパスワード オプションに対応します。暗号化された Samba パスワードの詳細は、「暗号化されたパスワード」 を参照してください。
- ゲストアカウント - ユーザーまたはゲストユーザーが Samba サーバーにログインする場合は、サーバー上の有効なユーザーにマッピングされる必要があります。ゲストの Samba アカウントとして使用するシステムの既存のユーザー名の中から 1 つ選択します。ゲストが Samba サーバーにログインすると、このユーザーと同じ権限があります。これは、ゲストアカウント オプションに対応します。
22.4.1.2. Samba ユーザーの管理
図22.6 Samba ユーザーの管理
[D]
22.4.1.3. 共有の追加
図22.7 共有の追加
[D]
- directory - Samba 経由で共有するディレクトリー。ディレクトリーは、ここに入力する前に存在している必要があります。
- 共有名 - リモートマシンから表示される共有の実際の名前。デフォルトでは、これは Directory と同じ値ですが、設定できます。
- 説明: ファイル共有の簡単な説明
- writable: ユーザーが共有ディレクトリーの読み取りと書き込みを可能にします。
- visible - 共有ディレクトリーのユーザーに読み取り専用権限を付与します。
22.4.2. コマンドラインからの設定
/etc/samba/smb.conf
を使用します。この設定ファイルを変更しても、コマンド service smb が再起動して Samba デーモンを再起動するまで変更は反映されません。
smb.conf
ファイルの次の行を編集します。
workgroup = WORKGROUPNAME server string = BRIEF COMMENT ABOUT SERVER
[sharename] comment = Insert a comment here path = /home/share/ valid users = tfox carole public = no writable = yes printable = no create mask = 0765
/home/share
を読み書きできます。
22.4.3. 暗号化されたパスワード
22.5. Samba の起動および停止
service smb start
service smb stop
restart
オプションは、Samba を停止してから簡単に起動する方法です。これは、Samba の設定ファイルを編集した後に設定変更を有効にする最も信頼できる方法です。restart オプションは、最初に実行していない場合でもデーモンを起動することに注意してください。
service smb restart
condrestart
(conditional restart)オプションは、現在実行している条件でのみ smb を起動します。このオプションは、デーモンが実行されていない場合はデーモンを起動しないため、スクリプトに便利です。
service smb condrestart
service smb reload
22.6. Samba サーバータイプと smb.conf ファイル
/etc/samba/smb.conf
設定ファイルで行われます。デフォルトの smb.conf
ファイルは適切に文書化されていますが、LDAP、Active Directory、多数のドメインコントローラーの実装などの複雑なトピックについては対応していません。
smb.conf
ファイルに必要なニーズと変更に注意してください。
22.6.1. スタンドアロンサーバー
22.6.1.1. Anonymous Read-Only
[global] workgroup = DOCS netbios name = DOCS_SRV security = share [data] comment = Documentation Samba Server path = /export read only = Yes guest only = Yes
22.6.1.2. Anonymous Read/Write
smb.conf
ファイルの汎用ユーザー(強制的にユーザー)およびグループ(強制的にグループ)によって指定されるユーザーおよびグループの組み合わせが割り当てられます。
[global] workgroup = DOCS netbios name = DOCS_SRV security = share [data] comment = Data path = /export force user = docsbot force group = users read only = No guest ok = Yes
22.6.1.3. Anonymous Print Server
[global] workgroup = DOCS netbios name = DOCS_SRV security = share printcap name = cups disable spools= Yes show add printer wizard = No printing = cups [printers] comment = All Printers path = /var/spool/samba guest ok = Yes printable = Yes use client driver = Yes browseable = Yes
22.6.1.4. セキュアな読み取り/書き込みファイルおよびプリントサーバー
[global] workgroup = DOCS netbios name = DOCS_SRV security = user printcap name = cups disable spools = Yes show add printer wizard = No printing = cups [homes] comment = Home Directories valid users = %S read only = No browseable = No [public] comment = Data path = /export force user = docsbot force group = users guest ok = Yes [printers] comment = All Printers path = /var/spool/samba printer admin = john, ed, @admins create mask = 0600 guest ok = Yes printable = Yes use client driver = Yes browseable = Yes
22.6.2. ドメインメンバーサーバー
22.6.2.1. Active Directory ドメインメンバーサーバー
[global] realm = EXAMPLE.COM security = ADS encrypt passwords = yes # Optional. Use only if Samba cannot determine the Kerberos server automatically. password server = kerberos.example.com
- メンバーサーバー上の
smb.conf
ファイルの設定 - メンバーサーバーの
/etc/krb5.conf
ファイルを含む Kerberos の設定 - Active Directory ドメインサーバーでのマシンアカウントの作成
- メンバーサーバーと Active Directory ドメインの関連付け
kinit administrator@EXAMPLE.COM
net ads join -S windows1.example.com -U administrator%password
smbpasswd
などのローカルパスワードバックエンドは必要ありません。security = ads をサポートしない古いクライアントは、security = domain が設定されたかのように認証されます。この変更は機能に影響を与えず、ドメインにないローカルユーザーを許可します。
22.6.2.2. Windows NT4 ベースのドメインメンバーサーバー
[global] workgroup = DOCS netbios name = DOCS_SRV security = domain [homes] comment = Home Directories valid users = %S read only = No browseable = No [public] comment = Data path = /export force user = docsbot force group = users guest ok = Yes
net rpc join -U administrator%password
-S
オプションは、net rpc join コマンドで記述する必要はないことに注意してください。Samba は、明示的に記載するのではなく、smb.conf
ファイルの workgroup ディレクティブで指定されたホスト名を使用します。
22.6.3. ドメインコントローラー
22.6.3.1. tdbsamを使用したプライマリードメインコントローラー(PDC)
[global]
workgroup = DOCS
netbios name = DOCS_SRV
passdb backend = tdbsam
security = user
add user script = /usr/sbin/useradd -m "%u"
delete user script = /usr/sbin/userdel -r "%u"
add group script = /usr/sbin/groupadd "%g"
delete group script = /usr/sbin/groupdel "%g"
add user to group script = /usr/sbin/usermod -G "%g" "%u"
add machine script = /usr/sbin/useradd -s /bin/false -d /dev/null -g machines "%u"
# The following specifies the default logon script
# Per user logon scripts can be specified in the user
# account using pdbedit logon script = logon.bat
# This sets the default profile path.
# Set per user paths with pdbedit
logon drive = H:
domain logons = Yes
os level = 35
preferred master = Yes
domain master = Yes
[homes]
comment = Home Directories
valid users = %S
read only = No
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon/scripts
browseable = No
read only = No
# For profiles to work, create a user directory under the
# path shown.
mkdir -p /var/lib/samba/profiles/john
[Profiles]
comment = Roaming Profile Share
path = /var/lib/samba/profiles
read only = No
browseable = No
guest ok = Yes
profile acls = Yes
# Other resource shares ... ...
- 上記の例で示すように、
smb.conf
ファイルの設定を使用します。 - root ユーザーを Samba パスワードデータベースに追加します。
smbpasswd -a root Provide the password here.
- smb サービスを起動します。
- すべてのプロファイル、ユーザー、および netlogon ディレクトリーが作成されていることを確認します。
- ユーザーがメンバーになることができるグループを追加します。
groupadd -f users groupadd -f nobody groupadd -f ntadmins
- UNIX グループをそれぞれの Windows グループに関連付けます。
net groupmap add ntgroup="Domain Users" unixgroup=users net groupmap add ntgroup="Domain Guests" unixgroup=nobody net groupmap add ntgroup="Domain Admins" unixgroup=ntadmins
- ユーザーまたはグループにアクセス権限を付与します。たとえば、Samba ドメインコントローラーのドメインにクライアントマシンを追加する権利を Domain Admins グループのメンバーに付与するには、以下のコマンドを実行します。
net rpc rights grant 'DOCS\Domain Admins' SetMachineAccountPrivilege -S PDC -U root
22.6.3.2. Active Directory を使用したプライマリードメインコントローラー(PDC)
22.7. Samba のセキュリティーモード
22.7.1. ユーザーレベルのセキュリティー
[GLOBAL] ... security = user ...
22.7.1.1. ドメインセキュリティーモード(ユーザーレベルのセキュリティー)
[GLOBAL] ... security = domain workgroup = MARKETING ...
22.7.1.2. Active Directory セキュリティーモード(ユーザーレベルのセキュリティー)
[GLOBAL] ... security = ADS realm = EXAMPLE.COM password server = kerberos.example.com ...
22.7.1.3. サーバーセキュリティーモード(ユーザーレベルのセキュリティー)
smb.conf
では、次のディレクティブにより、Samba がサーバーセキュリティーモードで動作できるようになります。
[GLOBAL] ... encrypt passwords = Yes security = server password server = "NetBIOS_of_Domain_Controller" ...
22.7.2. 共有レベルのセキュリティー
smb.conf
では、共有レベルのセキュリティーを設定する security = share ディレクティブは次のとおりです。
[GLOBAL] ... security = share ...
22.8. Samba アカウント情報データベース
- プレインテキスト
- プレーンテキストのバックエンドは、/etc/passwd タイプのバックエンドではありません。プレーンテキストのバックエンドでは、クライアントとサーバー間ですべてのユーザー名とパスワードが暗号化されずに送信されます。この方法は安全性が非常に低く、いずれの方法でも使用することは推奨されません。プレーンテキストのパスワードを使用して Samba サーバーに接続する異なる Windows クライアントは、このような認証方法をサポートできません。
- smbpasswd
- 以前の Samba パッケージで使用される一般的なバックエンドでは、smbpasswd バックエンドは MS Windows LanMan アカウントと NT アカウントを含むプレーンテキストの ASCII テキストレイアウトを使用し、暗号化されたパスワード情報を使用します。smbpasswd バックエンドには、Windows NT/2000/2003 SAM 拡張制御のストレージがありません。smbpasswd バックエンドは、NT ベースのグループの RID などの Windows 情報を適切に拡張したり、Windows 情報を保持することができないため推奨されません。tdbsam バックエンドは、小規模なデータベース(250 ユーザー)で使用するためにこれらの問題を解決しますが、まだエンタープライズクラスソリューションではありません。
- ldapsam_compat
- ldapsam_compat バックエンドを使用すると、アップグレードされたバージョンの Samba で使用する OpenLDAP サポートを継続できます。このオプションは通常、Samba 3.0 に移行する際に使用されます。
- tdbsam
- tdbsam バックエンドは、ローカルサーバー、ビルトインデータベースレプリケーションを必要としないサーバー、および LDAP のスケーラビリティーや複雑さを必要としないサーバーに最適なデータベースバックエンドを提供します。tdbsam バックエンドには、smbpasswd データベース情報と、以前に除外された SAM 情報が含まれます。拡張 SAM データを含めることで、Samba は Windows NT/2000/2003 ベースのシステムと同じアカウントおよびシステムアクセス制御を実装できます。250 ユーザーには、最大で tdbsam バックエンドが推奨されます。大規模な組織では、スケーラビリティーとネットワークインフラストラクチャーに関する懸念があるため、Active Directory または LDAP の統合が必要です。
- ldapsam
- ldapsam バックエンドは、Samba に最適な分散アカウントインストール方法を提供します。LDAP は、OpenLDAP slurpd デーモンを使用して、データベースを任意の数のサーバーに複製できることが最適です。LDAP データベースは軽量でスケーラブルなため、大規模な企業により推奨されます。以前のバージョンの Samba から 3.0 にアップグレードする場合は、
/usr/share/doc/samba- <version> /LDAP/samba.schema
が変更されたことに注意してください。このファイルには、属性構文の定義 と、ldapsam バックエンドが適切に機能するために必要な objectclass 定義 が含まれます。そのため、Samba サーバーに ldapsam バックエンドを使用している場合は、このスキーマファイルを含めるように slapd を設定する必要があります。これを行う方法については、「/etc/openldap/schema/
ディレクトリー」 を参照してください。注記ldapsam バックエンドを使用する場合は、openldap-server
パッケージがインストールされている必要があります。 - mysqlsam
- mysqlsam バックエンドは MySQL ベースのデータベースバックエンドを使用します。これは、MySQL をすでに実装しているサイトに便利です。現時点では、mysqlsam は Samba とは別のモジュールにパックされるため、Samba では正式にサポートされていません。
22.9. Samba ネットワークブラウザー
/etc/hosts
)や DNS などの他の方法を使用する必要があります。
22.9.1. ドメインのブラウジング
smb.conf
を設定することは、ワークグループ設定と同じです。
22.9.2. WINS (Windows Internetworking Name Server)
smb.conf
ファイルの例です。
[global] wins support = Yes
22.10. CUPS 印刷サポートのある Samba
22.10.1. 単純な smb.conf
設定
smb.conf
設定を示しています。
[global] load printers = Yes printing = cups printcap name = cups [printers] comment = All Printers path = /var/spool/samba/print printer = IBMInfoP browseable = No public = Yes guest ok = Yes writable = No printable = Yes printer admin = @ntadmins [print$] comment = Printer Drivers Share path = /var/lib/samba/drivers write list = ed, john printer admin = ed, john
22.11. Samba ディストリビューションプログラム
~]# findsmb
IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION
------------------------------------------------------------------
10.1.59.25 VERVE [MYGROUP] [Unix] [Samba 3.0.0-15]
10.1.59.26 STATION22 [MYGROUP] [Unix] [Samba 3.0.2-7.FC1]
10.1.56.45 TREK +[WORKGROUP] [Windows 5.0] [Windows 2000 LAN Manager]
10.1.57.94 PIXEL [MYGROUP] [Unix] [Samba 3.0.0-15]
10.1.57.137 MOBILE001 [WORKGROUP] [Windows 5.0] [Windows 2000 LAN Manager]
10.1.57.141 JAWS +[KWIKIMART] [Unix] [Samba 2.2.7a-security-rollup-fix]
10.1.56.159 FRED +[MYGROUP] [Unix] [Samba 3.0.0-14.3E]
10.1.59.192 LEGION *[MYGROUP] [Unix] [Samba 2.2.7-security-rollup-fix]
10.1.56.205 NANCYN +[MYGROUP] [Unix] [Samba 2.2.7a-security-rollup-fix]
~]# net -l share -S wakko
Password:
Enumerating shared resources (exports) on remote server:
Share name Type Description
---------- ---- -----------
data Disk Wakko data share
tmp Disk Wakko tmp share
IPC$ IPC IPC Service (Samba Server)
ADMIN$ IPC IPC Service (Samba Server)
~]# net -l user -S wakko
root password:
User name Comment
-----------------------------
andriusb Documentation
joe Marketing
lisa Sales
~]# nmblookup trek
querying trek on 10.1.59.255
10.1.56.45 trek<00>
smbpasswd
、LDAP、NIS+、tdb
データベースライブラリーなど、すべてのバックエンドがサポートされます。
~]# pdbedit -a kristin new password: retype new password: Unix username: kristin NT username: Account Flags: [U ] User SID: S-1-5-21-1210235352-3804200048-1474496110-2012 Primary Group SID: S-1-5-21-1210235352-3804200048-1474496110-2077 Full Name: Home Directory: \\wakko\kristin HomeDir Drive: Logon Script: Profile Path: \\wakko\kristin\profile Domain: WAKKO Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: Mon, 18 Jan 2038 22:14:07 GMT Kickoff time: Mon, 18 Jan 2038 22:14:07 GMT Password last set: Thu, 29 Jan 2004 08:29:28 GMT Password can change: Thu, 29 Jan 2004 08:29:28 GMT Password must change: Mon, 18 Jan 2038 22:14:07 GMT ~]# pdbedit -v -L kristin Unix username: kristin NT username: Account Flags: [U ] User SID: S-1-5-21-1210235352-3804200048-1474496110-2012 Primary Group SID: S-1-5-21-1210235352-3804200048-1474496110-2077 Full Name: Home Directory: \\wakko\kristin HomeDir Drive: Logon Script: Profile Path: \\wakko\kristin\profile Domain: WAKKO Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: Mon, 18 Jan 2038 22:14:07 GMT Kickoff time: Mon, 18 Jan 2038 22:14:07 GMT Password last set: Thu, 29 Jan 2004 08:29:28 GMT Password can change: Thu, 29 Jan 2004 08:29:28 GMT Password must change: Mon, 18 Jan 2038 22:14:07 GMT ~]# pdbedit -L andriusb:505: joe:503: lisa:504: kristin:506: ~]# pdbedit -x joe ~]# pdbedit -L andriusb:505: lisa:504: kristin:506:
smb.conf
ファイルの構文をチェックします。smb.conf
ファイルがデフォルトの場所(/etc/samba/smb.conf
)にある場合は、場所を指定する必要はありません。testparm プログラムにホスト名および IP アドレスを指定すると、hosts.allow
および host.deny
ファイルが正しく設定されていることを確認します。testparm プログラムは、テスト後に smb.conf
ファイルとサーバーのロール(スタンバイ、ドメインなど)の概要も表示します。これは、コメントを除外し、経験のある管理者が読み取るための情報を簡潔に表示するため、デバッグに役立ちます。
~]# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[tmp]"
Processing section "[html]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
<enter>
# Global parameters
[global]
workgroup = MYGROUP
server string = Samba Server
security = SHARE
log file = /var/log/samba/%m.log
max log size = 50
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns proxy = No
[homes]
comment = Home Directories
read only = No
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
browseable = No
[tmp]
comment = Wakko tmp
path = /tmp
guest only = Yes
[html]
comment = Wakko www
path = /var/www/html
force user = andriusb
force group = users
read only = No
guest only = Yes
22.12. 関連情報
22.12.1. インストールされているドキュメント
/usr/share/doc/samba-<version-number&
gt;/ - Samba ディストリビューションに含まれるすべての追加ファイル。これには、すべてのヘルパースクリプト、サンプル設定ファイル、およびドキュメントが含まれます。また、このディレクトリーに 『は、公式 Samba-3 HOWTO-Collection および 『Samba-』 3 by Example』 (どちらも以下で引用)のオンラインバージョンも含まれます。
22.12.2. 関連書籍
- John H. Terpstra および Jelmer R. Vernooij; Prentice Hall 『- The official Samba-3 HOWTO-Collection』 by John H. Terpstra and Jelmer R. Vernooij; Prentice Hall - The official Samba-3 HOWTO-Collection by John H. Terpstra and Jelmer R. Vernooij; Prentice Hall - The official Samba-3 documentation as issued by the Samba development teamこれは、ステップ別のガイドよりも多くのリファレンスガイドです。
- 『Samba-3 by John H. Terpstra; Prentice Hall - これは、OpenLDAP、DNS、DHCP、および印刷設定ファイルの詳細な例』 を説明する Samba 開発チームが発行する別の公式リリースです。これには、実際の実装に役立つステップごとの関連情報があります。
- 『Samba の 2nd Edition by Jay T's、Robert Eckstein、David Collier-Brown、O'Reilly - 包括的な参考資料を含む上級ユーザー向けの優れた』 リソースです。
22.12.3. 便利な Web サイト
- http://www.samba.org/ - Samba ディストリビューションのホームページと、Samba 開発チームが作成したすべての公式ドキュメントです。HTML 形式や PDF 形式では多くのリソースが利用できますが、購入のみが可能です。これらのリンクの多くは Red Hat Enterprise Linux 固有のものではありませんが、一部の概念が適用される場合があります。
- http://samba.org/samba/archives.html - Samba コミュニティーのアクティブな電子メール一覧。リストアクティビティーのレベルが高いため、ダイジェストモードを有効にすることが推奨されます。
- Samba newsgroups - NNTP プロトコルを使用する gmane.org などの Samba スレッドの newsgroups も利用可能です。これは、メーリングリストのメールを受信する代替手段です。
第23章 Dynamic Host Configuration Protocol (DHCP)
23.1. DHCP を使用する理由
23.2. DHCP サーバーの設定
dhcp
パッケージには、ISC DHCP サーバーが含まれています。まず、スーパーユーザーとして パッケージをインストールします。
~]# yum install dhcp
dhcp
パッケージをインストールすると、/etc/dhcpd.conf
ファイルが作成されます。これは単に空の設定ファイルになります。
~]# cat /etc/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
/usr/share/doc/dhcp-<version>/dhcpd.conf.sample
にあります。このファイルは、/etc/dhcpd.conf
の設定に役立ちます。これについては、以下で説明します。
/var/lib/dhcpd/dhcpd.leases
ファイルを使用してクライアントのリースデータベースを保存します。詳細は、「リースデータベース」 を参照してください。
23.2.1. 設定ファイル
ddns-update-style ad-hoc;
ddns-update-style interim;
dhcpd.conf
の man ページを参照してください。
- パラメーター: タスクの実行方法、タスクを実行するかどうか、クライアントに送信するネットワーク設定のオプションを規定します。
- 宣言 - ネットワークトポロジーの記述、クライアントの記述、クライアントのアドレス指定、宣言グループへのパラメーターグループの適用を行います。
ルーター
、subnet-mask
、domain-name、domain-name
-servers
、および time-offset
オプションは、その下に宣言された host
ステートメントに使用されます。
サブネット
を宣言することもできます。サブネット
宣言は、ネットワーク内のすべてのサブネットに含める必要があります。そうでない場合、DHCP サーバーは起動に失敗します。
範囲
が宣言されています。クライアントには、の 範囲
内の IP アドレスが割り当てられます。
例23.1 サブネットの宣言
subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.254; option subnet-mask 255.255.255.0; option domain-name "example.com"; option domain-name-servers 192.168.1.1; option time-offset -18000; # Eastern Standard Time range 192.168.1.10 192.168.1.100; }
shared-network
宣言内で宣言する必要があります。shared-network
内のパラメーター(ただし囲まれた subnet
宣言の外)は、グローバルパラメーターとみなされます。shared-network
の名前は、'test-lab' というタイトルを使用してテストラボ環境のすべてのサブネットを説明するなど、ネットワークの説明的なタイトルである必要があります。
例23.2 Shared-network 宣言
shared-network name { option domain-name "test.redhat.com"; option domain-name-servers ns1.redhat.com, ns2.redhat.com; option routers 192.168.0.254; more parameters for EXAMPLE shared-network subnet 192.168.1.0 netmask 255.255.252.0 { parameters for subnet range 192.168.1.1 192.168.1.254; } subnet 192.168.2.0 netmask 255.255.252.0 { parameters for subnet range 192.168.2.1 192.168.2.254; } }
group
宣言は、宣言のグループにグローバルパラメーターを適用するために使用されます。たとえば、共有ネットワーク、サブネット、ホストをグループ化することができます。
例23.3 Group 宣言
group { option routers 192.168.1.254; option subnet-mask 255.255.255.0; option domain-name "example.com"; option domain-name-servers 192.168.1.1; option time-offset -18000; # Eastern Standard Time host apex { option host-name "apex.example.com"; hardware ethernet 00:A0:78:8E:9E:AA; fixed-address 192.168.1.4; } host raleigh { option host-name "raleigh.example.com"; hardware ethernet 00:A1:DD:74:C3:F2; fixed-address 192.168.1.6; } }
範囲
の IP アドレスをクライアントシステムに割り当てます。
例23.4 Range パラメーター
default-lease-time 600; max-lease-time 7200; option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; option routers 192.168.1.254; option domain-name-servers 192.168.1.1, 192.168.1.2; option domain-name "example.com"; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.10 192.168.1.100; }
host
宣言内の hardware ethernet
パラメーターを使用します。例23.5「DHCP を使用した静的 IP アドレス」 で示すように、host apex
宣言は、MAC アドレス 00:A0:78:8E:9E:AA を持つネットワークインターフェイスカードを常に IP アドレス 192.168.1.4 を受け取るように指定します。
host-name
を使用して、クライアントにホスト名を割り当てることもできます。
例23.5 DHCP を使用した静的 IP アドレス
host apex { option host-name "apex.example.com"; hardware ethernet 00:A0:78:8E:9E:AA; fixed-address 192.168.1.4; }
cp /usr/share/doc/dhcp-<version-number>/dhcpd.conf.sample /etc/dhcpd.conf
< version-number> は DHCP バージョン番号に置き換えてください。
dhcp-options
の man ページを参照してください。
23.2.2. リースデータベース
/var/lib/dhcpd/dhcpd.leases
ファイルが DHCP クライアントのリースデータベースを保存します。このファイルは変更しないでください。最近割り当てられた各 IP アドレスの DHCP リース情報は、リースデータベースに自動的に保存されます。この情報には、リースの長さ、IP アドレスが割り当てられている場所、リースの開始日と終了日、リースの取得に使用されたネットワークインターフェイスカードの MAC アドレスが含まれます。
dhcpd.leases
ファイルの名前は dhcpd.leases~
に変更され、一時的なリースデータベースが dhcpd.leases
に書き込まれます。
dhcpd.leases
ファイルは存在しませんが、サービスを起動する必要があります。この際、新規のリースファイルを作成しないでください。作成すると、それまでのリースはすべて失われ、多くの問題が発生します。これを解決する方法は、dhcpd.leases~
バックアップファイルの名前を dhcpd.leases
に変更して、デーモンを起動することです。
23.2.3. サーバーの起動と停止
dhcpd.leases
ファイルが存在しないと失敗します。ファイルが存在しない場合には、touch /var/lib/dhcpd/dhcpd.leases コマンドを使用して作成します。
dhcpd.leases
ファイルをチェックするため、この手順は必要ありません。
/etc/sysconfig/dhcpd
で、DHCPDARGS 一覧にインターフェイスの名前を追加します。
# Command line options here DHCPDARGS=eth0
/etc/sysconfig/dhcpd
で指定できるその他のコマンドラインオプションには以下が含まれます。
- -p & lt;portnum& gt; - dhcpd がリッスンする UDP ポート番号を指定します。デフォルト値はポート 67 です。DHCP サーバーは、指定された UDP ポートよりも大きなポート番号で DHCP クライアントに応答を送信します。たとえば、デフォルトのポート 67 を使用する場合、サーバーはポート 67 でポート 67 でリッスンし、要求とポート 68 のクライアントへの応答をリッスンします。ポートが指定され、DHCP リレーエージェントが使用される場合は、DHCP リレーエージェントがリッスンするのと同じポートを指定する必要があります。詳細は、「DHCP リレーエージェント」 を参照してください。
- -f: フォアグラウンドプロセスとしてデーモンを実行します。これは主にデバッグ用に使用されます。
- -d: 標準エラー記述子に DHCP サーバーデーモンをログに記録します。これは主にデバッグ用に使用されます。このオプションを指定しないと、ログは
/var/log/messages
に書き込まれます。 - -cf & lt;filename& gt; - 設定ファイルの場所を指定します。デフォルトの場所は
/etc/dhcpd.conf
です。 - -lf & lt;filename& gt; - リースデータベースファイルの場所を指定します。リースデータベースファイルがすでに存在する場合は、DHCP サーバーが起動するたびに同じファイルが使用されることが非常に重要です。このオプションは、実稼働環境以外のマシンでデバッグする目的にのみ使用することが強く推奨されます。デフォルトの場所は
/var/lib/dhcpd/dhcpd.leases
です。 - -q - デーモンの起動時に著作権に関するメッセージ全体を表示しません。
23.2.4. DHCP リレーエージェント
INTERFACES
ディレクティブで /etc/sysconfig/dhcrelay
に指定されていない限り、すべてのインターフェイスの DHCP 要求をリッスンします。
23.3. DHCP クライアントの設定
/etc/sysconfig/network
ファイルを変更して、/etc/sysconfig/network-scripts
ディレクトリー内の各ネットワークデバイスのネットワークおよび設定ファイルを有効にします。このディレクトリーでは、各デバイスに ifcfg-eth0
という名前の設定ファイルがなければなりません。eth0
はネットワークデバイス名です。
/etc/sysconfig/network
ファイルには次の行が含まれている必要があります。
NETWORKING=yes
NETWORKING
変数を yes
に設定する必要があります。
/etc/sysconfig/network-scripts/ifcfg-eth0
ファイルには、次の行が含まれている必要があります。
DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes
- DHCP_HOSTNAME: DHCP サーバーが IP アドレスを受け取る前にホスト名を指定する必要がある場合にのみこのオプションを使用します。(Red Hat Enterprise Linux の DHCP サーバーデーモンは、この機能をサポートしません。)
- PEERDNS= <answer> です。< ;answer> ; は以下のいずれかになります。
- はい -
/etc/resolv.conf
をサーバーの情報で変更します。DHCP を使用している場合は、yes がデフォルトになります。 - No -
/etc/resolv.conf
は変更しないでください。
- SRCADDR= <address> 。ここで、<address > は送信パケットの指定されたソース IP アドレスです。
- USERCTL= <answer >。ここで、& lt;answer& gt; は以下のいずれかになります。
- はい - root 以外のユーザーはこのデバイスを制御できます。
- no: root 以外のユーザーはこのデバイスを制御することができません。
23.4. マルチホーム DHCP サーバーの設定
/etc/sysconfig/dhcpd
ファイルおよび /etc/dhcpd.conf
ファイルのバックアップを作成してください。
/etc/sysconfig/dhcpd
ファイルを使用して、DHCP デーモンがリッスンするネットワークインターフェイスを指定します。以下の /etc/sysconfig/dhcpd
の例では、DHCP デーモンが eth0
インターフェイスおよび eth1
インターフェイスでリッスンするように指定します。
DHCPDARGS="eth0 eth1";
eth0
、eth1
、および eth2
)があり、DHCP デーモンが eth0
でリッスンすることが望ましい場合は、/etc/sysconfig/dhcpd
で eth0
のみを指定します。
DHCPDARGS="eth0";
eth1
が 172.16.0.0
/24 ネットワークにあるサーバー用の基本的な /etc/dhcpd.conf
ファイルです。複数の subnet
宣言を使用すると、複数のネットワークに異なる設定を定義できます。
ddns-update-style interim; default-lease-time 600; max-lease-time 7200; subnet 10.0.0.0 netmask 255.255.255.0 { option subnet-mask 255.255.255.0; option routers 10.0.0.1; range 10.0.0.5 10.0.0.15; } subnet 172.16.0.0 netmask 255.255.255.0 { option subnet-mask 255.255.255.0; option routers 172.16.0.1; range 172.16.0.5 172.16.0.15; }
-
サブネット 10.0.0.0 ネットマスク 255.255.255.0
- DHCP サーバーが提供しているすべてのネットワークには、
subnet
宣言が必要です。複数のサブネットには、複数のサブネット
宣言が必要です。DHCP サーバーにサブネット
宣言の範囲にネットワークインターフェイスがない場合、DHCP サーバーはそのネットワークを提供しません。サブネット宣言が 1 つしかなく、そのサブネット
の範囲内にネットワークインターフェイスがない場合、DHCP デーモンは起動に失敗し、以下のようなエラーが/var/log/messages
に記録されます。dhcpd: No subnet declaration for eth0 (0.0.0.0). dhcpd: ** Ignoring requests on eth0. If this is not what dhcpd: you want, please write a subnet declaration dhcpd: in your dhcpd.conf file for the network segment dhcpd: to which interface eth1 is attached. ** dhcpd: dhcpd: dhcpd: Not configured to listen on any interfaces!
-
オプション subnet-mask 255.255.255.0
subnet-mask オプション
は、サブネットマスクを定義し、subnet
宣言のnetmask
値を上書きします。簡単なケースでは、サブネットとネットマスクの値は同じです。-
オプションルーター 10.0.0.1
option routers
オプションは、サブネットのデフォルトゲートウェイを定義します。これは、システムが異なるサブネット上の内部ネットワーク、さらには外部ネットワークに届くために必要です。-
range 10.0.0.5 10.0.0.15;
range
オプションは、利用可能な IP アドレスのプールを指定します。指定した IP アドレスの範囲からアドレスが割り当てられます。
dhcpd.conf (5)
man ページを参照してください。
/etc/dhcpd.conf
で指定された唯一のサブネットでは、DHCP デーモンが起動に失敗します。
23.4.1. ホストの設定
/etc/sysconfig/dhcpd
ファイルおよび /etc/dhcpd.conf
ファイルのバックアップを作成してください。
複数ネットワーク用の単一システムの設定
以下の /etc/dhcpd.conf
の例では、2 つのサブネットを作成し、接続するネットワークに応じて同じシステムに IP アドレスを設定します。
ddns-update-style interim; default-lease-time 600; max-lease-time 7200; subnet 10.0.0.0 netmask 255.255.255.0 { option subnet-mask 255.255.255.0; option routers 10.0.0.1; range 10.0.0.5 10.0.0.15; } subnet 172.16.0.0 netmask 255.255.255.0 { option subnet-mask 255.255.255.0; option routers 172.16.0.1; range 172.16.0.5 172.16.0.15; } host example0 { hardware ethernet 00:1A:6B:6A:2E:0B; fixed-address 10.0.0.20; } host example1 { hardware ethernet 00:1A:6B:6A:2E:0B; fixed-address 172.16.0.20; }
-
host example0
host
宣言は、IP アドレスなどの単一システムの特定のパラメーターを定義します。複数のホストに特定のパラメーターを設定するには、複数のhost
宣言を使用します。ほとんどの DHCP クライアントはhost
宣言の名前を無視するため、他のhost
宣言に固有の名前であれば、この名前はどのようなものでも構いません。複数のネットワークに同じシステムを設定するには、host
宣言ごとに異なる名前を使用します。そうしないと、DHCP デーモンが起動に失敗します。システムは、host
宣言の名前ではなく、ハードウェアイーサネット
オプションで識別されます。-
hardware ethernet psycA:6B:6A:2E:0B;
hardware ethernet
オプションは、システムを識別します。このアドレスを見つけるには、必要なシステムで ifconfig コマンドを実行し、HWaddr
アドレスを見つけます。-
fixed-address 10.0.0.20;
fixed-address
オプションは、ハードウェアイーサネット
オプションで指定されたシステムに、有効な IP アドレスを割り当てます。このアドレスは、range
オプションで指定された IP アドレスプール外である必要があります。
option
ステートメントがセミコロンで終了しない場合、DHCP デーモンは起動に失敗し、以下のようなエラーが /var/log/messages
に記録されます。
/etc/dhcpd.conf line 20: semicolon expected. dhcpd: } dhcpd: ^ dhcpd: /etc/dhcpd.conf line 38: unexpected end of file dhcpd: dhcpd: ^ dhcpd: Configuration file errors encountered -- exiting
複数のネットワークインターフェイスを持つシステムの設定
以下の host
宣言は、複数のネットワークインターフェイスを持つ単一のシステムを設定し、各インターフェイスが同じ IP アドレスを受け取るようにします。両方のネットワークインターフェイスが同じネットワークに同時に接続されている場合には、この設定は機能しません。
host interface0 { hardware ethernet 00:1a:6b:6a:2e:0b; fixed-address 10.0.0.18; } host interface1 { hardware ethernet 00:1A:6B:6A:27:3A; fixed-address 10.0.0.18; }
interface0
が最初のネットワークインターフェイスで、interface1
は 2 番目のインターフェイスです。異なる ハードウェアイーサネット
オプションは、各インターフェイスを識別します。
ホスト
宣言をさらに追加します。
- ホストが接続し
ているネットワークに有効な Fix-address
を割り当てます。 host
宣言の名前を一意にします。
host
宣言で指定された名前が一意ではない場合、DHCP デーモンは起動に失敗し、以下のようなエラーが /var/log/messages
に記録されます。
dhcpd: /etc/dhcpd.conf line 31: host interface0: already exists dhcpd: } dhcpd: ^ dhcpd: Configuration file errors encountered -- exiting
/etc/dhcpd.conf
に複数の host interface0
宣言が定義されているために生じました。
23.5. 関連情報
23.5.1. インストールされているドキュメント
- dhcpd の man ページ:DHCP デーモンがどのように機能するかを説明しています。
dhcpd.conf
の man ページ:DHCP 設定ファイルの設定方法を説明し、例をいくつか紹介します。dhcpd.leases
の man ページ:DHCP リースファイルの設定方法を説明し、いくつかの例が含まれています。dhcp-options
の man ページ:dhcpd.conf
で DHCP オプションを宣言するための構文の説明と例が含まれています。dhcrelay
の man ページ:DHCP リレーエージェントおよびその設定オプションについて説明しています。/usr/share/doc/dhcp-<バージョン&
gt;/: 現行バージョンの DHCP サービスのサンプルファイル、README ファイル、およびリリースノートが含まれます。
第24章 MySQL 5.0 から MySQL 5.5 への移行
24.1. MySQL 5.0 から MySQL 5.5 へのアップグレード
my.cnf
設定ファイルでポートとソケット番号を変更する必要があります。
- mysqldump ユーティリティーおよび mysql ユーティリティーを使用すると、ダンプおよび復元のアップグレードにより、1 つのデータベースからすべてのデータベースの完全に新しいダンプが生成されます。次に、MySQL コマンドラインインターフェイスは、他のデータベース内で入力としてダンプファイルで実行されます(実際には、mysqlimport ユーティリティーまたは LOAD DATA INFILE SQL コマンドを使用します)。ダンプと復元の両方で、適切なデーモンを実行する必要があります。mysqldump コマンドの実行時に
--all-databases
オプションを使用して、生成されるダンプにすべてのデータベースを追加します。必要に応じて、--routines
、--triggers
、および--events
(MySQL 5.1 以降にのみ有効)オプションを使用できます。例24.1「ダンプおよびリストアのアップグレード」 は、dump メソッドおよび restore メソッドを使用してアップグレードするために使用される特定のコマンドを示しています。 - インプレースアップグレード:データファイルをあるデータベースディレクトリーから別のデータベースディレクトリーにコピーし、両方の MySQL デーモンが停止します。コピーされたファイルに適切な権限と SELinux コンテキストを設定する必要があります。インプレースアップグレードは通常、大規模なデータベースでは高速で簡単ですが、リスクと既知の問題があります。詳細は、本章の最初にリンクされている MySQL 5.1 および MySQL 5.5 のリリースノートを参照してください。例24.2「インプレースアップグレード」 は、インプレースアップグレードの実行に使用される特定のコマンドを示しています。
scl enable
環境内で実行する必要があります。
You can't use locks with log tables.
my.cnf
設定ファイルの適切な設定を変更することを検討してください。
例24.1 ダンプおよびリストアのアップグレード
~]# service mysqld start Starting mysqld: [ OK ] ~]# mysqldump --all-databases --routines > dump.sql ~]# service mysqld stop Stopping mysqld: [ OK ] ~]# service mysql51-mysqld start Starting mysql51-mysqld: [ OK ] ~]# scl enable mysql51 'mysql' < dump.sql ~]# scl enable mysql51 'mysql_upgrade' Looking for 'mysql' as: mysql Looking for 'mysqlcheck' as: mysqlcheck Running 'mysqlcheck with default connection arguments Running 'mysqlcheck with default connection arguments a.t1 OK mysql.columns_priv OK ⋮ mysql.user OK Running 'mysql_fix_privilege_tables'... OK ~]# scl enable mysql51 'mysqldump --all-databases --routines --events' > dump2.sql ~]# service mysql51-mysqld stop Stopping mysqld: [ OK ] ~]# service mysql55-mysqld start Starting mysql55-mysqld: [ OK ] ~]# scl enable mysql55 'mysql' < dump2.sql ~]# scl enable mysql55 'mysql_upgrade' Looking for 'mysql' as: mysql Looking for 'mysqlcheck' as: mysqlcheck Running 'mysqlcheck with default connection arguments Running 'mysqlcheck with default connection arguments a.t1 OK mysql.columns_priv OK ⋮ mysql.user OK Running 'mysql_fix_privilege_tables'... OK
例24.2 インプレースアップグレード
~]# service mysqld stop Stopping mysqld: [ OK ] ~]# service mysql51-mysqld stop Stopping mysql51-mysqld: [ OK ] ~]# rm -rf /opt/rh/mysql51/root/var/lib/mysql/ ~]# cp -r /var/lib/mysql/ /opt/rh/mysql51/root/var/lib/mysql/ ~]# chown -R mysql:mysql /opt/rh/mysql51/root/var/lib/mysql/ ~]# restorecon -R /opt/rh/mysql51/root/var/lib/mysql/ ~]# service mysql51-mysqld start Starting mysql51-mysqld: [ OK ] ~]# scl enable mysql51 'mysql_upgrade' Looking for 'mysql' as: mysql Looking for 'mysqlcheck' as: mysqlcheck Running 'mysqlcheck with default connection arguments Running 'mysqlcheck with default connection arguments a.t1 OK mysql.columns_priv OK ⋮ mysql.user OK Running 'mysql_fix_privilege_tables'... OK ~]# service mysql51-mysqld stop Stopping mysql51-mysqld: [ OK ] ~]# service mysql55-mysqld stop Stopping mysql55-mysqld: [ OK ] ~]# rm -rf /opt/rh/mysql55/root/var/lib/mysql/ ~]# cp -r /opt/rh/mysql51/root/var/lib/mysql/ /opt/rh/mysql55/root/var/lib/mysql/ ~]# chown -R mysql:mysql /opt/rh/mysql55/root/var/lib/mysql/ ~]# restorecon -R /opt/rh/mysql55/root/var/lib/mysql/ ~]# service mysql55-mysqld start Starting mysql55-mysqld: [ OK ] ~]# scl enable mysql55 'mysql_upgrade' Looking for 'mysql' as: mysql Looking for 'mysqlcheck' as: mysqlcheck Running 'mysqlcheck with default connection arguments Running 'mysqlcheck with default connection arguments a.t1 OK mysql.columns_priv OK ⋮ mysql.user OK Running 'mysql_fix_privilege_tables'... OK
第25章 Apache HTTP サーバー
/etc/httpd/conf/httpd.conf
)を、カスタム設定を必要とするか、以前の Apache HTTP Server 1.3 形式から設定ファイルを変換する必要があるものを支援します。
25.1. Apache HTTP Server 2.2
25.1.1. Apache HTTP Server 2.2 の機能
- キャッシュモジュール(mod_cache、mod_disk_cache、mod_mem_cache)が改善されました。
- 以前のバージョンで提供された認証モジュールを置き換える、認証および承認サポートの新しい構造。
- プロキシー負荷分散のサポート(mod_proxy_balancer)
- 32 ビットプラットフォームでの大規模なファイル(つまり 2GB 以上)を処理するサポート
- mod_cern_meta モジュールおよび mod_asis モジュールはデフォルトで読み込まれなくなりました。
- mod_ext_filter モジュールはデフォルトで読み込まれるようになりました。
25.2. Apache HTTP サーバー設定ファイルの移行
25.2.1. Apache HTTP Server 2.0 設定ファイルの移行
- バージョン 2.0 の設定ファイルと起動スクリプトには、特に変更された可能性のあるモジュール名でマイナーな調整が必要になります。バージョン 2.0 で動作していたサードパーティーモジュールはバージョン 2.2 でも機能しますが、読み込む前に再コンパイルする必要があります。記述する必要がある主なモジュールは、認証および承認モジュールです。名前が変更された各モジュールに対して、LoadModule 行を更新する必要があります。
- mod_userdir モジュールは、ディレクトリー名を示す UserDir ディレクティブを指定すると、要求にのみ動作します。バージョン 2.0 で使用される手順を維持する場合は、設定ファイルに UserDir public_html ディレクティブを追加します。
- SSL を有効にするには、必要な mod_ssl ディレクティブを追加して
httpd.conf
ファイルを編集します。バージョン 2.2 では apachectl start ssl が利用できないため、apachectl start を使用します。httpd の SSL 設定の例はconf/extra/httpd-ssl.conf
にあります。 - 設定をテストするには、設定エラーを検出する service httpd configtest を使用することが推奨されます。
SSL
を無効にし、TLSv1. 1 または TLSv1
.2 のみを使用することを推奨し
ます。後方互換性は、TLSv1.0
を使用して実現できます。Red Hat がサポートする多くの製品は SSLv2
プロトコルまたは SSLv3
プロトコルを使用するか、デフォルトでそれらのプロトコルを有効にできます。ただし、SSLv2
または SSLv3
を使用することが強く推奨されます。
25.2.2. Apache HTTP Server 1.3 設定ファイルの 2.0 への移行
/etc/httpd/conf/httpd.conf.rpmnew
としてインストールされ、元のバージョン 1.3 httpd.conf
は変更されない点に注意してください。新しい設定ファイルを使用するか、古い設定をベースとして移行するか、既存のファイルをベースとして使用したり、適切に変更したりしても、ファイルの一部が他の部分よりも変更され、通常は混合アプローチが最適です。バージョン 1.3 と 2.0 の両方のストック設定ファイルは、3 つのセクションに分かれています。
/etc/httpd/conf/httpd.conf
ファイルが、新しくインストールされたデフォルトのバージョンであり、元の設定ファイルのコピーを保存すると、以下の例のように diff コマンドを呼び出すのが最も簡単な方法です(root でログイン)。
diff -u httpd.conf.orig httpd.conf | less
rpm2cpio apache-<version-number>.i386.rpm | cpio -i --make
apache
パッケージのバージョン番号に置き換えてください。
apachectl configtest
25.2.2.1. グローバル環境設定
25.2.2.1.1. インターフェイスおよびポートバインディング
Port 123 ServerName www.example.com
Listen
123 ServerName www.example.com:123
25.2.2.1.2. Server-Pool Size Regulation
- StartServers
- MinSpareServers
- MaxSpareServers
- MaxClients
- MaxRequestsPerChild
/etc/sysconfig/httpd
ファイルを作成し、以下のディレクティブを追加します。
HTTPD=/usr/sbin/httpd.worker
25.2.2.1.3. Dynamic Shared Object (DSO)のサポート
- AddModule ディレクティブおよび ClearModuleList ディレクティブは存在しなくなりました。これらのディレクティブは、を使用してモジュールが正しい順序で有効にされるようにします。Apache HTTP Server 2.0 API を使用すると、モジュールは順序を指定でき、これら 2 つのディレクティブが不要になります。
- LoadModule 行の順序は、ほとんどの場合、関連性がなくなりました。
- 多くのモジュールは、追加、削除、名前変更、分割、または他に組み込まれています。
- 独自の RPM にパッケージ化されたモジュールの LoadModule 行(
mod_ssl
、php
、mod_perl
など)は、/etc/httpd/conf.d/
ディレクトリー内の関連ファイルにあるため、不要になりました。 - さまざまな HAVE_XXX 定義が定義されなくなりました。
httpd.conf
に以下のディレクティブが含まれていることが重要です。
Include conf.d/*.conf
mod_perl
、php
、mod_ssl
など)が失敗します。
25.2.2.1.4. その他のグローバル環境の変更
- serverType: Apache HTTP Server は ServerType スタンドアロン としてのみ実行でき、このディレクティブは無関係です。
- AccessConfig および ResourceConfig: これらのディレクティブは Include ディレクティブの機能をミラーリングするため削除されました。AccessConfig ディレクティブおよび ResourceConfig ディレクティブが設定されている場合は、Include ディレクティブに置き換えます。ファイルが古いディレクティブによって暗示される順序で読み取られるようにするには、Include ディレクティブを
httpd.conf
の末尾に配置し、AccessConfig に対応するものの前に ResourceConfig に対応するものを追加する必要があります。デフォルト値を使用する場合は、conf/srm.conf
およびconf/access.conf
ファイルとして明示的に組み込みます。
25.2.2.2. メインサーバー設定
25.2.2.2.1. UserDir マッピング
http://example.com/~bob/
などの URL を有効にし、/home/bob/public_html/
などのユーザー bob 内のサブディレクトリーにマッピングします。この機能の副次的な影響により、潜在的な攻撃者は特定のユーザー名がシステムに存在するかどうかを判断できます。このため、Apache HTTP Server 2.0 のデフォルト設定はこのディレクティブを無効にします。
httpd.conf
の ディレクティブを以下のように変更します。
UserDir disable
UserDir public_html
25.2.2.2.2. ロギング
- AgentLog
- RefererLog
- RefererIgnore
25.2.2.2.3. ディレクトリーのインデックス作成
httpd-2.0.6.tar
は、ディレクトリーインデックスページに httpd-2.0.36.tar
の前に表示されます。
README
.html
および HEADER
.html
に変更になりました。
25.2.2.2.4. コンテンツネゴシエーション
on
または off
)を取るようになりました。CacheNegotiatedDocs の既存インスタンスは、の CacheNegotiatedDocs に置き換える必要があり ます。
25.2.2.2.5. エラードキュメント
ErrorDocument 404 "The document was not found
ErrorDocument 404 "The document was not found"
25.2.2.3. 仮想ホストの設定
/etc/httpd/conf.d/ssl.conf
に移動されていることに注意してください。
25.2.2.4. モジュールおよび Apache HTTP Server 2.0
mod_include
で処理できるサーバー解析された HTML ドキュメントを生成できます。これにより、モジュールを組み合わせて特定の目的を達成する方法に関して、非常に多くの可能性が開かれます。
mod_perl
)によって完全に処理されます。Apache HTTP Server 2.0 では、リクエストは最初にコアモジュールによって 処理 されます。これは静的ファイルを提供し、mod_perl
によって フィルターリング されます。
404 Not Found
エラーを返します。別の方法として、AcceptPathInfo ディレクティブを使用してコアモジュールを照合し、PATH_INFO でリクエストを受け入れることもできます。
AcceptPathInfo on
25.2.2.4.1. suexec
モジュール
mod_suexec
モジュールは仮想ホストの設定に使用される User
ディレクティブおよび Group
ディレクティブではなく、SuexecUserGroup
ディレクティブを使用します。User
ディレクティブおよび Group
ディレクティブは一般的に使用できますが、仮想ホストの設定には非推奨となっています。
<VirtualHost vhost.example.com:80> User someone Group somegroup </VirtualHost>
<VirtualHost vhost.example.com:80> SuexecUserGroup someone somegroup </VirtualHost>
25.2.2.4.2. mod_ssl
モジュール
mod_ssl
の設定は、httpd.conf
ファイルから /etc/httpd/conf.d/ssl.conf
ファイルに移動しました。このファイルを読み込み、mod_ssl
を機能させるには、「Dynamic Shared Object (DSO)のサポート」 の説明に従って Include conf.d/*.conf という ステートメントが httpd.conf
ファイルに含まれている必要があります。
<VirtualHost _default_:443> # General setup for the virtual host ServerName ssl.example.name ... </VirtualHost>
<VirtualHost _default_:443>
# General setup for the virtual host
ServerName ssl.host.name:443
...
</VirtualHost>
mod_ssl
モジュールは ErrorLog ディレクティブおよび LogLevel ディレクティブに従うようになりました。これらのディレクティブの詳細は、ErrorLog および LogLevel を参照してください。
SSL
を無効にし、TLSv1. 1 または TLSv1
.2 のみを使用することを推奨し
ます。後方互換性は、TLSv1.0
を使用して実現できます。Red Hat がサポートする多くの製品は SSLv2
プロトコルまたは SSLv3
プロトコルを使用するか、デフォルトでそれらのプロトコルを有効にできます。ただし、SSLv2
または SSLv3
を使用することが強く推奨されます。
25.2.2.4.3. mod_proxy
モジュール
mod_proxy
のキャッシング機能は、以下の 3 つのモジュールに分割されました。
mod_cache
mod_disk_cache
mod_mem_cache
mod_proxy
モジュールと同様のディレクティブを使用しますが、キャッシュ設定を移行する前に各ディレクティブを検証することが推奨されます。
25.2.2.4.4. mod_include
モジュール
mod_include
モジュールはフィルターとして実装されるため、異なる方法で有効化されるようになりました。フィルターの詳細は、「モジュールおよび Apache HTTP Server 2.0」 を参照してください。
AddType text/html .shtml AddHandler server-parsed .shtml
AddType text/html .shtml
AddOutputFilter INCLUDES
.shtml
.htaccess
ファイルに必要です。
25.2.2.4.5. mod_auth_dbm
モジュールおよび mod_auth_db
モジュール
mod_auth_db
と mod_auth_dbm
の 2 つの認証モジュールをサポートしていました。これらのモジュールは、Apache HTTP Server 2.0 の mod_auth_dbm
という名前の単一のモジュールに統合され、複数の異なるデータベース形式にアクセスできます。mod_auth_db
から移行するには、AuthDBUserFile と AuthDBGroupFile を、AuthDBMUserFile および AuthDBMGroupFile の mod_auth_dbm
に置き換えて調整する必要があります。また、使用中のデータベースファイルのタイプを指定するには、ディレクティブ AuthDBMType DB を追加する必要があります。
mod_auth_db
設定のサンプルを示しています。
<Location /private/> AuthType Basic AuthName "My Private Files" AuthDBUserFile /var/www/authdb require valid-user </Location>
<Location /private/> AuthType Basic AuthName "My Private Files"AuthDBMUserFile
/var/www/authdbAuthDBMType DB
require valid-user </Location>
.htaccess
ファイルでも使用できることに注意してください。
mod_auth_dbm
のようにさまざまなデータベース形式を操作できます。コマンドラインで -T
オプションを使用して、使用する形式を指定できます。
表25.1 dbmmanage から htdbmへの移行
アクション | dbmmanage コマンド(1.3) | 同等の htdbm コマンド(2.0) |
---|---|---|
データベースにユーザーを追加する(指定のパスワードを使用) | dbmmanage authdb add username password | htdbm -b -TDB authdb username password |
ユーザーをデータベースに追加する(パスワードのプロンプト) | dbmmanage authdb adduser username | htdbm -TDB authdb username |
データベースからユーザーを削除します。 | dbmmanage authdb delete username | htdbm -x -TDB authdb username |
データベースのユーザーを一覧表示します。 | dbmmanage authdb view | htdbm -l -TDB authdb |
パスワードの確認 | dbmmanage authdb check username | htdbm -v -TDB authdb username |
-m
オプションおよび -s
オプションは dbmmanage と htdbm の両方と連携し、ハッシュパスワードに MD5 アルゴリズムまたは SHA1 アルゴリズムをそれぞれ使用できます。
25.2.2.4.6. mod_perl
モジュール
mod_perl
の設定は、httpd.conf
から /etc/httpd/conf.d/perl.conf
ファイルに移動しました。このファイルを読み込むには、mod_perl
が機能するには、「Dynamic Shared Object (DSO)のサポート」 の説明に従って Include conf.d/*.conf という ステートメントを httpd.conf
に含める必要があります。
httpd.conf
の Apache:: は ModPerl:: に置き換える必要があります。また、ハンドラーの登録方法も変更になりました。
mod_perl
の設定例です。
<Directory /var/www/perl> SetHandler perl-script PerlHandler Apache::Registry Options +ExecCGI </Directory>
mod_perl
と同じです。
<Directory /var/www/perl>
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
Options +ExecCGI
</Directory>
mod_perl
1.x のほとんどのモジュールは、mod_perl
2.x で変更せずに動作するはずです。XS モジュールには再コンパイルが必要で、Makefile のマイナーな変更が必要になる場合があります。
25.2.2.4.7. mod_python
モジュール
mod_python
の設定は、httpd.conf
から /etc/httpd/conf.d/python.conf
ファイルに移動しました。このファイルを読み込むには、mod_python
が機能するには、「Dynamic Shared Object (DSO)のサポート」 の説明に従って Include conf.d/*.conf という ステートメントを httpd.conf
に配置する必要があります。
25.2.2.4.8. PHP
httpd.conf
からファイル /etc/httpd/conf.d/php.conf
に移動しました。このファイルを読み込むには、「Dynamic Shared Object (DSO)のサポート」 の説明に従って Include conf.d/*.conf という ステートメントを httpd.conf
に配置する必要があります。
/etc/php.ini
ファイルで register_globals を On に設定して、以前の動作に戻します。
25.2.2.4.9. mod_authz_ldap
モジュール
mod_authz_ldap
モジュールが同梱されています。このモジュールは、サブジェクトの識別名の短い形式とクライアント SSL 証明書の発行者を使用して、LDAP ディレクトリー内のユーザーの識別名を決定します。また、ユーザーの LDAP ディレクトリーエントリーの属性に基づいてユーザーを作成したり、アセットのユーザーおよびグループ権限に基づいてアセットへのアクセスを判断したり、パスワードの期限が切れたユーザーのアクセスを拒否したりすることもできます。mod_authz_ldap
モジュールを使用する場合は、mod_ssl
モジュールが必要です。
mod_authz_ldap
モジュールは、暗号化されたパスワードハッシュを使用して LDAP ディレクトリーに対してユーザーを認証しません。この機能は、実験的な mod_auth_ldap
モジュールによって提供されます。このモジュールのステータスの詳細は、http://httpd.apache.org/docs-2.0/mod/mod_auth_ldap.html でオンラインの mod_auth_ldap
モジュールのドキュメントを参照してください。
/etc/httpd/conf.d/authz_ldap.conf
ファイルは、mod_authz_ldap
モジュールを設定します。
mod_authz_ldap
サードパーティーモジュールの設定に関する詳細は、/usr/share/doc/mod_authz_ldap- <version> /index.html
(パッケージのバージョン番号に <version> を置換)または http://authzldap.othello.ch/ を参照してください。
25.3. httpdの起動と停止
httpd
パッケージをインストールしたら、http://httpd.apache.org/docs/2.2/ でオンラインで利用できる Apache HTTP Server のドキュメントを確認してください。
httpd
RPM は、/etc/init.d/httpd
スクリプトをインストールします。これは、/sbin/service コマンドを使用してアクセスできます。
/etc/sysconfig/httpd
に環境変数が設定され、httpd が起動します。init スクリプトを使用して環境変数を設定することもできます。
apachectl start
apachectl stop
restart
オプションは、Apache HTTP Server を停止して起動する簡単な方法です。
apachectl restart
service httpd restart
ErrorLog
にメッセージを表示します。
rc.N
ディレクトリー内の起動ファイルに apachectl への呼び出しを追加する必要があります。典型的な使用されるファイルは rc.local
です。これにより Apache が root として起動されるため、この呼び出しを追加する前にセキュリティーと認証を適切に設定することが推奨されます。
apachectl status
httpd.conf
設定ファイルで有効にする必要があります。mod_status の詳細は、http://httpd.apache.org/docs/2.2/mod/mod_status.html を参照してください。
25.4. Apache HTTP サーバーの設定
/etc/httpd/conf/httpd.conf
設定ファイルを設定できます。古い srm.conf
または access.conf
設定ファイルは使用されず、空のままにします。グラフィカルインターフェイスを使用して、仮想ホスト、ロギング属性、接続の最大数などのディレクティブを設定できます。HTTD 設定ツールを起動するには、システム > 管理 > サーバー設定 > HTTP を
クリックします。
- Main タブで基本設定を行います。
- Virtual Hosts タブをクリックし、デフォルト設定を設定します。
- Virtual Hosts タブで、Default Virtual Host を設定します。
- 複数の URL または仮想ホストを提供するには、仮想ホストを追加します。
- Server タブでサーバー設定を設定します。
- Performance Tuning タブで接続を設定します。
- 必要なファイルをすべて
DocumentRoot
ディレクトリーおよびcgi-bin
ディレクトリーにコピーします。 - アプリケーションを終了し、を選択して設定を保存します。
25.4.1. 基本設定
図25.1 基本設定
[D]
httpd.conf
の ServerName ディレクティブに対応します。ServerName ディレクティブは、Web サーバーのホスト名を設定します。リダイレクト URL の作成時に使用されます。サーバー名を定義しない場合、Web サーバーはシステムの IP アドレスから解決を試みます。サーバー名は、サーバーの IP アドレスから解決されるドメイン名である必要はありません。たとえば、サーバーの実際の DNS 名は foo.example.com で、サーバー名を www.example.com に設定します。
httpd.conf
の ServerAdmin ディレクティブに対応します。サーバーのエラーページをメールアドレスが含まれるように設定すると、ユーザーがサーバーの管理者に問題を報告できるようにこのメールアドレスが使用されます。デフォルト値は root@localhost です。
httpd.conf
の Listen ディレクティブに対応します。デフォルトでは、Red Hat は、セキュアではない Web 通信のポート 80 をリッスンするように Apache HTTP Server を設定します。
図25.2 利用可能なアドレス
[D]
25.4.2. デフォルトの設定
図25.3 仮想ホストタブ
[D]
図25.4 一般的なオプション
[D]
25.4.2.1. サイト設定
図25.5 サイト設定
[D]
404.html
という名前のファイルで作成した Web ページにリダイレクトするには、404.html
を DocumentRoot/../error/404.html
にコピーします。この場合、DocumentRoot は定義したドキュメントルートディレクトリーです(デフォルトは /var/www/html/
です)。Document Root がデフォルトの場所のままである場合は、ファイルを /var/www/error/404.html
にコピーする必要があります。次に、404 - Not Found エラーコードの動作として File を選択し、/error/404.html
を Location として入力します。
- メールアドレスでフッター を表示します:すべてのエラーページの下部にあるデフォルトのフッターと、ServerAdmin ディレクティブで指定された Web サイトメンテナーのメールアドレスを表示します。
- フッター の表示:エラーページの下部にあるデフォルトのフッターのみを表示します。
- No footer: エラーページの下部にフッターは表示されません。
25.4.2.2. SSL サポート
- 証明書ファイル:PEM (Privacy Enhanced Mail)でエンコードされたサーバー証明書ファイルへのパスを参照する SSLCertificateFile ディレクティブの使用と同じです。
- キーファイル:PEM でエンコードされたサーバーの秘密鍵ファイルへのパスを参照する SSLCertificateKeyFile ディレクティブの使用と同じです。
- 証明書チェーンファイル:証明書のすべてのサーバーのチェーンを含む証明書ファイルへのパスを参照する SSLCertificateChainFile ディレクティブの使用と同じです。
- 認証局ファイル:サーバーと通信する信頼性またはアイデンティティーを確認するために使用される暗号化されたファイルです。
- FakeBasicAuth: Apache で使用される標準の認証方法を有効にします。これは、Client X509 証明書の Subject Distinguished Name (DN)が基本的な HTTP ユーザー名に変換されることを意味します。
- ExportCertData - SSL_SERVER_CERT、SSL_CLIENT_CERT、および SSL_CLIENT_CERT _CHAIN_n に CGI 環境変数を作成します。n は数字 0,1,2,3,4. です。これらのファイルは、CGI スクリプトによるより多くの証明書チェックに使用されます。
- CompatEnvVars - CGI 環境変数を追加して、Apache SSL の後方互換性を有効にします。
- StrictRequire: SSLRequireSSL ディレクティブおよび SSLRequire ディレクティブがアクセスが禁止されていることが示唆されるたびに、アクセスの拒否を強制する厳密なアクセスを有効にします。
- OptRenegotiate: mod_ssl による不要なハンドシェイクの回避を有効にし、安全なパラメーターチェックも実行します。ディレクトリーごとに OptRenegotiate を有効にすることが推奨されます。
図25.6 SSL
[D]
SSL
を無効にし、TLSv1. 1 または TLSv1
.2 のみを使用することを推奨し
ます。後方互換性は、TLSv1.0
を使用して実現できます。Red Hat がサポートする多くの製品は SSLv2
プロトコルまたは SSLv3
プロトコルを使用するか、デフォルトでそれらのプロトコルを有効にできます。ただし、SSLv2
または SSLv3
を使用することが強く推奨されます。
25.4.2.3. ロギング
/var/log/httpd/access_log
ファイルに書き込み、エラーログを /var/log/httpd/error_log
ファイルに書き込みます。
図25.7 ロギング
[D]
25.4.2.4. 環境変数
MAXNUM
を 50
に設定するには、図25.8「環境変数」 に示すように、CGI スクリプトの設定 セクションにある Add ボタンをクリックしてから、Value に Environment Variable テキストフィールドに MAXNUM
と入力し、テキストフィールドを設定 します。50
OK をクリックして一覧に追加します。Set for CGI Scripts セクションは、SetEnv ディレクティブを設定します。
図25.8 環境変数
[D]
25.4.2.5. ディレクトリー
図25.9 ディレクトリー
[D]
- ExecCGI - CGI スクリプトの実行を許可します。このオプションが選択されていない場合、CGI スクリプトは実行されません。
- FollowSymLinks: シンボリックリンクの後に続くことを許可します。
- includes: サーバー側のインクルードを許可します。
- IncludesNoExec - サーバー側のインクルードを許可しますが、CGI スクリプトで #exec および #include コマンドを無効にします。
- Indexes - DirectoryIndex (
index.html
など)が要求されたディレクトリーに存在しない場合、ディレクトリーのコンテンツのフォーマットされたリストを表示します。 - Multiview - content-negotiated multiviews をサポートします。このオプションはデフォルトで無効にされています。
- SymLinksIfOwnerMatch - ターゲットファイルまたはディレクトリーがリンクと同じ所有者を持つ場合にのみシンボリックリンクをたどります。
- Allow all hosts:
all
と入力して、すべてのホストへのアクセスを許可します。 - パーシャルドメイン名:名前が指定の文字列と一致するか、または終了されるすべてのホストを許可します。
- 完全な IP アドレス:特定の IP アドレスへのアクセスを許可します。
- サブネット:の場合は以下のようになります。
192.168.1.0/255.255.255.0
- ネットワーク CIDR 仕様(例:)
10.3.0.0/16
図25.10 ディレクトリーの設定
[D]
.htaccess
ファイルがディレクトリーオプション を上書き する場合は、.htaccess ファイルの設定ディレクティブが優先されます。
25.5. httpd.conf
の設定ディレクティブ
/etc/httpd/conf/httpd.conf
です。httpd.conf
ファイルは十分にコメント化されており、ほとんどは自己計画的です。デフォルト設定はほとんどの状況で機能しますが、より重要な設定オプションの一部を理解することが推奨されます。
25.5.1. 一般的な設定のヒント
/etc/httpd/conf/httpd.conf
を編集し、「httpdの起動と停止」 で概説するように、/etc/httpd/conf/httpd.conf を編集し、httpd プロセスを開始します。
httpd.conf
を編集する前に、元の ファイルのコピーを作成します。バックアップを作成すると、設定ファイルの編集中に間違いからの復旧が容易になります。
httpd.conf
で編集したパスを確認し、誤字がないことを確認します。
/var/log/httpd/error_log
を確認します。変更ログは、専門知識のレベルによっては、解釈が簡単ではない可能性があります。ただし、エラーログの最後のエントリーは、有用な情報を提供します。
httpd.conf
に含まれるディレクティブの多くについての簡単な説明の一覧が記載されています。これらの説明は網羅的なものではありません。詳細は、オンラインの Apache ドキュメンテーション( http://httpd.apache.org/docs/2.2/ )を参照してください。
mod_ssl
ディレクティブの詳細は、http://httpd.apache.org/docs/2.2/mod/mod_ssl.html でオンラインのドキュメントを参照してください。
.ht
で始まるファイルにアクセス制御を適用します。これらのディレクティブは、セキュリティー上の理由から、すべての .htaccess
ファイル(または .ht
で始まるその他のファイル)への Web アクセスを拒否します。
AddDescription
FancyIndexing を IndexOptions パラメーターとして使用する場合、AddDescription ディレクティブを使用して、サーバーが生成したディレクトリー一覧に特定のファイルまたはファイルタイプのユーザー指定の説明を表示できます。AddDescription ディレクティブは、特定のファイル、ワイルドカード式、またはファイル拡張子の一覧表示をサポートします。
AddEncoding
AddEncoding は、特定のエンコーディングタイプを指定するファイル名の拡張子です。AddEncoding を使用して、一部のブラウザーに、ダウンロード時に特定のファイルを圧縮解除するように指示することもできます。
AddHandler
addhandler は、 ファイル拡張子を特定のハンドラーにマッピングします。たとえば、cgi-script ハンドラーを拡張子 .cgi
に一致させると、.cgi
で終わるファイルを CGI スクリプトとして自動的に扱います。以下は、.cgi
拡張の AddHandler ディレクティブの例です。
AddHandler cgi-script .cgi
cgi-bin
外の CGI が、ディレクトリーコンテナー内の ExecCGI オプションを持つサーバー上の任意のディレクトリーで機能できるようになります。ディレクトリーの ExecCGI オプションの設定に関する詳細は、ディレクトリー を参照してください。
AddIcon
AddIcon は、特定の拡張子を持つファイルのサーバー生成ディレクトリー一覧に表示するアイコンを指定します。たとえば、Web サーバーは、拡張子が .bin
または .exe
のファイルのアイコン binary.gif
を表示するように設定されます。
AddIconByEncoding
このディレクティブは、サーバーが生成したディレクトリー一覧の MIME エンコーディングのあるファイルによって表示されるアイコンの名前。たとえば、デフォルトでは、Web サーバーは、サーバー生成されたディレクトリー一覧にある MIME でエンコードされた x 圧縮ファイルと x-gzip ファイルの横に、compress.gif
アイコンを表示します。
AddIconByType
このディレクティブの名前アイコンは、サーバー生成ディレクトリー一覧に MIME タイプのファイルの横に表示されます。たとえば、サーバーは、サーバーが生成したディレクトリー一覧に mime-type のテキストタイプのファイルの横にあるアイコン
を表示します。
text
.gif
AddLanguage
AddLanguage は、ファイル名の拡張子を特定の言語に関連付けます。このディレクティブは、クライアントの Web ブラウザーの言語設定に基づいて複数の言語でコンテンツを提供する Apache HTTP Server に便利です。
AddType
AddType ディレクティブを使用して、デフォルトの MIME タイプとファイル拡張子のペアを定義または上書きします。以下のサンプルディレクティブは、.tgz ファイル拡張子を認識するように Apache HTTP Server に指示します。
AddType application/x-tar .tgz
エイリアス
Alias 設定により、DocumentRoot ディレクトリー以外のディレクトリーにアクセスできます。エイリアスで終わる URL は、自動的にエイリアスのパスに対して解決されます。デフォルトでは、アイコン/
ディレクトリーにエイリアスが 1 つ設定されています。icons/
ディレクトリーには Web サーバーからアクセスできますが、ディレクトリーは DocumentRoot には含まれません。
許可
allow は、指定のディレクトリーにアクセスできるクライアントを指定します。クライアントは、すべて、ドメイン名、IP アドレス、部分的な IP アドレス、ネットワーク/ネットマスクのペアなどにすることができます。DocumentRoot ディレクトリーは、すべての からのリクエストを 許可 するよう設定されます。つまり、すべて のユーザーがアクセスできます。
AllowOverride
AllowOverride ディレクティブは、任意の オプション が .htaccess
ファイルの宣言で上書きできるかどうかを設定します。デフォルトでは、root ディレクトリーと DocumentRoot の両方が、.htaccess
の上書きを許可しないように設定されています。
BrowserMatch
BrowserMatch ディレクティブにより、サーバーは環境変数を定義し、クライアントの Web ブラウザータイプを識別する User-Agent HTTP ヘッダーフィールドに基づいて適切なアクションを実行できます。デフォルトでは、Web サーバーは BrowserMatch を使用して、既知の問題のある特定のブラウザーへの接続を拒否し、またこれらのアクションに問題があることがわかっているブラウザーの keepalive および HTTP ヘッダーのフラッシュを無効にします。
キャッシュディレクティブ
デフォルトの Apache HTTP Server 設定ファイルでは、コメント化されたキャッシュディレクティブが多数提供されています。ほとんどの場合、行頭からハッシュ記号(#)を削除して、このような行をコメント解除すれば十分です。ただし、以下は、より重要なキャッシュ関連のディレクティブのリストです。
- CacheEnable: キャッシュがディスク、メモリー、またはファイル記述子キャッシュであるかを指定します。デフォルトでは、CacheEnable は
/
の下にある URL のディスクキャッシュを設定します。 - CacheRoot - キャッシュされたファイルを含むディレクトリーの名前を指定します。デフォルトの CacheRoot は
/var/httpd/proxy/
ディレクトリーです。 - cache size: キャッシュが使用できる領域をキロバイト単位で指定します。デフォルトの CacheSize は 5 KB です。
- CacheMaxExpire: キャッシュに HTML ドキュメントが保持される期間(元の Web サーバーからのリロードなし)を指定します。デフォルトは 24 時間(86400 秒)です。
- CacheLastModifiedFactor - 独自の有効期限が設定された元のサーバーから行われなかったドキュメントの期限切れ(有効期限)の日付を指定します。デフォルトの CacheLastModifiedFactor は 0.1 に設定されています。つまり、このようなドキュメントの有効期限は、ドキュメントが最後に変更された時点の 1 回目と等しくなります。
- CacheDefaultExpire: 有効期限をサポートしないプロトコルを使用して受信されたドキュメントの有効期限を時間単位で指定します。デフォルトは 1 時間(3600 秒)に設定されます。
- noProxy: コンテンツがキャッシュされないサブネット、IP アドレス、ドメイン、またはホストのスペース区切りの一覧を指定します。この設定は、イントラネットサイトで最も役立ちます。
CacheNegotiatedDocs
デフォルトでは、Web サーバーは、コンテンツベースでネゴシエートされたドキュメントをキャッシュしないようにプロキシーサーバーに要求します(つまり、時間の経過とともに、または要求元からの入力が変わる可能性があります)。で
CacheNegotiatedDocs が に設定されている場合、この機能は無効になり、プロキシーサーバーはそのようなドキュメントをキャッシュできます。
CustomLog
CustomLog は、ログファイルとログファイルの形式を識別します。デフォルトでは、アクセスログは /var/log/httpd/access_log
ファイルに記録され、エラーは /var/log/httpd/error_log
ファイルに記録されます。
結合された
ログファイル形式です。
remotehost rfc931 user date "request" status bytes referrer user-agent
DefaultIcon
DefaultIcon は、他のアイコンが指定されていないファイルのサーバー生成ディレクトリーリストに表示されるアイコンを指定します。unknown.gif
イメージファイルがデフォルトです。
DefaultType
DefaultType は、MIME タイプを判断できないドキュメントに使用する Web サーバーのデフォルトコンテンツタイプを設定します。デフォルトは text/plain です。
ディレクトリー
& lt;directory /path/to/directory > タグおよび </ Directory > タグにより、特定のディレクトリーとそのサブディレクトリーにのみ適用される設定ディレクティブのグループを囲むために使用されるコンテナーが作成されます。ディレクトリーに適用されるディレクティブは、ディレクトリータグ内で使用できます。
/
)に適用され、Options ( オプションを参照)および AllowOverride ( AllowOverrideを参照)ディレクティブを使用します。この設定では、より多くの許容設定を必要とするシステム上の任意のディレクトリーを明示的に指定する必要があります。
cgi-bin
ディレクトリーを設定するために使用することもできます(詳細は、ScriptAlias を参照してください)。
httpd.conf
ファイルに追加します。
<Directory /home/my_cgi_directory> Options +ExecCGI </Directory>
.cgi
拡張子を持つファイルを CGI スクリプトとして識別する必要があります。AddHandler の設定手順については、AddHandler を参照してください。
DirectoryIndex
DirectoryIndex は、ディレクトリー名の最後にスラッシュ(/)を指定して、ユーザーがディレクトリーのインデックスを要求する際にサーバーによって提供されるデフォルトページです。
index.html
で、index.html.var
タイプマップです。サーバーはこれらのファイルのいずれかを検索し、最初に見つかったファイルを返します。これらのファイルのいずれかが見つからず、Options Indexes がそのディレクトリーに設定されている場合は、ディレクトリーリスト機能がオフになっていない限り、サーバーはサブディレクトリーとファイルの一覧を HTML 形式で生成し、返します。
DocumentRoot
DocumentRoot は、リクエストに応答して提供される HTML ファイルのほとんどが含まれるディレクトリーです。セキュアではないセキュアな Web サーバー両方のデフォルトの DocumentRoot は /var/www/html
ディレクトリーです。たとえば、サーバーは以下のドキュメントのリクエストを受け取る場合があります。
http://example.com/foo.html
/var/www/html/foo.html
errorDocument
ErrorDocument ディレクティブは、HTTP 応答コードをクライアントに送信するメッセージまたは URL に関連付けます。デフォルトでは、Web サーバーはエラーが発生した場合に単純なエラーメッセージおよび通常は暗号的なエラーメッセージを出力します。ErrorDocument ディレクティブは、代わりにカスタマイズされたメッセージまたはページを出力するよう Web サーバーを強制します。
ErrorLog
errorlog は、サーバーエラーがログ に記録されるファイルを指定します。デフォルトでは、このディレクティブは /var/log/httpd/error_log
に設定されます。
ExtendedStatus
ExtendedStatus ディレクティブは、server-status ハンドラーが呼び出されたときに Apache が基本(off)または詳細なサーバーステータス情報()を生成するかどうかを制御します。server-status ハンドラーは Location タグを使用して呼び出されます。server-status の呼び出しに関する詳細情報は、場所 に含まれています。
HeaderName
HeaderName は、ディレクトリーに存在するファイルに名前を付けます。このファイルが、サーバーが生成したディレクトリー一覧の先頭に追加されます。ReadmeName と同様に、サーバーは可能な場合、またはプレーンテキストで HTML ドキュメントとして追加しようとします。
HostnameLookups
HostnameLookups は、on
、off
、または double
に設定できます。で
HostnameLookups が に設定されている場合、サーバーは各接続の IP アドレスを自動的に解決します。IP アドレスを解決すると、サーバーは DNS サーバーへの 1 つ以上の接続を行い、処理のオーバーヘッドが追加されます。HostnameLookups が double
に設定されている場合、サーバーはダブルリバース DNS 検索を実行し、処理オーバーヘッドをさらに追加します。
off
に設定されます。
IfDefine
IfDefine タグは、IWDefine タグが true と指定された test の場合に適用される設定ディレクティブを囲む。テストが false の場合、ディレクティブは無視されます。
IfModule
& lt;IfModule > タグおよび </ IfModule > タグは、指定されたモジュールが読み込まれている場合にのみアクティベートされる条件付きコンテナーを作成します。IfModule コンテナー内のディレクティブは、2 つの条件のいずれかで処理されます。ディレクティブは、開始 <If Module> タグ内に含まれるモジュールがロードされている場合 に処理されます。または、感嘆符 ! がモジュール名の前に表示される場合、ディレクティブは <If Module> タグで指定されたモジュールが読み込まれて いない 場合 にのみ処理されます。
mod_ssl
、mod_perl
、php
など)を使用するには、以下のディレクティブを セクション 1: httpd.conf
のグローバル環境 に含める必要があります。
Include conf.d/*.conf
IndexIgnore
index ignore は、ファイルの拡張子、部分的なファイル名、ワイルドカード式、または完全なファイル名を一覧表示します。Web サーバーには、サーバーが生成したディレクトリー一覧内のこれらのパラメーターに一致するファイルは含まれません。
IndexOptions
IndexOptions は、アイコン、ファイルの説明などを追加して、生成されたサーバーダイレクトリストの外観を制御します。Options Indexes が設定されている場合( オプションを参照)、Web サーバーは、Web サーバーがインデックスなしでディレクトリーの HTTP 要求を受信するとディレクトリー一覧を生成します。
index.html
)に一覧表示されている名前に一致するファイルを検索します。index.html
ファイルが見つからない場合、Apache HTTP Server は要求されたディレクトリーの HTML ディレクトリーのリストを作成します。このディレクトリー一覧の表示は、一部では IndexOptions ディレクティブによって制御されます。
KeepAlive
keepalive は、サーバーが接続ごとに複数の要求を許可するかどうかを設定します。また、1 つのクライアントがサーバーのリソースを過剰に消費できないようにするために使用できます。
/var/log/httpd/error_log
ログファイルを監視することが推奨されます。このログは、サーバーが子プロセスが不足すると報告されます。
KeepAliveTimeout
KeepAliveTimeout は、リクエストが提供されてから接続を閉じるまでにサーバーが待機する秒数を設定します。サーバーがリクエストを受信すると、代わりに Timeout ディレクティブが適用されます。KeepAliveTimeout ディレクティブは、デフォルトで 15 秒に設定されています。
listen
Listen コマンドは、Web サーバーが受信要求を受け入れるポートを識別します。デフォルトでは、Apache HTTP Server はセキュアではない Web 通信ではポート 80 をリッスンするように設定されています。セキュアな Web 通信のためにポート 443 番のポート(セキュアなサーバーを定義する /etc/httpd/conf.d/ssl.conf
ファイル)です。
LoadModule
LoadModule は、Dynamic Shared Object (DSO)モジュールを読み込むために使用されます。LoadModule ディレクティブの使用手順など、Apache HTTP Server の DSO サポートの詳細は、「モジュールの追加」 を参照してください。モジュールの読み込み順序は、Apache HTTP Server 2.0 では 重要ではなくなりました。Apache HTTP Server 2.0 DSO サポートの詳細は、「Dynamic Shared Object (DSO)のサポート」 を参照してください。
<Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from <.example.com> </Location>
<Location /server-info> SetHandler server-info Order deny,allow Deny from all Allow from <.example.com> </Location>
LogFormat
LogFormat ディレクティブは、さまざまな Web サーバーログファイルの形式を設定します。使用される実際の LogFormat は、CustomLog ディレクティブで指定された設定によって異なります( CustomLogを参照してください)。
- %H (リモートホストの IP アドレスまたはホスト名)
- 要求しているクライアントのリモート IP アドレスを一覧表示します。
で
HostnameLookups が に設定されている場合、クライアントのホスト名は DNS で利用できない限り記録されます。 - %l (rfc931)
- 使用されていません。このフィールドのログファイルにハイフンが表示されます。
- %u (認証ユーザー)
- 認証が必要な場合に記録されたユーザーのユーザー名を一覧表示します。通常、これは使用されないため、ハイフン - がこのフィールドのログファイルに表示されます。
- %t (date)
- リクエストの日時を一覧表示します。
- %r (要求文字列)
- ブラウザーまたはクライアントからの要求文字列を正確に一覧表示します。
- %s (ステータス)
- クライアントホストに返された HTTP ステータスコードを一覧表示します。
- %b (バイト)
- ドキュメントのサイズを一覧表示します。
- %\"%{Referer}i\" (referrer)
- クライアントホストを Web サーバーを参照する Web ページの URL を一覧表示します。
- %\"%{user-Agent}i\" (user-agent)
- リクエストを行う Web ブラウザーのタイプを一覧表示します。
LogLevel
logLevel は、エラーログのエラーメッセージの詳細を設定します。ログ レベルは、(最も詳細度の低いものから詳細まで)設定して、アラート、crit、error、warn、notice、info、または debug を設定できます。デフォルトの LogLevel は warn です。
MaxKeepAliveRequests
このディレクティブは、永続接続ごとに許可されるリクエストの最大数を設定します。Apache プロジェクトでは、サーバーのパフォーマンスが向上する高度な設定を推奨しています。MaxKeepAliveRequests はデフォルトで 100 に設定されています。これはほとんどの状況に適しています。
NameVirtualHost
NameVirtualHost ディレクティブは、必要に応じて名前ベースの仮想ホストに IP アドレスとポート番号を関連付けます。名前ベースの仮想ホストを使用すると、1 つの Apache HTTP Server が複数の IP アドレスを使用せずに異なるドメインを提供できるようになります。
オプション
Options ディレクティブは、特定のディレクトリーで利用可能なサーバー機能を制御します。たとえば、root ディレクトリーに指定される制限的なパラメーターでは、Options は FollowSymLinks ディレクティブにだけ設定されます。サーバーがルートディレクトリーのシンボリックリンクをたどることができることを除いて、機能は有効になっていません。
index.html
など)が指定されていない場合、サーバーはディレクトリーのディレクトリー一覧を生成できます。FollowSymLinks を使用すると、サーバーはそのディレクトリー内のシンボリックリンクをたどることができます。
順序
Order ディレクティブは、allow ディレクティブと deny ディレクティブが評価される順序を制御します。サーバーは、DocumentRoot ディレクトリーの Deny ディレクティブの前に Allow ディレクティブを評価するように設定されています。
Proxy
<proxy *& gt ; および </Proxy > タグは、プロキシーサーバーにのみ適用される設定ディレクティブのグループを囲むコンテナーを作成します。< Directory > コンテナー内で許可されるディレクティブの多くは、< Proxy> コンテナー内 でも使用できます。
ProxyRequests
Apache HTTP Server がプロキシーサーバーとして機能するように設定するには、< IfModule mod_proxy.c > 行、ProxyRequests、および <Proxy> スタンザの各行からハッシュマーク(#)を削除します。ProxyRequests ディレクティブを On に設定し、< Proxy> スタンザの Allow from ディレクティブでサーバーへのアクセスが許可されるドメインを設定し ます。
ReadmeName
ReadmeName は、ディレクトリー内に存在する場合は、サーバーが生成したディレクトリー一覧の最後に追加されるファイルに名前を付けます。Web サーバーは、最初に HTML ドキュメントとしてファイルを含めようとし、次にこれをプレーンテキストとして追加しようとします。デフォルトでは、ReadmeName は README.html
に設定されています。
Redirect /<old-path>/<file-name> http://<current-domain>/<current-path>/<file-name>
ScriptAlias
ScriptAlias ディレクティブは、CGI スクリプトの場所を定義します。一般に、CGI スクリプトを DocumentRoot 内に残しておくことは適切ではありません。ここでは、テキストドキュメントとして参照できます。このため、サーバー側の実行ファイルとスクリプトを含む DocumentRoot ディレクトリー外の特別なディレクトリーは ScriptAlias ディレクティブによって指定されます。このディレクトリーは cgi-bin
と呼ばれ、デフォルトで /var/www/cgi-bin/
に設定されます。
ServerAdmin
ServerAdmin ディレクティブを Web サーバー管理者のメールアドレスに設定します。このメールアドレスは、サーバーが生成した Web ページのエラーメッセージを表示するため、ユーザーはサーバー管理者にメールを送信して問題を報告できます。
/etc/aliases
で Web サーバーを担当する人に実行し、/usr/bin/newaliases を実行します。
ServerName
ServerName は、サーバーのホスト名およびポート番号( Listen ディレクティブと一致する)を指定します。ServerName はマシンの実際のホスト名に一致する必要はありません。たとえば、Web サーバーは www.example.com
ですが、サーバーのホスト名は実際には foo.example.com
になります。ServerName で指定する値は、システムで解決できる有効な Domain Name Service (DNS)名である必要があります。何も作成しないでください。
ServerName www.example.com:80
/etc/hosts
ファイルに含まれていることを確認してください。
ServerRoot
ServerRoot ディレクティブは、Web サイトコンテンツを含む最上位のディレクトリーを指定します。デフォルトでは、ServerRoot はセキュア なサーバーと非セキュアサーバーの両方で /etc/httpd
に設定されています。
ServerSignature
ServerSignature ディレクティブは、Apache HTTP Server サーバーバージョンと ServerName を含む行を、クライアントに送信されたエラーメッセージなどのサーバー生成ドキュメントに追加します。ServerSignature はデフォルトで on に設定されます。
ServerTokens
ServerTokens ディレクティブは、クライアントに返信する Server 応答ヘッダーフィールドに、オペレーティングシステムのタイプおよびコンパイル済みモジュールの詳細が含まれるべきかどうかを決定します。デフォルトでは、ServerTokens は Full に設定され、オペレーティングシステムの種類とコンパイル済みモジュールに関する情報を送信します。ServerTokens を Prod に設定すると製品名のみが送信され、脆弱性をスキャンする際にサーバーヘッダーのハッカー確認情報がいくつでも推奨されます。ServerTokens を Min (最小)または OS (オペレーティングシステム)に設定することもできます。
SuexecUserGroup
mod_suexec モジュールから発信される SuexecUserGroup ディレクティブは、CGI プログラムに対してユーザーおよびグループの実行権限を指定できるようにします。CGI 以外の要求は、User ディレクティブおよび Group ディレクティブで指定されたユーザーおよびグループで処理されます。
TypesConfig
TypesConfig は、MIME タイプマッピングのデフォルト一覧(コンテンツタイプへのファイル名拡張)を設定するファイルに名前を付けます。デフォルトの TypesConfig ファイルは /etc/mime.types
です。/etc/mime.types
を編集する代わりに、MIME タイプマッピングを追加する方法として、 AddType ディレクティブを使用することが推奨されます。
UseCanonicalName
で
に設定すると、このディレクティブは ServerName ディレクティブおよび Port ディレクティブで指定された値を使用して Apache HTTP Server がそれ自体を参照するように設定します。UseCanonicalName が off
に設定されている場合、サーバーは代わりに、それ自体を参照する際に要求元のクライアントによって使用される値を使用します。
off
に設定されています。
User
User ディレクティブは、サーバープロセスのユーザー名を設定し、サーバーがアクセスできるファイルを決定します。このユーザーがアクセスできないファイルは、Apache HTTP Server に接続するクライアントにもアクセスできません。
UserDir
UserDir は、Web サーバーによって提供される個人 HTML ファイルを配置する各ユーザーのホームディレクトリー内のサブディレクトリーです。このディレクティブは、デフォルトで 無効
にするように設定されています。
public_html
に設定されます。たとえば、サーバーは以下のリクエストを受け取る場合があります。
http://example.com/~username/foo.html
/home/username/public_html/foo.html
/home/username/
がユーザーのホームディレクトリーです(ユーザーのホームディレクトリーのデフォルトパスは異なる場合があることに注意してください)。
public_html
ディレクトリー(0755 も機能)に設定する必要があります。ユーザーの public_html
ディレクトリーで提供されるファイルは、少なくとも 0644 に設定する必要があります。
VirtualHost
<VirtualHost > ; および </VirtualHost > タグは、仮想ホストの特性を示すコンテナーを作成します。VirtualHost コンテナーはほとんどの設定ディレクティブを受け入れます。
httpd.conf
で提供され、各仮想ホストに必要な最低限の設定ディレクティブのセットを示しています。仮想ホストの詳細は、「仮想ホスト」 を参照してください。
/etc/httpd/conf.d/ssl.conf
に置かれるようになりました。
25.5.2. SSL の設定ディレクティブ
/etc/httpd/conf.d/ssl.conf
ファイルのディレクティブは、TLS を使用したセキュアな Web 通信を有効にするように設定できます。TLS の有効化中 『の SSL の無効化に関する重要な情報は、httpd の POODLE SSLv3.0 脆弱性(CVE-2014-3566)の解決』 を参照してください。
SSL
を無効にし、TLSv1. 1 または TLSv1
.2 のみを使用することを推奨し
ます。後方互換性は、TLSv1.0
を使用して実現できます。Red Hat がサポートする多くの製品は SSLv2
プロトコルまたは SSLv3
プロトコルを使用するか、デフォルトでそれらのプロトコルを有効にできます。ただし、SSLv2
または SSLv3
を使用することが強く推奨されます。
SetEnvIf
SetEnvIf は、受信接続のヘッダーに基づいて環境変数を設定します。これは SSL ディレクティブのみでは なく、提供された /etc/httpd/conf.d/ssl.conf
ファイルにあります。このコンテキストの目的は、HTTP keepalive を無効にし、クライアントブラウザーから終了通知なしに SSL が接続を閉じることを許可することです。この設定は、SSL 接続を確実にシャットダウンしない特定のブラウザーに必要です。
- http://localhost/manual/mod/mod_ssl.html
25.5.3. MPM 固有のサーバープールディレクティブ
MaxClients
MaxClients は、一度に実行できるサーバープロセスの合計数または同時接続クライアントに制限を設定します。このディレクティブの主な目的は、Apache HTTP Server がオペレーティングシステムをクラッシュさせないようにすることです。ビジーなサーバーの場合、この値は高い値に設定する必要があります。サーバーのデフォルトは、使用中の MPM に関係なく 150 に設定されます。ただし、prefork MPM を使用する際に MaxClients の値が 256 を超えることは推奨されません。
MaxRequestsPerChild
MaxRequestsPerChild は、子終了の前に各子サーバープロセスが提供する要求の合計数を設定します。MaxRequestsPerChild を設定する主な理由は、有効期限の長いプロセスがメモリーリークを引き起こすことを回避するためです。prefork MPM のデフォルトの MaxRequestsPerChild は 4000 で、worker MPM の場合は 0 です。
MinSpareServers および MaxSpareServers
これらの値は、prefork MPM でのみ使用されます。Apache HTTP Server は、受信要求の数に基づいて適切な数のスペアサーバープロセスを維持することで、認識された負荷に動的に適応する方法を調整します。サーバーは要求を待機しているサーバーの数を確認し、MaxSpareServers を超える場合に を強制終了するか、サーバーの数が MinSpareServers 未満の場合は を作成します。
MinSpareThreads および MaxSpareThreads
これらの値は worker MPM でのみ使用されます。これらは、受信要求の数に基づいて適切な数のスペアサーバースレッドを維持することで、Apache HTTP Server が認識された負荷に動的に適応する方法を調整します。サーバーはリクエストを待機しているサーバースレッドの数を確認し、MaxSpareThreads を超える場合は一部を強制終了するか、サーバーの数が MinSpareThreads 未満の場合は作成します。
25.6. モジュールの追加
http-manual
パッケージがインストールされている場合は、DSO に関するドキュメンテーションは http://localhost/manual/mod/ からオンラインで参照できます。
/etc/httpd/conf/httpd.conf
内の LoadModule ディレクティブで指定する必要があります。モジュールが別のパッケージにより提供されている場合は、/etc/httpd/conf.d/
ディレクトリーのモジュール設定ファイル内に 行が表示されるはずです。詳細は、LoadModule を参照してください。
http.conf
からモジュールを追加または削除する場合は、「httpdの起動と停止」 にあるように、Apache HTTP Server をリロードまたは再起動する必要があります。
httpd-devel
パッケージをインストールします。このアプリケーションは、include ファイルおよびヘッダーファイルを使用して DSO をコンパイルします。
/usr/lib/httpd/modules/
ディレクトリーに配置します。default-64 ビットユーザー空間(x86_64、ia64、?)を使用する RHEL プラットフォームの場合、このパスは /usr/lib64/httpd/modules/
になります。次に、以下の構造を使用して LoadModule 行を httpd.conf
に追加します。
LoadModule <module-name> <path/to/module.so>
25.7. 仮想ホスト
25.7.1. 仮想ホストの設定
httpd.conf
で提供される仮想ホストコンテナーを使用することが推奨されます。
#NameVirtualHost *:80 # #<VirtualHost *:80> # ServerAdmin webmaster@dummy-host.example.com # DocumentRoot /www/docs/dummy-host.example.com # ServerName dummy-host.example.com # ErrorLog logs/dummy-host.example.com-error_log # CustomLog logs/dummy-host.example.com-access_log common #</VirtualHost>
/etc/httpd/conf/httpd.conf
ファイルのグローバル設定セクションの Listen ディレクティブに追加する必要があります。
25.8. Apache HTTP セキュアサーバー設定
mod_ssl
セキュリティーモジュールが有効になっている Apache HTTP Server の基本情報を提供します。これらの 3 つのコンポーネントの組み合わせは、このセクションではセキュアな Web サーバーまたはセキュアなサーバーとして参照されます。
mod_ssl
モジュールは、Apache HTTP Server のセキュリティーモジュールです。mod_ssl
モジュールは OpenSSL プロジェクトが提供するツールを使用して Apache HTTP Server に非常に重要な機能を追加します。これは通信を暗号化する機能です。一方、ブラウザーと Web サーバー間の通常の HTTP 通信はプレーンテキストで送信されます。
mod_ssl
設定ファイルは /etc/httpd/conf.d/ssl.conf
にあります。このファイルを読み込むには、mod_ssl
が機能するには、/etc/httpd/conf/httpd .conf
ファイルに Include conf.d/*.conf という
ステートメントが必要です。このステートメントは、デフォルトでデフォルトの Apache HTTP Server 設定ファイルに含まれています。
25.8.1. セキュリティー関連パッケージの概要
httpd
httpd
パッケージには、httpd デーモンおよび関連ユーティリティー、設定ファイル、アイコン、Apache HTTP Server モジュール、man ページ、Apache HTTP Server が使用するその他のファイルが含まれます。mod_ssl
mod_ssl
パッケージにはmod_ssl
モジュールが含まれており、Secure Sockets Layer (SSL)プロトコルおよび Transport Layer Security (TLS)プロトコルを介して Apache HTTP Server に対して強力な暗号化を提供します。openssl
openssl
パッケージには OpenSSL ツールキットが含まれています。OpenSSL ツールキットは SSL プロトコルおよび TLS プロトコルを実装し、汎用暗号化ライブラリーも含まれます。
25.8.2. 証明書およびセキュリティーの概要
https://
接頭辞が使用されます。
25.8.3. 既存のキーおよび証明書の使用
- IP アドレスまたはドメイン名を変更する場合:特定の IP アドレスとドメイン名 のペアに対して証明書が発行されます。IP アドレスまたはドメイン名を変更する場合は、新しい証明書を取得する必要があります。
- VeriSign からの証明書があり、サーバーソフトウェアを変更した場合 は、VeriSign が広く使用されている CA です。別の目的で VeriSign 証明書がすでにある場合は、既存の VeriSign 証明書を新しいセキュアなサーバーで使用することを検討している可能性があります。ただし、VeriSign は 1 つの特定のサーバーソフトウェアと IP アドレス/ドメイン名の組み合わせの証明書を発行するため、は許可されません。これらのパラメーターのいずれかを変更する場合(たとえば、以前に別のセキュアなサーバー製品を使用している場合など)、以前の設定で使用するために取得した VeriSign 証明書は、新しい設定では機能しません。新しい証明書を取得する必要があります。
/etc/pki/tls/private/server.key
/etc/pki/tls/certs/server.crt
httpsd.key
)および証明書(httpsd.crt
)は /etc/httpd/conf/
にあります。セキュアなサーバーが使用できるように、鍵と証明書を移動して名前を変更します。以下の 2 つのコマンドを使用して、鍵と証明書ファイルを移動して名前を変更します。
mv /etc/httpd/conf/httpsd.key /etc/pki/tls/private/server.key mv /etc/httpd/conf/httpsd.crt /etc/pki/tls/certs/server.crt
service httpd start
25.8.4. 証明書の種類
- ブラウザー(通常は)は証明書を自動的に認識し、ユーザーに要求せずにセキュアな接続を可能にします。
- CA が署名済み証明書を発行すると、ブラウザーに Web ページを提供している組織のアイデンティティーが保証されます。
- 暗号化秘密鍵と公開鍵のペアを作成します。
- 公開鍵に基づいて証明書要求を作成します。証明書要求には、サーバーとそのサーバーをホストする会社に関する情報が含まれます。
- アイデンティティーの承認ドキュメントとともに、証明書要求を CA に送信します。Red Hat は、どの認証局が選択するかについての推奨事項を行いません。決定は、過去の経験、フォンドア語、または通貨的要因に基づく場合があります。CA を決定したら、CA から証明書を取得する方法に関する指示に従う必要があります。
- CA が満たされると、実際に依頼されると、デジタル証明書が提供されます。
- この証明書を安全なサーバーにインストールし、セキュアなトランザクションの処理を開始します。
25.8.5. キーの生成
/etc/pki/tls/
ディレクトリーに変更します。以下のコマンドを使用して、インストール時に生成された鍵および証明書を削除します。
rm private/server.key rm certs/server.crt
crypto-utils
パッケージには、名前が示すように鍵を生成するために使用できる genkey ユーティリティーが含まれています。独自の秘密鍵を作成するには、crypto-utils
パッケージがインストールされていることを確認してください。ターミナルで man genkey と入力して、より多くのオプションを表示できます。genkey ユーティリティーを使用して www.example.com のキーを生成する場合は、ターミナルで以下のコマンドを入力します。
genkey www.example.com
図25.11 キーペアの生成
[D]
図25.12 キーサイズの選択
[D]
図25.13 ランダムなビットの生成
[D]
図25.14 Generate CSR
[D]
図25.15 認証局(CA)を選択します。
[D]
図25.16 証明書の詳細を入力します。
[D]
図25.17 サーバーの自己署名証明書の生成
[D]
図25.18 証明書要求の開始
[D]
図25.19 秘密鍵の保護
[D]
図25.20 パスフレーズの設定
[D]
図25.21 genkey エラー
[D]
25.8.6. 新しいキーを使用するようにサーバーを設定する方法
- CSR の送信後に CA から署名済み証明書を取得します。
- 証明書をパスにコピーします(例:
/etc/pki/tls/certs/www.example.com.crt
)。 /etc/httpd/conf.d/ssl.conf
を編集します。SSLCertificateFile 行と SSLCertificateKey 行を に変更します。SSLCertificateFile /etc/pki/tls/certs/www.example.com.crt SSLCertificateKeyFile /etc/pki/tls/private/www.example.com.key
「www.example.com」 の部分は、genkey コマンドで渡された引数と一致する必要があることに注意してください。
25.9. 関連情報
25.9.1. 便利な Web サイト
- http://httpd.apache.org/ - Apache HTTP Server の公式 Web サイトです。すべてのディレクティブおよびデフォルトモジュールのドキュメントを参照してください。
- http://www.modssl.org/ -
mod_ssl
の公式 Web サイトです。 - http://www.apacheweek.com/: Apache に関する包括的なオンライン週ごとの包括的な情報です。
第26章 FTP
26.1. ファイル転送プロトコル (FTP)
26.1.1. 複数のポート、複数モード
- アクティブモード
- アクティブモードは、FTP プロトコルがデータをクライアントアプリケーションに転送するために使用する元の方法です。FTP クライアントがアクティブモードのデータ転送を開始すると、サーバーは、サーバー上のポート 20 から、クライアントが指定する IP アドレスと、ランダムで権限のないポート(1024 以上)への接続を開きます。この方法では、クライアントマシンがポート 1024 以上での接続を受け入れるように許可されている必要があります。インターネットなどのセキュリティー保護されていないネットワークの増加に伴い、ファイアウォールを使用したクライアントマシンの保護が明確になりました。このようなクライアント側のファイアウォールは、アクティブモードの FTP サーバーから着信接続を拒否することが多いため、パッシブモードが考案されました。
- パッシブモード
- パッシブモードはアクティブモードと同様に、FTP クライアントアプリケーションによって開始されます。サーバーからのデータを要求する際に、FTP クライアントはパッシブモードでデータにアクセスしたいことを示し、サーバーはサーバー上の IP アドレスとランダムで権限のないポート(1024 以上)を提供します。クライアントは、サーバー上のそのポートに接続して要求した情報をダウンロードします。passive モードは、データ接続でのクライアント側のファイアウォール干渉の問題を解決しますが、サーバー側のファイアウォールの管理が複雑になる可能性があります。FTP サーバー上の特権のないポートの範囲を制限することで、サーバー上で開いているポートの数を減らすことができます。またこの方法により、サーバーを対象としたファイアウォールのルール設定の手順が簡略化されます。パッシブポートの制限に関する詳細は、「ネットワークオプション」 を参照してください。
26.2. FTP サーバー
- Red Hat Content Accelerator: 高パフォーマンスの Web サーバーおよび FTP サービスを提供するカーネルベースの Web サーバー。速度は主要な設計目標であるため、機能が制限され、匿名 FTP サーバーとしてのみ実行されます。Red Hat Content Accelerator の設定および管理の詳細については、オンラインの http://www.redhat.com/docs/manuals/tux/ を参照してください。
- vsftpd: Red Hat Enterprise Linux に推奨される FTP サーバーである高速でセキュアな FTP デーモン。本章の残りの部分では、vsftpd に重点を置いています。
26.2.1. vsftpd
- 特権プロセス と非特権プロセスの強力な分離: 別個のプロセスが異なるタスクを処理し、各プロセスはタスクに必要な最小限の権限で実行されます。
- 高い権限を必要とするタスクを、必要最小限の特権を持つプロセスで処理:
libcap
ライブラリーにある互換性を利用して、通常は完全な root 権限を必要とするタスクを、権限が低いプロセスでより安全に実行できます。 - ほとんどのプロセスは chroot jail で実行 されます。可能な場合は、プロセスは root で共有されているディレクトリーに変更されます。その後、このディレクトリーは chroot jail とみなされます。たとえば、ディレクトリー /var/ftp/ がプライマリー共有ディレクトリーである場合、vsftpd は /var/ftp/ を / と呼ばれる新しいルートディレクトリーに再割り当てします。これにより、新しい root ディレクトリーに含まれていないディレクトリーに対する悪意のあるハッカーのアクティビティーが阻止されます。
- 親プロセスは、必要最小限の権限で稼働: 親プロセスは、リスクレベルを最低限に抑えるために必要とされる権限のレベルを動的に算出します。子プロセスは FTP クライアントとの直接的な対話を処理し、可能な限り権限なしに近い形で実行します。
- 高い 権限を必要とするすべての操作は、小さな親プロセスにより処理され ます。Apache HTTP Server と同様に、vsftpd は権限のない子プロセスを起動し、着信接続を処理します。これにより、権限のある親プロセスを最小限に抑えられ、比較的少ないタスクを処理することになります。
- 親プロセスでは、権限のない子プロセスからの要求はすべて信頼さ れません。子プロセスとの通信はソケット上で受信され、子プロセスからの情報の有効性は動作する前にチェックされます。
- FTP クライアントとの相互作用のほとんどは、chroot jail 内の権限のない子プロセスにより処理 されます。これらの子プロセスは権限がなく、共有ディレクトリーにのみアクセスできるため、クラッシュしたプロセスにより、攻撃者が共有ファイルにアクセスすることしかできません。
26.2.2. vsftpdでインストールされるファイル
vsftpd
RPM はデーモン(/usr/sbin/vsftpd
)、その設定および関連ファイル、および FTP ディレクトリーをシステムにインストールします。以下は、vsftpd 設定に関連するファイルおよびディレクトリーの一覧です。
/etc/rc.d/init.d/vsftpd
: /sbin/service コマンドが vsftpd を起動、停止、または再読み込みするために使用する 初期化スクリプト (initscript)。このスクリプトの使用についての詳細は、「vsftpdの起動と停止」 を参照してください。/etc/pam.d/vsftpd
: vsftpd の PAM (プラグ可能な認証モジュール)設定ファイルこのファイルは、FTP サーバーへのログインにユーザーが満たす必要のある要件を指定します。詳細は、「PAM (プラグ可能な認証モジュール)」 を参照してください。/etc/vsftpd/ftpusers
: vsftpd にログインすることができないユーザーの一覧です。デフォルトでは、このリストには、root、bin、および daemon ユーザーが含まれます。/etc/vsftpd/user_list
- このファイルは、userlist_deny ディレクティブが YES (デフォルト)に設定されているか、/etc/vsftpd/vsftpd.conf
で NO に設定されているかによって、一覧表示されたユーザーへのアクセスを拒否または許可するように設定できます。/etc/vsftpd/user_list
を使用してユーザーにアクセスを付与する場合、一覧表示されるユーザー名は/etc/vsftpd/ftpusers
に表示され ない はずです。/var/ftp/
: vsftpd が提供するファイルが含まれるディレクトリーです。また、匿名ユーザー用の/var/ftp/pub/
ディレクトリーも含まれています。どちらのディレクトリーも誰でも読み取り可能ですが、root ユーザーのみが書き込み可能です。
26.2.3. vsftpdの起動と停止
vsftpd
RPM は、/etc/rc.d/init.d/vsftpd
スクリプトをインストールします。これは、/sbin/service コマンドを使用してアクセスできます。
service vsftpd start
service vsftpd stop
restart
オプションは、vsftpd を停止して起動する簡単な方法です。これは、vsftpd の設定ファイルを編集した後に設定変更を有効にする最も効率的な方法です。
service vsftpd restart
condrestart
(条件付き再起動)オプションは、現在実行している場合にのみ vsftpd を起動します。このオプションは、デーモンが実行されていない場合はデーモンを起動しないため、スクリプトに便利です。
service vsftpd condrestart
26.2.3.1. vsftpdの複数コピーの起動
/etc/vsftpd/vsftpd.conf
を使用します。
/etc/vsftpd/
ディレクトリーに一意の名前を持つ設定ファイル(/etc/vsftpd /vsftpd-site-2.conf
など)が必要です。各設定ファイルは、root でのみ読み取り/書き込み可能でなければなりません。IPv4 ネットワーク上でリッスンする各 FTP サーバーの設定ファイル内で、以下のディレクティブは一意である必要があります。
listen_address=N.N.N.N
vsftpd /etc/vsftpd/<configuration-file> [amp ]
/etc/vsftpd/vsftpd-site-2.conf
)。
- anon_root
- local_root
- vsftpd_log_file
- xferlog_file
/etc/rc.local
ファイルの最後に追加します。
26.2.4. TLS を使用した vsftpd 接続の暗号化
FTP
の本質的に安全でない性質に対照するために、vsftpd
デーモンは TLS
プロトコルを使用して接続を認証し、すべての転送を暗号化するように設定できます。TLS
をサポートする FTP
クライアントは、TLS
が有効になっている vsftpd
と通信する必要があります。
SSL
(Secure Sockets Layer)は、セキュリティープロトコルの古い実装の名前です。新しいバージョンは TLS
(Transport Layer Security)と呼ばれます。SSL
には深刻なセキュリティー脆弱性があるため、新しいバージョン(TLS
)のみを使用する必要があります。vsftpd サーバーに含まれるドキュメントや、vsftpd.conf
ファイルで使用される設定ディレクティブは、セキュリティー関連の項目を参照する際に SSL
名を使用しますが、TLS
はサポートされており、ssl_enable
ディレクティブが YES
に設定されている場合にデフォルトで使用されます。
vsftpd.conf
ファイルの ssl_enable
設定ディレクティブを YES
に設定して、TLS
サポートを有効にします。ssl_enable
オプションが有効な場合に自動的にアクティブになる他の TLS
関連のディレクティブのデフォルト設定では、合理的に適切に設定された TLS
のセットアップが提供されます。これには、全接続に TLS
v1 プロトコルのみを使用する(安全でない SSL
プロトコルバージョンの使用がデフォルトで無効)、匿名以外のすべてのログインがパスワードやデータ転送の送信に TLS
を使用するように強制することなどが挙げられます。
例26.1 TLS を使用するように vsftpd の設定
vsftpd.conf
ファイルでセキュリティープロトコルの古い SSL
バージョンを明示的に無効にします。
ssl_enable=YES ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO
vsftpd
サービスを再起動します。
~]# service vsftpd restart
vsftpd
による TLS
の使用を調整するための他の TLS
関連の設定ディレクティブについては、vsftpd.conf(5) の man ページを参照してください。また、一般的に使用されるその他の vsftpd.conf
設定ディレクティブの説明は、「vsftpd 設定オプション」 を参照してください。
26.2.5. vsftpd 設定オプション
/etc/vsftpd/vsftpd.conf
によって処理されます。各ディレクティブは、ファイル内の独自の行にあり、以下の形式に従います。
<directive>=<value>
vsftpd.conf
の man ページを参照してください。
/etc/vsftpd/vsftpd.conf
内の重要なディレクティブの一覧です。vsftpd の設定ファイル内で明示的に見つからないディレクティブはすべて、デフォルト値に設定されます。
26.2.5.1. デーモンオプション
- listen: 有効にすると、vsftpd はスタンドアロンモードで実行されます。Red Hat Enterprise Linux は、この値を YES に設定します。このディレクティブは、listen_ipv6 ディレクティブと組み合わせて使用することはできません。デフォルト値は NO です。
- listen_ipv6: 有効にすると、vsftpd はスタンドアロンモードで実行されますが、IPv6 ソケットのみをリッスンします。このディレクティブは listen ディレクティブと併用できません。デフォルト値は NO です。
- session_support: 有効にすると、vsftpd は PAM (Pluggable Authentication Modules)を介して各ユーザーのログインセッションを維持しようとします。詳細は、「PAM (プラグ可能な認証モジュール)」 を参照してください。セッションロギングが必要ない場合は、このオプションを無効にすると、vsftpd のプロセスが少なくなります。デフォルト値は YES です。
26.2.5.2. ログインオプションとアクセス制御
- anonymous_enable: 有効にすると、匿名ユーザーはログインできます。ユーザー名
anonymous
およびftp
が受け入れられます。デフォルト値は YES です。匿名ユーザーに影響するディレクティブの一覧は、「Anonymous User Options」 を参照してください。 - banned_email_file - deny_email_enable ディレクティブが YES に設定されている場合、このディレクティブは、サーバーへのアクセスを許可しない匿名電子メールパスワードのリストを含むファイルを指定します。デフォルト値は
/etc/vsftpd.banned_emails
です。 - banner_file: サーバーへの接続が確立されたときに表示されるテキストを含むファイルを指定します。このオプションは、ftpd_banner ディレクティブで指定されたテキストを上書きします。このディレクティブにはデフォルト値がありません。
- cmds_allowed - サーバーが許可する FTP コマンドのコンマ区切りの一覧を指定します。その他のコマンドはすべて拒否されます。このディレクティブにはデフォルト値がありません。
- deny_email_enable: 有効にすると、
/etc/vsftpd.banned_emails
で指定された電子メールパスワードを使用する匿名ユーザーは、サーバーへのアクセスを拒否します。このディレクティブによって参照されるファイルの名前は、banned_email_file ディレクティブを使用して指定できます。デフォルト値は NO です。 - ftpd_banner: 有効にすると、このディレクティブ内で指定された文字列は、サーバーへの接続が確立されると表示されます。このオプションは banner_file ディレクティブで上書きできます。デフォルトでは、vsftpd は標準バナーを表示します。
- local_enable: 有効にすると、ローカルユーザーはシステムにログインできます。デフォルト値は YES です。ローカルユーザーに影響するディレクティブの一覧は、「ローカルユーザーオプション」 を参照してください。
- pam_service_name - vsftpd の PAM サービス名を指定します。デフォルト値は ftp です。Red Hat Enterprise Linux 5.10 では、このオプションは 設定ファイルで vsftpd に設定されます。
- tcp_wrappers: 有効にすると、サーバーへのアクセスを付与するために TCP ラッパーが使用されます。FTP サーバーが複数の IP アドレスに設定されている場合、VSFTPD_LOAD_CONF オプションを使用して、クライアントが要求した IP アドレスに基づいて異なる設定ファイルを読み込むことができます。デフォルト値は NO です。Red Hat Enterprise Linux 5.10 では、このオプションは 設定ファイルで YES に設定されます。TCP ラッパーの詳細は、「TCP Wrapper および xinetd」 を参照してください。
- userlist_deny: userlist_enable ディレクティブと併用し、NO に設定すると、userlist_file ディレクティブで指定されたファイルにユーザー名がリストされていない限り、すべてのローカルユーザーはアクセスが拒否されます。クライアントがパスワードを要求する前にアクセスが拒否されるため、このディレクティブを NO に設定すると、ローカルユーザーが暗号化されていないパスワードをネットワーク経由で送信できなくなります。デフォルト値は YES です。
- userlist_enable: 有効にすると、userlist_file ディレクティブで指定されたファイルに一覧表示されるユーザーはアクセスが拒否されます。クライアントがパスワードを要求する前にアクセスが拒否されるため、ユーザーは暗号化されていないパスワードをネットワーク経由で送信できなくなります。デフォルト値は NO です。Red Hat Enterprise Linux 5.10 では、このオプションは 設定ファイルで YES に設定されます。
- userlist_file: userlist_enable ディレクティブが有効な場合に vsftpd が参照するファイルを指定します。デフォルト値は /etc/vsftpd.user_list で、インストール時に作成されます。
26.2.5.3. Anonymous User Options
- anon_mkdir_write_enable: write_enable ディレクティブと組み合わせて使用すると、匿名ユーザーは書き込み権限を持つ親ディレクトリーに新しいディレクトリーを作成できます。デフォルト値は NO です。
- anon_root: 匿名ユーザーのログイン後に vsftpd が変更するディレクトリーを指定します。このディレクティブにはデフォルト値がありません。
- anon_upload_enable: write_enable ディレクティブと組み合わせて使用すると、匿名ユーザーは書き込み権限を持つ親ディレクトリーにファイルをアップロードできます。デフォルト値は NO です。
- anon_world_readable_only: 有効にすると、匿名ユーザーは誰でも読み取り可能なファイルのみをダウンロードできます。デフォルト値は YES です。
- ftp_username: 匿名 FTP ユーザーに使用されるローカルユーザーアカウント(
/etc/passwd
に記載されている)を指定します。ユーザーの/etc/passwd
で指定したホームディレクトリーは、匿名 FTP ユーザーの root ディレクトリーです。デフォルト値は ftp です。 - no_anon_password: 有効にすると、匿名ユーザーはパスワードを要求されません。デフォルト値は NO です。
- secure_email_list_enable: 有効にすると、匿名ログインの指定された電子メールパスワードのリストのみが受け入れられます。これは、仮想ユーザーを必要とせずに、パブリックコンテンツへの制限されたセキュリティーを提供する便利な方法です。提供されたパスワードが /etc/vsftpd.email_passwords に表示されない限り、匿名ログインは阻止されます。ファイル形式は、1 行に 1 つのパスワードで、末尾の空白はありません。デフォルト値は NO です。
26.2.5.4. ローカルユーザーオプション
- chmod_enable - 有効にすると、FTP コマンド SITE CHMOD がローカルユーザーに許可されます。このコマンドを使用すると、ファイルのパーミッションを変更できます。デフォルト値は YES です。
- chroot_list_enable: 有効にすると、chroot_list_file ディレクティブで指定されたファイルに一覧表示されているローカルユーザーは、ログイン時に chroot jail に配置されます。chroot_local_user ディレクティブと組み合わせて使用すると、chroot_list_file ディレクティブで指定されたファイルに一覧表示されるローカルユーザーは、ログイン時に chroot jail に置かれ ません。デフォルト値は NO です。
- chroot_list_file: chroot_list_enable ディレクティブが YES に設定されている場合に、参照されるローカルユーザーの一覧を含むファイルを指定します。デフォルト値は /etc/vsftpd.chroot_list です。
- chroot_local_user: 有効にすると、ローカルユーザーはログイン後にホームディレクトリーに変更します。デフォルト値は NO です。Warningchroot_local_user を有効にすると、特にアップロード権限を持つユーザー向けに、多くのセキュリティー問題が開きます。このため、推奨され ません。
- guest_enable - 有効にすると、匿名以外のすべてのユーザーが guest ( guest_username ディレクティブで指定されたローカルユーザー)としてログインされます。デフォルト値は NO です。
- guest_username: ゲスト ユーザーがマップされるユーザー名を指定します。デフォルト値は ftp です。
- local_root: ローカルユーザーのログイン後に vsftpd が変更するディレクトリーを指定します。このディレクティブにはデフォルト値がありません。
- local_umask - ファイル作成の umask 値を指定します。デフォルト値は 8 進法(ベースが 8 の数値システム)で、接頭辞 0 を含むことに注意してください。それ以外の場合は、値は base-10 整数として処理されます。デフォルト値は 022 です。
- passwd_chroot_enable - chroot_local_user ディレクティブと併用すると、
/etc/passwd
内のホームディレクトリーフィールドにある /./ の発生に基づいて、vsftpd change-roots local users を実行します。デフォルト値は NO です。 - user_config_dir - そのユーザーの特定の設定を含むローカルシステムユーザーの名前を作成する設定ファイルを含むディレクトリーへのパスを指定します。ユーザーの設定ファイルのディレクティブは、
/etc/vsftpd/vsftpd.conf
にあるディレクティブを上書きします。このディレクティブにはデフォルト値がありません。
26.2.5.5. ディレクトリーオプション
- dirlist_enable: 有効にすると、ユーザーはディレクトリー一覧を表示できます。デフォルト値は YES です。
- dirmessage_enable: 有効にすると、ユーザーがメッセージファイルを含むディレクトリーを入力すると常にメッセージが表示されます。このメッセージは、現在のディレクトリー内にあります。このファイルの名前は message_file ディレクティブで指定され、デフォルトでは
.message
です。デフォルト値は NO です。Red Hat Enterprise Linux 5.10 では、このオプションは 設定ファイルで YES に設定されます。 - force_dot_files: 有効にすると、ドット()で始まるファイルはディレクトリーリストに一覧表示され
ます
(. および.
ファイルを除く)。.
デフォルト値は NO です。 - hide_ids: 有効にすると、すべてのディレクトリーの一覧に
ftp
が各ファイルのユーザーおよびグループとして表示されます。デフォルト値は NO です。 - message_file: dirmessage_enable ディレクティブを使用する際のメッセージファイルの名前を指定します。デフォルト値は .message です。
- text_userdb_names: 有効にすると、UID エントリーおよび GID エントリーの代わりにテキストユーザー名とグループ名が使用されます。このオプションを有効にすると、サーバーのパフォーマンスが低下する可能性があります。デフォルト値は NO です。
- use_localtime - 有効にすると、ディレクトリーの一覧が、GMT ではなくコンピューターのローカル時間を表示します。デフォルト値は NO です。
26.2.5.6. ファイル転送オプション
- download_enable: 有効にすると、ファイルのダウンロードが許可されます。デフォルト値は YES です。
- chown_uploads: 有効にすると、匿名ユーザーがアップロードしたすべてのファイルは chown_username ディレクティブで指定されたユーザーによって所有されます。デフォルト値は NO です。
- chown_username: chown_uploads ディレクティブが有効な場合、匿名でアップロードされたファイルの所有権を指定します。デフォルト値は root です。
- write_enable: 有効にすると、DELE、RNFR、STOR など、ファイルシステムを変更できる FTP コマンドが許可されます。デフォルト値は YES です。
26.2.5.7. ロギングのオプション
- dual_log_enable - xferlog_enable と併用すると、vsftpd は、xferlog_file ディレクティブ(デフォルトでは
/var/log/xferlog
)で指定されたファイルに wu-ftpdと互換性のあるログという 2 つのファイルを同時に書き込みます。 vsftpd _log_file ディレクティブで指定された標準の vsftpd ログファイル(デフォルトでは/var/log/vsftpd.log
)。デフォルト値は NO です。 - log_ftp_protocol - xferlog_enable と組み合わせて有効にし、xferlog_std_format を NO に設定すると、すべての FTP コマンドおよび応答がログに記録されます。このディレクティブはデバッグに役立ちます。デフォルト値は NO です。
- syslog_enable: xferlog_enable と併用すると、通常は vsftpd_log_file ディレクティブで指定された標準の vsftpd ログファイル(デフォルトでは
/var/log/vsftpd.log
)に書き込まれたすべてのロギングは、FTPD 機能ではなくシステムロガーに送信されます。デフォルト値は NO です。 - vsftpd_log_file: vsftpd ログファイルを指定します。このファイルを使用するには、xferlog_enable を有効にし、xferlog_std_format を NO に設定する必要があります。または、xferlog_std_format が YES に設定されている場合は、dual_log_enable を有効にする必要があります。syslog_enable が YES に設定されている場合、このディレクティブで指定されたファイルの代わりにシステムログが使用されることに注意してください。デフォルト値は
/var/log/vsftpd.log
です。 - xferlog_enable: 有効にすると、vsftpd は接続をログに記録し(vsftpd 形式のみ)、vsftpd_log_file ディレクティブ(デフォルトでは
/var/log/vsftpd.log
)で指定されたログファイルに情報を転送します。xferlog_std_format が YES に設定されている場合、ファイル転送情報はログに記録されますが、接続はログに記録されず、xferlog_file (デフォルトでは/var/log/xferlog
)で指定されたログファイルが代わりに使用されます。dual_log_enable が YES に設定されている場合は、ログファイルとログ形式の両方が使用されることに注意してください。デフォルト値は NO です。Red Hat Enterprise Linux 5.10 では、このオプションは 設定ファイルで YES に設定されます。 - xferlog_file - wu-ftpd互換のログファイルを指定します。このファイルを使用するには、xferlog_enable を有効にし、xferlog_std_format を YES に設定する必要があります。また、dual_log_enable が YES に設定されている場合にも使用されます。デフォルト値は
/var/log/xferlog
です。 - xferlog_std_format - xferlog_enable と併用すると、wu-ftpdと互換性のあるファイル転送ログのみが xferlog_file ディレクティブで指定されたファイルに書き込まれます(デフォルトでは
/var/log/xferlog
)。このファイルは、ファイル転送のみをログに記録し、サーバーへの接続はログに記録されないことに注意してください。デフォルト値は NO です。Red Hat Enterprise Linux 5.10 では、このオプションは 設定ファイルで YES に設定されます。
26.2.5.8. ネットワークオプション
- accept_timeout: パッシブモードを使用して接続を確立するクライアントの時間を指定します。デフォルト値は 60 です。
- anon_max_rate: 匿名ユーザーの最大データ転送速度をバイト/秒単位で指定します。デフォルト値は 0 で、転送レートを制限しません。
- connect_from_port_20 有効にすると、vsftpd はアクティブモードのデータ転送中にサーバー上でポート 20 を開くのに十分な権限で実行されます。このオプションを無効にすると、vsftpd は権限が少なく実行できますが、一部の FTP クライアントと互換性がない場合があります。デフォルト値は NO です。Red Hat Enterprise Linux 5.10 では、このオプションは 設定ファイルで YES に設定されます。
- connect_timeout - アクティブモードを使用するクライアントがデータ接続に応答する最大時間を秒単位で指定します。デフォルト値は 60 です。
- data_connection_timeout - データ転送を停止できる最大時間を秒単位で指定します。トリガーされると、リモートクライアントへの接続は閉じられます。デフォルト値は 300 です。
- ftp_data_port - connect_from_port_20 が YES に設定されている場合に、アクティブなデータ接続に使用されるポートを指定します。デフォルト値は 20 です。
- idle_session_timeout - リモートクライアントからのコマンド間の最大時間を指定します。トリガーされると、リモートクライアントへの接続は閉じられます。デフォルト値は 300 です。
- listen_address: vsftpd がネットワーク接続をリッスンする IP アドレスを指定します。このディレクティブにはデフォルト値がありません。ヒント異なる IP アドレスを提供する vsftpd のコピーを複数実行する場合は、vsftpd デーモンのコピーごとに、このディレクティブの値が異なる必要があります。マルチホーム FTP サーバーの詳細は、「vsftpdの複数コピーの起動」 を参照してください。
- listen_address6: listen_ipv6 が YES に設定されている場合に、vsftpd がネットワーク接続をリッスンする IPv6 アドレスを指定します。このディレクティブにはデフォルト値がありません。ヒント異なる IP アドレスを提供する vsftpd のコピーを複数実行する場合は、vsftpd デーモンのコピーごとに、このディレクティブの値が異なる必要があります。マルチホーム FTP サーバーの詳細は、「vsftpdの複数コピーの起動」 を参照してください。
- listen_port: vsftpd がネットワーク接続をリッスンするポートを指定します。デフォルト値は 21 です。
- local_max_rate: サーバーにログインしているローカルユーザーの最大レートデータがバイト/秒単位で転送されるように指定します。デフォルト値は 0 で、転送レートを制限しません。
- max_clients: スタンドアロンモードで実行している場合に、サーバーに接続できる同時クライアントの最大数を指定します。追加のクライアント接続があると、エラーメッセージが表示されます。デフォルト値は 0 で、接続を制限しません。
- max_per_ip - 同じソース IP アドレスから接続可能なクライアントの最大数を指定します。デフォルト値は 0 で、接続を制限しません。
- pasv_address: ネットワークアドレス変換(NAT)ファイアウォールの背後にあるサーバー向けのサーバーのパブリック向け IP アドレスの IP アドレスを指定します。これにより、vsftpd はパッシブモード接続の正しいリターンアドレスを渡すことができます。このディレクティブにはデフォルト値がありません。
- pasv_enable: 有効にすると、パッシブモードの接続が許可されます。デフォルト値は YES です。
- pasv_max_port: パッシブモード接続のために FTP クライアントに送信される最大ポートを指定します。この設定はポート範囲を制限するために使用され、ファイアウォールルールの作成が容易になります。デフォルト値は 0 で、パッシブポートの範囲の最大値は制限しません。値は 65535 を超えることができません。
- pasv_min_port: パッシブモード接続の FTP クライアントに送信される最小ポートを指定します。この設定はポート範囲を制限するために使用され、ファイアウォールルールの作成が容易になります。デフォルト値は 0 で、パッシブポート範囲を最小限に制限しません。値は 1024 未満にしないでください。
- pasv_promiscuous: 有効にすると、データ接続は、同じ IP アドレスから発信されていることを確認するためにチェックされません。この設定は、特定のタイプのトンネリングにのみ役立ちます。デフォルト値は NO です。注意絶対に必要なセキュリティー機能は有効にしないでください。パッシブモード接続がデータ転送を開始する制御接続と同じ IP アドレスから送信されることを検証する重要なセキュリティー機能を無効にするためです。
- port_enable: 有効にすると、アクティブモードの接続が許可されます。デフォルト値は YES です。
26.2.6. 関連情報
26.2.6.1. インストールされているドキュメント
/usr/share/doc/vsftpd- <version-number> /
ディレクトリー:< version-number > を、インストールしたvsftpd
パッケージのバージョンに置き換えます。このディレクトリーには、ソフトウェアの基本情報を含むREADME
が含まれています。TUNING
ファイルには基本的なパフォーマンスチューニングのヒントとSECURITY/
ディレクトリーには、vsftpd が使用するセキュリティーモデルに関する情報が含まれています。- vsftpd 関連の man ページ:デーモンおよび設定ファイルの man ページは多数あります。以下は、重要な man ページの一部を示しています。
- サーバーアプリケーション
- man vsftpd: vsftpd で利用可能なコマンドラインオプションを説明しています。
- 設定ファイル
- man vsftpd.conf: vsftpd の設定ファイル内で利用可能なオプションの詳細な一覧が含まれています。
- man 5 hosts_access : TCP ラッパー設定ファイルで利用可能な形式およびオプション(
hosts.allow
およびhosts.deny
)を説明しています。
26.2.6.2. 便利な Web サイト
- http://vsftpd.beasts.org/: vsftpd プロジェクトページは、最新のドキュメントを見つけ、ソフトウェアの作成者に問い合わせるのに適した場所です。
- http://slacksite.com/other/ftp.html: この Web サイトでは、アクティブモードとパッシブモード FTP の相違点を簡単に説明します。
- http://www.ietf.org/rfc/rfc0959.txt: IETF からの FTP プロトコルのオリジナルの Request for Comments (RFC)。
第27章 メール
27.1. メールプロトコル
27.1.1. メール転送プロトコル
27.1.1.1. SMTP
27.1.2. メールアクセスプロトコル
27.1.2.1. POP
cyrus-imapd
パッケージで提供されます。POP サーバーを使用する場合、電子メールメッセージは電子メールクライアントアプリケーションによってダウンロードされます。デフォルトでは、ほとんどの POP 電子メールクライアントでは、電子メールサーバーのメッセージが正常に転送された後に削除されるように自動的に設定されます。ただし、この設定は通常は変更できます。
- APOP: MDS 認証を使用した POP3。ユーザーのパスワードのエンコードされたハッシュは、暗号化されていないパスワードを送信するのではなく、電子メールクライアントからサーバーに送信されます。
- KPOP: Kerberos 認証を使用した POP3。詳細は、「Kerberos」 を参照してください。
- RPOP: RPOP 認証を使用した POP3 です。これは、パスワードに似たユーザーごとの ID を使用し、POP 要求を認証します。ただし、この ID は暗号化されないため、RPOP は標準の POP よりも安全ではありません。
27.1.2.2. IMAP
cyrus-imapd
パッケージで提供されます。IMAP メールサーバーを使用する場合、電子メールメッセージはサーバーに残るので、ユーザーはメッセージの読み取りや削除が可能です。また、IMAP により、クライアントアプリケーションはサーバー上でメールディレクトリーを作成、名前変更、または削除して電子メールを整理および保存することもできます。
27.1.2.3. Dovecot
imap- login
デーモンおよび pop
3-login デーモンは、dovecot
パッケージに含まれています。IMAP および POP の使用は、dovecot
を使用して設定されます。デフォルトでは、dovecot
は IMAP ポートと POP3 ポートの両方でリッスンし、さらに安全なバリアントもリッスンします。dovecot
の使用を開始するには、以下を実行します。
- デーモンを起動します。
service dovecot start
- 次回の再起動後にデーモンが自動的に起動するようにします。
chkconfig dovecot on
dovecot
は IMAP サーバーを起動したことを報告するだけで、POP3 サーバーも起動することに注意してください。
- 必要に応じて、
dovecot
設定ファイル/etc/pki/dovecot/dovecot-openssl.cnf
を編集します。ただし、一般的なインストールでは、このファイルを変更する必要はありません。 /etc/pki/dovecot/certs/dovecot.pem
ファイルおよび/etc/pki/dovecot/private/dovecot.pem
ファイルの名前を変更、移動、または削除します。- dovecot の自己署名証明書を作成する
/usr/share/doc/dovecot-1.0/examples/mkcert.sh
スクリプトを実行します。証明書は、/etc/pki/dovecot/certs
および/etc/pki/dovecot/private
ディレクトリーにコピーされます。変更を実装するには、dovecot
を再起動します(/sbin/service dovecot を再起動します)。
dovecot
の詳細は、オンライン( http://www.dovecot.org )を参照してください。
SSLv2
および SSLv3
は Dovecot では許可されません。POODLE SSL 脆弱性 (CVE-2014-3566) の影響を受けないようにするためです。詳細は、Postfix および Dovecot の POODLE SSL 3.0 脆弱性(CVE-2014-3566)の解決 を参照してください。
27.2. 電子メールプログラムの分類
27.2.1. メール転送エージェント (Mail Transport Agent)
27.2.2. メール配信エージェント (MDA)
27.2.3. メールユーザーエージェント
27.3. メール転送エージェント (MTA)
27.3.1. Sendmail
27.3.1.1. 用途と制約
27.3.1.2. Sendmail のデフォルトのインストール
/usr/sbin/sendmail
です。
/etc/mail/sendmail.cf
です。sendmail.cf
ファイルを直接編集しないでください。Sendmail の設定を変更するには、/etc/mail/sendmail.mc
ファイルを編集し、元の /etc/mail/sendmail.cf
のバックアップを作成し、以下の代替手段を使用して新しい設定ファイルを生成します。
/etc/mail
に含まれる makefile (すべての -C /etc/mail)を使用して、新しい/etc/mail/sendmail.cf
設定ファイルを作成します。必要に応じて、/etc/mail
(db ファイル)で他のすべての生成されたファイルが再生成されます。古い makemap コマンドは引き続き使用できます。make コマンドは、make
パッケージがインストールされて いる場合は、sendmail start | restart | reload により自動的に使用されます。- または、同梱の m4 マクロプロセッサーを使用して、新しい
/etc/mail/sendmail.cf
を作成することもできます。
/etc/mail/
ディレクトリーにインストールされます。
access
: 送信メールに Sendmail を使用できるシステムを指定します。domaintable
- ドメイン名のマッピングを指定します。local-host-names
: ホストのエイリアスを指定します。mailertable
: 特定のドメインのルーティングを上書きする方法を指定します。virtusertable
- ドメイン固有のエイリアス形式を指定し、1 台のマシンで複数の仮想ドメインをホストできるようにします。
/etc/mail/
にある設定ファイルの一部は、Sendmail が設定変更を使用できるようにするために、/etc/mail/ の設定ファイルの一部(ドメインテーブル
、mailertable
、virtusertable
など)をデータベースファイルに保存する必要があります。
データベースファイルの設定に変更を追加する場合は、以下のコマンドを実行します。
@example.com bob@other-example.com
virtusertable.db
ファイルを更新する必要があります。
makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable
virtusertable.db
ファイルが作成されます。
27.3.1.3. Sendmail の一般的な設定変更
/etc/mail/sendmail.cf
ファイルを生成するのが最適です。
sendmail.cf
ファイルを変更する前に、バックアップコピーを作成することが推奨されます。
/etc/mail/sendmail.mc
ファイルを編集します。完了したら、以下のコマンドを実行して m4 マクロプロセッサーを使用して新しい sendmail.cf
を生成します。
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
m4
パッケージに含まれます。
/etc/mail/sendmail.cf
ファイルを作成したら、Sendmail を再起動して変更を反映します。これを行う最も簡単な方法は、以下のコマンドを入力することです。
service sendmail restart
sendmail.cf
ファイルでは、Sendmail はローカルコンピューター以外のホストからのネットワーク接続を受け入れません。Sendmail を他のクライアント用のサーバーとして設定するには、/etc/mail/sendmail.mc
ファイルを編集し、DAEMON_OPTIONS ディレクティブの Addr= オプションで指定されているアドレスを 127.0.0.1 からアクティブなネットワークデバイスの IP アドレスに変更するか、行頭に dnl を配置することで DAEMON_OPTIONS ディレクティブをすべてコメントアウトします。完了したら、以下のコマンドを実行して /etc/mail/sendmail.cf
を再生成します。
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
/etc/mail/sendmail.mc
ファイルを再設定し、新しい /etc/mail/sendmail.cf
を生成する必要があります。
/usr/share/sendmail-cf
ディレクトリー下のディレクトリーにあるファイルを編集する前に、/usr/share/sendmail-cf/README
ファイルを参照してください。これは、/etc/mail/sendmail.cf
ファイルの今後の設定に影響を及ぼす可能性があるためです。
27.3.1.4. マスカレーディング
mail.example.com
という名前のマシンですべての電子メールを処理し、すべての送信メールに一貫した返信アドレスを割り当てるとします。
user@host.example.com
ではなく user@example.com
となるように、会社ネットワーク上のマシン名をマスカレードする必要があります。
/etc/mail/sendmail.mc
に追加します。
FEATURE(always_add_domain)dnl FEATURE(`masquerade_entire_domain')dnl FEATURE(`masquerade_envelope')dnl FEATURE(`allmasquerade')dnl MASQUERADE_AS(`bigcorp.com.')dnl MASQUERADE_DOMAIN(`bigcorp.com.')dnl MASQUERADE_AS(bigcorp.com)dnl
sendmail.cf
を生成した後、この設定は、ネットワーク内からのすべてのメールが bigcorp.com
から送信されたかのように表示されます。
27.3.1.5. Spam の停止
x.edu
)に、ある当事者(y.com
)からのメッセージを受け入れて別の当事者(z.net
)に送信するよう指示しました。しかし、現在は任意のドメインがサーバーを介してメールをリレーするよう Sendmail を設定する必要があります。リレードメインを設定するには、/etc/mail/relay-domains
ファイルを編集して Sendmail を再起動します。
/etc/mail/access
ファイルで利用可能な Sendmail のアクセス制御機能を使用して、不要なホストからの接続を防ぐことができます。以下の例は、このファイルを使用したブロックの方法と Sendmail サーバーへのアクセスを具体的に許可する方法を示しています。
badspammer.com ERROR:550 "Go away and do not spam us anymore" tux.badspammer.com OK 10.0 RELAY
ammer.com
から送信される電子メールが 550 RFC-821 準拠のエラーコードでブロックされ、メッセージがスパムメーマーに戻されます。tux.badspammer.com
サブドメインから送信される電子メールは受け入れられます。最後の行は、10.0.*.* ネットワークから送信された電子メールがメールサーバーを介してリレーできることを示しています。
/etc/mail/access.db
はデータベースであるため、makemap を使用して変更を有効にします。これを行うには、root で以下のコマンドを実行します。
makemap hash /etc/mail/access < /etc/mail/access
/usr/share/sendmail-cf/README
を参照してください。
27.3.1.6. LDAP での Sendmail の使用
エイリアス
や virtusertables
などのメンテナーンスされるファイルを置き換えます。つまり、LDAP はメールルーティングレベルを Sendmail およびその個別の設定ファイルから、多くの異なるアプリケーションで活用できる強力な LDAP クラスターに抽象化します。
/etc/mail/sendmail.mc
を編集して以下を追加します。
LDAPROUTE_DOMAIN('yourdomain.com')dnl FEATURE('ldap_routing')dnl
/usr/share/sendmail-cf/README
を参照してください。
27.3.2. postfix
27.3.2.1. Postfix のデフォルトインストール
/usr/sbin/postfix
です。このデーモンは、メール配信の処理に必要なすべての関連プロセスを起動します。
/etc/postfix/
ディレクトリーに保存します。以下は、一般的に使用されるその他のファイルの一覧です。
access
: アクセス制御に使用します。このファイルは、Postfix に接続できるホストを指定します。aliases
: メールプロトコルで必要な設定可能なリスト。main.cf
: グローバル Postfix 設定ファイル設定オプションの大部分がこのファイルで指定されています。master.cf
: メール配信を完了するために Postfix がさまざまなプロセスと対話する方法を指定します。transport
: 電子メールアドレスをリレーホストにマッピングします。
/etc/postfix/main.cf
ファイルでは、Postfix はローカルコンピューター以外のホストからのネットワーク接続を受け入れることができません。Postfix を他のクライアントのサーバーとして設定する方法は、「Postfix の基本設定」 を参照してください。
/etc/postfix/
ディレクトリーのファイル内で一部のオプションを変更する場合は、変更を有効にするために postfix サービスを再起動する必要がある場合があります。これを行う最も簡単な方法は、以下のコマンドを入力することです。
service postfix restart
27.3.2.2. Postfix の基本設定
- vi などのテキストエディターで
/etc/postfix/main.cf
ファイルを編集します。 - ハッシュマーク(#)を削除して mydomain 行のコメントを解除し、domain.tld をメールサーバーがサービスするドメイン( example.com など)に置き換えます。
- myorigin = $mydomain 行のコメントを解除します。
- myhostname 行のコメントを解除し、host.domain.tld をマシンのホスト名に置き換えます。
- mydestination = $myhostname, localhost.$mydomain 行のコメントを解除します。
- mynetworks 行のコメントを解除し、168.100.189.0/28 を、サーバーに接続可能なホスト用の有効なネットワーク設定に置き換えます。
- inet_interfaces = all 行のコメントを解除します。
- inet_interfaces = localhost 行をコメント化します。
- postfix サービスを再起動します。
/etc/postfix/main.cf
ファイル内のコメントを読むことです。また、Red Hat Enterprise Linux バージョン 5.9 では、Postfix は MySQL マップをサポートします。これにより、Postfix は MySQL データベースを使用し、MySQL データベースに対するさまざまな操作のためにさまざまなルックアップテーブルを設定することができます。たとえば、グローバルメールのリダイレクトを処理する 仮想
テーブル、SMTP サーバーへの アクセス
を制御するアクセステーブル、およびシステム全体のメールリダイレクトを管理するための aliases
テーブルです。設定の詳細と例、および LDAP および SpamAssassin インテグレーションに関する情報を含むその他のその他のリソースは、http://www.postfix.org/ でオンラインで利用できます。
27.3.3. Fetchmail
.fetchmailrc
ファイルを使用して、ユーザーごとに設定されます。
.fetchmailrc
ファイルの設定を使用して、リモートサーバー上にある電子メールを確認し、ダウンロードします。ローカル MTA を使用して電子メールを正しいユーザーのスプールファイルに配置し、ローカルマシンのポート 25 に配信します。Procmail が利用できる場合は起動して電子メールをフィルターし、MUA が読み込むことができるようにメールボックスに配置します。
27.3.3.1. Fetchmail の設定オプション
.fetchmailrc
ファイルを使用する方がはるかに簡単です。希望の設定オプションを .fetchmailrc
ファイルに配置し、それらのオプションが fetchmail コマンドが実行されるたびに使用されるようにします。Fetchmail の実行時にオプションを上書きしたい場合は、コマンドラインでそのオプションを指定します。
.fetchmailrc
ファイルには、3 つのクラスの設定オプションが含まれています。
- グローバルオプション: プログラムの動作を制御する、または電子メールを確認する全接続の設定を提供する指示を Fetchmail に指定します。
- server options: ポーリングされるサーバーに必要な情報(ホスト名など)を指定します。また、チェックするポートやタイムアウトするまで待機する秒数など、特定の電子メールサーバーの設定などです。こうしたオプションは、該当するサーバーを使用する全ユーザーに影響を及ぼします。
- ユーザーオプション: 指定したメールサーバーを使用して電子メールの認証およびチェックに必要なユーザー名とパスワードなどの情報が含まれています。
.fetchmailrc
ファイルの上部に表示され、その後に 1 つ以上のサーバーオプションが表示されます。各オプションは Fetchmail がチェックする異なるメールサーバーを指定します。ユーザーオプションは、そのメールサーバーをチェックする各ユーザーアカウントのサーバーオプションに従います。サーバーオプションと同様に、複数のユーザーオプションを指定することで特定のサーバーでの使用、同一サーバー上の複数の電子メールアカウントの確認を行うことができます。
.fetchmailrc
ファイルでサービスを呼び出します。poll アクションは Fetchmail の実行時にこのサーバーオプションを使用するように Fetchmail に指示します。これは、指定したユーザーオプションを使用して電子メールをチェックします。ただし、skip アクションの後にあるサーバーオプションは、Fetchmail が呼び出されたときにこのサーバーのホスト名が指定されていない限り確認されません。skip オプションは、特定して呼び出された時にスキップされたサーバーのみをチェックし、現在稼働中の設定には影響しないため、.fetchmailrc
の設定をテストする場合に便利です。
.fetchmailrc
ファイルは以下の例のようになります。
set postmaster "user1" set bouncemail poll pop.domain.com proto pop3 user 'user1' there with password 'secret' is user1 here poll mail.domain2.com user 'user5' there with password 'secret2' is user1 here user 'user7' there with password 'secret3' is user1 here
.fetchmailrc
ファイルに配置する必要はありません。with password '<password>' セクション を省略すると、Fetchmail は起動時にパスワードを要求します。
fetchmail
の man ページには、各オプションの詳細が記載されていますが、最も一般的なものがここに記載されています。
27.3.3.2. グローバルオプション
- daemon <seconds >: Fetchmail がバックグラウンドに残るデーモンモードを指定します。< ;seconds& gt; を、Fetchmail がサーバーをポーリングするまで待機する秒数に置き換えます。
- postmaster: 配信に問題が発生した場合にローカルユーザーがメールを送信するように指定します。
- syslog: エラーおよびステータスメッセージのログファイルを指定します。デフォルトでは、これは
/var/log/maillog
です。
27.3.3.3. サーバーオプション
.fetchmailrc
の各行に配置する必要があります。
- auth & lt;auth-type& gt; - <auth-type& gt; を、使用する認証タイプに置き換えます。デフォルトでは パスワード 認証が使用されますが、一部のプロトコルは kerberos_v5、kerberos_v4、および ssh などの他のタイプの認証をサポートします。any 認証タイプを使用する場合、Fetchmail は、パスワードを必要としない方法を最初に試み、次にパスワードをマスクする方法を試み、最後にサーバーに暗号化されていないパスワードの送信を試みます。
- interval & lt;number& gt; - 指定されたサーバーを < number > 毎にポーリングし、設定されたすべてのサーバーで電子メールをチェックします。このオプションは、通常のユーザーがほとんどメッセージを受信しない電子メールサーバーに使用されます。
- port & lt;port-number> ; - < ;port-number> をポート番号に置き換えます。この値は、指定されたプロトコルのデフォルトのポート番号を上書きします。
- proto & lt;protocol > - < protocol > を、サーバー上のメッセージを確認するときに使用する pop3 や imap などのプロトコルに置き換えます。
- timeout & lt;seconds& gt;: & lt;seconds > を、Fetchmail が接続の試行をやめてからサーバーが非アクティブになる秒数に置き換えます。この値が設定されていない場合、デフォルトの 300 秒が想定されます。
27.3.3.4. ユーザーオプション
- fetchall: 既読メッセージを含め Fetchmail がキュー内の全メッセージをダウンロードするように命令します。デフォルトでは、Fetchmail は新規メッセージのみをダウンロードするようになっています。
- fetchlimit & lt;number& gt;: < ;number> を、停止する前に取得するメッセージの数に置き換えます。
- flush: 新規メッセージを取得する前に、キューにあるすべての既読メッセージを削除します。
- limit & lt;max-number-bytes > - < max-number-bytes > を Fetchmail が取得した時にメッセージが許可される最大サイズ(バイト単位)に置き換えます。このオプションでは低速のネットワークリンクが提供されるため、サイズが大きいメッセージのダウンロードに時間がかかりすぎる場合に有用です。
- Password ' <password> ' - & lt;password& gt; をユーザーのパスワードに置き換えます。
- preconnect " <command> " - < command > を、ユーザーのメッセージを取得する前に実行するコマンドに置き換えます。
- postconnect " <command> " - < command > を、ユーザーのメッセージを取得した後に実行するコマンドに置き換えます。
- ssl: SSL 暗号化を有効にします。
- sslproto: 許可された SSL プロトコルまたは TLS プロトコルを定義します。設定可能な値は
SSL2
、SSL3
、SSL23
、およびTLS1
です。ただし、POODLE: SSLv3 脆弱性(CVE-2014-3566 )により、このオプションをTLS1
に設定してください。 - user " <username> ": < ;username> を Fetchmail がメッセージの取得に使用するユーザー名に置き換えます。このオプションは、他のすべてのユーザーオプションの前に付ける必要があります。
27.3.3.5. Fetchmail のコマンドオプション
.fetchmailrc
設定オプションを反映します。この方法では、Fetchmail は設定ファイルの有無を問わず使用できます。これらのオプションは、.fetchmailrc
ファイルに残る方が簡単なため、ほとんどのユーザーはコマンドラインでは使用されません。
.fetchmailrc
設定を一時的に上書きすることが可能です。
27.3.3.6. 情報提供またはデバッグのオプション
- --configdump:
.fetchmailrc
および Fetchmail のデフォルト値からの情報に基づいて、可能なオプションをすべて表示します。このオプションを使用すると、どのユーザーの電子メールも取得されません。 - -s: Fetchmail をサイレントモードで実行し、fetchmail コマンドの後にエラー以外のメッセージが表示されないようにします。
- -v: Fetchmail を verbose モードで実行し、Fetchmail とリモートの電子メールサーバー間の通信をすべて表示します。
- -v: 詳細なバージョン情報の表示、グローバルオプションの一覧表示、電子メールプロトコルや認証方法など、各ユーザーと使用する設定の表示を行います。このオプションを使用すると、どのユーザーの電子メールも取得されません。
27.3.3.7. 特殊なオプション
.fetchmailrc
ファイルにあるデフォルト値を上書きする際に役に立つ場合があります。
- -a: Fetchmail は、新規または既読を問わず、すべてのメッセージをリモートの電子メールサーバーからダウンロードします。デフォルトでは、Fetchmail は新規メッセージのみをダウンロードします。
- -k: Fetchmail はメッセージをダウンロードした後、リモートの電子メールサーバー上にメッセージを残します。このオプションを使用すると、メッセージをダウンロード後に削除するデフォルトの動作は上書きされます。
- -l & lt;max-number-bytes& gt;: Fetchmail は特定のサイズを超えるメッセージはダウンロードせず、リモートの電子メールサーバー上に残します。
- --quit: Fetchmail デーモンのプロセスを終了します。
.fetchmailrc
オプションは、fetchmail の man ページを参照してください。
27.4. メール転送エージェント (MTA) の設定
図27.1 メール転送エージェントスイッチャー
[D]
27.5. メール配信エージェント (MDA)
/etc/procmailrc
または .procmailrc
ファイル(別名 rc ファイル)が存在すると、MTA が新しいメッセージを受信するたびに Procmail が呼び出されます。
rc
ファイルの特定の条件または レシピ と一致するかどうかによって異なります。あるメッセージが任意のレシピと適合する場合、電子メールは特定のファイルに置かれるか削除され、それ以外は処理されます。
/etc/procmailrc
s ディレクトリーの /etc/procmailrcs
ファイルで、デフォルトのシステム全体の Procmail 環境変数とレシピを探します。
その後、Procmail はユーザーのホームディレクトリーで .procmailrc
ファイルを検索します。多くのユーザーは、Procmail 用に追加の rc
ファイルを作成します。このファイルは、ホームディレクトリーの .procmailrc
ファイル内で参照されます。
rc
ファイルが /etc/
ディレクトリーに存在せず、ユーザーのホームディレクトリーに .procmailrc
ファイルが存在しません。そのため、Procmail を使用するには、各ユーザーが特定の環境変数とルールで .procmailrc
ファイルを構築する必要があります。
27.5.1. Procmail の設定
.procmailrc
の開始時に表示されます。
<env-variable>="<value>"
- DEFAULT: どのレシピにも一致しないメッセージが配置されるデフォルトのメールボックスを設定します。デフォルトの DEFAULT 値は、$ORGMAIL と同じです。
- INCLUDERC: 照合するメッセージのレシピを含む追加の
rc
ファイルを指定します。これにより、Procmail レシピの一覧は、スパムのブロックや電子メール一覧の管理など、異なるロールを満たす個々のファイルに分割されます。このファイルは、ユーザーの.procmailrc
ファイルのコメント文字を使用して、オンまたはオンにすることができます。たとえば、ユーザーの.procmailrc
ファイル内の行は以下のようになります。MAILDIR=$HOME/Msgs INCLUDERC=$MAILDIR/lists.rc INCLUDERC=$MAILDIR/spam.rc
ユーザーが電子メールリストの Procmail フィルターをオフにしたいが、スパム制御をそのまま残す場合は、最初の INCLUDERC 行をハッシュマーク文字(#)でコメントアウトします。 - LOCKSLEEP: Procmail が特定のロックファイルの使用を試みる間隔を秒単位で設定します。デフォルトは 8 秒です。
- LOCKTIMEOUT: ロックファイルが最後に変更された後、Procmail が古くて削除可能であるとみなすまでに経過する必要のある時間を秒単位で設定します。デフォルトは 1024 秒です。
- LOGFILE: Procmail の情報やエラーメッセージが書き込まれるファイルです。
- MAILDIR: Procmail の現在の作業用ディレクトリーを設定します。設定されると、他の Procmail のパスはすべてこのディレクトリーに対する相対パスになります。
- ORGMAIL: 元のメールボックス、またはデフォルトまたはレシピで必要な場所にメッセージを配置できない場合にメッセージを配置する別の場所を指定します。デフォルトでは、/var/spool/mail/$LOGNAME の値が使用されます。
- SUSPEND: スワップ領域など必要なリソースが利用できない場合に Procmail が一時停止する時間を秒単位で設定します。
- SWITCHRC: 追加の Procmail レシピを含む外部ファイルを指定できます。ただし、これは INCLUDERC オプションと同様です。ただし、レシピのチェックは参照された設定ファイルで実際に停止され、SWITCHRCの指定ファイルのレシピのみが使用される点が異なります。
- VERBOSE: Procmail が詳細情報をログに記録します。このオプションはデバッグに役立ちます。
procmailrc
man ページを参照してください。
27.5.2. Procmail レシピ
:0<flags>: <lockfile-name> * <special-condition-character> <condition-1> * <special-condition-character> <condition-2> * <special-condition-character> <condition-N> <special-action-character> <action-to-perform>
27.5.2.1. 配信と非配信レシピ
27.5.2.2. フラグ
- a: A や a のフラグのない以前のレシピもこのメッセージに適合する場合にのみ、このレシピが使用されることを指定します。
- A: A または a のフラグが付いた以前のレシピもこのメッセージ と 一致し、正常に完了した場合にのみ、このレシピが使用されることを指定します。
- b: メッセージの本文を解析し、一致する条件を検索します。
- b: ファイルへのメッセージの書き込みや転送など、結果として生じるアクションでボディーを使用します。これはデフォルトの動作です。
- c - メールのカーボンコピーを生成します。必要なアクションをメッセージで実行し、メッセージのコピーは
rc
ファイルで引き続き処理できるため、レシピの配信に役立ちます。 - D: egrep の比較で大文字と小文字を区別します。デフォルトでは、照合プロセスでは大文字と小文字を区別していません。
- e: A フラグと類似していますが、レシピ内の条件は、すぐに E フラグなしのレシピの前のメッセージと一致しない場合にのみ、メッセージと比較されます。これは else アクションと類似しています。
- e: 直前のレシピで指定されたアクションが失敗した場合のみ、レシピがメッセージと比較されます。
- f: フィルターとしてパイプを使用します。
- H: メッセージのヘッダーを解析し、一致する条件を検索します。これはデフォルトで発生します。
- h: 結果として生じるアクションでヘッダーを使用します。これはデフォルトの動作です。
- w: Procmail に対して、指定されたフィルターまたはプログラムが終了するのを待ち、メッセージがフィルターされたとみなす前に成功したかどうかを報告するよう指示します。
- w: プログラム障害のメッセージが抑制されている点を除いて w と同じです。
procmailrc
man ページを参照してください。
27.5.2.3. ローカルロックファイルの指定
27.5.2.4. 特別な条件とアクション
- !: 条件の行では、この文字により条件が反転し、条件がメッセージに一致しない場合にのみ一致が発生するようになります。
- & lt;: メッセージが、指定されているバイト数に収まっているかどうかを確認します。
- & gt; : メッセージが、指定されているバイト数を超えているかどうかを確認します。
- !: アクションの行では、この文字は、メッセージを指定されたメールアドレスに転送するように Procmail に指示します。
- $:
rc
ファイルで以前に設定された変数を参照します。多くの場合は、さまざまなレシピによって参照される共通のメールボックスを設定するために使用されます。 - | - 指定したプログラムを開始し、メッセージを処理します。
- { および }: 適合するメッセージに適用する追加のレシピを格納するために使用されるネストされたブロックを構築します。
27.5.2.5. レシピの例
grep
の man ページにあります。
:0: new-mail.spool
new-mail.spool
という単一の spool ファイルに配置されます。その後、MUA はこのファイルでメッセージを表示できます。
rc
ファイルの末尾に置かれ、メッセージをデフォルトの場所に送ります。
:0 * ^From: spammer@domain.com /dev/null
spammer@domain.com
から送信されたメッセージはすべて /dev/null
デバイスに送信され、削除されます。
/dev/null
にメッセージを送信する前に、ルールが意図したとおりに機能していることを確認してください。レシピが間違えて目的以外のメッセージを対象にすると、それらのメッセージは消えてしまい、ルールのトラブルシューティングが困難になります。
/dev/null
に送信するようアクションに指示します。
:0: * ^(From|CC|To).*tux-lug tuxlug
tux-lug@domain.com
メーリングリストから送信されたメッセージはすべて、MUA の tuxlug
メールボックスに自動的に配置されます。From
、CC
、または To
行にメーリングリストのメールアドレスがある場合に、この例の条件がメッセージと一致することに注意してください。
27.5.2.6. spam フィルター
~/.procmailrc
ファイルの最上部付近に以下の行を配置することです。
INCLUDERC=/etc/mail/spamassassin/spamassassin-default.rc
/etc/mail/spamassassin/spamassassin-default.rc
には、すべての受信メールに対して SpamAssassin を有効にする簡単な Procmail ルールが含まれています。電子メールがスパムであると判断された場合には、ヘッダー内でタグ付けされ、タイトルの先頭には以下のようなパターンが追加されます。
*****SPAM*****
:0 Hw * ^X-Spam-Status: Yes spam
spam
と呼ばれるメールボックスにファイルとして保存されます。
service spamassassin start
spamassassin
サービスをオンにします。initscript ユーティリティーの詳細は、18章 を参照してください。
~/.procmailrc
ファイルの最上部付近に以下の行を追加します。システム全体の設定の場合は、/etc/procmailrc
に配置します。
INCLUDERC=/etc/mail/spamassassin/spamassassin-spamc.rc
27.6. メールユーザーエージェント
27.6.1. 通信のセキュリティー保護
27.6.1.1. セキュアな電子メールクライアント
27.6.1.2. 電子メールクライアントの通信のセキュリティー保護
/etc/pki/tls/certs/
ディレクトリーに移動し、root で以下のコマンドを入力します。
rm -f cyrus-imapd.pem make cyrus-imapd.pem
/etc/pki/tls/certs/
ディレクトリーに移動し、root で以下のコマンドを入力します。
rm -f ipop3d.pem make ipop3d.pem
imapd.pem
ファイルおよび ipop3d.pem
ファイルを必ず削除してください。
/etc/imapd.conf
ファイルに以下の行を追加して、セキュアでない SSL プロトコルを無効にします。
tls_cipher_list: TLSv1+HIGH:!aNull:@STRENGTH
/etc/cyrus.conf
で IMAPS および POP3 を無効にする必要があります。これを行うには、imaps
および pop3s
を含む行をコメントアウトし、cyrus-imapd サービスを再起動します。
/etc/pki/tls/certs/
ディレクトリーに移動し、以下のコマンドを入力します。
make stunnel.pem
/etc/stunnel/
ディレクトリーが含まれています。stunnel はファイル名やその拡張子の特別な形式を必要としませんが、/etc/stunnel/stunnel.conf
を使用してください。以下のコンテンツは、stunnel をセキュアな IMAP および POP の TLS ラッパーとして設定します。
cert = /etc/pki/tls/certs/stunnel.pem ; Allow only TLS, thus avoiding SSL options = NO_SSLv2 options = NO_SSLv3 chroot = /var/run/stunnel setuid = nobody setgid = nobody pid = /stunnel.pid socket = l:TCP_NODELAY=1 socket = r:TCP_NODELAY=1 [pop3s] accept = 995 connect = 110 [imaps] accept = 993 connect = 143
stunnel /etc/stunnel/stunnel.conf
/usr/share/doc/ stunnel - <version-number > /
ディレクトリーのドキュメントを参照してください。< version-number > は stunnel のバージョン番号に置き換えてください。
27.7. 関連情報
27.7.1. インストールされているドキュメント
- Sendmail の設定に関する情報は、sendmail パッケージおよび
sendmail
-cf/usr/share/sendmail-cf/README
: m4、Sendmail のファイルの場所、サポートされるメーラー、強化機能へのアクセス方法などに関する情報が含まれています。
さらに、sendmail
およびaliases
の man ページには、Sendmail のさまざまなオプションと Sendmail/etc/mail/aliases
ファイルの適切な設定に関する役立つ情報が含まれています。 /usr/share/doc/postfix- <version-number>:
Postfix の設定方法に関する多くの情報が含まれています。< ;version-number> を Postfix のバージョン番号に置き換えてください。/usr/share/doc/fetchmail- <version-number
>:FEATURES
ファイルの Fetchmail 機能の完全一覧と、入門的なFAQ
ドキュメントが含まれています。< ;version-number> を Fetchmail のバージョン番号に置き換えてください。/usr/share/doc/procmail- <version-number
>: Procmail の概要を提供するREADME
ファイル、すべてのプログラム機能を調べるFEATURES
ファイル、設定に関する多くの質問に対する回答が含まれるFAQ
ファイルが含まれます。< ;version-number> を Procmail のバージョン番号に置き換えてください。Procmail の仕組みや新しいレシピの作成方法を学習する場合は、以下にあげる Procmail の man ページが非常に役立ちます。Procmail
: Procmail の仕組みと電子メールのフィルターリングに必要な手順を概説します。procmailrc
: レシピの構築に使用されるrc
ファイル形式を説明します。procmailex
: 実環境向けの役立つ Procmail レシピを多数紹介します。procmailsc
- 特定のレシピとメッセージを適合するために Procmail が使用する重みのスコアリング手法を説明します。/usr/share/doc/spamassassin- <version-number> /
: SpamAssassin に関する多くの情報が含まれています。< ;version-number> を、spamassassin
パッケージのバージョン番号に置き換えてください。
27.7.2. 便利な Web サイト
- http://www.sendmail.org/: Sendmail の機能の詳細、ドキュメント、設定例を提供します。
- http://www.sendmail.com/: Sendmail に関する記事、概要、および記事が含まれています。これには、利用可能な多くのオプションの幅広いビューが含まれます。
- http://www.postfix.org/: Postfix プロジェクトのホームページには、Postfix に関する多くの情報が含まれています。メーリングリストは、特に情報検索に役立ちます。
- http://fetchmail.berlios.de/: Fetchmail のホームページ、オンラインマニュアル、および詳細な FAQ です。
- http://www.procmail.org/: Procmail のホームページでは、Procmail 専用の各種メーリングリストへのリンクと、さまざまな FAQ ドキュメントが記載されています。
- http://partmaps.org/era/procmail/mini-faq.html - 優れた Procmail FAQ で、トラブルシューティングのヒント、ファイルロックの詳細、ワイルドカード文字の使用について説明します。
- http://www.uwasa.fi/~ts/info/proctips.html - Procmail の使用がはるかに簡単にする多数のヒントが含まれています。
.procmailrc
ファイルをテストし、Procmail スクリプトレットを使用して、特定のアクションを実行する必要があるかどうかを判断する手順が含まれています。 - http://www.spamassassin.org/: SpamAssassin プロジェクトの公式サイトです。
27.7.3. 関連書籍
- 『Sendmail Milters: A Guide for Fighting Spam』 by Bryan Costales and Marcia Flynt; Addison-Wesley: メールフィルターのカスタマイズに役立つ優れた Sendmail ガイドです。
- 『Sendmail』 (Bryan Costales、Eric Allman et al)、O'Reilly & Associates - Delivermail と Sendmail のオリジナル作成者のサポートを受けている優れた Sendmail リファレンスです。
- 『Spam の削除:Geoff Mulligan による電子メール処理とフィルターリング』、Addison-Wesley Publishing Company - Sendmail や Procmail などの確立されたツールを使用してスパムの問題を管理する電子メール管理者が使用するさまざまな方法を調べるボリュームです。
- 『Internet Email Protocols: A Developer's Guide』 by Kevin Johnson; Addison-Wesley Publishing Company - 主要な電子メールプロトコルと、それが提供するセキュリティーについて非常に詳細なレビューを提供します。
- 『Managing IMAP』 by Dianna Mullet and Kevin Mullet; O'Reilly & Associates - IMAP サーバーの設定に必要な手順について詳しく説明します。
第28章 Lightweight Directory Access Protocol (LDAP)
28.1. LDAP を使用する理由
SSLv3
に依存しないことを推奨しています。OpenLDAP は、SSLv3
を効果的に無効にできるようにする設定パラメーターを提供しないシステムコンポーネントの 1 つです。リスクを軽減するには、stunnel コマンドを使用してセキュアなトンネルを提供し、SSLv3
の使用から stunnel を無効にすることが推奨されます。
28.1.1. OpenLDAP の機能
- LDAPv3 サポート: OpenLDAP は、その他の改善の中で Simple Authentication and Security Layer (SASL)および TLS (Transport Layer Security)をサポートします。LDAPv2 は LDAP をよりセキュアにするように設計されています。
- IPv6 サポート: OpenLDAP は、次世代インターネットプロトコルバージョン 6 をサポートします。
- LDAP Over IPC: OpenLDAP はプロセス間通信(IPC)を使用してシステム内で通信できます。これにより、ネットワーク上で通信する必要がなくなるため、セキュリティーが強化されます。
- 更新された C API: プログラマーが LDAP ディレクトリーサーバーに接続し、使用する方法を改良します。
- LDIFv1 サポート: LDAP Data Interchange Format (LDIF)バージョン 1 への完全準拠を提供します。
- Enhanced Stand-Alone LDAP サーバー: 更新されたアクセス制御システム、スレッドプール、より良いツールなどが含まれています。
28.2. LDAP の用語
- エントリー: LDAP ディレクトリー内の単一のユニット。各エントリーは、一意の識別名 (DN)で識別 されます。
- 属性 - エントリーに直接関連付けられた情報。たとえば、組織は LDAP エントリーとして表示できます。組織に関連付けられた属性には、fax 番号、アドレスなどが含まれる場合があります。また、ユーザーの電話番号やメールアドレスなどの一般的な属性を使用して、LDAP ディレクトリーのエントリーとして表示できます。一部の属性は必須ですが、他の属性は任意です。objectclass 定義は、各エントリーに必要な属性を設定します。objectClass 定義は、
/etc/openldap/schema/
ディレクトリーにあるさまざまなスキーマファイルにあります。詳細は、「/etc/openldap/schema/
ディレクトリー」 を参照してください。属性とそれに対応する値のアサーションは、RDN ( Relative Distinguished Name )とも呼ばれます。RDN はエントリーごとに一意ですが、DN はグローバルに一意です。 - LDIF: LDAP データ交換形式 (LDIF)は LDAP エントリーの ASCII テキスト表現です。LDAP サーバーへのデータのインポートに使用されるファイルは LDIF 形式である必要があります。LDIF エントリーは以下の例のようになります。
[<id>] dn: <distinguished name> <attrtype>: <attrvalue> <attrtype>: <attrvalue> <attrtype>: <attrvalue>
各エントリーには 、必要に応じて任意の数の <attrtype>: <attrvalue> ペア を含めることができます。空白行は、エントリーの最後を示します。注意この情報 を使用するには、すべての < attrtype > and <attrvalue > ペアを対応するスキーマファイルに定義する 必要があり ます。< および > で囲まれた値は変数で、新しい LDAP エントリーが作成されるたびに設定できます。 ただし、このルールは < id > には適用されません。< ;id> は、エントリーの編集に使用されるアプリケーションによって決定される番号です。
28.3. OpenLDAP デーモンとユーティリティー
OpenLDAP
: OpenLDAP サーバーおよびクライアントアプリケーションの実行に必要なライブラリーが含まれます。openldap-clients
: LDAP サーバーのディレクトリーを表示および変更するコマンドラインツールが含まれます。openldap-servers
: LDAP サーバーの設定および実行に必要なサーバーおよびその他のユーティリティーが含まれます。
openldap-servers
パッケージには、Standalone LDAP Daemon (/usr/sbin/slapd)と Standalone LDAP Update Replication Daemon (/usr/sbin/slurpd)の 2 つのサーバーが含まれています。
openldap-servers
パッケージにより、以下のユーティリティーが /usr/sbin/
ディレクトリーにインストールされます。
- slapadd: LDIF ファイルから LDAP ディレクトリーにエントリーを追加します。たとえば、/usr/sbin/slapadd -l ldif-input コマンドは、新しいエントリーを含む LDIF ファイル
ldif-input
で読み取ります。重要な影響root ユーザーのみが /usr/sbin/slapadd を使用できます。ただし、ディレクトリーサーバーはldap
ユーザーとして実行されます。したがって、ディレクトリーサーバーは slapadd が作成したファイルを変更できません。この問題を修正するには、slapadd を使用してから、以下のコマンドを入力します。chown -R ldap /var/lib/ldap
- slapcat - デフォルト形式の LDAP ディレクトリーからプルし、Sleepycat Software の Berkeley DB システムに保存し、LDIF ファイルに保存します。たとえば、コマンド /usr/sbin/slapcat -l ldif-output は、LDAP ディレクトリーからのエントリーを含む
ldif-output
という LDIF ファイルを出力します。 - slapindex - 現在のコンテンツに基づいて slapd ディレクトリーを再インデックスします。このツールは、
/etc/openldap/slapd.conf
内のインデックスオプションが変更されるたびに実行する必要があります。 - slappasswd: slapd 設定ファイルの ldapmodify または rootpw 値で使用する暗号化されたユーザーパスワード値(
/etc/openldap/slapd.conf
)を生成します。/usr/sbin/slappasswd コマンドを実行してパスワードを作成します。
openldap-clients
パッケージは、LDAP ディレクトリーのエントリーの追加、変更、および削除に使用される /usr/bin/
にツールをインストールします。これらのツールには、以下が含まれます。
- ldapadd: ファイルまたは標準入力で入力を受け入れることで LDAP ディレクトリーにエントリーを追加します。ldapadd は、ldapmodify -a へのハードリンクです。
- ldapdelete: シェルプロンプトまたはファイルを介してユーザー入力を受け入れることで、LDAP ディレクトリーからエントリーを削除します。
- ldapmodify: LDAP ディレクトリーのエントリーを変更し、ファイルまたは標準入力による入力を受け入れます。
- ldappasswd: LDAP ユーザーのパスワードを設定します。
- ldapsearch: シェルプロンプトを使用して LDAP ディレクトリー内のエントリーを検索します。
- ldapcompare: LDAP サーバーへの接続を開き、指定のパラメーターを使用して比較を行い、実行します。
- ldapwhoami: LDAP サーバーへの接続を開き、バインドし、whoami 操作を実行します。
- ldapmodrdn: LDAP サーバーへの接続を開き、エントリーの RDN を変更し、変更します。
28.3.1. NSS、PAM、および LDAP
nss_ldap
と呼ばれるパッケージが含まれており、このパッケージにより、LDAP の Linux 環境や他の UNIX 環境への統合が強化されます。
nss_ldap
パッケージは、以下のモジュールを提供します。< ;version> は、使用中の libnss_ldap
のバージョンを参照します。
/lib/libnss_ldap-<version>.so
/lib/security/pam_ldap.so
nss_ldap
パッケージは、Itanium アーキテクチャーまたは AMD64 アーキテクチャーに以下のモジュールを提供します。
/lib64/libnss_ldap-<version>.so
/lib64/security/pam_ldap.so
libnss_ldap- <version > .so
モジュールを使用すると、アプリケーションは glibc の Nameservice Switch (NSS)インターフェイスを介して LDAP ディレクトリーを使用してユーザー、グループ、ホスト、およびその他の情報を検索できます。NSS を使用すると、アプリケーションは NIS ネームサービスとフラット認証ファイルとともに LDAP を使用して認証できます。
pam_ldap
モジュールにより、PAM 対応のアプリケーションは LDAP ディレクトリーに保存されている情報を使用してユーザーを認証できます。PAM 対応アプリケーションには、コンソールログイン、POP および IMAP メールサーバー、および Samba が含まれます。ネットワークに LDAP サーバーをデプロイすることで、これらのアプリケーションはすべて同じユーザー ID とパスワードの組み合わせを使用して認証できるため、管理を大幅に簡素化できます。
28.3.2. PHP4、LDAP、および Apache HTTP Server
php-ldap
パッケージは、/usr/lib/php4/ldap.so
モジュールを介して PHP4 HTML 組み込みスクリプト言語に LDAP サポートを追加します。このモジュールにより、PHP4 スクリプトは LDAP ディレクトリーに保存されている情報にアクセスできます。
mod_authz_ldap
モジュールが同梱されています。このモジュールは、サブジェクトの識別名の短い形式とクライアント SSL 証明書の発行者を使用して、LDAP ディレクトリー内のユーザーの識別名を決定します。また、ユーザーの LDAP ディレクトリーエントリーの属性に基づいてユーザーを作成したり、アセットのユーザーおよびグループ権限に基づいてアセットへのアクセスを判断したり、パスワードの期限が切れたユーザーのアクセスを拒否したりすることもできます。mod_authz_ldap
モジュールを使用する場合は、mod_ssl
モジュールが必要です。
mod_authz_ldap
モジュールは、暗号化されたパスワードハッシュを使用して LDAP ディレクトリーに対してユーザーを認証しません。この機能は、Red Hat Enterprise Linux に含まれていない実験的な mod_auth_ldap
モジュールにより提供されます。このモジュールのステータスの詳細は、Apache Software Foundation の Web サイト( http://www.apache.org/ )を参照してください。
28.3.3. LDAP クライアントアプリケーション
28.4. OpenLDAP 設定ファイル
/etc/openldap/
ディレクトリーにインストールされます。以下は、最も重要なディレクトリーおよびファイルを強調表示する簡単な一覧です。
/etc/openldap/ldap.conf
: これは、ldapsearch、ldapadd、Sendmail、Evolution、Gnome Meeting などの OpenLDAP ライブラリーを使用するすべての クライアント アプリケーションの設定ファイルです。/etc/openldap/schema/
ディレクトリー:このサブディレクトリーには、slapd デーモンが使用するスキーマが含まれます。詳細は、「/etc/openldap/schema/
ディレクトリー」 を参照してください。
nss_ldap
パッケージがインストールされている場合は、/etc/ldap.conf
という名前のファイルが作成されます。このファイルは、nss_ldap
パッケージが提供する PAM モジュールおよび NSS モジュールによって使用されます。詳細は、「OpenLDAP を使用してシステムを認証するためのシステムの設定」 を参照してください。
28.5. /etc/openldap/schema/
ディレクトリー
/etc/openldap/schema/
ディレクトリーは、以前は slapd.at.conf
ファイルおよび slapd.oc.conf
ファイルにある LDAP 定義を保持します。/etc/openldap/schema/redhat/
ディレクトリーは、Red Hat Enterprise Linux 用に Red Hat が配信するカスタマイズされたスキーマを保持します。
include
行を使用して /etc/openldap/slapd.conf
で参照されます。
include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema include /etc/openldap/schema/rfc822-MailMember.schema include /etc/openldap/schema/redhat/autofs.schema
/etc/openldap/schema/
ディレクトリーに local.schema
ファイルを作成します。デフォルトの include
schema 行の下に以下の行を追加して、slapd.conf
内でこの新しいスキーマを参照します。
include /etc/openldap/schema/local.schema
local.schema
ファイル内の新しい属性タイプとオブジェクトクラスを定義します。多くの組織は、デフォルトでインストールされているスキーマファイルから既存の属性タイプを使用し、新しいオブジェクトクラスを local.schema
ファイルに追加します。
28.6. OpenLDAP 設定の概要
- http://www.openldap.org/doc/admin/quickstart.html: OpenLDAP Web サイトの 『Quick-Start Guide』
- http://www.tldp.org/HOWTO/LDAP-HOWTO/index.html : Linux ドキュメントプロジェクトの 『LDAP Linux HOWTO』 です。
openldap
、openldap-servers
、およびopenldap-clients
RPM をインストールします。/etc/openldap/slapd.conf
ファイルを編集し、LDAP ドメインおよびサーバーを指定します。詳細は、「Editing/etc/openldap/slapd.conf
」 を参照してください。- コマンドで slapd を起動します。
service ldap start
LDAP の設定後に、chkconfig、/usr/sbin/ntsysv、または Services Configuration Tool を使用して、システムの起動時に LDAP が起動するように設定します。サービスの設定に関する詳細は、18章 を参照してください。 - ldapadd を使用して LDAP ディレクトリーにエントリーを追加します。
- ldapsearch を使用して、slapd が情報に正しくアクセスしているかどうかを判断します。
- この時点で、LDAP ディレクトリーが適切に機能し、LDAP 対応のアプリケーションで設定できます。
28.6.1. Editing /etc/openldap/slapd.conf
/etc/openldap/slapd.conf
を変更して、正しいドメインおよびサーバーを指定します。
suffix "dc=your-domain,dc=com"
suffix "dc=example,dc=com"
rootdn "cn=root,dc=example,dc=com"
slappasswd
/etc/openldap/slapd.conf
にコピーし、ハッシュマーク(#)を削除します。
rootpw {SSHA}vv2y+i6V6esazrIv70xSSnNAJE18bb2u
/etc/openldap/slapd.conf
に指定された rootpw ディレクティブを含む LDAP パスワードは、暗号化されて い ないネットワークを介して送信されます。
/etc/openldap/slapd.conf
のコメントを確認し、slapd.conf
の man ページを参照してください。
ldap
ユーザーとして実行されます。したがって、ディレクトリーサーバーは、slapadd が作成したファイルを変更できません。この問題を修正するには、slapadd を使用してから、以下のコマンドを入力します。
chown -R ldap /var/lib/ldap
28.7. OpenLDAP を使用してシステムを認証するためのシステムの設定
必要な LDAP パッケージをインストールします。
まず、適切なパッケージが LDAP サーバーと LDAP クライアントマシンの両方にインストールされていることを確認します。LDAP サーバーには openldap-servers
パッケージが必要です。
openldap
-clients
パッケージ、および nss_ldap
パッケージは、すべての LDAP クライアントマシンにインストールする必要があります。
設定ファイルを編集します。
- サーバーで、LDAP サーバーの
/etc/openldap/slapd.conf
ファイルを編集して、組織の詳細と一致するようにします。slapd.conf
の編集方法は、「Editing/etc/openldap/slapd.conf
」 を参照してください。 - クライアントマシンで、
/etc/ldap.conf
と/etc/openldap/ldap.conf
の両方に適切なサーバーが含まれ、組織のベース情報を検索する必要があります。これを行うには、グラフィカル 認証設定ツール(system-config-authentication )を実行し、User Information タブで Enable LDAP Support を選択します。これらのファイルを手動で編集することもできます。 - クライアントマシンで、LDAP を使用するように
/etc/nsswitch.conf
を編集する必要があります。これを行うには、Authentication Configuration Tool (system-config-authentication)を実行し、User Information タブで Enable LDAP Support を選択します。/etc/nsswitch.conf
を手動で編集する場合は、ldap を適切な行に追加します。以下に例を示します。passwd: files ldap shadow: files ldap group: files ldap
28.7.1. PAM および LDAP
28.7.2. 以前の認証情報の LDAP 形式への移行
/usr/share/openldap/migration/
ディレクトリーには、認証情報を LDAP 形式に移行するシェルおよび Perl スクリプトのセットが含まれます。
migrate_common.ph
ファイルを変更します。デフォルトの DNS ドメインはデフォルト値から以下のように変更する必要があります。
$DEFAULT_MAIL_DOMAIN = "example";
$DEFAULT_BASE = "dc=example,dc=com";
/usr/share/openldap/migration/
ディレクトリーの README
ファイルおよび migration-tools.txt
ファイルは、情報の移行方法の詳細を提供します。
表28.1 LDAP 移行スクリプト
既存のネームサービス | LDAP が稼働しているか ? | 使用するスクリプト |
---|---|---|
/etc フラットファイル | はい | migrate_all_online.sh |
/etc フラットファイル | いいえ | migrate_all_offline.sh |
NetInfo | はい | migrate_all_netinfo_online.sh |
NetInfo | いいえ | migrate_all_netinfo_offline.sh |
NIS (YP) | はい | migrate_all_nis_online.sh |
NIS (YP) | いいえ | migrate_all_nis_offline.sh |
28.8. 以前のリリースからのディレクトリーの移行
- オペレーティングシステムをアップグレードする前に、コマンド /usr/sbin/slapcat -l ldif-output を実行します。これにより、LDAP ディレクトリーからのエントリーを含む
ldif-output
という LDIF ファイルが出力されます。 - オペレーティングシステムをアップグレードします。LDIF ファイルを含むパーティションを再フォーマットしないように注意してください。
- コマンド /usr/sbin/slapadd -l ldif-output を実行して、LDAP ディレクトリーをアップグレードされた Berkeley DB 形式に再インポートします。
28.9. 関連情報
28.9.1. インストールされているドキュメント
/usr/share/docs/openldap- <versionnumber> /
ディレクトリー:一般的なREADME
ドキュメントとその他の情報が含まれています。- LDAP 関連の man ページ:LDAP に関連するさまざまなアプリケーションおよび設定ファイルに関する man ページが多数あります。以下は、より重要な man ページの一部の一覧です。
- クライアントアプリケーション
- man ldapadd: LDAP ディレクトリーにエントリーを追加する方法を説明します。
- man ldapdelete: LDAP ディレクトリー内のエントリーを削除する方法を説明します。
- man ldapmodify: LDAP ディレクトリー内のエントリーを変更する方法を説明します。
- man ldapsearch: LDAP ディレクトリー内のエントリーを検索する方法を説明します。
- man ldappasswd: LDAP ユーザーのパスワードを設定または変更する方法を説明します。
- man ldapcompare - ldapcompare ツールの使用方法が説明されています。
- man ldapwhoami - ldapwhoami ツールの使用方法について説明しています。
- man ldapmodrdn - エントリーの RDN を変更する方法を説明します。
- サーバーアプリケーション
- man slapd: LDAP サーバーのコマンドラインオプションを説明しています。
- man slurpd: LDAP レプリケーションサーバーのコマンドラインオプションを説明しています。
- 管理アプリケーション
- man slapadd: slapd データベースにエントリーを追加するために使用されるコマンドラインオプションを説明しています。
- man slapcat - slapd データベースから LDIF ファイルを生成するために使用されるコマンドラインオプションを説明しています。
- man slapindex - slapd データベースの内容に基づいてインデックスを再生成するために使用されるコマンドラインオプションを説明しています。
- man slappasswd: LDAP ディレクトリーのユーザーパスワードを生成するために使用されるコマンドラインオプションを説明しています。
- 設定ファイル
- man ldap.conf: LDAP クライアントの設定ファイル内で使用できるフォーマットおよびオプションを説明しています。
- man slapd.conf - LDAP サーバーアプリケーション(slapd および slurpd)と LDAP 管理ツール(slapadd、slapcat、および slapindex)の両方で参照される設定ファイル内で利用可能な形式とオプションを説明しています。
28.9.2. 便利な Web サイト
- http://www.openldap.org/ - OpenLDAP プロジェクトのホーム。この Web サイトには、OpenLDAP の設定に関する情報と、今後のロードマップとバージョン変更に関する情報が含まれています。
- http://www.kingsmountain.com/ldapRoadmap.shtml - Jeff Hodges' LDAP Road Map には、複数の便利な FAQ へのリンクと、LDAP プロトコルに関する注意事項が含まれています。
- http://www.ldapman.org/articles/: ディレクトリーツリーの設計およびディレクトリー構造のカスタマイズ方法など、LDAP の概要を提供する記事です。
28.9.3. 関連書籍
- 『OpenLDAP by John』 Terpstra and Benjamin Coles; Prentice Hall.
- Mark Wilcox による 『LDAP の実装』、Wrox Press, Inc.
- 『Understanding and Deploying LDAP Directory Services』 by Tim Howes et al.; Macmillan Technical Publishing
第29章 authentication-configuration
29.1. ユーザー情報
図29.1 ユーザー情報
[D]
NIS
Enable NIS Support オプションは、ユーザーとパスワード認証のために NIS サーバーに接続するようにシステムを設定します(NIS クライアントとして)。NIS の設定 ボタンをクリックして、NIS ドメインおよび NIS サーバーを指定します。NIS サーバーが指定されていない場合、デーモンはブロードキャスト経由で検索を試みます。
ypbind
パッケージをインストールする必要があります。NIS サポートを有効にすると、portmap サービスおよび ypbind サービスが起動し、システムの起動時に開始することもできます。
LDAP
Enable LDAP Support オプションは、システムに LDAP 経由でユーザー情報を取得するように指示します。Configure LDAP... ボタンをクリックして以下を指定します。
- LDAP 検索ベース DN: リストされた識別名(DN)を使用してユーザー情報を取得するように指定します。
- LDAP サーバー: LDAP サーバーの IP アドレスを指定します。
- TLS を使用して接続を暗号化 します。有効にすると、Transport Layer Security を使用して LDAP サーバーに送信されるパスワードを暗号化します。Download CA Certificate オプションを使用すると、有効な CA (認証局) 証明書をダウンロードする URL を指定できます。有効な CA 証明書は PEM (Privacy Enhanced Mail)形式である必要があります。CA 証明書の詳細は、「証明書およびセキュリティーの概要」 を参照してください。
openldap-clients
パッケージをインストールする必要があります。
hesiod
Enable Hesiod Support オプションは、リモートの Hesiod データベースから情報(ユーザー情報を含む)を取得するようにシステムを設定します。Configure Hesiod... ボタンをクリックして以下を指定します。
- Hesiod LHS - Hesiod クエリーに使用されるドメイン接頭辞を指定します。
- Hesiod RHS - デフォルトの Hesiod ドメインを指定します。
hesiod
パッケージをインストールする必要があります。
hesiod.conf
の man ページ(man hesiod.conf)を参照してください。
Winbind
Enable Winbind Support オプションは、システムが Windows Active Directory または Windows ドメインコントローラーに接続するように設定します。指定したディレクトリーまたはドメインコントローラーからのユーザー情報にアクセスできるようになり、サーバーの認証オプションを設定できます。Configure Winbind... ボタンをクリックして以下を指定します。
- Winbind ドメイン: 接続する Windows Active Directory またはドメインコントローラーを指定します。
- Security Model - クライアントが Samba に応答する方法を設定するセキュリティーモデルを選択できます。ドロップダウンリストでは、以下のいずれかを選択できます。
- user: これはデフォルトのモードです。このレベルのセキュリティーでは、クライアントは最初に有効なユーザー名とパスワードを使用してログインする必要があります。このセキュリティーモードでは、暗号化されたパスワードを使用することもできます。
- サーバー - このモードでは、Samba は別の SMB サーバー(Windows NT Server など)で認証してユーザー名/パスワードの検証を試みます。試行に失敗すると、代わりに ユーザー モードが有効になります。
- ドメイン - このモードでは、Windows NT Server の仕組みと同様に、Samba は Windows NT Primary または Backup Domain Controller で認証してユーザー名/パスワードの検証を試みます。
- ads - このモードは、Samba が Active Directory Server (ADS)レルムでドメインメンバーとして機能するように指示します。このモードで動作するには、
krb5-server
パッケージがインストールされ、Kerberos を適切に設定する必要があります。
- Winbind ADS レルム: ads セキュリティーモデルを選択すると、Samba サーバーがドメインメンバーとして機能させる ADS レルムを指定できます。
- Winbind ドメインコントローラー: このオプションを使用して、winbind が使用するドメインコントローラーを指定します。ドメインコントローラーの詳細は、「ドメインコントローラー」 を参照してください。
- テンプレートシェル: Windows NT ユーザーのユーザー情報を入力する際に、winbindd デーモンはここで選択した値を使用して、そのユーザーのログインシェルを指定します。
29.2. 認証
図29.2 認証
[D]
Kerberos
Kerberos サポートを有効 にする オプションは、Kerberos 認証を有効にします。Configure Kerberos... ボタンをクリックして Kerberos Settings ダイアログを開き、以下を設定します。
- realm: Kerberos サーバーのレルムを設定します。レルムは、Kerberos を使用するネットワークで、1 つ以上の KDC と潜在的に多数のクライアントで設定されます。
- KDC: Kerberos チケットを発行するサーバーである Key Distribution Center (KDC)を定義します。
- 管理サーバー - kadmind を実行する管理サーバーを指定します。
させるには、krb5-libs
パッケージおよび krb5-workstation
パッケージをインストールする必要があります。Kerberos の詳細は、「Kerberos」 を参照してください。
LDAP
Enable LDAP Support オプションは、認証に LDAP を使用するように標準の PAM 対応アプリケーションに指示します。Configure LDAP... ボタンを使用すると、Configure LDAP... の User Information タブにあるオプションと同じオプションで LDAP サポートを設定できます。これらのオプションの詳細は、「ユーザー情報」 を参照してください。
openldap-clients
パッケージをインストールする必要があります。
スマートカード
Enable Smart Card Support オプションは、スマートカード認証を有効にします。これにより、ユーザーはスマートカードに関連付けられた証明書とキーを使用してログインできます。その他のオプションについては、Configure Smart Card... ボタンをクリックします。
pam_pkcs11
パッケージおよび coolkey
パッケージをインストールする必要があります。スマートカードの詳細は、「対応するスマートカード」 を参照してください。「シングルサインオン(SSO)」
SMB
Enable SMB Support オプションは、SMB (Server Message Block)サーバーを使用してユーザーを認証するように PAM を設定します。SMB は、システム間の通信に使用されるクライアント/サーバープロトコルを参照します。また、Samba が Windows クライアントに Windows サーバーとして表示するのに使用されるプロトコルでもあります。Configure SMB... ボタンをクリックして、以下を指定します。
- workgroup - 使用する SMB ワーク グループ を指定します。
- ドメインコントローラー: 使用する SMB ドメインコントローラーを指定します。
29.3. オプション
図29.3 オプション
[D]
シャドウパスワードの使用
このオプションを選択して、パスワードをシャドウパスワード形式で、/etc/passwd
ではなく /etc/shadow
ファイルに保存します。シャドウパスワードはインストール時にデフォルトで有効になっており、システムのセキュリティーを強化するのに強く推奨されます。
MD5 パスワードの使用
このオプションを選択して MD5 パスワードを有効にします。これにより、パスワードは 8 文字以下ではなく最大 256 文字になります。これはインストール時にデフォルトで選択され、セキュリティーを強化するために強く推奨されます。
29.4. コマンドラインバージョン
表29.1 コマンドラインオプション
オプション | 説明 |
---|---|
--enableshadow | シャドウパスワードの有効化 |
--disableshadow | シャドウパスワードの無効化 |
--enablemd5 | MD5 パスワードの有効化 |
--disablemd5 | MD5 パスワードの無効化 |
--enablenis | NIS の有効化 |
--disablenis | NIS の無効化 |
--nisdomain=<domain> | NIS ドメインの指定 |
--nisserver=<server> | NIS サーバーの指定 |
--enableldap | ユーザー情報の LDAP の有効化 |
--disableldap | ユーザー情報の LDAP の無効化 |
--enableldaptls | LDAP での TLS の使用の有効化 |
--disableldaptls | LDAP での TLS の使用の無効化 |
--enableldapauth | 認証用の LDAP の有効化 |
--disableldapauth | 認証の LDAP の無効化 |
--ldapserver=<server> | LDAP サーバーの指定 |
--ldapbasedn=<dn> | LDAP ベース DN の指定 |
--enablekrb5 | Kerberos の有効化 |
--disablekrb5 | Kerberos の無効化 |
--krb5kdc=<kdc> | Kerberos KDC の指定 |
--krb5adminserver=<server> | Kerberos 管理サーバーの指定 |
--krb5realm=<realm> | Kerberos レルムの指定 |
--enablekrb5kdcdns | DNS を使用して Kerberos KDC を検索 |
--disablekrb5kdcdns | DNS を使用した Kerberos KDC の検索の無効化 |
--enablekrb5realmdns | DNS を使用した Kerberos レルムの検索の有効化 |
--disablekrb5realmdns | DNS を使用した Kerberos レルムの検索の無効化 |
--enablesmbauth | SMB の有効化 |
--disablesmbauth | SMB の無効化 |
--smbworkgroup=<workgroup> | SMB ワークグループの指定 |
--smbservers=<server> | SMB サーバーの指定 |
--enablewinbind | デフォルトでユーザー情報の winbind の有効化 |
--disablewinbind | デフォルトでユーザー情報の winbind の無効化 |
--enablewinbindauth | デフォルトで認証の winbindauth の有効化 |
--disablewinbindauth | デフォルトで認証の winbindauth を無効化 |
--smbsecurity=<user|server|domain|ads> | Samba および winbind に使用するセキュリティーモード |
--smbrealm=<STRING> | security=adsの場合の Samba および winbind のデフォルトレルム |
--smbidmapuid=<lowest-highest> | UID 範囲 winbind がドメインまたは ADS ユーザーに割り当てる |
--smbidmapgid=<lowest-highest> | GID 範囲 winbind がドメインまたは ADS ユーザーに割り当てる |
--winbindseparator=<\> | winbindusedefaultdomain が有効でない場合、winbind ユーザー名のドメインおよびユーザー部分を分離するために使用される文字 |
--winbindtemplatehomedir=</home/%D/%U> | winbind ユーザーがホームディレクトリーとして持つディレクトリー |
--winbindtemplateprimarygroup=<nobody> | winbind ユーザーがプライマリーグループとして持つグループ |
--winbindtemplateshell=</bin/false> | winbind ユーザーがデフォルトのログインシェルとして持つシェル |
--enablewinbindusedefaultdomain | ユーザー名にドメインのないユーザーがドメインユーザーであることを仮定するように winbind を設定します。 |
--disablewinbindusedefaultdomain | ユーザー名にドメインのないユーザーがドメインユーザーではないことを仮定するように winbind を設定します。 |
--winbindjoin=<Administrator> | 管理者として winbind ドメインまたは ADS レルムを結合します。 |
--enablewins | ホスト名の解決に WINS を有効にします。 |
--disablewins | ホスト名解決の WINS の無効化 |
--enablehesiod | Hesiod の有効化 |
--disablehesiod | Hesiod の無効化 |
--hesiodlhs=<lhs> | Hesiod LHS の指定 |
--hesiodrhs=<rhs> | Hesiod RHS の指定 |
--enablecache | nscdの有効化 |
--disablecache | nscdの無効化 |
--nostart | portmap サービス、ypbind サービス、または nscd サービスが設定されている場合でも、それらを起動または停止しないでください。 |
--kickstart | ユーザーインターフェイスを表示しません。 |
--probe | ネットワークのデフォルトをプローブおよび表示します。 |
第30章 SSSD での認証情報の使用およびキャッシュ
- ID/認証サーバーの負荷の削減。すべてのクライアントサービスが識別サーバーに直接接続しようとするのではなく、すべてのローカルクライアントは、識別サーバーへ接続したり、そのキャッシュを確認したりする SSSD と通信できます。
- オフライン認証を許可します。SSSD は、必要に応じて、リモートサービスから取得するユーザー ID および認証情報のキャッシュを保持できます。これにより、リモート ID サーバーがオフラインまたはローカルマシンがオフラインであっても、ユーザーはリソースに対して正常に認証できます。
- 単一ユーザーアカウントの使用リモートユーザーには、ローカルシステム用や組織システム用など、2 つ(またはそれ以上の)ユーザーアカウントがあることがよくあります。これは、仮想プライベートネットワーク(VPN)に接続するために必要です。SSSD はキャッシュとオフライン認証をサポートしているため、リモートユーザーはローカルマシンに対して認証することでネットワークリソースに接続でき、SSSD はネットワーク認証情報を維持します。
30.1. sssd.conf ファイルについて
.conf
ファイルで設定されます。デフォルトのファイルは /etc/sssd/sssd.conf
ですが、sssd コマンドで -c
オプションを使用すると、代替ファイルを SSSD に渡すことができます。
# sssd -c /etc/sssd/customfile.conf
[section] # Comment line key1 = val1 key10 = val1,val2
30.2. SSSD の起動および停止
/etc/init.d/sssd
スクリプトのいずれかが SSSD を開始できます。以下に例を示します。
# service sssd start
[root@server ~]# chkconfig sssd on
30.3. システムサービスと連携するように SSSD を設定
sssd.conf
ファイルで設定されます。[sssd]
セクションには、アクティブなサービスも一覧表示され、sssd
が services ディレクティブ内で開始する際に起動する必要があります。
sssd_nss
モジュールからの name サービス要求に応答する Name Service Switch (NSS)プロバイダーサービス。これは、SSSD 設定の [nss] セクションで設定されます。sssd_pam
モジュールを介して PAM 会話を管理する PAM プロバイダーサービス。これは、設定の [pam] セクションで設定されます。監視
(他のすべての SSSD サービスを監視または再起動する特別なサービス)を監視します。そのオプションは、/etc/sssd/sssd.conf
設定ファイルの[sssd]
セクションで指定されます。
sssd.conf
設定ファイルの lookup family order
オプションで設定されます。
30.3.1. NSS サービスの設定
sssd_nss
を提供します。NSS 設定には SSSD モジュールへの参照が含まれ、SSSD 設定 は SSSD が NSS と対話する方法を設定します。
30.3.1.1. NSS サービスマップおよび SSSD について
- パスワード(パスワード)
- ユーザーグループ(シャドウ)
- グループ(グループ)
- netgroups (netgroups)
30.3.1.2. SSSD を使用するように NSS サービスを設定する
nsswitch.conf
ファイルを自動的に設定します。
[root@server ~]# authconfig --enablesssd --update
passwd: files sss shadow: files sss group: files sss netgroup: files sss
30.3.1.3. NSS と連携させる SSSD の設定
sssd.conf
ファイルを開きます。[root@server ~]# vim /etc/sssd/sssd.conf
- NSS が、SSSD と連携するサービスの 1 つとしてリストされていることを確認します。
[sssd] config_file_version = 2 reconnection_retries = 3 sbus_timeout = 30 services =
nss
, pam - [nss] セクションで、NSS パラメーターのいずれかを変更します。これらは、表30.1「sssd [nss] 設定パラメーター」 に記載されています。
[nss] filter_groups = root filter_users = root reconnection_retries = 3 entry_cache_timeout = 300 entry_cache_nowait_percentage = 75
- SSSD を再起動します。
[root@server ~]# service sssd restart
表30.1 sssd [nss] 設定パラメーター
パラメーター | 値の形式 | [root@server ~] Description |
---|---|---|
enum_cache_timeout | integer | sssd_nss がすべてのユーザーに関する情報の要求をキャッシュする期間(秒単位)を指定します(列挙)。 |
entry_cache_nowait_percentage | integer | キャッシュを更新する前に sssd_nss がキャッシュされたエントリーを返す時間を指定します。これをゼロに設定すると、 エントリーキャッシュの更新が無効になります。
これにより、次の更新前の特定の間隔が一定の割合である場合に、エントリーキャッシュがバックグラウンドで自動的にエントリーを更新するように設定されます。たとえば、間隔が 300 秒でキャッシュの割合が 75 の場合、要求が間隔の 225 秒 - 75% になると、エントリーキャッシュが更新を開始します。
このオプションに使用できる値は 0 から 99 で、
entry_cache_timeout 値に基づいてパーセンテージを設定します。デフォルト値は 50% です。
|
entry_negative_timeout | integer | sssd_nss が 負 のキャッシュヒットをキャッシュする期間(秒単位)を指定します。負のキャッシュヒットは、存在しないエントリーを含む、無効なデータベースエントリーのクエリーです。 |
filter_users、filter_groups | string | 特定のユーザーが NSS データベースからフェッチされないように、SSSD に指示します。これは、root などのシステムアカウントに特に便利です。 |
filter_users_in_groups | ブール値 | グループルックアップの実行時に、filter_users リストに一覧表示されているユーザーがグループメンバーシップに表示されるかどうかを設定します。false に設定すると、グループルックアップはそのグループのメンバーであるすべてのユーザーを返します。指定されていない場合、デフォルト値は true で、グループメンバー一覧をフィルターリングします。 |
30.3.2. PAM サービスの設定
sssd_pam
を提供します。PAM 設定には SSSD モジュールへの参照が含まれ、SSSD 設定 は SSSD が PAM と対話する方法を設定します。
- 認証設定ツールは、
/etc/pam.d/system-auth-ac
ファイルに自動的に書き込みます。このファイルは/etc/pam.d/system-auth
へのシンボリックリンクです。/etc/pam.d/system-auth
に加えた変更は、次に authconfig が実行される際に上書きされます。したがって、/etc/pam.d/system-auth
シンボリックリンクを削除します。[root@server ~]# rm /etc/pam.d/system-auth rm: remove symbolic link `/etc/pam.d/system-auth'? y
- 新しい
/etc/pam.d/system-auth-local
ファイルを作成します。これを行う簡単な方法の 1 つは、単に/etc/pam.d/system-auth-ac
ファイルをコピーすることです。[root@server ~]# cp /etc/pam.d/system-auth-ac /etc/pam.d/system-auth-local
/etc/pam.d/system-auth-local
ファイルと/etc/pam.d/system-auth
の間に新しいシンボリックリンクを作成します。[root@server ~]# ln -s /etc/pam.d/system-auth-local /etc/pam.d/system-auth
/etc/pam.d/system-auth-local
ファイルを編集し、すべての SSSD モジュールを PAM 設定に追加します。#%PAM-1.0 ... auth sufficient pam_sss.so use_first_pass auth required pam_deny.so ... account [default=bad success=ok user_unknown=ignore] pam_sss.so account required pam_permit.so ... password sufficient pam_sss.so use_authtok password required pam_deny.so ... session sufficient pam_sss.so session required pam_unix.so
これらのモジュールは、必要に応じてステートメントを含む
ように設定できます。sssd.conf
ファイルを開きます。# vim /etc/sssd/sssd.conf
- PAM が SSSD と連携するサービスの 1 つとして一覧表示されていることを確認してください。
[sssd] config_file_version = 2 reconnection_retries = 3 sbus_timeout = 30 services = nss,
pam
- [pam] セクションで、PAM パラメーターのいずれかを変更します。これらは、表30.2「SSSD [pam] 設定パラメーター」 に記載されています。
[pam] reconnection_retries = 3 offline_credentials_expiration = 2 offline_failed_login_attempts = 3 offline_failed_login_delay = 5
- SSSD を再起動します。
[root@server ~]# service sssd restart
表30.2 SSSD [pam] 設定パラメーター
パラメーター | 値の形式 | 説明 |
---|---|---|
offline_credentials_expiration | integer | 認証プロバイダーがオフラインの場合にキャッシュしたログインを許可する期間を日数単位で設定します。この値は、最後に成功したオンラインログインから測定されます。指定しない場合、デフォルトは0 (0)で、これは無制限です。 |
offline_failed_login_attempts | integer | 認証プロバイダーがオフラインの場合に許可されるログイン試行の失敗回数を設定します。指定しない場合、デフォルトは0 (0)で、これは無制限です。 |
offline_failed_login_delay | integer | ユーザーがログイン試行の失敗制限に達した場合にログイン試行を防ぐ時間を設定します。ゼロ(0 )に設定すると、失敗した試行制限に達すると、プロバイダーはオフラインである間は認証できません。オンライン認証の成功のみが、オフライン認証を再度有効にできます。指定しない場合、デフォルトで 5 (5)に設定されます。 |
30.4. ドメインの作成
ldap.example.com
ドメインで jsmith
と ldap.otherexample.com
ドメインの jsmith
の両方を正常に認証できます。SSSD は完全修飾ドメイン名を使用した要求を許可するため、jsmith@ldap.example.com
の情報を要求すると、適切なユーザーアカウントが返されます。ユーザー名のみを指定すると、ドメインが検索順に最初に表示されるユーザーが返されます。
filter_users
オプションがあり、指定したユーザーが検索で返されないのを除外します。
表30.3 アイデンティティーストアおよび認証タイプの組み合わせ
ID プロバイダー | 認証プロバイダー |
---|---|
LDAP | LDAP |
LDAP | Kerberos |
proxy | LDAP |
proxy | Kerberos |
proxy | proxy |
30.4.1. ドメインを設定するための一般的なルールとオプション
domains = LOCAL,Name [domain/Name] id_provider = type auth_provider = type provider_specific = value global = value
表30.4 一般的な [domain] 設定パラメーター
パラメーター | 値の形式 | 説明 |
---|---|---|
id_provider | string | このドメインに使用するデータプロバイダーアイデンティティーバックエンドを指定します。サポート対象のバックエンドは以下のとおりです。
|
auth_provider | string | ドメインに使用される認証プロバイダーを設定します。このオプションのデフォルト値は id_provider の値です。サポートされる認証プロバイダーは ldap、ipa、krb5 (Kerberos)、proxy、および none です。 |
min_id,max_id | integer | (オプション)ドメインの UID および GID の範囲を指定します。ドメインにその範囲外のエントリーが含まれる場合は、それらは無視されます。min_id のデフォルト値は 1 です。max_id のデフォルト値は 0 で、無制限です。
重要
デフォルトの min_id 値は、すべてのタイプのアイデンティティープロバイダーで同じです。LDAP ディレクトリーが 1 から始まる UID 番号を使用している場合は、ローカルの /etc/passwd ファイルのユーザーと競合する可能性があります。これらの競合を回避するには、min_id を 1000 以上に設定します。
|
列挙 | ブール値 | (オプション)ドメインのユーザーおよびグループを一覧表示するかどうかを指定します。列挙とは、リモートソースで利用可能なユーザーおよびグループ全体が、ローカルマシンにキャッシュされることを意味します。列挙が無効になっている場合、ユーザーおよびグループは要求時にのみキャッシュされます。
警告
列挙を有効にすると、クライアントを再初期化すると、リモートソースから利用可能なユーザーおよびグループのセット全体が完全に更新されます。同様に、SSSD が新しいサーバーに接続すると、リモートソースからの利用可能なユーザーおよびグループのセット全体が、ローカルマシンにプルおよびキャッシュされます。リモートソースに接続されているクライアントが多数あるドメインでは、クライアントからのクエリーが頻繁に行われるため、この更新プロセスではネットワークのパフォーマンスに悪影響を与える可能性があります。利用可能なユーザーおよびグループのセットが十分に大きくなると、クライアントのパフォーマンスも低下します。
false で、列挙を無効にします。 |
cache_credentials | ブール値 | (オプション)ローカルの SSSD ドメインデータベースキャッシュにユーザーの認証情報を保存するかどうかを指定します。このパラメーターのデフォルト値は false です。オフライン認証を有効にするには、この値を true に設定します。 |
entry_cache_timeout | integer | (オプション)SSSD が 正 のキャッシュヒットをキャッシュする期間を秒単位で指定します。正のキャッシュヒットはクエリーの成功です。 |
use_fully_qualified_names | ブール値 | (オプション)このドメインへのリクエストに完全修飾ドメイン名が必要なかどうかを指定します。true に設定すると、このドメインへのすべてのリクエストは完全修飾ドメイン名を使用する必要があります。また、リクエストからの出力に完全修飾名が表示されることも意味します。完全修飾ユーザー名に要求を制限すると、SSSD はユーザー名が競合するユーザーのドメインを区別できます。
use_fully_qualified_names を false に設定すると、リクエストで完全修飾名を使用できますが、出力には簡素化されたバージョンのみが表示されます。
SSSD はレルム名ではなく、ドメイン名に基づいて名前のみを解析できます。ただし、ドメインとレルムの両方に同じ名前を使用できます。
|
30.4.2. LDAP ドメインの設定
- Red Hat Directory Server
- OpenLDAP
- Microsoft Active Directory 2008 (UNIX ベースのアプリケーションのサブシステムあり)
30.4.2.1. LDAP ドメインを設定するためのパラメーター
sssd-ldap (5)
に記載されています。
表30.5 LDAP ドメイン設定パラメーター
パラメーター | 説明 |
---|---|
ldap_uri | SSSD が接続する LDAP サーバーの URI のコンマ区切りリストを指定します。この一覧は優先順に指定されるため、リストの最初のサーバーは最初に試行されます。追加のサーバーを一覧表示すると、フェイルオーバー保護が提供されます。これは、DNS SRV レコードから検出できます(指定されていない場合)。 |
ldap_search_base | LDAP ユーザー操作の実行に使用するベース DN を指定します。 |
ldap_tls_reqcert | TLS セッションで SSL サーバー証明書を確認する方法を指定します。4 つのオプションがあります。
|
ldap_tls_cacert | SSSD が認識するすべての CA の CA 証明書が含まれるファイルへの完全パスおよびファイル名を指定します。SSSD は、これらの CA が発行する証明書を受け入れます。
明示的に指定されていない場合は、OpenLDAP システムのデフォルトを使用します。
|
ldap_referrals | SSSD が LDAP 参照を使用するかどうか、つまり、ある LDAP データベースから別の LDAP データベースからクエリーを転送するかどうかを設定します。SSSD は、データベースレベルとサブツリーの参照をサポートします。同じ LDAP サーバー内の参照では、SSSD はクエリーされるエントリーの DN を調整します。異なる LDAP サーバーに到達する参照では、SSSD は DN に完全一致します。この値を true に設定すると、参照が有効になります。これがデフォルトです。 |
ldap_schema | ユーザーエントリーの検索時に使用するスキーマのバージョンを設定します。これは、rfc2307 または のいずれかになります。デフォルトは rfc2307 です。
RFC 2307 では、グループオブジェクトは多値属性
memberuid を使用します。これは、そのグループに属するユーザーの名前を一覧表示します。RFC 2307bis では、グループオブジェクトは、ユーザーまたはグループエントリーの完全な識別名(DN)を含む member 属性を使用します。RFC 2307bis を使用すると、member 属性を作成したネスト化されたグループを使用できます。これらのスキーマはグループメンバーシップに異なる定義を使用するため、SSSD で誤った LDAP スキーマを使用すると、適切なパーミッションが設定されている場合でも、ネットワークリソースの表示と管理の両方に影響する可能性があります。
たとえば、RFC 2307bis では、ネストされたグループまたはプライマリー/セカンダリーグループを使用するときにすべてのグループが返されます。
$ id uid=500(myserver) gid=500(myserver) groups=500(myserver),510(myothergroup)
SSSD が RFC 2307 スキーマを使用している場合は、プライマリーグループのみが返されます。
この設定は、SSSD がグループメンバーを決定する方法にのみ影響します。実際のユーザーデータは変更されません。
|
ldap_search_timeout | LDAP 検索がキャンセルされ、キャッシュされた結果が返される前に LDAP 検索を実行できる時間を秒単位で設定します。これは、列挙値が false で、列挙 が true の場合にデフォルト で 30 に設定されます。
LDAP 検索がタイムアウトすると、SSSD は自動的にオフラインモードに切り替わります。
|
ldap_network_timeout | 接続の試行に失敗した後に SSSD が LDAP サーバーのポーリングを試行する時間を秒単位で設定します。デフォルトは 6 秒です。 |
ldap_opt_timeout | サーバーから応答が受信されない場合に、同期 LDAP 操作を中止するまで待機する時間を秒単位で設定します。このオプションは、SASL バインドの場合に KDC と通信する際のタイムアウトも制御します。デフォルトは 5 秒です。 |
30.4.2.2. LDAP ドメインの例
sssd.conf
ファイルでクエリーします。以下に例を示します。
domains = LOCAL,LDAP1,AD,PROXYNIS
例30.1 基本的な LDAP ドメイン設定
- LDAP サーバー
- 検索ベース
- セキュアな接続を確立する方法
ldap_uri
オプションの一部として設定されます。
# An LDAP domain [domain/LDAP] enumerate = false cache_credentials = true id_provider = ldap auth_provider = ldap ldap_uri = ldaps://ldap.example.com:636 ldap_search_base = dc=example,dc=com
ldap_id_use_start_tls
オプションを使用して Start TLS を使用し、ldap_tls_cacert
を使用して SSL サーバー証明書を発行した CA 証明書を特定します。
# An LDAP domain [domain/LDAP] enumerate = false cache_credentials = true id_provider = ldap auth_provider = ldap ldap_uri = ldap://ldap.example.com ldap_search_base = dc=example,dc=com ldap_id_use_start_tls = true ldap_tls_reqcert = demand ldap_tls_cacert = /etc/pki/tls/certs/ca-bundle.crt
30.4.2.3. Active Directory ドメインの例
- authconfig を使用して、Active Directory を LDAP アイデンティティープロバイダーとして使用するように Linux クライアントを設定します。以下に例を示します。
authconfig --enableldap --enableldapauth --ldapserver=ldap://ad.example.com:389 --enablekrb5 --krb5realm AD-REALM.EXAMPLE.COM --krb5kdc ad-kdc.example.com:88 --krb5adminserver ad-kdc.example.com:749 --update
authconfig コマンドは、「コマンドラインバージョン」 で説明されています。 - Active Directory ドメインサービスロールを作成します。
- UNIX サービスの Identity Management を Active Directory Domain Services ロールに追加します。Unix NIS ドメインを設定でドメイン名として使用します。
- Active Directory サーバーで、Linux クライアントの名前で新しい Computer オブジェクトを作成します。
- Administrative Tools メニューで、Active Directory Users and Computers アプリケーションを選択します。
- ad.example.com などの Active Directory ルートオブジェクトを展開します。
- Computers を右クリックし、New および Computer アイテムを選択します。
- rhel-server などの Linux クライアントの名前を入力し、OK をクリックします。
- Computers オブジェクトを展開します。
- rhel-server オブジェクトを右クリックし、Properties を選択します。
- UNIX Attributes に、Linux NIS ドメインの名前と Linux サーバーの IP アドレスを入力します。OK をクリックします。
- Active Directory サーバーのコマンドプロンプトから、Linux ホストプリンシパル用のマシンアカウント、パスワード、および UPN を作成します。
C:\> setspn -A host/rhel-server.example.com@AD-REALM.EXAMPLE.COM rhel-server Registering ServicePrincipalNames for CN=rhel server,CN=Computers,DC=ad,DC=example,DC=com host/rhel server.example.com@AD-REALM.EXAMPLE.COM Updated object C:\> setspn -L rhel-server Registered ServicePrincipalNames for CN=rhel server,CN=Computers,DC=ad,DC=example,DC=com: host/rhel server.example.com@AD-REALM.EXAMPLE.COM C:\> ktpass /princ host/rhel-server.example.com@AD-REALM.EXAMPLE.COM /out rhel-server.keytab /crypto all /ptype KRB5_NT_PRINCIPAL -desonly /mapuser AD\rhel-server$ +rndPass Targeting domain controller: ad.example.com Using legacy password setting method Successfully mapped host/rhel server.redhat.com ... 8< ...
- Active Directory サーバーから Linux クライアントに keytab をコピーし、
/etc/krb5.keytab
として保存します。 - Linux システムで、キータブファイルのパーミッションと所有者をリセットします。
[root@rhel-server ~]# chown root:root /etc/krb5.keytab [root@rhel-server ~]# chmod 0600 /etc/krb5.keytab
- キータブの SELinux ファイルパーミッションを復元します。
[root@rhel-server ~]# restorecon /etc/krb5.keytab
- ホストが Active Directory ドメインに接続できることを確認します。
[root@rhel-server ~]# kinit -k -t /etc/krb5.keytab host/rhel-server.example.com@AD-REALM.EXAMPLE.COM
- Active Directory サーバーで、Linux ユーザーのグループを作成します。
- unixusers という名前の新規グループを作成します。
- unixusers グループを開き、Unix Attributes タブを開きます。
- Unix 設定を設定します。
- NIS ドメイン
- UID
- /bin/bashへのログインシェル
- /home/aduserへのホームディレクトリー
- unixusersへのプライマリーグループ名
- 次に、Linux マシンで SSSD ドメインを設定します。
例30.2 Active Directory 2008 ドメイン
[root@rhel-server ~]# vim /etc/sssd/sssd.conf [sssd] config_file_version = 2 domains = ad.example.com services = nss, pam [nss] [pam] [domain/ad.example.com] cache_credentials = true enumerate = false id_provider = ldap auth_provider = krb5 chpass_provider = krb5 access_provider = ldap ldap_sasl_mech = GSSAPI ldap_sasl_authid = host/rhel-server.example.com@AD-REALM.EXAMPLE.COM ldap_schema = rfc2307bis ldap_user_search_base = ou=user accounts,dc=ad,dc=example,dc=com ldap_user_object_class = user ldap_user_home_directory = unixHomeDirectory ldap_user_principal = userPrincipalName ldap_user_name = sAMAccountName ldap_group_search_base = ou=groups,dc=ad,dc=example,dc=com ldap_group_object_class = group ldap_access_order = expire ldap_account_expire_policy = ad ldap_force_upper_case_realm = true ldap_disable_referrals = true #krb5_server = server.ad.example.com krb5_realm = AD-REALM.EXAMPLE.COM
これらのオプションは、LDAP ドメイン設定の man ページsssd-ldap (5)
で説明されています。 - SSSD を再起動します。
[root@rhel-server ~]# service sssd restart
30.4.2.4. 証明書のサブジェクト名での IP アドレスの使用
ldap_uri
オプションで IP アドレスを使用すると、TLS/SSL 接続が失敗する場合があります。TLS/SSL 証明書には、IP アドレスではなくサーバー名が含まれます。ただし、証明書の サブジェクト代替名 フィールドを使用してサーバーの IP アドレスを含めることができます。これにより、IP アドレスを使用したセキュアな接続に成功します。
- 既存の証明書を証明書要求に変換します。署名鍵(
-signkey
)は、最初に証明書を発行した CA の発行者の鍵です。これを外部 CA で実行する場合は、別の PEM ファイルが必要になります。証明書が自己署名されている場合は、これが証明書自体になります。以下に例を示します。openssl x509 -x509toreq -in old_cert.pem -out req.pem -signkey key.pem
自己署名証明書の場合:openssl x509 -x509toreq -in old_cert.pem -out req.pem -signkey old_cert.pem
/etc/pki/tls/openssl.cnf
設定ファイルを編集して、[ v3_ca ]
セクションにサーバーの IP アドレスを追加します。subjectAltName = IP:10.0.0.10
- 生成された証明書要求を使用して、指定された IP アドレスで新しい自己署名証明書を生成します。
openssl x509 -req -in req.pem -out new_cert.pem -extfile ./openssl.cnf -extensions v3_ca -signkey old_cert.pem
-extensions
オプションは、証明書で使用する拡張を設定します。そのためには、適切なセクションを読み込むために v3_ca である必要があります。 old_cert.pem
ファイルからnew_cert.pem
ファイルに秘密鍵ブロックをコピーし、関連するすべての情報を 1 つのファイルに保持します。
30.4.3. ドメインを使用した Kerberos 認証の設定
krb5_kpasswd
オプションを使用して、パスワードの変更サービスが実行されている場所、またはデフォルト以外のポートで実行している場合は を指定します。krb5_kpasswd
オプションが定義されていない場合、SSSD は Kerberos KDC を使用してパスワードを変更しようとします。
sssd-krb5 (5)
の man ページには、Kerberos 設定オプションの詳細情報が記載されています。
例30.3 Basic Kerberos 認証
# A domain with identities provided by LDAP and authentication by Kerberos [domain/KRBDOMAIN] enumerate = false id_provider = ldap chpass_provider = krb5 ldap_uri = ldap://ldap.example.com ldap_search_base = dc=example,dc=com ldap-tls_reqcert = demand ldap_tls_cacert = /etc/pki/tls/certs/ca-bundle.crt auth_provider = krb5 krb5_server = 192.168.1.1, kerberos.example.com krb5_realm = EXAMPLE.COM krb5_kpasswd = kerberos.admin.example.com krb5_auth_timeout = 15
表30.6 Kerberos 認証設定パラメーター
パラメーター | 説明 |
---|---|
chpass_provider | パスワードの変更操作に使用するサービスを指定します。これは、認証プロバイダーと同じであることを前提とします。Kerberos を使用するには、これを krb5 に設定します。 |
krb5_server | SSSD が接続する Kerberos サーバーのホスト名(IP アドレスまたはホスト名)のコンマ区切りリストを指定します。この一覧は優先順に指定されるため、リストの最初のサーバーは最初に試行されます。追加のサーバーを一覧表示すると、フェイルオーバー保護が提供されます。
KDC または kpasswd サーバーでサービス検出を使用する場合、SSSD は最初に UDP を接続プロトコルとして指定する DNS エントリーを検索し、TCP にフォールバックします。
|
krb5_realm | KDC が提供する Kerberos レルムを特定します。 |
krb5_lifetime | 指定されたライフタイム(s)、分(m)、時間(h)、または日(d)で Kerberos チケットを要求します。 |
krb5_renewable_lifetime | 秒単位(s)、分(m)、時間(h)、または日(d)で指定される合計ライフタイムで更新可能な Kerberos チケットを要求します。 |
krb5_renew_interval | チケットを更新する必要があるかどうかをチェックする SSSD の時間を秒単位で設定します。チケットは、有効期間の半分を超えると自動的に更新されます。このオプションがないか、またはゼロに設定すると、チケットの自動更新が無効になります。 |
krb5_store_password_if_offline | Kerberos 認証プロバイダーがオフラインの場合にユーザーパスワードを保存し、そのキャッシュを使用してプロバイダーがオンラインに戻るときにチケットを要求するかどうかを設定します。デフォルトは false で、パスワードを保存しません。 |
krb5_kpasswd | 変更パスワードサービスが KDC で実行されていない場合に使用する代替 Kerberos kadmin サーバーを一覧表示します。 |
krb5_ccname_template | ユーザーのクレデンシャルキャッシュを保存するために使用するディレクトリーを指定します。これは一時的な化が可能であり、以下のトークンがサポートされます。
krb5_ccname_template = FILE:%d/krb5cc_%U_XXXXXX |
krb5_ccachedir | 認証情報キャッシュを保存するディレクトリーを指定します。これは、%d および %P を除き、krb5_ccname_template と同じトークンを使用してテンプレート化できます。%u 、%U 、%p 、または %h が使用される場合、SSSD はユーザーごとにプライベートディレクトリーを作成します。それ以外の場合は、パブリックディレクトリーを作成します。 |
krb5_auth_timeout | オンライン認証または変更パスワードリクエストが中断されるまでの秒数を指定します。可能な場合、認証要求はオフラインで継続されます。デフォルトは 15 秒です。 |
30.4.4. プロキシードメインの設定
表30.7 プロキシードメイン設定パラメーター
パラメーター | 説明 |
---|---|
proxy_pam_target | PAM が認証プロバイダーとしてプロキシーする必要のあるターゲットを指定します。PAM ターゲットは、デフォルトの PAM ディレクトリー /etc/pam.d/ に PAM スタック情報が含まれるファイルです。
これは、認証プロバイダーのプロキシーに使用されます。
重要
プロキシー PAM スタックに pam_sss.so が再帰的に追加 されない ようにします。
|
proxy_lib_name | アイデンティティー要求をプロキシー処理する既存の NSS ライブラリーを指定します。
これは、アイデンティティープロバイダーをプロキシーするために使用されます。
|
例30.4 プロキシー ID および Kerberos 認証
proxy_lib_name
パラメーターを使用して読み込まれます。このライブラリーは、指定の認証サービスと互換性がある限り使用できます。Kerberos 認証プロバイダーの場合は、NIS などの Kerberos 互換ライブラリーである必要があります。
[domain/PROXY_KRB5] auth_provider = krb5 krb5_server = 192.168.1.1 krb5_realm = EXAMPLE.COM id_provider = proxy proxy_lib_name = nis enumerate = true cache_credentials = true
例30.5 LDAP Identity および Proxy 認証
proxy_pam_target
パラメーターを使用して読み込まれます。このライブラリーは、指定のアイデンティティープロバイダーと互換性のある PAM モジュールである必要があります。たとえば、これは LDAP で PAM フィンガープリントモジュールを使用します。
[domain/LDAP_PROXY] id_provider = ldap ldap_uri = ldap://example.com ldap_search_base = dc=example,dc=com auth_provider = proxy proxy_pam_target = sssdpamproxy enumerate = true cache_credentials = true
/etc/pam.d/sssdpamproxy
ファイルを作成し、PAM/LDAP モジュールを読み込みます。
auth required pam_frprint.so account required pam_frprint.so password required pam_frprint.so session required pam_frprint.so
例30.6 プロキシー ID および認証
proxy_pam_target
と、NIS や LDAP などのサービスの proxy_lib_name
のみです。
[domain/PROXY_PROXY] auth_provider = proxy id_provider = proxy proxy_lib_name = ldap proxy_pam_target = sssdproxyldap enumerate = true cache_credentials = true
- pam_ldap.so モジュールを必要とする
/etc/pam.d/sssdproxyldap
ファイルを作成します。auth required pam_ldap.so account required pam_ldap.so password required pam_ldap.so session required pam_ldap.so
nss-pam-ldap
パッケージがインストールされていることを確認します。[root@server ~]# yum install nss-pam-ldap
/etc/nslcd.conf
ファイル(LDAP ネームサービスデーモンの設定ファイル)を編集して、LDAP ディレクトリーの情報が含まれるようにします。uid nslcd gid ldap uri ldaps://ldap.example.com:636 base dc=example,dc=com ssl on tls_cacertdir /etc/openldap/cacerts
30.5. SSSD ドメインのアクセス制御の設定
30.5.1. Simple Access プロバイダーの使用
simple_allow_users
および simple_allow_groups
です。これは、特定のユーザー(指定のユーザーまたはグループメンバーのいずれか)に明示的にアクセスを付与し、その他のすべてのユーザーへのアクセスを拒否します。拒否リストを作成することも可能です(明示的なユーザーのみへのアクセスを拒否し、他のすべてのユーザーに暗黙的にアクセスを許可)。
- 許可リストと拒否リストの両方が空の場合、アクセスが許可されます。
- リストを指定すると、許可ルールが最初に評価され、次にルールが拒否されます。実際には、拒否ルールは allow ルールよりも優先されることを意味します。
- 許可されたリストを指定すると、すべてのユーザーが一覧に表示されない限りアクセスが拒否されます。
- 拒否リストのみを指定すると、一覧にない限り、すべてのユーザーがアクセスが許可されます。
[domain/example.com] access_provider = simple simple_allow_users = jsmith,bjensen simple_allow_groups = itgroup
simple
をサポートしません。
sssd-simple
の man ページに一覧表示されますが、これはほとんど使用されません。
30.5.2. LDAP アクセスフィルターの使用
ldap_access_filter
)は、指定したホストへのアクセスを付与するユーザーを指定します。ユーザーフィルターを使用するか、すべてのユーザーがアクセスを拒否する必要があります。
[domain/example.com] access_provider = ldap ldap_access_filter = memberOf=cn=allowedusers,ou=Groups,dc=example,dc=com
authorizedService
属性で結果を確認することもできます。
30.6. ドメインフェイルオーバーの設定
30.6.1. フェイルオーバーの設定
/etc/sssd/sssd.conf
ファイルの [domain/Name] セクションに、大文字と小文字を区別しないコンマ区切りリストとして入力されます。サーバーは優先順に一覧表示されます。このリストには任意の数のサーバーを含めることができます。
ldap_uri = ldap://ldap0.example.com, ldap://ldap1.example.com, ldap://ldap2.example.com
30.6.2. フェイルオーバーでの SRV レコードの使用
_service._protocol._domain TTL priority weight port hostname
30.7. ドメインキャッシュファイルの削除
/var/lib/sss/db/
ディレクトリーに保存されます。
cache_exampleldap.ldb
になります。
- キャッシュファイルを削除すると、識別およびキャッシュされた認証情報の両方のすべてのユーザーデータが削除されます。したがって、システムがオンラインであり、ドメインのサーバーに対してユーザー名で認証できる場合を除き、キャッシュファイルを削除しないでください。認証情報キャッシュがないと、オフライン認証は失敗します。
- 別のアイデンティティープロバイダーを参照するように設定が変更された場合、SSSD は元のプロバイダーのキャッシュされたエントリーがタイムアウトするまで、両方のプロバイダーのユーザーを認識します。キャッシュをパージすることで回避できますが、新しいプロバイダーに異なるドメイン名を使用することが推奨されます。SSSD が再起動すると、新しい名前で新しいキャッシュファイルが作成され、古いファイルは無視されます。
30.8. SSSD での NSCD の使用
resolv.conf
ファイルを読み取る可能性があります。このファイルは、通常 1 回だけ読み取るため、このファイルへの変更は自動的に適用されません。これにより、サービスを手動で再起動しない限り、NSCD サービスが実行されているマシンで NFS ロックが失敗する可能性があります。
/etc/nscd.conf
ファイルでホストおよびサービスのキャッシュを有効にし、passwd
、group
、および netgroup
エントリーの SSSD キャッシュに依存します。
/etc/nscd.conf
ファイルを変更します。
enable-cache hosts yes enable-cache passwd no enable-cache group no enable-cache netgroup no
30.9. SSSD のトラブルシューティング
30.9.1. SSSD ログファイルの確認
/var/log/sssd/
ディレクトリーにある操作に関する情報を報告するログファイルを使用します。SSSD は、各ドメインのログファイルと sssd_pam.log
および sssd_nss.log
ファイルを生成します。
/var/log/secure
ファイルは認証の失敗と、失敗の原因を記録します。
sssd.conf
ファイルの各セクションに debug_level
パラメーターを設定します。このファイルは、追加のログを提供します。以下に例を示します。
[sssd]
config_file_version = 2
services = nss, pam
domains = LDAP
debug_level = 9
表30.8 デバッグログレベル
レベル | 説明 |
---|---|
0 | 致命的な障害。SSSD の起動を妨げる、または SSSD の実行を停止させるもの。 |
1 | 重大なエラー。SSSD を強制終了しないものの、少なくとも 1 つの主要な機能が適切に機能しないことを示すエラー。 |
2 | 深刻なエラー。特定の要求または操作が失敗したことを示すエラー。 |
3 | マイナーな障害。これらのエラーが浸透して、2 の動作不良の原因となるのです。 |
4 | 設定設定。 |
5 | 関数データ。 |
6 | 操作関数のメッセージを追跡します。 |
7 | 内部制御関数のメッセージのトレース。 |
8 | 対象の関数内部変数の内容。 |
9 | 非常に低いレベルのトレース情報。 |
30.9.2. SSSD 設定に関する問題
SSSD が起動に失敗する
SSSD では、デーモンを起動する前に、必要なすべてのエントリーで設定ファイルを適切に設定する必要があります。
- SSSD では、サービスが起動する前に、最低でもドメインを適切に設定する必要があります。ドメインがないと、SSSD を起動すると、ドメインが設定されていないエラーが返されます。
# sssd -d4 [sssd] [ldb] (3): server_sort:Unable to register control with rootdse! [sssd] [confdb_get_domains] (0): No domains configured, fatal error! [sssd] [get_monitor_config] (0): No domains configured.
/etc/sssd/sssd.conf
ファイルを編集し、最低でも 1 つのドメインを作成します。 - SSSD は、開始する前に、少なくとも 1 つ以上の利用可能なサービスプロバイダーも必要です。問題がサービスプロバイダー設定にある場合、エラーメッセージはサービスが設定されていないことを示します。
[sssd] [get_monitor_config] (0): No services configured!
/etc/sssd/sssd.conf
ファイルを編集し、1 つ以上のサービスプロバイダーを設定します。重要SSSD では、サービスプロバイダーを/etc/sssd/sssd.conf
ファイルの単一のservices
エントリーに、コンマ区切りのリストとして設定する必要があります。サービスが複数のエントリーに一覧表示されます。最後のエントリーのみが SSSD によって認識されます。
id を持つグループや、getent group を持つグループメンバーは表示されません。
これは、sssd.conf
の [domain/DOMAINNAME] セクションに誤った ldap_schema 設定が原因である可能性があります。
memberuid
属性として保存されます。RFC2307bis サーバーでは、グループメンバーは、このグループのメンバーであるユーザーまたはグループの DN を含む多値 member
または uniqueMember
属性として保存されます。RFC2307bis を使用すると、ネストされたグループも保守できます。
- ldap_schema を rfc2307bis に設定します。
- Delete
/var/lib/sss/db/cache_DOMAINNAME.ldb
. - SSSD を再起動します。
sssd.conf
に追加します。
ldap_group_name = uniqueMember
認証は LDAP に対して失敗します。
認証を実行するには、SSSD で通信チャネルを暗号化する必要があります。これは、sssd.conf
が標準プロトコル (ldap://
) 経由で接続するように設定されていると、Start TLS で通信チャネルの暗号化を試みます。sssd.conf
がセキュアなプロトコル (ldaps://
) に接続するように設定されている場合、SSSD は SSL を使用します。
syslog
メッセージが書き込まれます。証明書設定は、SSSD とは別に LDAP サーバーにアクセスできるかどうかを確認してテストできます。たとえば、以下は、test.example.com への TLS 接続を介して匿名バインドをテストします。
$ ldapsearch -x -ZZ -h test.example.com -b dc=example,dc=com
ldap_start_tls: Connect error (-11) additional info: TLS error -8179:Unknown code ___f 13
- LDAP サーバー証明書に署名するために使用される認証局の公開 CA 証明書のコピーを取得してローカルシステムに保存します。
- ファイルシステムの CA 証明書を参照する
sssd.conf
ファイルに行を追加します。ldap_tls_cacert = /path/to/cacert
- LDAP サーバーが自己署名証明書を使用する場合は、
sssd.conf
ファイルから ldap_tls_reqcert 行を削除します。このパラメーターにより、SSSD が CA 証明書により発行された証明書を信頼するように指示します。これは、自己署名の CA 証明書を使用するセキュリティーリスクになります。
非標準ポートで LDAP サーバーへの接続に失敗します。
SELinux を Enforcing モードで実行する場合は、クライアントの SELinux ポリシーを変更して、標準以外のポートで LDAP サーバーに接続する必要があります。以下に例を示します。
# semanage port -a -t ldap_port_t -p tcp 1389
NSS がユーザー情報を返すことができません
これは通常、SSSD が NSS サービスに接続できないことを意味します。
- NSS が実行していることを確認します。
# service sssd status
- NSS が実行している場合、プロバイダーが
/etc/sssd/sssd.conf
ファイルの[nss]
セクションで適切に設定されていることを確認します。特に、filter_users
およびfilter_groups
属性を確認します。 - NSS が SSSD が使用するサービスの一覧に含まれていることを確認します。
/etc/nsswitch.conf
ファイルの設定を確認します。
NSS が間違ったユーザー情報を返す
検索が正しくないユーザー情報を返す場合は、別のドメインでユーザー名が競合していないことを確認してください。複数のドメインがある場合は、/etc/sssd/sssd.conf
ファイルで use_fully_qualified_domains
属性を true
に設定します。これは、同じ名前の異なるドメインの異なるユーザーを区別します。
ローカルの SSSD ユーザーのパスワードを設定すると、パスワードが 2 回要求されます。
ローカルの SSSD ユーザーのパスワードを変更しようとすると、パスワードを 2 回求められる場合があります。
[root@clientF11 tmp]# passwd user1000 Changing password for user user1000. New password: Retype new password: New Password: Reenter new Password: passwd: all authentication tokens updated successfully.
/etc/pam.d/system-auth
ファイルで use_authtok
オプションが正しく設定されていることを確認します。
パート IV. システム設定
第31章 コンソールアクセス
- このプログラムは、実行できない特定のプログラムを実行できます。
- これらは、ディスクへのアクセスに使用される特定のファイル(通常は特殊なデバイスファイル)にアクセスでき、ディスクにはアクセスできなくなります。
31.1. Ctrl+Alt+Delでのシャットダウンの無効化
/etc/inittab
は、コンソールで使用される Ctrl+Alt+Del キーの組み合わせに対して、システムがシャットダウンされるように設定され、再起動します。この機能を完全に無効にするには、/etc/inittab
の前にハッシュマーク(#
)を配置することで、以下の行をコメントアウトします。
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
- 上記の
/etc/inittab
行に -a オプションを追加して、以下のようにします。ca::ctrlaltdel:/sbin/shutdown -a -t3 -r now
-a フラグはシャットダウンに対し、/etc/ shutdown.allow
ファイルを検索するように指示します。 /etc
にshutdown.allow
という名前のファイルを作成します。shutdown.allow
ファイルには、Ctrl+Alt+Del を使用してシステムをシャットダウンできるユーザーのユーザー名が一覧表示されます。shutdown.allow
ファイルのフォーマットは、以下のように 1 行に 1 つずつユーザー名の一覧です。stephen jack sophie
shutdown.allow
ファイルの例では 、 ユーザーは Ctrl+Alt+Del を使用して コンソールからシステムをシャットダウンできます。鍵の組み合わせが使用されると、/etc/inittab
の shutdown -a
コマンドは、/etc/shutdown.allow
(または root)のユーザーが仮想コンソールにログインしているかどうかを確認します。ある場合は、システムのシャットダウンが続行されます。シャットダウンされていない場合は、エラーメッセージがシステムコンソールに書き込まれます。
shutdown.allow
の詳細は、man ページの shutdown を参照してください。
31.2. コンソールプログラムアクセスの無効化
rm -f /etc/security/console.apps/*
rm -f /etc/security/console.apps/poweroff rm -f /etc/security/console.apps/halt rm -f /etc/security/console.apps/reboot
31.3. コンソールの定義
pam_console.so
モジュールは、/etc/security/console.perms
ファイルを使用して、システムコンソールのユーザーのパーミッションを決定します。ファイルの構文は非常に柔軟です。これらの命令が適用されないようにファイルを編集できます。ただし、デフォルトの ファイルには以下のような行があります。
<console>=tty[0-9][0-9]* vc/[0-9][0-9]* :[0-9]\.[0-9] :[0-9]
/dev/ttyS0
や /dev/ pts/2 などのデバイスのいずれかになります
。デフォルトでは、ローカルの仮想コンソールとローカル X サーバーがローカルとみなされることを定義しますが、ポート /dev/ttyS1
で隣のシリアルターミナルを local にみなす場合は、その行を変更して読み込むことができます。
<console>=tty[0-9][0-9]* vc/[0-9][0-9]* :[0-9]\.[0-9] :[0-9] /dev/ttyS1
31.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
)を開きます。最初のセクションでは、以下のような行を持つ デバイスクラス を定義します。
<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*
cdrom>
は CD-ROM ドライブを参照します。新しいデバイスを追加するには、デフォルトの 50-default.perms
ファイルで定義しないでください。代わりに、51-default.perms
に定義します。たとえば、スキャナーを定義するには、以下の行を 51-default.perms に追加します。
<scanner>=/dev/scanner /dev/usb/scanner*
/dev/scanner
が実際にはスキャナーであり、ハードドライブなどの他のデバイスではないことを確認します。
/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
/dev/scanner
デバイスの所有権が 0600 になります(読み取り、書き込みのみ)。ログアウトすると、デバイスは root によって所有され、パーミッションは 0600 のままです(root のみが読み取り可能、書き込み可能)。
50-default.perms
ファイルを編集する こと はできません。50-default.perms
にすでに定義されているデバイスのパーミッションを編集するには、51
-default.perms にそのデバイスの必要なパーミッション定義を追加します。これにより、50-default.perms
で定義されているすべてのパーミッションが上書きされます。
31.5. 他のアプリケーションのコンソールアクセスの有効化
/usr /sbin/
にあるアプリケーションに対して のみ 機能するので、実行するアプリケーションが必要です。これを確認した後に、以下の手順を実行します。
- サンプル
foo
プログラムなどのアプリケーションの名前から、/usr/bin/consolehelper アプリケーションへのリンクを作成します。cd /usr/bin ln -s consolehelper foo
/etc/security/console.apps/foo
ファイルを作成します。touch /etc/security/console.apps/foo
/etc/pam.d/
に、foo
サービスの PAM 設定ファイルを作成します。これを行う簡単な方法は、halt サービスの PAM 設定ファイルをコピーしてから、動作を変更する場合はコピーを変更することです。cp /etc/pam.d/halt /etc/pam.d/foo
/etc/pam.d/foo
が /etc/pam.d/halt
のコピーである場合に、consolehelper はユーザーのパスワードを要求します。それ以外の場合は、/etc/pam.d/foo
で指定されている内容を正確に実行し、root 権限で /usr/sbin/foo
を実行します。
pam_timestamp
を使用して同じセッションから実行するように設定された他のアプリケーションは、そのユーザーに対して自動的に認証されます。ユーザーは root パスワードを再度入力する必要はありません。
pam
パッケージに含まれています。この機能を有効にするには、etc/pam.d/
の PAM 設定ファイルに以下の行を追加します。
auth include config-util account include config-util session include config-util
/etc/pam.d/system-config-*
設定ファイルからコピーできます。これらの行は、PAM 設定ファイルの他の auth sufficient
session optional
行の 下 に追加する必要があります。
pam_timestamp
を使用するよう設定されたアプリケーションが Applications (パネルのメインメニュー)から正常に認証されると、GNOME または KDE デスクトップ環境を実行している場合は、パネルの通知エリアに
アイコンが表示されます。認証の期限が切れると(デフォルトは 5 分)、アイコンは消えます。
31.6. フロッピー
グループ
フロッピー
グループを使用して実行できます。選択したツールを使用して フロッピー
グループにユーザーを追加します。たとえば、gpasswd コマンドを使用して、フロッピー
グループにユーザー fred を追加できます。
gpasswd -a fred floppy
第32章 sysconfig
ディレクトリー
/etc/sysconfig/
ディレクトリーには、Red Hat Enterprise Linux のさまざまなシステム設定ファイルが含まれています。
/etc/sysconfig/
ディレクトリーにあるファイル、それらの機能、およびそれらのコンテンツの概要を説明します。本章の情報を完了することは意図されていません。これらのファイルの多くには、非常に具体的な状況またはまれな状況でのみ使用されるさまざまなオプションがあるためです。
32.1. /etc/sysconfig/
ディレクトリーのファイル
/etc/sysconfig/
ディレクトリーにある ファイルについて説明します。ここに記載されていないファイルと追加のファイルオプションは、/usr/share/doc/initscripts- <version-number> /sysconfig.txt
ファイルにあります(< version-number > を initscripts
パッケージのバージョンに置き換えます)。または、/etc/rc.d/
ディレクトリーで initscripts を調べると役に立つことが証明されます。
/etc/sysconfig/
ディレクトリーに存在しない場合は、対応するプログラムがインストールされていない可能性があります。
32.1.1. /etc/sysconfig/amd
/etc/sysconfig/amd
ファイルには、amd が使用するさまざまなパラメーターが含まれています。これらのパラメーターを使用すると、ファイルシステムの自動マウントとアンマウントが可能になります。
32.1.2. /etc/sysconfig/apmd
/etc/sysconfig/apmd
ファイルは、pmd により使用され、中断または再開時に起動/停止/変更する電源設定を行います。このファイルは、ハードウェアが Advanced Power Management (APM)に対応しているかどうか、またはユーザーがシステムを設定してシステムを設定した場合に応じて、システムの起動時に apmd がどのように機能するかを設定します。apm デーモンは、Linux カーネル内の電源管理コードで動作する監視プログラムです。ノートパソコンやその他の電源関連の設定でバッテリーの電力を下げるようユーザーに警告することができます。
32.1.3. /etc/sysconfig/arpwatch
/etc/sysconfig/arpwatch
ファイルは、起動時に arpwatch デーモンに引数を渡すために使用されます。arpwatch デーモンは、イーサネット MAC アドレスと IP アドレスのペアのテーブルを維持します。デフォルトでは、このファイルは arpwatch プロセスの所有者をユーザー pcap
に設定し、すべてのメッセージを root メールキューに送信します。このファイルで利用可能なパラメーターの詳細は、arpwatch の man ページを参照してください。
32.1.4. /etc/sysconfig/authconfig
/etc/sysconfig/authconfig
ファイルは、ホストで使用される認証を設定します。これには、以下の行が 1 つ以上含まれます。
- USEMD5= <value& gt;。ここで、& lt;value> は以下のいずれかになります。
- はい - MD5 が認証に使用されます。
- 認証に MD5 は使用されません。
- USEKERBEROS= <value >。ここで、& lt;value& gt; は以下のいずれかになります。
- はい: Kerberos が認証に使用されます。
- いいえ: Kerberos は認証には使用されません。
- USELDAPAUTH= <value& gt;。ここで、& lt;value> は以下のいずれかになります。
- はい: LDAP が認証に使用されます。
- いいえ: 認証に LDAP は使用されません。
32.1.5. /etc/sysconfig/autofs
/etc/sysconfig/autofs
ファイルは、デバイスの自動マウントのカスタムオプションを定義します。このファイルは、自動マウントデーモンの動作を制御します。このデーモンは、ファイルシステムを使用する際に自動的にマウントし、非アクティブになってからアンマウントします。ファイルシステムには、ネットワークファイルシステム、CD-ROM、ディスケット、およびその他のメディアを含めることができます。
/etc/sysconfig/autofs
ファイルには以下が含まれる場合があります。
- LOCALOPTIONS=" <value> ", where & lt;value& gt; はマシン固有の自動マウントルールを定義する文字列です。デフォルト値は空の文字列("")です。
- DAEMONOPTIONS=" <value> "。ここで、< value > はデバイスをアンマウントしる前のタイムアウトの長さ(秒単位)です。デフォルト値は 60 秒("--timeout=60")です。
- UNDERSCORETODOT= <value > です。ここで、< value > は、ファイル名のアンダースコアをドットに変換するかどうかを制御するバイナリー値です。たとえば、auto_home を auto.home に、auto_mnt を auto.mnt に、それぞれ設定します。デフォルト値は 1 (true)です。
- DISABLE_DIRECT= <value > です。ここで、< value > は、直接マウントサポートを無効にするかどうかを制御するバイナリー値です。Linux 実装は Sun Microsystems の自動マウント機能に準拠しないためです。デフォルト値は 1 (true)で、Sun 自動マウント機能オプションの仕様構文との互換性を許可します。
32.1.6. /etc/sysconfig/clock
/etc/sysconfig/clock
ファイルは、システムハードウェアクロックから読み取られる値の解釈を制御します。
- utc = <value>。ここで、<value& gt; は以下のブール値のいずれかになります。
- true または yes: ハードウェアクロックは Universal Time に設定されます。
- false または no: ハードウェアクロックはローカルタイムに設定されます。
- ARC= <value>。ここで、& lt;value> は以下になります。
- false または no - この値は、通常の UNIX エポックが使用されていることを示します。その他の値は、Red Hat Enterprise Linux でサポートされていないシステムで使用されます。
- sm = <value& gt;。ここで、< ;value> は以下になります。
- false または no - この値は、通常の UNIX エポックが使用されていることを示します。その他の値は、Red Hat Enterprise Linux でサポートされていないシステムで使用されます。
- ZONE= &
lt;filename
> -/etc/localtime
がコピーされている/usr/share/zoneinfo
の下にあるタイムゾーンファイルです。ファイルには、以下のような情報が含まれています。ZONE="America/New York"
ZONE パラメーターは Time and Date Properties Tool (system-config-date)によって読み取られ、手動で編集してもシステムのタイムゾーンは変更されません。
- CLOCKMODE= <value >。ここで、& lt;value& gt; は以下のいずれかになります。
- GMT - クロックは Universal Time (グリニッジ標準時)に設定されます。
- ARC - ARC コンソールの 42-year 時間オフセットが有効(Alpha ベースのシステムのみ)。
32.1.7. /etc/sysconfig/desktop
/etc/sysconfig/desktop
ファイルは、新しいユーザーのデスクトップと、ランレベル 5 に入る際に実行するディスプレイマネージャーを指定します。
- DESKTOP=" <value> "。" <value>" は以下のいずれかになります。
- GNOME - GNOME デスクトップ環境を選択します。
- kde: KDE デスクトップ環境を選択します。
- DISPLAYMANAGER=" <value> "。" <value>" は以下のいずれかになります。
- GNOME - GNOME Display Manager を選択します。
- kde: KDE Display Manager を選択します。
- XDM - X Display Manager を選択します。
32.1.8. /etc/sysconfig/dhcpd
/etc/sysconfig/dhcpd
ファイルは、システムの起動時に dhcpd デーモンに引数を渡すために使用されます。dhcpd デーモンは、DHCP (Dynamic Host Configuration Protocol)および Internet Bootstrap Protocol (BOOTP)を実装します。DHCP および BOOTP は、ネットワーク上のマシンにホスト名を割り当てます。このファイルで利用可能なパラメーターの詳細は、dhcpd の man ページを参照してください。
32.1.9. /etc/sysconfig/exim
/etc/sysconfig/exim
ファイルを使用すると、メッセージを 1 つ以上のクライアントに送信し、必要なネットワーク上でメッセージをルーティングできます。ファイルは、exim の実行のデフォルト値を設定します。デフォルト値は、バックグラウンドデーモンとして実行され、何かがバックアップされている場合に 1 時間ごとにキューを確認するように設定されています。
- DAEMON= <value>。ここで、<value& gt; は以下のいずれかになります。
- はい: 受信メール
で
ポート 25 をリッスンするように設定する必要があります。yes は、Exim's -bd オプションの使用を意味します。 - no: 受信メールのポート 25 をリッスンするように設定しないでください。
- QUEUE=1h は -q$
QUEUE
の ように指定されます。-q オプションは、/etc/sysconfig/exim
が存在し、QUEUE
が空または定義されているかを示すように指定されません。
32.1.10. /etc/sysconfig/firstboot
etc/rc.d/init.d/firstboot
スクリプトを呼び出して、 セットアップエージェント を起動します。このアプリケーションを使用すると、ユーザーは最新の更新や追加のアプリケーションおよびドキュメントをインストールできます。
/etc/sysconfig/firstboot
ファイルは、 設定エージェント アプリケーションが後続の再起動では実行されないようにします。次回システムを起動したときに実行するには、/etc/sysconfig/firstboot
を削除し、で chkconfig --level 5 firstboot を実行します。
32.1.11. /etc/sysconfig/gpm
/etc/sysconfig/gpm
ファイルは、起動時に gpm デーモンに引数を渡すために使用されます。gpm デーモンはマウスサーバーであり、マウスアクセラレーションとマウスの途中クリックの貼り付けを可能にします。このファイルで利用可能なパラメーターの詳細は、glock の man ページを 参照し てください。デフォルトでは、DEVICE ディレクティブは /dev/input/mice
に設定されます。
32.1.12. /etc/sysconfig/hwconf
/etc/sysconfig/hwconf
ファイルには、kudzu がシステムで検出されたすべてのハードウェアと、使用されているドライバー、ベンダー ID、およびデバイス ID 情報が一覧表示されます。kudzu プログラムは、システム上の新しいハードウェアや変更されたハードウェアを検出し、設定します。/etc/sysconfig/hwconf
ファイルは手動で編集することは意図されていません。編集されると、デバイスは追加または削除中と突然表示される可能性があります。
32.1.13. /etc/sysconfig/i18n
/etc/sysconfig/i18n
ファイルは、デフォルトの言語、サポートされている言語、およびデフォルトのシステムフォントを設定します。以下に例を示します。
LANG="en_US.UTF-8" SUPPORTED="en_US.UTF-8:en_US:en" SYSFONT="latarcyrheb-sun16"
32.1.14. /etc/sysconfig/init
/etc/sysconfig/init
ファイルは、システムの起動プロセス中にシステムがどのように表示され、機能するかを制御します。
- BOOTUP= <value >。ここで、& lt;value& gt; は以下のいずれかになります。
- COL: 標準の色ブート表示で、デバイスおよびサービスの起動の成功または失敗が色分けされます。
- verbose: 正常または失敗のメッセージよりも、より多くの情報を提供する古いスタイル表示。
- それ以外のものは新しい表示を意味しますが、ANSI 形式はありません。
- RES_COL= <value >。ここで、< value > はステータスラベルを開始する画面のコラムの数に置き換えます。デフォルトでは 60 に設定されます。
- MOVE_TO_COL= <value > です。ここで、< value > は echo -en コマンドを使用して、カーソルを
RES_COL
行の値に移動します。 - SE --------|-----LOR_SUCCESS= <value > です。ここで、< value > は echo -en コマンドを使用して成功の色を設定します。デフォルトの色は green に設定されています。
- SE ----------|-----LOR_FAILURE= <value > です。ここで、< value > は echo -en コマンドを使用して障害の色を設定します。デフォルトの色は red に設定されます。
- SE --------|-----LOR_WARNING= <value > です。< value > は echo -en コマンドを使用して警告の色を設定します。デフォルトの色は yellow に設定されます。
- SENORMALLOR_NORMAL= <value& gt; です。ここで、< value > は echo -en で色を標準にリセットします。
- LOGLEVEL= <value>。ここで、< ;value > はカーネルの初期コンソールロギングレベルを設定します。デフォルトは 3 です。8 はすべての(デバッグを含む)を意味します。1 はカーネルパニックのみを意味します。syslogd デーモンは、この設定が開始されたら上書きされます。
- KeepAlive = <value>。ここで、<value& gt; は以下のブール値のいずれかになります。
- yes: インタラクティブモードのキーチェックを有効にします。
- no: インタラクティブモードのキーチェックを無効にします。
32.1.15. /etc/sysconfig/ip6tables-config
/etc/sysconfig/ip6tables-config
ファイルは、カーネルが起動時に IPv6 パケットフィルターリングを設定するのに使用する情報、または ip6tables サービスが起動するたびに保存されます。
/etc/sysconfig/ip6tables
ファイルに追加します。
service ip6tables save
32.1.16. /etc/sysconfig/iptables-config
/etc/sysconfig/iptables-config
ファイルは、ブート時またはサービスが起動するたびに、カーネルがパケットフィルターリングサービスを設定するのに使用される情報を保存します。
/etc/sysconfig/iptables
ファイルに追加します。
service iptables save
32.1.17. /etc/sysconfig/irda
/etc/sysconfig/irda
ファイルは、起動時にシステム上のインフラストラクチャーデバイスを設定する方法を制御します。
- IRDA= <value >。ここで、& lt;value& gt; は以下のブール値のいずれかになります。
- はい - 無 線は 実行され、ネットワーク接続を試みる別のノートブックコンピューターなど、インフラストラクチャーポートへの接続を試みているかどうかを確認するために定期的にチェックします。インフラストラクチャーデバイスがシステムで機能するには、この行を yes に設定する必要があります。
- no - irattach は実行されず、infrad デバイス通信を防ぎます。
- DEVICE= <value& gt;。ここで、<value > はインフラストラクチャー接続を処理するデバイス(通常はシリアルポート)です。シリアルデバイスエントリーの例は、
/dev/ttyS2
です。 - DON GLE= <value> です。ここで、< value > は、infrared 通信に使用されるドバルのタイプを指定します。この設定は、実際のインフラポートではなくシリアルドアグラムを使用するユーザーに存在します。dongle は、従来のシリアルポートに接続され、infrared 経由で通信するデバイスです。実際のインフラポートを持つノートブックは、アドオンのドロングを持つコンピューターよりもはるかに一般的であるため、この行はデフォルトではコメントアウトされています。サンプル dongle エントリーは
actisys+
です。 - DISCOVERY= <value>。ここで、<value& gt; は以下のブール値のいずれかになります。
- Yes: 検出モードで irattach を開始します。つまり、他のインフラされたデバイスをアクティブにチェックします。マシンが infrared 接続をアクティブに検索するには、これを有効にする必要があります(つまり、接続を開始しないピア)。
- no: 検出モードで irattach を開始しません。
32.1.18. /etc/sysconfig/kernel
/etc/sysconfig/kernel
設定ファイルは、システムの起動時にカーネルの選択を制御します。以下のデフォルト値を持つ 2 つのオプションがあります。
UPDATEDEFAULT=yes
- このオプションを使用すると、新規インストールしたカーネルがブートエントリーのデフォルトとして選択されます。
DEFAULTKERNEL=kernel
- このオプションは、デフォルトとして使用するパッケージタイプを指定します。
32.1.18.1. 古いカーネルバージョンをデフォルトとして維持する
- 以下のように、/etc/sysconfig/kernel の UPDATEDEFAULT オプションをコメントアウトします。
# UPDATEDEFAULT=yes
32.1.18.2. カーネルデバッガーのデフォルトカーネルとしての設定
- 以下のように /etc/sysconfig/kernel 設定ファイルを編集します。
DEFAULTKERNEL=kernel-debug
32.1.19. /etc/sysconfig/keyboard
/etc/sysconfig/keyboard
ファイルはキーボードの動作を制御します。以下の値を使用できます。
- KEYBOARDTYPE="sun|pc" の場合、sun は Sun キーボードが
/dev/kbd
にアタッチされ、pc は PS/2 ポートに接続された PS/2 キーボードを意味します。 - KEYTABLE=" <file> "。ここ で、<file > はキー割ファイルの名前です。例: KEYTABLE="us"キーテーブルとして使用できるファイルは、
/lib/kbd/keymaps/i386
で始まり、そこから異なるキーボードレイアウトにまとめられるので、<file > .kmap.gz
というラベルが付いています。KEYTABLE 設定に一致する/lib/kbd/keymaps/i386
の下にある最初のファイルが使用されます。
32.1.20. /etc/sysconfig/kudzu
/etc/sysconfig/kuzdu
ファイルは、システムの起動時に kudzu によってシステムハードウェアの安全なプローブをトリガーします。安全なプローブは、シリアルポートプロービングを無効にする 1 つです。
- SAFE= <value >。ここで、& lt;value& gt; は以下のいずれかになります。
- はい - kuzdu は安全なプローブを実行します。
- no: kuzdu は通常のプローブを実行します。
32.1.21. /etc/sysconfig/named
/etc/sysconfig/ named
ファイルは、起動時に名前付きデーモンに引数を渡すために使用されます。名前付き デーモンは、BIND バージョン 9 ディストリビューションである Berkeley Internet Name Domain (BIND)を実装する Domain Name System (DNS)サーバーです。このサーバーは、ネットワーク上の IP アドレスに関連付けられたホスト名の表を維持します。
- ROOTDIR="</some/where>" で、</ some/where > は、named が実行される設定済みの chroot 環境のフルディレクトリーパスを指します。最初に、この chroot 環境を設定する必要があります。詳細は、info chroot と入力します。
- OPTIONS="<value>"。ここで、< value > は named except
-t
の man ページに記載されているオプションです。-t
の代わりに、上記の ROOTDIR 行を使用します。
32.1.22. /etc/sysconfig/network
/etc/sysconfig/network
ファイルは、必要なネットワーク設定に関する情報を指定するために使用されます。以下の値を使用できます。
- NETWORKING= <value>。ここで、<value& gt; は以下のブール値のいずれかになります。
- はい: ネットワークを設定する必要があります。
- いいえ: ネットワークを設定しないでください。
- HOSTNAME= <value >。ここで、< value > は 完全修飾ドメイン 名(FQDN)である必要があります(例:
hostname.expample.com
)。必要なホスト名を指定できます。 - GATEWAY= <value>。ここ で、<value > はネットワークのゲートウェイの IP アドレスになります。
- GATEWAYDEV= <value>。ここ で、<value > は
eth0
などのゲートウェイデバイスです。同じサブネットに複数のインターフェイスがあり、それらのインターフェイスの 1 つがデフォルトゲートウェイへの優先ルートに必要な場合に、このオプションを設定します。 - NISDOMAIN= <value>。ここで、<value& gt; は NIS ドメイン名に置き換えます。
- NOZEROCONF= <value> です。< value> を true に設定すると、zeroconf ルートが無効になります。デフォルトでは、zeroconf ルート(169.254.0.0)はシステムの起動時に有効になります。zeroconf の詳細は、を参照して http://www.zeroconf.org/ ください。
32.1.23. /etc/sysconfig/nfs
/etc/sysconfig/nfs
ファイルを使用して、必要な RPC サービスを実行するポートを制御します。
/etc/sysconfig/nfs
は、デフォルトですべてのシステムに存在するわけではありません。存在しない場合は、これを作成して以下の変数を追加します(または、ファイルが存在する場合は、コメントを解除し、必要に応じてデフォルトのエントリーを変更します)。
MOUNTD_PORT=x
- mountd (rpc.mountd)が使用する TCP および UDP ポートを制御します。x を未使用のポート番号に置き換えます。
STATD_PORT=x
- ステータス(rpc.statd)が使用する TCP および UDP ポートを制御します。x を未使用のポート番号に置き換えます。
LOCKD_TCPPORT=x
- nlockmgr (rpc.lockd)が使用する TCP ポートを制御します。x を未使用のポート番号に置き換えます。
LOCKD_UDPPORT=x
- nlockmgr (rpc.lockd)が使用する UDP ポートを制御します。x を未使用のポート番号に置き換えます。
/var/log/messages
を確認してください。通常、すでに使用されているポート番号を指定すると、NFS は起動に失敗します。/etc/sysconfig/nfs
を編集した後、service nfs restart コマンドを実行して NFS サービスを再起動します。rpcinfo -p コマンドを実行して、変更を確認します。
- NFS 用に TCP および UDP ポート 2049 を許可します。
- TCP および UDP ポート 111 (portmap/sunrpc)を許可します。
MOUNTD_PORT="x"
で指定した TCP および UDP ポートを許可します。STATD_PORT="x"
で指定した TCP および UDP ポートを許可します。LOCKD_TCPPORT="x"
で指定した TCP ポートを許可します。LOCKD_UDPPORT="x"
で指定した UDP ポートを許可します。
32.1.24. /etc/sysconfig/ntpd
/etc/sysconfig/ntpd
ファイルは、起動時に ntpd デーモンに引数を渡すために使用されます。ntpd デーモンは、システムクロックを設定して維持し、インターネット標準タイムサーバーと同期します。Network Time Protocol (NTP)のバージョン 4 を実装します。このファイルで利用可能なパラメーターの詳細は、Web ブラウザーを使用して /usr/share/doc/ntp- <version> /ntpd.htm (ここでの <version
> は ntpdのバージョン番号)を表示します。デフォルトでは、このファイルは ntpd プロセスの所有者をユーザー ntp
に設定します。
32.1.25. /etc/sysconfig/radvd
/etc/sysconfig/radvd
ファイルは、システムの起動時に radvd デーモンに引数を渡すために使用されます。radvd デーモンは、ルーターの要求をリッスンし、IP バージョン 6 プロトコルのルーター広告を送信します。このサービスは、ネットワーク上のホストがこれらのルーター通知に基づいてデフォルトのルーターを動的に変更できるようにします。このファイルで利用可能なパラメーターの詳細は、radvd の man ページを参照してください。デフォルトでは、このファイルは radvd プロセスの所有者をユーザー radvd
に設定します。
32.1.26. /etc/sysconfig/samba
/etc/sysconfig/samba
ファイルは、起動時に smbd および nmbd デーモンに引数を渡すために使用されます。smbd デーモンは、ネットワーク上の Windows クライアントのファイル共有接続を提供します。nmbd デーモンは、IP 命名サービス上で NetBIOS を提供します。このファイルで利用可能なパラメーターの詳細は、smbd の man ページを参照してください。デフォルトでは、このファイルは smbd および nmbd をデーモンモードで実行するように設定します。
32.1.27. /etc/sysconfig/selinux
/etc/sysconfig/selinux
ファイルには、SELinux の基本的な設定オプションが含まれています。このファイルは、/etc/selinux/config
へのシンボリックリンクです。
32.1.28. /etc/sysconfig/sendmail
/etc/sysconfig/sendmail
ファイルを使用すると、1 つ以上のクライアントにメッセージを送信し、必要なネットワーク上でメッセージをルーティングできます。ファイルは、Sendmail アプリケーションを実行するデフォルト値を設定します。デフォルト値は、バックグラウンドデーモンとして実行され、何かがバックアップされている場合に 1 時間ごとにキューを確認するように設定されています。
- DAEMON= <value>。ここで、<value& gt; は以下のいずれかになります。
- はい: Sendmail は、受信メールのポート 25 をリッスンするように設定する必要があります。yes は、Sendmail の-bd オプションを使用することを意味します。
- no: Sendmail は、受信メールのポート 25 をリッスンするように設定しないでください。
- Sendmail に -q$ QUEUE として提供される QUEUE=1h。
/etc/sysconfig/sendmail
が存在し、QUEUE
が空または未定義の場合、-q オプションは Sendmail に指定されません。
32.1.29. /etc/sysconfig/spamassassin
/etc/sysconfig/spamassassin
ファイルは、システムの起動時に spamd デーモン(デーモン化されたバージョンの Spamassassin)に引数を渡すために使用されます。SpamAssassin は、電子メールのスパムフィルターアプリケーションです。利用可能なオプションの一覧は、spamd の man ページを参照してください。デフォルトでは、spamd がデーモンモードで実行し、ユーザー設定を作成し、自動作成ホワイトリスト(一括送信者を許可)を設定します。
32.1.30. /etc/sysconfig/squid
/etc/sysconfig/squid
ファイルは、起動時に squid デーモンに引数を渡すために使用されます。squid デーモンは、Web クライアントアプリケーションのプロキシーキャッシュサーバーです。squid プロキシーサーバーの設定に関する詳細は、Web ブラウザーを使用して /usr/share/doc/squid- <version> / ディレクトリーを開きます。<version
> は、システムにインストールされている squid バージョン番号に置き換えてください。デフォルトでは、このファイルは squid がデーモンモードで起動するように設定し、それ自体をシャットダウンするまでの時間を設定します。
32.1.31. /etc/sysconfig/system-config-securitylevel
/etc/sysconfig/system-config-securitylevel
ファイルには、ユーザーが選択したすべてのオプションが含まれます(system-config-securitylevel)。ユーザーは手動でこのファイルを変更しないでください。Security Level Configuration Tool の詳細は、「ファイアウォールの基本設定」 を参照してください。
32.1.32. /etc/sysconfig/system-config-selinux
/etc/sysconfig/system-config-selinux
ファイルには、SELinux Administration Tool (system-config-selinux)が最後に実行されたときにユーザーが選択するすべてのオプションが含まれます。ユーザーは手動でこのファイルを変更しないでください。SELinux 管理ツールと SELinux 全般に関する詳細情報は、「SELinux の概要」 を参照してください。
32.1.33. /etc/sysconfig/system-config-users
/etc/sysconfig/system-config-users
ファイルは、グラフィカルアプリケーション User Manager の設定ファイルです。このファイルは、root、デーモン、lp などのシステムユーザーを除外するために使用されます。このファイルは、 User Manager アプリケーションの Preferences > Filter system users and groups プルダウンメニューによって編集されるため、手動で編集することはできません。このアプリケーションの使用に関する詳細は、「」 を参照してください。
32.1.34. /etc/sysconfig/system-logviewer
/etc/sysconfig/system-logviewer
ファイルは、グラフィカル、インタラクティブなログ表示アプリケーション Log Viewer の設定ファイルです。このファイルは、ログビューアー アプリケーションの Edit > Preferences プルダウンメニューによって編集されるため、手動で編集しないでください。このアプリケーションの使用に関する詳細は、40章ログファイル を参照してください。
32.1.35. /etc/sysconfig/tux
/etc/sysconfig/tux
ファイルは、カーネルベースの Web サーバーである Red Hat Content Accelerator (以前は TUXと呼ばれていました)の設定ファイルです。Red Hat Content Accelerator の設定に関する詳細は、Web ブラウザーを使用して /usr/share/doc/tux- <version> /tux/index.html ファイルを開きます。
< version > は、システムにインストールされている TUX のバージョン番号に置き換えてください。このファイルで利用可能なパラメーターは、/usr/share/doc/tux- <version> /tux/parameters.html
に一覧表示されます。
32.1.36. /etc/sysconfig/vncservers
/etc/sysconfig/vncservers
ファイルは、仮想ネットワークコンピューティング (VNC)サーバーを起動する方法を設定します。
- VNCSERVERS= <value >。ここで、< value > は "1 :fred" のように設定され、ディスプレイ :1 でユーザー fred に対して VNC サーバーを起動する必要があることを示します。リモート VNC サーバーへの接続を試みる前に、ユーザー fred が vncpasswd コマンドを使用して VNC パスワードを設定する必要があります。
32.1.37. /etc/sysconfig/xinetd
/etc/sysconfig/xinetd
ファイルは、起動時に xinetd デーモンに引数を渡すために使用されます。xinetd デーモンは、そのサービスのポートへのリクエストを受け取ると、インターネットサービスを提供するプログラムを起動します。このファイルで利用可能なパラメーターの詳細は、xinetd の man ページを参照してください。xinetd サービスの詳細は、「xinetd」 を参照してください。
32.2. /etc/sysconfig/
ディレクトリーのディレクトリー
/etc/sysconfig/
にあります。
apm-scripts/
- このディレクトリーには、APM suspend/resume スクリプトが含まれます。ファイルを直接編集しないでください。カスタマイズが必要な場合は、スクリプトの最後に呼び出される
/etc/sysconfig/apm-scripts/apmcontinue
という名前のファイルを作成します。/etc/sysconfig/apmd
を編集してスクリプトを制御することもできます。 cbq/
networking/
- このディレクトリーは Network Administration Tool (system-config-network)によって使用され、その内容は手動で編集しないでください。Network Administration Tool を使用したネットワークインターフェイスの設定に関する詳細は、17章Network Configuration を参照してください。
network-scripts/
eth0
イーサネットインターフェイスのifcfg-eth0
など、設定済みの各ネットワークインターフェイスのネットワーク設定ファイル。- ifup や ifdown などのネットワークインターフェイスをアップまたはダウンするために使用されるスクリプト。
- ifup-isdn や ifdown-isdn などの ISDN インターフェイスを起動するために使用されるスクリプト。
- 直接編集してはならないさまざまな共有ネットワーク機能スクリプト。
network-scripts
ディレクトリーの詳細は、16章Network Interfaces を参照してください。rhn/
- このディレクトリーは、RHN Classic によって管理されているレガシーシステムで利用できます。証明書ベースの Red Hat Network に対して登録されたシステムは、このディレクトリーを使用しません。
32.3. 関連情報
/etc/sysconfig/
ディレクトリー内のファイルの概要のみを目的としています。以下のソースには、より包括的な情報が含まれます。
32.3.1. インストールされているドキュメント
/usr/share/doc/initscripts- <version-number> /sysconfig.txt
: このファイルには、/etc/sysconfig/
ディレクトリーにあるファイルのより信頼できる一覧と、それらに使用できる設定オプションが含まれています。このファイル のパスにある <version-number > は、インストールされている initscripts パッケージのバージョンに対応します。
第33章 日付と時刻の設定
- デスクトップから アプリケーション(パネルのメインメニュー)> System Settings > Date & Timeに移動します。
- デスクトップからツールバーで時間を右クリックし、Adjust Date and Time を選択します。
- コマンド system-config-date、system-config-time、または dateconfig をシェルプロンプト( XTerm や GNOME ターミナルなど)に入力します。
33.1. 日時のプロパティー
図33.1 日時のプロパティー
[D]
33.2. ネットワークタイムプロトコル(NTP)プロパティー
図33.2 NTP プロパティー
[D]
33.3. タイムゾーンの設定
第34章 キーボードの設定
図34.1 キーボード設定ツール
[D]
第35章 X Window System
35.1. X11R7.1 リリース
/usr/
X11R6 ではなく /usr/
下に置かれるようになりました。/etc/X11/ ディレクトリーに
は、X クライアントおよびサーバーアプリケーションの設定ファイルが含まれます。これには、X サーバー自体、xfs フォントサーバー、X ディスプレイマネージャー、およびその他の多くのベースコンポーネントの設定ファイルが含まれます。
/etc/fonts/fonts.conf
です。フォントの設定および追加に関する詳細は、「fonts」 を参照してください。
/etc/X11/xorg.conf
)を手動で編集する必要がある場合があります。このファイルの構造に関する詳細は、「X サーバー設定ファイル」 を参照してください。
35.2. デスクトップ環境およびウィンドウマネージャー
35.2.1. デスクトップ環境
- GNOME - GTK+ 2 グラフィカルツールキットをベースとする Red Hat Enterprise Linux のデフォルトのデスクトップ環境。
- kde: Qt 3 グラフィカルツールキットに基づく代替デスクトップ環境。
35.2.2. ウィンドウマネージャー
- kwin
- KWin ウィンドウマネージャーは、KDE のデフォルトのウィンドウマネージャーです。これは、カスタムテーマをサポートする効率的なウィンドウマネージャーです。
- metacity
- Metacity ウィンドウマネージャーは、GNOME のデフォルトのウィンドウマネージャーです。これは、カスタムテーマもサポートするシンプルで効率的なウィンドウマネージャーです。このウィンドウマネージャーを実行するには、
metacity
パッケージをインストールする必要があります。 - mwm
- Motif Window Manager (mwm)は、基本的なスタンドアロンウィンドウマネージャーです。これはスタンドアロンのウィンドウマネージャーとなるように設計されているため、GNOME または KDE と併用しないでください。このウィンドウマネージャーを実行するには、
openmotif
パッケージをインストールする必要があります。 - twm
- 最小 タブウィンドウマネージャー (すべてのウィンドウマネージャーの最も基本的なツールセットを提供するtwm )は、スタンドアロンまたはデスクトップ環境で使用できます。X11R7.1 リリースの一部としてインストールされます。
~]# which twm /usr/bin/twm ~]# xinit -e /usr/bin/twm
35.3. X サーバー設定ファイル
/usr/bin/Xorg
)です。関連する設定ファイルは /etc/X11/ ディレクトリーに
保存されます(シンボリックリンクである X - /usr/bin/Xorg
を参照)。X サーバーの設定ファイルは /etc/X11/xorg.conf
です。
/usr/lib/xorg/modules/
ディレクトリーには、実行時に動的にロードできる X サーバーモジュールが含まれます。デフォルトでは、/usr/lib/xorg/modules/
内の一部のモジュールのみが X サーバーによって自動的に読み込まれます。
/etc/X11/xorg.conf
で指定する必要があります。モジュールの読み込みの詳細は、「モジュール」 を参照してください。
35.3.1. xorg.conf
/etc/X11/xorg.conf ファイルを手動で編集する必要はほとんどありません
が、特にトラブルシューティングを行うときに、さまざまなセクションや任意のパラメーターを理解しておくと便利です。
35.3.1.1. 構造
/etc/X11/xorg.conf
ファイルは、システムハードウェアの特定の側面に対応するさまざまなセクションで設定されています。
/etc/X11/xorg.conf
ファイル内の一部のオプションはブール値スイッチを受け入れ、機能をオンまたはオフにします。許可されるブール値は以下のとおりです。
- 1、on、true、または yes - オプションをオンにします。
- 0、off、false、または no - オプションをオフにします。
/etc/X11/xorg.conf
ファイルに表示される順序で、より重要なセクションの一部になります。X サーバー設定ファイルの詳細は、xorg.conf
の man ページを参照してください。
35.3.1.2. Serverflags
Section "ServerFlags" Option "DontZap" "true" EndSection
- "DontZap" " <boolean> ": < boolean > の値が true に設定されている場合、この設定は Ctrl+Alt+Backspace キーの組み合わせを使用して X サーバーをすぐに終了しないようにします。
- "DontZoom" " <boolean> ": < boolean > の値が true に設定されている場合、この設定は Ctrl+Alt+Keypad-Plus+Ctrl+Alt+Keypad- キーの組み合わせを使用して設定されたビデオ解像度を循環しないようにします。
35.3.1.3. ServerLayout
Section "ServerLayout" Identifier "Default Layout" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection
- identifier - この ServerLayout セクションに一意の名前を指定します。
- screen: X サーバーで使用する スクリーン セクションの名前を指定します。複数の スクリーン オプションが存在する場合があります。一般的な Screen エントリーの例を以下に示します。
Screen 0 "Screen0" 0 0
この例の Screen エントリーの最初の番号(0)は、ビデオカードの最初のモニターコネクターまたは ヘッド が、識別子が Screen 0 の Screen セクションで指定されている設定を使用していること を示しています。Screen 0 の識別子を持つスクリーンセクションの例は、「スクリーン」 を参照してください。ビデオカードに複数のヘッドがある場合は、別の画面 エントリーと、異なる 画面セクション識別 子が必要です。Screen0 の右側にある 数字は、画面左上隅の絶対 X および Y コーディネートを指定します(デフォルトでは0 )。 - InputDevice: X サーバーで使用する InputDevice セクションの名前を指定します。少なくとも 2 つの InputDevice エントリーがあることが推奨されます。1 つはデフォルトのマウス用で、もう 1 つはデフォルトのキーボード用です。CorePointer オプションおよび CoreKeyboard オプションは、それらがプライマリーマウスとキーボードであることを示します。
- オプション " <option-name> " - セクションの追加パラメーターを指定するオプションのエントリー。ここで一覧表示されるオプションは ServerFlags セクションに記載されているオプションを上書きします。< ;option-name> を、
xorg.conf
の man ページのこのセクションに記載されている有効なオプションに置き換えます。
/etc/X11/xorg.conf
ファイルに複数の ServerLayout セクションを配置することができます。ただし、デフォルトでは、サーバーは最初に見つかったもののみを読み取ります。
35.3.1.4. ファイル
Section "Files" RgbPath "/usr/share/X11/rgb.txt" FontPath "unix/:7100" EndSection
- r gbPath: R GB の色データベースの場所を指定します。このデータベースは、X で有効な色名をすべて定義し、それらを特定の RGB 値に関連付けます。
- font Path: X サーバーが xfs フォントサーバーからフォントを取得するために接続する場所を指定します。デフォルトでは、FontPath は unix/:7100 です。これは、ポート 7100 のプロセス間通信(IPC)の UNIX ドメインソケットを使用してフォント情報を取得するように X サーバーに指示します。X およびフォントの詳細は、「fonts」 を参照してください。
- ModulePath: X サーバーモジュールを格納する代替ディレクトリーを指定するオプションのパラメーター。
35.3.1.5. モジュール
/usr/lib/xorg/modules/
ディレクトリーから以下のモジュールを自動的に読み込みます。
extmod
dbe
glx
freetype
type1
record
dri
/etc/X11/xorg.conf
に追加すると、X サーバーがデフォルトのモジュールでは なく、このセクションに記載されているモジュールを読み込むように指示します。
Section "Module" Load "fbdevhw" EndSectionデフォルトのモジュールの代わりに
fbdevhw
を読み込むように X サーバーに指示します。
/etc/X11/xorg.conf
に追加する場合は、読み込むデフォルトモジュールと追加のモジュールを指定する必要があります。
35.3.1.6. inputDevice
Section "InputDevice" Identifier "Keyboard0" Driver "kbd" Option "XkbModel" "pc105" Option "XkbLayout" "us" EndSection
- Identifier - この InputDevice セクションの一意の名前を指定します。これは必須のエントリーです。
- driver - デバイスに対して読み込むデバイスドライバー X の名前を指定します。
- option - デバイスに関する必要なオプションを指定します。マウスを指定して、デバイスに対して自動検出したデフォルトを上書きすることもできます。通常、
xorg.conf
にマウスを追加する際に、以下のオプションが含まれます。- protocol - IMPS/2 など、マウスで使用されるプロトコルを指定します。
- device - 物理デバイスの場所を指定します。
- Emulate3Buttons - 両方のマウスボタンを同時に押したときに、2 ボタンボタンを 3 ボタンのマウスのように動作させるかどうかを指定します。
このセクションの有効なオプションの一覧については、xorg.conf
の man ページを参照してください。
35.3.1.7. 監視
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
/etc/X11/xorg.conf
の Monitor セクションで値を手動で編集する場合は注意してください。不適切な値は、モニターを破損または破棄する可能性があります。安全な動作パラメーターの一覧は、モニターのドキュメントを参照してください。
- identifier - この Monitor セクションの一意の名前を指定します。これは必須のエントリーです。
- vendorName: モニターのベンダーを指定するオプションのパラメーター。
- modelName - モニターのモデル名を指定するオプションのパラメーターです。
- DisplaySize: モニターのイメージ領域の物理サイズ(ミリ秒単位)を指定するオプションのパラメーター。
- HorizSync: kHz のモニターと互換性のある水平同期頻度の範囲を指定します。これらの値は、X サーバーがモニターの組み込みまたは指定された モードライン エントリーの有効性を判断するのに役立ちます。
- VertRefresh - kHz でモニターによってサポートされる垂直更新頻度の範囲を指定します。これらの値は、X サーバーがモニターの組み込みモードまたは指定された モードライン エントリーの有効性を判断するのに役立ちます。
- モードライン: 特定の解像度でモニターの追加のビデオモードを指定するオプションのパラメーターで、特定の水平同期および垂直更新の解像度を使用します。モードライン エントリーの詳細は、
xorg.conf
の man ページを参照してください。 - オプション " <option-name> " - セクションの追加パラメーターを指定するオプションのエントリー。< ;option-name> を、
xorg.conf
の man ページのこのセクションに記載されている有効なオプションに置き換えます。
35.3.1.8. Device
Section "Device" Identifier "Videocard0" Driver "mga" VendorName "Videocard vendor" BoardName "Matrox Millennium G200" VideoRam 8192 Option "dpms" EndSection
- identifier - この デバイス セクションに一意の名前を指定します。これは必須のエントリーです。
- driver: ビデオカードを使用するために X サーバーが読み込む必要があるドライバーを指定します。ドライバーの一覧は、
hwdata
パッケージでインストールされる/usr/share/hwdata/videodrivers
を参照してください。 - vendorName: ビデオカードのベンダーを指定するオプションのパラメーター。
- BoardName - ビデオカードの名前を指定するオプションのパラメーターです。
- video ram: ビデオカードで利用可能な RAM の容量をキロバイトで指定する任意のパラメーター。この設定はビデオカードにのみ必要です。X サーバーはビデオ RAM の量を検出するためにプローブできません。
- Busid: ビデオカードのバスの場所を指定するエントリー。1 つのビデオカードしかないシステムでは BusID エントリーは任意であり、デフォルトの
/etc/X11/xorg.conf
ファイルに存在しない場合もあります。ただし、複数のビデオカードが搭載されているシステムでは、BusID エントリーが存在する必要があります。 - screen: Device セクションが設定するビデオカード上のモニターコネクターまたはヘッドを指定するオプションのエントリー。このオプションは、複数のヘッドを持つビデオカードにのみ役立ちます。複数のモニターが同じビデオカード上の異なるヘッドに接続されている場合は、個別の デバイス セクションが存在する必要があり、これらのセクションはそれぞれ異なる 画面 値を持っている必要があります。Screen エントリーの値は整数である必要があります。ビデオカードの最初のヘッドの値は 0 です。各ヘッドの値はこの値を 1 つ増やします。
- オプション " <option-name> " - セクションの追加パラメーターを指定するオプションのエントリー。< ;option-name> を、
xorg.conf
の man ページのこのセクションに記載されている有効なオプションに置き換えます。より一般的なオプションの 1 つが "dpms" (Power Management Signaling の VESA 標準の表示)で、モニターの Service Star エネルギーコンプライアンス設定を有効にします。
35.3.1.9. スクリーン
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
- Identifier - この スクリーン セクションの一意の名前を指定します。これは必須のエントリーです。
- device - デバイス セクションの一意名を指定します。これは必須のエントリーです。
- monitor - Monitor セクションの一意の名前を指定します。これは、
xorg.conf
ファイルで特定の Monitor セクションが定義されている場合にのみ必要になります。通常、モニターは自動的に検出されます。 - DefaultDepth: デフォルトの色深度をビットで指定します。上記の例では、16 (数千の色が提供される)がデフォルトです。承認できる DefaultDepth は 1 つだけですが、これは Xorg コマンドラインオプション -depth < n > を使用して上書きできます。< n > は追加の深さになります。
- サブセクション Display: 特定の色深度で利用可能な画面モードを指定します。Screen セクションには複数の Display サブセクションを含めることができます。これは、画面モードが自動的に検出されるため、完全にオプションです。このサブセクションは通常、自動検出モードを上書きするために使用されます。
- オプション " <option-name> " - セクションの追加パラメーターを指定するオプションのエントリー。< ;option-name> を、
xorg.conf
の man ページのこのセクションに記載されている有効なオプションに置き換えます。
35.3.1.10. DRI
xorg.conf
ファイルにこのセクションを追加すると、これらのデフォルトが上書きされます。
Section "DRI" Group 0 Mode 0666 EndSection
35.4. fonts
35.4.1. fontconfig
/etc/fonts/fonts.conf
設定ファイルを使用することに注意してください。
~/.gtkrc.mine
に追加してフォントを設定できます。
style "user-font" { fontset = "<font-specification>" } widget_class "*" style "user-font"
35.4.1.1. Fontconfig へのフォントの追加
- システム全体のフォントを追加するには、新しいフォントを
/usr/share/fonts/
ディレクトリーにコピーします。ユーザーインストールとデフォルトのフォントを区別するために、local/
などの新規サブディレクトリーを作成することが推奨されます。個別ユーザーのフォントを追加するには、新規フォントをユーザーのホームディレクトリーの.fonts/
ディレクトリーにコピーします。 - 以下の例のように、fc-cache コマンドを使用してフォント情報キャッシュを更新します。
fc-cache <path-to-font-directory>
このコマンドで、< path-to-font-directory > を新規フォント(/usr/share/fonts/local/
または /home/ <user> /.fonts/)を含むディレクトリーに置き換えます。
:
/// を Nautilus アドレスバーに入力し、そこに新しいフォントファイルをドラッグすることで、フォントをグラフィカルにインストールすることもできます。
.gz
拡張子で終わる場合、これは圧縮され、圧縮解除されるまで使用できません。これを行うには、gunzip コマンドを使用するか、ファイルをダブルクリックしてフォントを Nautilus のディレクトリーにドラッグします。
35.4.2. コア X フォントシステム
/etc/X11/xorg.conf
設定ファイルの Files セクション内の FontPath ディレクティブで指定されたフォントサーバーを検索します。FontPath エントリーの詳細は、「ファイル」 を参照してください。
35.4.2.1. XFS 設定
/etc/rc.d/init.d/xfs
スクリプトは、xfs サーバーを起動します。設定ファイル内で複数のオプションを設定できます( /etc/X11/fs/config
)。
- alternate-servers: このフォントサーバーが利用できない場合に使用する別のフォントサーバーの一覧を指定します。コンマ区切りは、一覧で各フォントサーバーを区切ります。
- catalogue: 使用するフォントパスの順序付きリストを指定します。コンマ区切りは、一覧の各フォントパスを区切ります。文字列 :unscaled を使用して、フォントパスの直後に :unscaled を使用して、そのパスのスケーリングされていないフォントを最初に読み込みます。次に、パス全体を再度指定して、他のスケーリングされたフォントもロードされるようにします。
- client-limit: フォントサーバーサービスのクライアントの最大数を指定します。デフォルトは 10 です。
- clone-self: クライアント制限 に達すると、フォントサーバーが新規バージョンのクローンを作成できるようにします。デフォルトでは、このオプションは on です。
- default-point-size: この値を指定しないフォントのデフォルトポイントサイズを指定します。このオプションの値は decipoints で設定されます。デフォルトの 120 は 12 ポイントフォントに対応します。
- ヒント
35.4.2.2.
mkdir /usr/share/fonts/local/
chkfontpath --add /usr/share/fonts/local/
ttmkfdir -d /usr/share/fonts/local/ -o /usr/share/fonts/local/fonts.scale
service xfs reload
35.5.
35.5.1.
35.5.2.
/usr/share/doc/initscripts-<version-number>/sysconfig.txt
35.6. 関連情報
35.6.1. インストールされているドキュメント
35.6.2. 便利な Web サイト
第36章
36.1.
図36.1
[D]
36.2.
図36.2
[D]
36.3.
図36.3
[D]
第37章 ユーザーとグループ
37.1.
図37.1 User Manager
[D]
37.1.1. 新規ユーザーの追加
図37.2
[D]
37.1.2.
図37.3 ユーザープロパティー
[D]
37.1.3. 新規グループの追加
図37.4 新規グループ
[D]
37.1.4.
図37.5
[D]
37.2.
37.2.1. コマンドラインからの設定
37.2.2. ユーザーの追加
表37.1
オプション | 説明 |
---|---|
-c '<comment>' | このオプションは、通常、ユーザーの氏名を指定するのに使用されます。 |
-d <home-dir> | |
-e <date> | |
-f <days> | パスワードが失効してからアカウントが無効になるまでの日数です。 |
-g <group-name> | グループは、ここで指定するよりも前に作成されている必要があります。 |
-G <group-list> | グループは、ここで指定する前に作成しておく必要があります。 |
-m | ホームディレクトリーがない場合は、これを作成します。 |
-M | ホームディレクトリーを作成しません。 |
-n | ユーザー用のユーザープライベートグループを作成しません。 |
-r | |
-p <password> | |
-s | |
-u <uid> |
37.2.3.
groupadd <group-name>
表37.2
オプション | 説明 |
---|---|
-g <gid> | |
-r | |
-f |
37.2.4.
表37.3
オプション | 説明 |
---|---|
-m <days> | |
-M <days> | このオプションで指定した日数と、-d オプションで指定した日数を足した日数が、現在の日数より少ない場合、ユーザーはアカウントを使用する前にパスワードを変更する必要があります。 |
-d <days> | |
-I <days> | パスワードの有効期限後、アカウントをロックするまでの非アクティブ日数を指定します。 |
-E <date> | アカウントがロックされる日付を YYYY-MM-DD のフォーマットで指定します。日付の代わりに、1970 年 1 月 1 日からの日数を使うこともできます。 |
-W <days> | パスワードの有効期限の何日前にユーザーに警告を発するかを指定します。 |
-l | 現在のアカウントエージングの設定を一覧表示します。 |
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. >>>
import crypt print crypt.crypt("<password>","<salt>")
usermod -p "<encrypted-password>" <username>
これを行うには、以下のコマンドを使用します。usermod -p "" username
chage -d 0 username
このコマンドは、パスワードが最後に変更された日付の値をエポック (1970 年 1 月 1 日) に設定します。この値は、パスワードエージングポリシーがある場合、それに関係なく、パスワードの即時期限切れを強制します。
37.2.5. プロセスの説明
- この行には以下の特徴があります。
- この行には以下の特徴があります。
- 注記
- パスワードは有効期限なしで設定されています。
juan
という名前のグループ用の新しい行が/etc/gshadow
に作成されます。この行には以下の特徴があります。- グループ名
juan
で始まります。 - 感嘆符(
!
)が、グループをロックする/etc/gshadow
ファイルのパスワードフィールドに表示されます。 - その他のフィールドはすべて空白です。
- ユーザー
juan
のディレクトリーが/home/
ディレクトリー内に作成されます。このディレクトリーは、ユーザーjuan
およびグループjuan
が所有しています。ただし、ユーザーjuan
に対して のみ 読み取り、書き込み、実行権限があります。その他のパーミッションは拒否されます。 - (デフォルトユーザー設定を含む)
/etc/skel/
ディレクトリー内のファイルは、新しい/home/juan/
ディレクトリーにコピーされます。
juan
という名前のロックされたアカウントがシステム上に存在します。このアカウントをアクティブにするには、管理者が passwd コマンドを使用して、アカウントにパスワードを割り当てる必要があります。また、必要に応じて、パスワードのエージングガイドラインを設定します。
37.3. 標準ユーザー
/etc/passwd
ファイルで設定されている標準ユーザーを、すべて のインストールで一覧表示します。この表の groupid (GID)は、ユーザーの プライマリーグループ です。標準グループの一覧は、「標準グループ」 を参照してください。
表37.4 標準ユーザー
User | 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 |
8 | 12 | /var/spool/mail | /sbin/nologin | |
news | 9 | 13 | /etc/news | |
ucp | 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 |
カナナ | 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 |
37.4. 標準グループ
表37.5 標準グループ
Group | GID | Members |
---|---|---|
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 | |
ホイール | 10 | root |
12 | mail、postfix、exim | |
news | 13 | news |
ucp | 14 | ucp |
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 | |
カナナ | 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 |
37.5. ユーザープライベートグループ
/etc/bashrc
ファイルで設定します。従来の UNIX システムでは、umask は 022 に設定されています。これにより、ファイルまたはディレクトリーを作成したユーザーのみが変更できるようになりました。このスキームでは、作成者のグループ のメンバーなど、他のすべての ユーザーは変更を加えることはできません。ただし、UPG スキームでは、すべてのユーザーがそれぞれプライベートグループを持つため、このグループ保護は必須ではなくなりました。
37.5.1. グループディレクトリー
/usr/share/emacs/site-lisp/
ディレクトリーのファイルを作業する必要があるとします。ディレクトリーの変更に信頼されているユーザーもいますが、誰でも信頼されているとは限りません。以下のコマンドのように、emacs
グループを作成します。
groupadd emacs
emacs
グループに関連付けるには、以下を入力します。
chown -R root.emacs /usr/share/emacs/site-lisp
gpasswd -a <username> emacs
chmod 775 /usr/share/emacs/site-lisp
emacs
)。以下のコマンドを使用します。
chmod 2775 /usr/share/emacs/site-lisp
emacs
グループのすべてのメンバーが /usr/share/emacs/site-lisp/
ディレクトリーにファイルを作成および編集できます。
37.6. シャドウパスワード
shadow-utils
パッケージで提供) シャドウパスワード を使用することが重要です。これにより、システム認証ファイルのセキュリティーが強化されます。このため、インストールプログラムでは、デフォルト設定でシャドウパスワードを有効にしています。
- 暗号化されたパスワードハッシュを、誰でも読み取り可能な
/etc/passwd
ファイルから、root ユーザーのみが読み取り可能な/etc/shadow
に移動することで、システムのセキュリティーを向上させます。 - パスワードのエージングに関する情報を保存します。
/etc/login.defs
ファイルを使用してセキュリティーポリシーを適用できます。
shadow-utils
パッケージが提供するほとんどのユーティリティーは、シャドウパスワードが有効になっているかどうかに関係なく適切に機能します。ただし、パスワードエージングの情報は /etc/shadow
ファイルに排他的に保存されるため、パスワードのエージング情報を作成または変更するコマンドは動作しません。
- chage
- gpasswd
- /usr/sbin/usermod
-e
オプションまたは-f
オプション - /usr/sbin/useradd
-e
オプションまたは-f
オプション
37.7. 関連情報
37.7.1. インストールされているドキュメント
- 関連する man ページ:ユーザーおよびグループの管理に関連するさまざまなアプリケーションおよび設定ファイルに関する man ページが多数あります。より重要な man ページの一部を以下に示します。
- ユーザーおよびグループの管理アプリケーション
- man chage - パスワードのエージングポリシーとアカウントの有効期限を変更するコマンドです。
- man gpasswd:
/etc/group
ファイルを管理するコマンドです。 - man groupadd - グループを追加するコマンドです。
- man grpck:
/etc/group
ファイルを検証するコマンドです。 - man groupdel - グループを削除するコマンドです。
- man groupmod - グループメンバーシップを修正するコマンドです。
- man pwck -
/etc/passwd
ファイルおよび/etc/shadow
ファイルを検証するコマンドです。 - man pwconv - 標準パスワードをシャドウパスワードに変換するツールです。
- man pwunconv - シャドウパスワードを標準パスワードに変換するツールです。
- man useradd: ユーザーを追加するコマンドです。
- man userdel: ユーザーを削除するコマンドです。
- man usermod - ユーザーを修正するコマンドです。
- 設定ファイル
- man 5 group - システムのグループ情報を含むファイルです。
- man 5 passwd - システムのユーザー情報を含むファイルです。
- man 5 shadow - システムのパスワードおよびアカウントの有効期限情報を含むファイルです。
第38章 プリンターの設定
cupsd.conf
の man ページには、CUPS サーバーの設定が記載されています。これには、SSL
サポートを有効にするためのディレクティブが含まれます。ただし、CUPS では使用されるプロトコルバージョンのコントロールが許可されません。『Resolution for POODLE SSLv3.0 vulnerability (CVE-2014-3566) for components that do not allow SSLv3 to be disabled via configuration settings (設定設定で SSLv3 を無効にできないコンポーネントの POODLE SSLv3』.0 脆弱性(CVE-2014-3566)の解決)で説明されている脆弱性により、Red Hat はセキュリティーのためにこれに依存しないことを推奨します。stunnel を使用してセキュアなトンネルを提供し、SSLv3
を無効にすることが推奨されます。
図38.1 プリンター設定ツール
[D]
- AppSocket/HP JetDirect: コンピューターではなく HP JetDirect インターフェイスまたは Appsocket インターフェイスを介してネットワークに直接接続されたプリンター。
- Internet Printing Protocol (IPP) - Internet Printing Protocol (たとえば、ネットワーク上の CUPS を実行している別の Red Hat Enterprise Linux システムに接続されているプリンター)経由で TCP/IP ネットワーク経由でアクセスできるプリンターです。
- LPD/LPR Host または Printer: TCP/IP ネットワーク経由でアクセスできる別の UNIX システムに接続されているプリンター(たとえば、ネットワーク上で LPD を実行している別の Red Hat Enterprise Linux システムに接続されているプリンター)。
- ネットワーク接続された Windows (SMB): SMB ネットワーク上でプリンターを共有する別のシステムに接続されているプリンター(Microsoft Windows™ マシンに接続されているプリンターなど)。
- Networked JetDirect - コンピューターではなく HP JetDirect を介して直接接続したプリンター。
38.1. ローカルプリンターの追加
図38.2 プリンターの追加
[D]
図38.3 ローカルプリンターの追加
[D]
38.2. IPP プリンターの追加
図38.4 IPP プリンターの追加
[D]
38.3. Samba (SMB)プリンターの追加
図38.5 SMB プリンターの追加
[D]
guest
で、Samba サーバーの場合は nobody
です。
38.4. JetDirect プリンターの追加
図38.6 JetDirect プリンターの追加
[D]
- hostname - JetDirect プリンターのホスト名または IP アドレス。
- ポート 番号 - 印刷ジョブをリッスンする JetDirect プリンターのポート。デフォルトのポートは 9100 です。
38.5. プリンターモデルの選択と完了
- データベースからプリンターを選択 - このオプションを選択した場合は、メーカー の一覧からプリンターの 製造元 を選択します。プリンターの製造元が一覧にない場合は、Generic を選択します。
- PPD ファイルの提供 - PPD (PostScript Printer Description)ファイルもプリンターで提供できます。このファイルは通常、製造元によって提供されます。PPD ファイルで提供される場合は、このオプションを選択し、オプションの説明の下にあるブラウザーバーを使用して PPD ファイルを選択できます。
図38.7 プリンターモデルの選択
[D]
38.5.1. プリンター設定の確認
38.6. テストページの印刷
38.7. 既存プリンターの修正
38.7.1. 設定 タブ
図38.8 設定タブ
[D]
38.7.2. ポリシー タブ
図38.9 ポリシータブ
[D]
38.7.3. アクセス制御 タブ
図38.10 アクセス制御タブ
[D]
38.7.4. プリンター および ジョブオプションタブ
図38.11 プリンターオプションタブ
[D]
- ページサイズ: ペーパーのサイズを選択できます。オプションには、US Letter、US Legal、A3、および A4 が含まれます。
- メディアソース: デフォルトでは Automatic に設定されます。別のトレイからの書籍を使用するように、このオプションを変更します。
- メディアタイプ - 文書タイプを変更できます。オプションには、Plain、thick、bond、および transparent が含まれます。
- Resolution - 印刷の品質と詳細を設定します。デフォルトは、inch (dpi)ごとに 300 のドットです。
- Toner Saving - プリンターがリソースを節約するために少ないトナーを使用してリソースを節約するかどうかを選択します。
38.8. 印刷ジョブの管理
図38.12 GNOME 印刷の状態
[D]
例38.1 lpq 出力の例
Rank Owner/ID Class Job Files Size Time active user@localhost+902 A 902 sample.txt 2050 01:20:46
sample.txt
を出力します。印刷フィルターはファイルのタイプを決定し、プリンターが理解できる形式に変換します。
38.9. 関連情報
38.9.1. インストールされているドキュメント
- マップ lpr: コマンドラインからのファイルの印刷を可能にする lpr コマンドの man ページです。
- man lprm: プリントキューから印刷ジョブを削除するためのコマンドラインユーティリティーの man ページです。
- man mpage - 1 つのドキュメントで複数のページを印刷するためのコマンドラインユーティリティーの man ページです。
- man cupsd: CUPS プリンターデーモンの man ページです。
- man cupsd.conf: CUPS プリンターデーモン設定ファイルの man ページです。
- man classes.conf: CUPS のクラス設定ファイルの man ページです。
38.9.2. 便利な Web サイト
- http://www.linuxprinting.org: 『GNU/Linux Printing』 には、Linux での印刷に関する多くの情報が含まれています。
- http://www.cups.org/ - CUPS のドキュメント、FAQ、および newsgroups。
第39章 自動タスク
39.1. Cron
vixie-cron
RPM パッケージがインストールされ、crond サービスが実行されている必要があります。パッケージがインストールされているかを確認するには、rpm -q vixie-cron コマンドを使用します。サービスが実行されているかどうかを確認するには、コマンド /sbin/service crond status を使用します。
39.1.1. Cron ジョブの設定
/etc/crontab
の主な設定ファイルには、以下の行が含まれます。
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
SHELL
変数は、使用するシェル環境(この例では bash シェル)をシステムに指示しますが、PATH
変数はコマンドの実行に使用するパスを定義します。cron ジョブの出力は、MAILTO
変数で定義されたユーザー名に電子メールで送信されます。MAILTO
変数が空の文字列(MAILTO="")
として定義されている場合、電子メールは送信されません。HOME
変数を使用すると、コマンドまたはスクリプトの実行時に使用するホームディレクトリーを設定できます。
/etc/crontab
ファイルの各行はジョブを表し、以下の形式になります。
minute hour day month dayofweek command
minute
- 0 から 59 までの整数時間
- 0 から 23 までの整数day
: 1 から 31 までの整数(月を指定する場合は有効な日である必要があります)month
- 1 から 12 までの任意の整数(または jan や feb などの月の短縮名)dayOfWeek - 0 から 7 までの
整数。0 または 7 は日曜日(sun または mon などの曜日の短縮名)を表します。command
- 実行するコマンド(コマンドは ls /proc >> /tmp/proc などのコマンド、またはカスタムスクリプトを実行するコマンドのいずれかになります)
1-4
は整数 1、2、3、および 4 を意味します。
3, 4, 6, 8
は、これらの 4 つの特定の整数を示します。
/<integer>
で範囲に従うと、整数値は範囲内でスキップできます。たとえば、0-59/2
を使用して、分フィールドで他のすべての分を定義できます。ステップ値はアスタリスクと併用することもできます。たとえば、月のフィールドに */3
の値を使用して、3 カ月ごとにジョブを実行できます。
/etc/crontab
ファイルにあるように、run-parts スクリプトは、/etc/cron.hourly/
、/etc/cron.daily/
、/etc/ cron.weekly/、および /
etc/cron.monthly/
ディレクトリーのスクリプトを、時、毎日、毎週、毎月ごとに実行します。これらのディレクトリーのファイルはシェルスクリプトである必要があります。
/etc/cron.d/
ディレクトリーに追加できます。このディレクトリーのすべてのファイルは、/etc/crontab
と同じ構文を使用します。例については、例39.1「/etc/crontab の例」 を参照してください。
例39.1 /etc/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
/var/spool/cron/
ディレクトリーに保存され、作成したユーザーのユーザー名を使用して実行されます。crontab をユーザーとして作成するには、そのユーザーとしてログインし、コマンド crontab -e を入力して VISUAL
または EDITOR
環境変数で指定されたエディターを使用してユーザーの crontab を編集します。このファイルは、/etc/crontab
と同じ形式を使用します。crontab への変更が保存されると、crontab はユーザー名に従って保存され、ファイル /var/spool/cron/ユーザー名 に書き込まれます
。
/etc/crontab
ファイル、/etc/cron.d/
ディレクトリー、および /var/spool/cron/
ディレクトリーをチェックします。変更が見つかった場合は、メモリーに読み込まれます。そのため、crontab ファイルを変更した場合は、デーモンを再起動する必要はありません。
/etc/sysconfig/run-parts
ファイルで設定することができます。
RANDOMIZE
:1
に設定すると、ランダム化機能が有効になります。0
に設定すると、cron ジョブのランダム化は無効になります。RANDOM
- 初期ランダムシードを指定します。1
以上の整数値に設定する必要があります。RANDOMTIME
:1
以上の整数値に設定すると、追加のランダム化レベルが提供されます。
例39.2 /etc/sysconfig/run-parts の例 - Job Randomization の設定
RANDOMIZE=1 RANDOM=4 RANDOMTIME=8
39.1.2. Cron へのアクセスの制御
/etc/cron.allow
ファイルおよび /etc/cron.deny
ファイルは、cron へのアクセスを制限するために使用されます。両方のアクセス制御ファイルの形式は、各行の 1 つのユーザー名です。空白はいずれのファイルでも許可されません。アクセス制御ファイルが変更された場合、cron デーモン(crond)を再起動する必要はありません。アクセス制御ファイルは、ユーザーが cron ジョブの追加または削除を試みるたびに読み込まれます。
cron.allow
ファイルが存在する場合は、そこに記載されているユーザーのみが cron を使用でき、cron.deny
ファイルは無視されます。
cron.allow
が存在しない場合は、cron.deny
に記載されているユーザーは cron を使用できません。
39.1.3. サービスの起動と停止
39.2. at および Batch
at
RPM パッケージがインストールされ、atd サービスが実行されている必要があります。パッケージがインストールされているかを確認するには、rpm -q at コマンドを使用します。サービスが実行されているかどうかを確認するには、コマンド /sbin/service atd status を使用します。
39.2.1. at ジョブの設定
- hh:MM 形式:たとえば、04:00 は 4:00 a.m を指定します。時間がすでに経過している場合は、指定した日に実行されます。
- midnight - 12:00 a.m を指定します。
- noon - 12:00 p.m を指定します。
- teatime - 4:00 p.m を指定します。
- 月名日の形式:たとえば、2002 年 1 月 15 日は 2002 年 1 月 15 日を指定します。年は任意です。
- MMDDYY、MM/DD/YY、または MM.DD.YY 形式:たとえば、2002 年 1 月 15 日の場合は 011502 になります。
- now + time: 時間は分単位、時間、日、または週単位です。たとえば、now + 5 days では、コマンド を 5 日間同時に実行するように指定します。
/usr/share/doc/at- <version> /timespec
テキストファイルを参照してください。
at>
プロンプトが表示されます。実行するコマンドを入力し、Enter を押して Ctrl+D を入力します。複数のコマンドを指定するには、各コマンドの後に Enter キーを押します。すべてのコマンドを入力したら、Enter を押して空の行に移動し、Ctrl+D と入力します。または、プロンプトでシェルスクリプトを入力し、スクリプトの各行の後に Enter を押してから、空白行で Ctrl+D を入力して終了します。スクリプトを入力すると、使用されるシェルはユーザーの SHELL
環境、ユーザーのログインシェル、または /bin/sh (いずれか最初に見つかった方)で設定されたシェルです。
39.2.2. batch ジョブの設定
at>
プロンプトが表示されます。実行するコマンドを入力し、Enter を押して Ctrl+D を入力します。複数のコマンドを指定するには、各コマンドの後に Enter キーを押します。すべてのコマンドを入力したら、Enter を押して空の行に移動し、Ctrl+D と入力します。または、プロンプトでシェルスクリプトを入力し、スクリプトの各行の後に Enter を押してから、空白行で Ctrl+D を入力して終了します。スクリプトを入力すると、使用されるシェルはユーザーの SHELL
環境、ユーザーのログインシェル、または /bin/sh (いずれか最初に見つかった方)で設定されたシェルです。負荷平均が 0.8 未満になると、コマンドまたはスクリプトのセットが実行されます。
39.2.3. 保留中のジョブの表示
39.2.4. その他のコマンドラインオプション
表39.1 at および batch のコマンドラインオプション
オプション | 説明 |
---|---|
-f | プロンプトでコマンドまたはシェルスクリプトを指定する代わりに、ファイルからコマンドまたはシェルスクリプトを読み取ります。 |
-m | ジョブの完了時にユーザーにメールを送信します。 |
-v | ジョブが実行される時間を表示します。 |
39.2.5. at と batch へのアクセスの制御
/etc/at.allow
ファイルおよび /etc/at.deny
ファイルを使用して、at コマンドおよび batch コマンドへのアクセスを制限できます。両方のアクセス制御ファイルの形式は、各行の 1 つのユーザー名です。空白はいずれのファイルでも許可されません。アクセス制御ファイルが変更された場合、at デーモン(atd)を再起動する必要はありません。アクセス制御ファイルは、ユーザーが at または batch コマンドの実行を試みるたびに読み込まれます。
at.allow
ファイルが存在する場合、そのファイルにリストされているユーザーのみが at または batch を使用できます。また、at.deny
ファイルは無視されます。
at.allow
が存在しない場合は、at.deny
に記載されているユーザーは at または batch を使用できません。
39.2.6. サービスの起動と停止
39.3. 関連情報
39.3.1. インストールされているドキュメント
cron
の man ページ - cron の概要- セクション 1 および 5 の
crontab
man ページ:セクション 1 の man ページには、crontab
ファイルの概要が記載されています。セクション 5 の man ページには、ファイルの形式と、エントリーの例が含まれています。 /usr/share/doc/at- <version> /timespec
には、cron ジョブに指定できる時間の詳細情報が含まれます。at
の man ページ: at と batch およびそのコマンドラインオプションの説明。
第40章 ログファイル
/etc/syslog.conf
設定ファイルにあります。
40.1. ログファイルの場所の特定
/var/log/
ディレクトリーにあります。httpd や samba などの一部のアプリケーションでは、ログファイル用のディレクトリーが /var/log/
内にあります。
logrotate
パッケージには cron タスクが含まれており、/etc/logrotate.conf
設定ファイルと /etc/logrotate.d/
ディレクトリー内の設定ファイルに従ってログファイルを自動的にローテーションします。デフォルトでは、毎週ローテーションし、以前のログファイルを 4 週間保持するように設定されています。
40.2. ログファイルの表示
図40.1 システムログビューアー
[D]
図40.2 システムログビューアー - メニューの表示
[D]
図40.3 システムログビューアー - フィルター
[D]
40.3. ログファイルの追加
図40.4 ログファイルの追加
[D]
40.4. ログファイルのモニターリング
図40.5 ログファイルのアラート
[D]
図40.6 ログファイルの内容
[D]
図40.7 5 秒後のログファイルの内容
[D]
パート V. システムモニターリング
第41章 SystemTap
41.1. はじめに
41.2. 実装
図41.1 SystemTap でのデータの流れ
[D]
41.3. SystemTap の使用
41.3.1. トレーシング
41.3.1.1. プローブの場所
表41.1 SystemTap イベント
イベント | 説明 |
---|---|
begin | systemtap セッションの開始。 |
end | systemtap セッションの終了 |
kernel.function("sys_open") | カーネル内の sys_open という名前の関数へのエントリー。 |
syscall.close.return | close システムコールから返されます。 |
module("ext3").statement(0xdeadbeef) | ext3 ファイルシステムドライバーで対処された命令。 |
timer.ms(200) | 200 ミリ秒ごとに実行されるタイマー。 |
41.3.1.2. 印刷する内容
第42章 システム情報の収集
42.1. システムプロセス
ps aux | less
ps ax | grep emacs
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
表42.1 インタラクティブな top コマンド
コマンド | 説明 |
---|---|
スペース | ディスプレイを直ちに更新します。 |
h | ヘルプ画面の表示 |
k | プロセスを強制終了します。プロセス ID およびプロセスに送信するシグナルがプロンプトされます。 |
n | 表示されるプロセス数を変更します。番号を入力するようプロンプトされます。 |
u | ユーザー別に並べ替えます。 |
M | メモリー使用量で並べ替えます。 |
P | CPU 使用率で並べ替えます。 |
- プロセスを停止します。
- プロセスを続行または開始します。
- プロセスを終了します。
- プロセスを強制終了します。
- 選択したプロセスの優先度を変更します。
- システムモニター設定を編集します。これには、リストを更新し、System Monitor ウィンドウに表示されるプロセスフィールドを選択する間隔の秒数を変更することが含まれます。
- アクティブなプロセスのみを表示します。
- すべてのプロセスを表示します。
- プロセスを表示します。
- プロセスの依存関係を表示します。
- プロセスを非表示にします。
- 非表示のプロセスを表示します。
- メモリーマップを表示します。
- 選択したプロセスで開いているファイルを表示します。
図42.1 GNOME システムモニター
[D]
42.2. Memory Usage
total used free shared buffers cached Mem: 645712 549720 95992 0 176248 224452 -/+ buffers/cache: 149020 496692 Swap: 1310712 0 1310712
total used free shared buffers cached Mem: 630 536 93 0 172 219 -/+ buffers/cache: 145 485 Swap: 1279 0 1279
図42.2 GNOME システムモニター - リソースタブ
[D]
42.3. ファイルシステム
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
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
/dev/shm
のエントリーがあります。このエントリーは、システムの仮想メモリーファイルシステムを表します。
図42.3 GNOME システムモニター - ファイルシステム
[D]
42.4. ハードウェア
図42.4 ハードウェアブラウザー
[D]
図42.5 デバイスマネージャー
[D]
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
42.5. 関連情報
42.5.1. インストールされているドキュメント
- ps --help - ps で使用できるオプションの一覧を表示します。
- トップ man ページ: top とそのオプションの詳細を確認するには、man top と入力します。
- 無料 の man ページ: man free と入力し、多くのオプションを確認できます。
- df man ページ: man df と入力して、df コマンドと、その多くのオプションの詳細を確認します。
- DU man ページ: man du と入力して、du コマンドとそのオプションの詳細を確認します。
- lspci man ページ:lspci コマンドと、その多くのオプションの詳細を確認するには、man lspci と入力します。
第43章 OProfile
oprofile
RPM パッケージをインストールする必要があります。
- 共有ライブラリー の使用:共有ライブラリー 内のコード用のサンプルは、
--separate=library
オプションが使用されない限り、特定のアプリケーションには含まれません。 - パフォーマンスモニターリングのサンプル:パフォーマンス監視レジスターがサンプルをトリガーすると、割り込み処理はゼロ例外で除算さ れるのと正確ではありません。プロセッサーによる命令の順序外実行により、サンプルは近くの命令に記録される場合があります。
- opreport はインライン関数のサンプルを適切に関連付けません。opreport は単純なアドレス範囲メカニズムを使用してアドレスがどの機能にあるかを判断します。インライン関数サンプルは inline 関数には属性されず、inline 関数が挿入された関数には含まれません。
- OProfile は複数の実行からのデータの蓄積 を行います。OProfile はシステム全体のプロファイラーで、プロセスが複数回起動およびシャットダウンすることを期待します。そのため、複数の実行からのサンプルは累積されます。コマンド opcontrol --reset を使用して、以前の実行からのサンプルを消去します。
- CPU の制限のないパフォーマンスの問題: OProfile は、CPU の制限プロセスの問題を検索することを目的としています。OProfile は、ロックを待機しているため、または他のイベントが発生する(I/O デバイスが操作を完了するなど)、sleep のプロセスを特定しません。
43.1. ツールの概要
oprofile
パッケージで提供されるツールの概要を説明します。
表43.1 OProfile コマンド
コマンド | 説明 |
---|---|
ophelp |
システムのプロセッサーで利用可能なイベントと、それぞれの簡単な説明を表示します。
|
opimport |
サンプルデータベースファイルをシステム用に外部のバイナリー形式からネイティブの形式に変換します。異なるアーキテクチャーからのサンプルデータベースを解析する場合にのみこのオプションを使用してください。
|
opannotate | アプリケーションがデバッグシンボルでコンパイルされている場合は、実行可能ファイルのアノテーション付きのソースを作成します。詳細は、「opannotateの使用」 を参照してください。 |
opcontrol |
収集されるデータを設定します。詳細は、「OProfile の設定」 を参照してください。
|
opreport |
プロファイリングデータを取得します。詳細は、「opreportの使用」 を参照してください。
|
oprofiled |
デーモンとして実行して定期的にサンプルデータをディスクに書き込みます。
|
43.2. OProfile の設定
/root/.oprofile/daemonrc
ファイルに保存されます。
43.2.1. カーネルの指定
opcontrol --setup --vmlinux=/usr/lib/debug/lib/modules/`uname -r`/vmlinux
opcontrol --setup --no-vmlinux
oprofile
カーネルモジュールもロードされていない場合は読み込み、/dev/oprofile/
ディレクトリーを作成します。このディレクトリーの詳細は、「/dev/oprofile/
について」 を参照してください。
43.2.2. イベントのモニターへの設定
表43.2 OProfile プロセッサーおよびカウンター
プロセッサー | cpu_type | カウンターの数 |
---|---|---|
Pentium Pro | i386/ppro | 2 |
Pentium II | i386/pii | 2 |
Pentium-24 | i386/piii | 2 |
Pentium 4 (非スレッド) | i386/p4 | 8 |
Pentium 4 (ハイパースレッディング) | 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 |
タイマー
がプロセッサータイプとして使用されます。
timer
を使用すると、ハードウェアがハードウェアパフォーマンスカウンターをサポートしないため、イベントをプロセッサーに設定できません。代わりに、タイマー割り込みがプロファイリングに使用されます。
タイマー
がプロセッサータイプとして使用されていない場合は、監視されるイベントを変更できます。また、プロセッサーのカウンター 0 はデフォルトで時間ベースのイベントに設定されます。プロセッサーに複数のカウンターが存在する場合は、カウンター 0 以外のカウンターはデフォルトでイベントに設定されていません。監視されるデフォルトイベントは 表43.3「デフォルトのイベント」 に表示されます。
表43.3 デフォルトのイベント
プロセッサー | カウンターのデフォルトイベント | 説明 |
---|---|---|
Pentium Pro、Pentium II、Pentium II、Athlon、AMD64 | CPU_CLK_UNHALTED | プロセッサーのクロックは停止しません。 |
Pentium 4 (HT および非 HT) | GLOBAL_POWER_EVENTS | プロセッサーが停止されない時間 |
Itanium 2 | CPU_CYCLES | CPU サイクル |
TIMER_INT | (なし) | 各タイマー割り込みの例 |
ppc64/power4 | サイクル | プロセッサーサイクル |
ppc64/power5 | サイクル | プロセッサーサイクル |
ppc64/970 | サイクル | プロセッサーサイクル |
ls -d /dev/oprofile/[0-9]*
ophelp
opcontrol --event=<event-name>:<sample-rate>
43.2.2.1. サンプリングレート
cpu_type
が timer
でない場合、各イベントには サンプリングレート を設定できます。サンプリングレートは、各サンプルスナップショット間のイベント数です。
opcontrol --event=<event-name>:<sample-rate>
43.2.2.2. ユニットマスク
opcontrol --event=<event-name>:<sample-rate>:<unit-mask>
43.2.3. カーネルおよびユーザー空間プロファイルの分離
opcontrol --event=<event-name>:<sample-rate>:<unit-mask>:0
opcontrol --event=<event-name>:<sample-rate>:<unit-mask>:1
opcontrol --event=<event-name>:<sample-rate>:<unit-mask>:<kernel>:0
opcontrol --event=<event-name>:<sample-rate>:<unit-mask>:<kernel>:1
opcontrol --separate=<choice>
none
- プロファイルを分離しません(デフォルト)。- ライブラリー - ライブラリー のアプリケーションごとのプロファイルを生成します
- kernel - カーネルおよびカーネルモジュールのアプリケーションごとのプロファイルを生成します。
- all - ライブラリーのアプリケーションごとのプロファイルと、カーネルおよびカーネルモジュールのアプリケーションごとのプロファイルを生成します
--separate=library
を使用すると、サンプルファイル名には、実行可能ファイルの名前とライブラリーの名前が含まれます。
43.3. OProfile の開始および停止
opcontrol --start
Using log file /var/lib/oprofile/oprofiled.log Daemon started. Profiler running.
/root/.oprofile/daemonrc
の設定が使用されます。
/var/lib/oprofile/samples/
ディレクトリーに定期的に書き込みます。デーモンのログファイルは /var/lib/oprofile/oprofiled.log
にあります。
opcontrol --shutdown
43.4. データの保存
opcontrol --save=<name>
/var/lib/oprofile/samples/
が作成され、現在のサンプルファイルがコピーされます。
43.5. データの分析
/var/lib/oprofile/samples/
ディレクトリーに書き込みます。データを読み取る前に、root で以下のコマンドを実行して、すべてのデータがこのディレクトリーに書き込まれることを確認します。
opcontrol --dump
\{root\}/bin/bash/\{dep\}/\{root\}/bin/bash/CPU_CLK_UNHALTED.100000
- opreport
- opannotate
43.5.1. opreportの使用
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
-r
オプションなどです。
43.5.2. 単一実行可能ファイルでの opreport の使用
opreport <mode> <executable>
-l
- シンボルでサンプルデータを一覧表示します。たとえば、以下は、コマンド 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
最初の列はシンボルのサンプル数で、2 番目のコラムは、実行ファイルのサンプル全体に対するこのシンボルのサンプルの割合であり、3 番目のコラムはシンボル名です。サンプルの最大数から最小(逆引き順序)に出力を並べ替えるには、-l
オプションとともに-r
を使用します。 -i <symbol-name>
- シンボル名に固有のサンプルデータを一覧表示します。たとえば、以下の出力は、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
-l
よりも詳細でシンボルでサンプルデータを一覧表示します。たとえば、以下の出力は、コマンド 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>/var/lib/oprofile/samples/
ディレクトリーに対するセッションまたはディレクトリーへの完全パスを指定します。
43.5.3. モジュールの詳細な出力の取得
~]$ 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
~]# ln -s /lib/modules/`uname -r`/kernel/fs/ext3/ext3.ko /ext3
次に、以下の方法で詳細情報を取得できます。
~]# 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
...
43.5.4. opannotateの使用
-g
オプションでコンパイルする必要があります。デフォルトでは、Red Hat Enterprise Linux パッケージはこのオプションでコンパイルされていません。
opannotate --search-dirs <src-dir> --source <executable>
43.6. /dev/oprofile/
について
/dev/oprofile/
ディレクトリーには、OProfile のファイルシステムが含まれます。cat コマンドを使用して、このファイルシステムの仮想ファイルの値を表示します。たとえば、以下のコマンドは検出されたプロセッサー OProfile のタイプを表示します。
cat /dev/oprofile/cpu_type
/dev/oprofile/
にディレクトリーが存在する。たとえば、2 つのカウンターがある場合は、/dev/oprofile/0/ ディレクトリーと dev/oprofile
/1/ ディレクトリーが存在
します。
count
: サンプルの間隔。enabled
- 0 の場合、カウンターはオフになり、サンプルは収集されません。1 の場合は、カウンターがオンになり、サンプルが収集されます。event
: 監視するイベント。kernel
- 0 の場合、プロセッサーがカーネルスペースにある場合、このカウンターイベントのサンプルは収集されません。1 の場合、プロセッサーがカーネルスペースにある場合でもサンプルが収集されます。unit_mask
: カウンターに対して有効なユニットマスクを定義します。- user: 0 の場合、プロセッサーが
ユーザー
空間にある場合、カウンターイベントのサンプルは収集されません。1 の場合、プロセッサーがユーザー空間にある場合でもサンプルが収集されます。
cat /dev/oprofile/0/count
43.7. 使用例
- システムで最も多く使用されているアプリケーションやサービスの特定 - opreport を使用して、アプリケーションやサービスが使用するプロセッサー時間を判断できます。システムが複数のサービスに使用されるが、実行中である場合、最も多くのプロセッサー時間を消費するサービスは専用システムに移動できます。
- プロセッサーの使用状況を決定 する -
CPU_CLK_UNHALTED
イベントを監視して、特定の期間におけるプロセッサー負荷を判断できます。その後、このデータを使用して、追加のプロセッサーまたは高速なプロセッサーがシステムパフォーマンスを向上させる可能性があるかどうかを判断できます。
43.8. グラフィカルインターフェイス
oprofile-gui
パッケージをインストールする必要があります。
/root/.oprofile/daemonrc
に書き込まれ、アプリケーションは終了します。アプリケーションを終了しても、OProfile のサンプリングは停止しません。
図43.1 OProfile の設定
[D]
vmlinux
ファイルの名前と場所を入力します。OProfile がカーネルを監視しないように設定するには、No kernel image を選択します。
図43.2 OProfile の設定
[D]
43.9. 関連情報
43.9.1. インストールされている Docs
/usr/share/doc/oprofile-<version>/oprofile.html
— 『OProfile Manual』- OProfile の man ページ: opcontrol、opreport、opannotate、および ophelpについて説明します。
43.9.2. 便利な Web サイト
- http://oprofile.sourceforge.net/ - 最新のドキュメント、メーリングリスト、IRC チャンネルなどが含まれています。
パート VI. カーネルおよびドライバーの設定
第44章 カーネルの手動アップグレード
44.1. カーネルパッケージの概要
kernel
: マルチプロセッサーシステムのカーネルが含まれます。x86 システムの場合は、最初の 4GB の RAM のみが使用されます。そのため、RAM が 4GB を超える x86 システムは、kernel-PAE
を使用する必要があります。kernel-devel
- kernel パッケージに対してモジュールを構築するのに十分な カーネル ヘッダーと makefiles が含まれます。kernel-PAE
(i686 システム専用)- このパッケージは、(カーネル
パッケージに対してすでに有効になっているオプションに加えて)以下の主要な設定オプションを提供します。- RAM が 4GB を超えるシステムに対する PAE (物理アドレス拡張)のサポート、および最大 16GB までの信頼性が高いシステムに対する PAE (Physical Address Extension)のサポート。重要な影響物理アドレス拡張により、x86 プロセッサーは最大 64GB の物理 RAM に対応しますが、Red Hat Enterprise Linux 4 と 5 カーネルの違いにより、Red Hat Enterprise Linux 4 (
kernel-hugemem
パッケージを含む)のみが 64GB のメモリーをすべて確実に対処できます。また、Red Hat Enterprise Linux 5 の PAE バリアントでは、Red Hat Enterprise Linux 4kernel-hugemem
バリアントなど、プロセスごとに 4GB のメモリーは許可されません。ただし、x86_64 カーネルはこれらの制限を受けず、大規模なメモリーシステムで使用する推奨 Red Hat Enterprise Linux 5 アーキテクチャーです。
kernel-PAE
-develkernel-doc
: カーネルソースからのドキュメントファイルが含まれます。これらのファイルには、同梱で配布される Linux カーネルとデバイスドライバーのさまざまな部分が文書化されています。このパッケージをインストールすると、オプションへの参照が提供され、読み込み時に Linux カーネルモジュールに渡すことができます。デフォルトでは、これらのファイルは/usr/share/doc/kernel-doc- <version> /
ディレクトリーに配置されます。kernel-headers
: Linux カーネルとユーザー空間ライブラリーおよびプログラムとの間のインターフェイスを指定する C ヘッダーファイルが含まれます。ヘッダーファイルは、ほとんどの標準プログラムを構築するのに必要な構造と定数を定義します。kernel-xen
: 仮想化の実行に必要な Linux カーネルのバージョンが含まれます。kernel-xen-devel
-kernel-xen
パッケージに対してモジュールを構築するのに必要なカーネルヘッダーと makefiles が含まれます。
kernel-source
パッケージが削除され、Red Hat Network からのみ取得できる RPM に置き換えられました。その後、この *.src.rpm
パッケージは、rpmbuild コマンドを使用してローカルに再構築する必要があります。カーネルソースパッケージの取得およびインストールの詳細については、最新の更新リリースノート(すべての更新を含む)を参照してください。 http://www.redhat.com/docs/manuals/enterprise/
44.2. アップグレードの準備
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
kernel
パッケージのみです。異なるパッケージの説明は、「カーネルパッケージの概要」 を参照してください。
PAE
、xen
などのいずれかになります。< ;arch> は以下のいずれかになります。
- AMD64 および Intel EM64T アーキテクチャー用
x86_
64 ia64
( Intel® Itanium™ アーキテクチャーの場合)- IBM® eServer™ pSeries™ アーキテクチャーの場合は
ppc64
- IBM® S/390® アーキテクチャーの
s390
- IBM® eServer™ System z® アーキテクチャーの
s390x
i686
( Intel® Pentium® II、Intel® Pentium® II、Intel® Pentium® 4、AMD Athlon®、および AMD Duron® システム用)
44.3. アップグレードしたカーネルのダウンロード
- セキュリティーエラータ:セキュリティーの問題を修正するカーネルアップグレードを含むセキュリティーエラータに http://www.redhat.com/security/updates/ ついての詳細は、を参照してください。
- Red Hat Network 経由 - カーネル RPM パッケージをダウンロードしてインストールします。Red Hat Network は、最新のカーネルをダウンロードし、システムでカーネルをアップグレードして、必要に応じて初期 RAM ディスクイメージを作成し、ブートローダーが新しいカーネルをブートするように設定できます。詳細は、 http://www.redhat.com/docs/manuals/RHNetwork/ を参照してください。
44.4. アップグレードの実行
-i
引数を使用して、古いカーネルを保持します。-U
オプションは、現在インストールされているカーネルを上書きするため、使用し ない でください。これにより、ブートローダーの問題が生じます。以下に例を示します。
44.5. 初期 RAM ディスクイメージの確認
/etc/fstab
内のパーティションを参照する場合は、初期 RAM ディスクが必要です。初期 RAM ディスクにより、モジュラーカーネルは、通常モジュールが存在するデバイスにアクセスする前に起動する必要がある可能性のあるモジュールにアクセスできます。
initrd- <version > .img
ファイルが作成されていることを確認します(バージョンは、インストールしたカーネルのバージョンと一致する必要があります)。
vmlinux
ファイルが 1 つのファイルに統合されます。このファイルは addRamDisk コマンドで作成されます。この手順は、カーネルとその関連パッケージが Red Hat, Inc. によって配布される RPM パッケージからインストールまたはアップグレードされると自動的に実行されるため、手動で実行する必要はありません。作成したことを確認するには、ls -l /boot コマンドを使用して、/ boot/vmlinitrd- <kernel-version
> ファイルが既に存在することを確認します(< kernel-version
> は、インストールしたカーネルのバージョンと一致する必要があります)。
44.6. ブートローダーの確認
カーネル
RPM パッケージは、新たにインストールしたカーネルを起動するようにブートローダーを設定します(IBM eServer iSeries システムを除く)。ただし、デフォルトで新しいカーネルをブートするようにブートローダーを設定しません。
44.6.1. x86 システム
44.6.1.1. GRUB
/boot/grub/grub.conf
ファイルに、以前インストールした カーネル
パッケージと同じバージョンの title
セクションが含まれていることを確認します。
# 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
/boot/
パーティションが作成された場合、カーネルと initrd
イメージへのパスは /boot/
と相対的になります。
0
に設定します。
44.6.2. Itanium システム
/boot/efi/EFI/redhat/elilo.conf
を使用する ELILO を使用します。このファイルには、インストールした カーネル
パッケージと同じバージョンの イメージ
セクションが含まれていることを確認します。
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=/"
default
変数の値を、新しいカーネルを含む image
セクションの ラベル
の値に変更します。
44.6.3. IBM S/390 および IBM System z Systems
/etc/zipl.conf
を使用する z/IPL を使用します。以前にインストールした kernel パッケージと同じバージョンの セクションが ファイルに含まれていることを確認します。
[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=/"
default
変数の値を新規カーネルを含むセクションの名前に変更します。各セクションの最初の行には、括弧内の名前が含まれます。
44.6.4. IBM eServer iSeries Systems
カーネルをアップグレードすると、/boot/vmlinitrd- <kernel-version
> ファイルがインストールされます。ただし、dd コマンドを使用して、新しいカーネルを起動するようにシステムを設定する必要があります。
- root で cat /proc/iSeries/mf/side コマンドを実行し、デフォルトのサイド(A、B、または C)を決定します。
- root で次のコマンドを発行します。ここで、< kernel-version > は新しいカーネルのバージョンで、< side > は直前のコマンドのサイドになります。dd if=/boot/vmlinitrd-<kernel-version> of=/proc/iSeries/mf/<side>/vmlinux bs=8k
44.6.5. IBM eServer pSeries Systems
/etc/aboot.conf
を使用する YABOOT を使用します。以前にインストールした kernel
パッケージと同じバージョンの イメージ
セクションが ファイルに含まれていることを確認します。
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=/"
default
を追加して、新しいカーネルを含むイメージスタンザの ラベル
に設定します。
第45章 一般的なパラメーターおよびモジュール
-smp-unsupported- <kernel-version> および kernel- hugemem-unsupported- <kernel-version
> と呼ばれるパッケージのグループに、多数の対応対応デバイスドライバーを提供しています
。< ;kernel-version> を、システムにインストールされているカーネルのバージョンに置き換えます。これらのパッケージは Red Hat Enterprise Linux インストールプログラムによってインストールされず、提供されるモジュールは Red Hat, Inc ではサポートされません。
45.1. カーネルモジュールユーティリティー
module-init-tools
パッケージがインストールされている場合は、カーネルモジュールを管理するコマンドのグループが利用できます。これらのコマンドを使用して、モジュールが正常に読み込まれているかどうか、または新しいハードウェアで異なるモジュールを試行するときに確認します。
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
/proc/modules
の出力よりも詳細で読みやすいものになります。
/lib/modules/ <kernel-version> /kernel/drivers/ サブ
ディレクトリーからモジュールの読み込みを試みます。ネットワークインターフェイスドライバーの net/
サブディレクトリーなど、各タイプのモジュールにはサブディレクトリーがあります。カーネルモジュールの中にはモジュールの依存関係があるものがあります。つまり、読み込むには他のモジュールを最初に読み込む必要があります。/sbin/modprobe コマンドは、これらの依存関係をチェックし、指定されたモジュールを読み込む前にモジュールの依存関係を読み込みます。
modprobe e100
e100
モジュールをロードします。
-v
オプションを使用します。以下に例を示します。
modprobe -v e100
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_'
rmmod e100
e100
カーネルモジュールをアンロードします。
modinfo [options] <module>
45.2. 永続モジュールの読み込み
/etc/modprobe.conf
ファイルの正しい設定が指定されているファシリティーにより直接読み込まれます。ただし、システムの起動時にモジュールの読み込みを明示的に強制する必要がある場合があります。
/etc/rc.modules
ファイルの存在をチェックします。このファイルには、モジュールを読み込むさまざまなコマンドが含まれています。rc.modules
はブートプロセスで先に実行されるため、rc.local
では なく rc.modules
を使用する必要があります。
foo
モジュールの読み込みを設定します(root として)。
echo modprobe foo >> /etc/rc.modules chmod +x /etc/rc.modules
45.3. モジュールパラメーターの指定
e100
_speed_duplex=4 オプションで e100
ドライバーを読み込みます。
45.4. ストレージパラメーター
表45.1 ストレージモジュールパラメーター
ハードウェア | モジュール | パラメーター |
---|---|---|
3ware Storage Controller および 9000 シリーズ | 3w-xxxx.ko、3w-9xxx.ko | |
Adaptec Advanced Raid 製品、Dell PERC2、2/Si、3/Si、3/Di、HP NetRAID-4M、IBM ServeRAID、および ICP SCSI ドライバー | aacraid.ko | nondasd - 非dasd デバイスに対する hba のスキャンを制御します。0=off, 1=on
dacmode - dma アドレス指定が 64 ビット DAC を使用しているかどうかを制御します。0=off, 1=on
commit : 外部アレイのアダプターに COMMIT_CONFIG を発行するかどうかを制御します。これは通常、BIOS を持たないシステムに必要です。0=off, 1=on
startup_timeout - アダプターがカーネルを起動して実行しているのを待機する時間(秒単位)。通常、これは BIOS を持たない大規模なシステムで調整されます。
aif_timeout - アプリケーションが AIF を取得するのを待機する時間(秒単位)。通常、これは負荷の高いシステム向けに調整されます。
numacb : 割り当てたアダプター制御ブロック(FIB)の数に制限を要求します。有効な値は 512 および down です。デフォルトでは、ファームウェアからの提案を使用します。
acbsize - 特定のアダプター制御ブロック(FIB)サイズを要求します。有効な値は 512、2048、4096、および 8192 です。デフォルトでは、ファームウェアからの提案を使用します。
|
Adaptec 28xx、R9xx、39xx AHA-284x、AHA-29xx、AHA-394x、AHA-398x、AHA-274x、AHA-274x、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 | 詳細 : 詳細/診断ロギングの有効化
allow_memio - デバイスレジスターをメモリーマップを許可します。
debug - 有効にするデバッグ値のビットマスク
no_probe : EISA/VLB コントローラーのプロービングを切り替え
probe_eisa_vl - EISA/VLB コントローラープロービングを切り替え
no_reset - 初期バスのリセットをスプレッシャル
extended - すべてのコントローラーで拡張されたジオメトリーの有効化
periodic_otag : タグ不足を防ぐために、順序付けされたタグ付けされたトランザクションを定期的に送信します。これは、古いディスクドライブまたは RAID アレイで必要になる場合があります。
tag_info:<tag_str >: ターゲットごとのタグの深さを設定します。
global_tag_depth:<int> - すべてのバス上のすべてのターゲットに対するグローバルタグの深さ
seltime:<int& gt; - Selection Timeout (0/256ms,1/128ms,2/64ms,3/32ms)
|
IBM ServeRAID | ips.ko | |
LSI Logic MegaRAID Mailbox Driver | megaraid_mbox.ko | unconf_disks - 未設定のディスクをカーネルに公開するように設定します(default=0)。
busy_wait - ビジー時にメールボックスの最大待機時間(デフォルトは 100)
max_sectors : IO コマンドごとのセクターの最大数(デフォルトは 128)
cmd_per_lun : 論理ユニットごとのコマンドの最大数(デフォルトは 64)
fast_load - ドライバーの高速読み込み、物理デバイスをスキップします。(デフォルト=0)
debug_level - ドライバーのデバッグレベル(デフォルトは 0)
|
Emulex LightPulse Fibre Channel SCSI ドライバー | lpfc.ko | lpfc_poll - FCP リングポーリングモードの制御:0 - none、1 - 割り込みが有効なポーリング 3 - FCP リング割り込みのポーリングと無効化
lpfc_log_verbose — Verbose logging bit-mask
lpfc_lun_queue_depth - 特定の LUN にキューに入れることができる FCP コマンドの最大数
lpfc_hba_queue_depth : lpfc HBA にキューに入れることができる FCP コマンドの最大数
lpfc_scan_down - デバイスのスキャンを最も高い ALPA から最小にスキャンを開始します。
lpfc_nodev_tmo - Seconds ドライバーは、デバイスが戻るのを待つ I/O を保持します
lpfc_topology - ファイバーチャネルトポロジーの選択
lpfc_link_speed - リンク速度の選択
lpfc_fcp_class - FCP シーケンスに対してファイバーチャネルクラスを選択します。
lpfc_use_adisc - 再検出時に ADISC を使用して FCP デバイスを認証します。
lpfc_ack0 - ACK0 サポートの有効化
lpfc_cr_delay : 割り込み応答が生成されるまでのミリ秒数
lpfc_cr_count - 割り込み応答が生成されるまでの I/O 完了数
lpfc_multi_ring_support - IOCB エントリーを分散させるプライマリー SLI リングの数を決定します。
lpfc_fdmi_on - FDMI サポートの有効化
lpfc_discovery_threads : 検出時の ELS コマンドの最大数
lpfc_max_luns : 許可される最大 LUN
lpfc_poll_tmo - Milliseconds ドライバーが FCP リングをポーリングするまで待機する
|
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 サポートの有効化
mptfc_dev_loss_tmo - ドライバープログラムが、デバイス損失イベントに従って rport が返されるのを待つ初期時間。
mpt_pt_clear - Clear persistency table
mpt_saf_te : SEP プロセッサーを強制的に有効にする
|
QLogic Fibre Channel Driver | qla2xxx.ko | ql2xlogintimeout - ログインのタイムアウト値(秒単位)
qlport_down_retry : PORT-DOWN ステータスを返すポートへのコマンドの最大再試行回数
ql2xplogiabsentdevice - Fabric スキャン後に存在しないデバイスに PLOGI を有効にするオプション。
ql2xloginretrycount - NVRAM ログイン再試行回数の代替値を指定します。
ql2xallocfwdump - HBA の初期化中にファームウェアダンプのメモリー割り当てを有効にするオプション。デフォルトは 1 で、メモリーを割り当てます。
extended_error_logging - 拡張エラーログを有効にするオプション。
ql2xfdmienable - FDMI 登録を有効にします。
|
NCR、Symbios、LSI 8xx、および 1010 | sym53c8xx | cmd_per_lun - デフォルトで使用するタグの最大数
tag_ctrl : LUN ごとのタグの詳細な制御
Burst : 最大バースト0: 無効にするには 255、レジスターから読み取る場合は 255
led - 1 に設定して、LED サポートを有効にします。
diff - 0 (差分モードなし)、BIOS の場合は 1、常に 2、GPIO3 ではなく 3
irqm - open drain の場合は 0、totem pole をそのまま残す 1
buschk - 確認しない場合は 0、エラーの割り当て解除は 1、エラーの警告は 2 になります。
hostid - ホストアダプターに使用する SCSI ID
verb - 最小の詳細度は 0、通常の場合は 1、過剰の場合は 2
debug - デバッグを有効にするビットを設定します。
settle - 秒単位の遅延を設定します。デフォルト 3
NVRAM - 現在使用されていないオプション
excl : コントローラーが接続されないように、ここに ioport アドレスを一覧表示します。
safe - その他の設定をセーフモードに設定します。
|
45.5. イーサネットパラメーター
表45.2 Ethernet モジュールパラメーター
ハードウェア | モジュール | パラメーター |
---|---|---|
3com EtherLink PCIvideo/XL Vortex (3c590, 3c592, 3c597) Boomerang (3c900, 3c905, 3c595) | 3c59x.ko | debug - 3c59x デバッグレベル(0-6)
オプション - 3c59x: Bits 0-3: メディアタイプ、ビット 4: バスマスター、ビット 9: 完全なデュプレックス
global_options - 3c59x: オプションと同じですが、オプションが設定されていないとすべての NIC に適用されます。
full_duplex - 3c59x full duplex setting (s) (1)
global_full_duplex - 3c59x: full_duplex と同じですが、full_duplex が設定されていない場合にはすべての NIC に適用されます。
hw_checksums - アダプターによる 3c59x ハードウェアチェックサムチェック(0-1)
flow_ctrl - 3c59x 802.3x フロー制御の使用(PAUSE のみ) (0-1)
enable_wol - 3c59x: アダプターの Wake-on-LAN をオンにする(0-1)
global_enable_wol - 3c59x: enable_wol と同じですが、enable_wol が設定されていない場合にはすべての NIC に適用されます。
rx_copybreak - 3c59x copy breakpoint for copy-only-tiny-frames
max_interrupt_work - 割り込みごとに処理される 3c59x の最大イベント
compaq_ioaddr - 3c59x PCI I/O ベースアドレス(Compaq BIOS の問題回避策)
compaq_irq - 3c59x PCI IRQ 番号(Compaq BIOS の問題回避策)
compaq_device_id - 3c59x PCI デバイス ID (Compaq BIOS の問題回避策)
watchdog - 3c59x 送信タイムアウト(ミリ秒単位)
global_use_mmio - 3c59x: use_mmio と同じですが、オプションが設定されていないとすべての NIC に適用されます。
use_mmio - 3c59x: メモリーマッピング PCI I/O リソース(0-1)を使用します。
|
RTL8139、SMC EZ Card Fast Ethernet、RTL8129 を使用する RealTek カード、または RTL8139 Fast Ethernet チップセット | 8139too.ko | |
Broadcom 4400 10/100 PCI ethernet ドライバー | b44.ko | b44_debug - B44 ビットマッピングのデバッグメッセージの有効化値
|
Broadcom NetXtreme II BCM5706/5708 Driver | bnx2.ko | disable_msi - メッセージシグナル割り込み(MSI)の無効化
|
Intel Ether Express/100 ドライバー | e100.ko | debug - デバッグレベル(0=none,...,16=all)
eeprom_bad_csum_allow - 不正な eeprom チェックサムを許可します。
|
Intel EtherExpress/1000 ギガビット | e1000.ko | TxDescriptors - 送信記述子の数
RxDescriptors - 受信記述子の数
speed - Speed 設定
duplex -
Duplex 設定
AutoNeg - アドバタイズされたオートネゴシエーション設定
flowcontrol : フロー制御の設定
XsumRX - Receive Checksum オフロードを無効または有効にします。
TxIntDelay - 送信割り込みの遅延
TxAbsIntDelay - mit Absolute Interrupt Delay
RxIntDelay : Receive Interrupt Delay
RxAbsIntDelay - Receive Absolute Interrupt Delay
InterruptThrottleRate - Interrupt Throttling Rate
SmartPowerDownEnable - Enable PHY smart power down
KumeranLockLoss - Kumeran ロック損失回避策を有効にする
|
Myricom 10G driver (10GbE) | myri10ge.ko | myri10ge_fw_name - ファームウェアイメージ名
myri10ge_ecrc_enable - PCI-E で Extended CRC を有効にする
myri10ge_max_intr_slots - 割り込みキュースロット
myri10ge_small_bytes - 小さいパケットのしきい値
myri10ge_msi - メッセージ署名割り込みの有効化
myri10ge_intr_coal_delay - Interrupt coalescing delay
myri10ge_flow_control - Pause パラメーター
myri10ge_deassert_wait - レガシー割り込みを破棄する際に待機する
myri10ge_force_firmware : ファームウェアがアライメントされた完了を想定するように強制する
myri10ge_skb_cross_4k - 4KB の境界を超える小規模な skb 可能性
myri10ge_initial_mtu - 初期 MTU
myri10ge_napi_weight — Set NAPI weight
myri10ge_watchdog_timeout - ウォッチドッグのタイムアウトを設定します。
myri10ge_max_irq_loops - スタックしたレガシー IRQ 検出しきい値を設定します
|
NatSemi DP83815 Fast Ethernet | natsemi.ko | MTU : DP8381x MTU (すべてのボード)
debug - DP8381x のデフォルトデバッグレベル
rx_copybreak - DP8381x copy breakpoint for copy-only-tiny-frames
オプション - DP8381x: Bits 0-3: メディアタイプ、ビット 17: full duplex
full_duplex - DP8381x full duplex setting (s) (1)
|
AMD PCnet32 and AMD PCnetPCI | pcnet32.ko | |
PCnet32 および PCnetPCI | pcnet32.ko | debug - pcnet32 デバッグレベル
max_interrupt_work - pcnet32 割り込みごとに処理される最大イベント
rx_copybreak - pcnet32 copy breakpoint for copy-only-tiny-frames
tx_start_pt - pcnet32 送信開始ポイント(0-3)
pcnet32vlb - pcnet32 Vesa local bus (VLB)サポート(0/1)
オプション - pcnet32 初期オプション設定(0-15)
full_duplex - pcnet32 full duplex setting (s) (1)
homepna - 79C978 カードの pcnet32 モード(HomePNA の場合は 1、イーサネットの場合は 0、デフォルトイーサネット)
|
Realtek RTL-8169 Gigabit Ethernet driver | r8169.ko | メディア : phy 操作を強制します。ethtool (8)で非推奨になりました。
rx_copybreak - copy-only-tiny-frames のブレークポイントをコピー
use_dac - PCI DAC を有効にします。32 ビットの PCI スロットでは安全ではありません。
debug - デバッグの詳細レベル(0=none, ..., 16=all)
|
Neterion Xframe 10GbE サーバーアダプター | s2io.ko | |
SIS 900/701G PCI Fast Ethernet | sis900.ko | multicast_filter_limit - SiS 900/7016 フィルターリングされたマルチキャストアドレスの最大数
max_interrupt_work - SiS 900/7016 割り込みごとに処理される最大イベント
sis900_debug - SiS 900/7016 ビットマッピングのデバッグメッセージレベル
|
Adaptec Starfire イーサネットドライバー | starfire.ko | max_interrupt_work : 割り込みごとに処理される最大イベント
MTU : MTU (全ボード)
debug - デバッグレベル(0-6)
rx_copybreak - copy-only-tiny-frames のブレークポイントをコピー
intr_latency : 最大割り込みレイテンシー(マイクロ秒単位)
small_frames : 割り込みレイテンシーをバイパスする受信フレームの最大サイズ(0,64,128,256,512)
オプション - 非推奨:Bits 0-3: メディアタイプ、ビット 17: 完全なデュプレックス
full_duplex - 非推奨:完全なデュプレックス設定を強制(0/1)
enable_hw_cksum - ハードウェアcksum サポートを有効/無効にします(0/1)
|
Broadcom Tigon3 | tg3.ko | tg3_debug - Tigon3 ビットマッピングのデバッグメッセージの有効化値
|
ThunderLAN PCI | tlan.ko | aui - ThunderLAN は AUI ポート(0-1)を使用します。
duplex - ThunderLAN デュプレックス設定(0-default、1-half、2-full)
速度 - ThunderLAN ポートスペンデン設定(0,10,100)
debug - ThunderLAN デバッグマスク
bbuf - ThunderLAN は 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 Ethernet カード | via-rhine.ko | max_interrupt_work - VIA Rhine 割り込みごとに処理される最大イベント
debug - VIA Rhine デバッグレベル(0-7)
rx_copybreak - copy-only-tiny-frames の VIA Rhine copy breakpoints
avoid_D3 - 電源状態 D3 を回避(破損した BIOS の回避策)
|
45.5.1. Channel Bonding モジュール
ボンディングカーネルモジュールと、チャンネルボンディング
インターフェイス と呼ばれる特別なネットワークインターフェイスを使用して、NIC を 1 つの チャンネル にバインドできます。このチャンネルボンディングにより、複数のネットワークインターフェイスが 1 つとして機能できるようになり、また同時に帯域幅が増加し、冗長性を提供します。
- 以下の行を
/etc/modprobe.conf
に追加します。alias bond<N> bonding
< ;N& gt; を 0 などのインターフェイス番号に置き換えます。設定したチャンネルボンディングインターフェイスごとに、/etc/modprobe.conf
に対応するエントリーが必要です。 - 「チャンネルボンディングインターフェイス」 で説明されているように、チャンネルボンディングインターフェイスを設定します。
- パフォーマンスを強化するには、利用可能なモジュールオプションを調節して、最適な組み合わせを確認します。特に miimon、arp_interval、arp_ip_target パラメーターに注意してください。利用可能なオプション一覧と、ボンディングされたインターフェイスに最適なオプションを迅速に判別する方法については、「ボンディングモジュールのディレクティブ」 を参照してください。
45.5.1.1. ボンディングモジュールのディレクティブ
ifcfg-bond0
など)の BONDING_OPTS=" <bonding parameters> " ディレクティブに追加する前に、ボンディングされたインターフェイスにどのチャンネルボンディングモジュールパラメーター
が最適かをテストすることが推奨されます。ボンディングされたインターフェイスのパラメーターは、sysfs
ファイルシステム内のファイルを操作することで、ボンディングモジュールをアンロード (およびリロード) することなく設定できます。
sysfs
は、カーネルオブジェクトをディレクトリー、ファイル、シンボリックリンクとして表す仮想ファイルシステムです。sysfs
を使用すると、カーネルオブジェクトに関する情報のクエリーや、通常のファイルシステムコマンドを使用することでこれらのオブジェクトを操作することもできます。sysfs
仮想ファイルシステムには /etc/fstab
の行があり、/sys
の下にマウントされます。ボンディングされたインターフェイスはすべて、/sys/class/net/
ディレクトリー配下のファイルと対話して動的に設定できます。
ifcfg-bond0
などのチャンネルボンディングインターフェイスファイルを作成し、「チャンネルボンディングインターフェイス」 の手順に従ってボンディングされたインターフェイスに SLAVE=yes
ディレクティブおよび MASTER=bond0
ディレクティブを挿入した後に、ボンディングされたインターフェイスに最適なパラメーターのテストと判断に進むことができます。
N> を root として実行して、作成した ボンディング
を起動
します。
ifconfig bond0 up
ifcfg-bond0
ボンディングインターフェイスファイルを正しく作成した場合は、ifconfig の実行の出力に bond0
が一覧表示されます(オプションなし)。
~]# 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]
~]# cat /sys/class/net/bonding_masters
bond0
/sys/class/net/bond <N> /bonding/ ディレクトリーにあるファイルを操作することで、各ボンドを
個別に設定できます。まず、設定するボンドをダウンにします。
ifconfig bond0 down
echo 1000 > /sys/class/net/bond0/bonding/miimon
balance-alb
モードに設定するには、以下のいずれかを実行できます。
echo 6 > /sys/class/net/bond0/bonding/mode
echo balance-alb > /sys/class/net/bond0/bonding/mode
up
にすると、それを起動してテストできます。オプションを変更する場合はインターフェイスを停止して、sysfs
を使用してそのパラメーターを修正後、有効に戻して再確認します。
/etc/sysconfig/network-scripts/ifcfg-bond <N
> ファイルの BONDING_OPTS=
ディレクティブにそれらのパラメーターをスペース区切りリストとして追加します。ボンディングが起動すると( ONBOOT=yes
ディレクティブが設定されている場合はブートシーケンス中にシステムがシステムによって)、BONDING_OPTS
で指定されたボンディングオプションがそのボンディングに対して有効になります。ボンディングされたインターフェイス(および BONDING_OPTS
)の設定に関する詳細は、「チャンネルボンディングインターフェイス」 を参照してください。
チャンネルボンディングの設定に関する詳細とボンディングモジュールパラメーターの完全リストの詳細は、kernel-doc パッケージをインストールし、含まれている bonding.txt
ファイルを見つけて開きます。
yum -y install kernel-doc nano -w $(rpm -ql kernel-doc | grep bonding.txt)
ボンディングインターフェイスパラメーター
-
arp_interval=<time_in_milliseconds>
- ARP 監視が発生する頻度を指定します(ミリ秒単位)。重要な影響
arp_interval
およびarp_ip_target
の両パラメーター、あるいはmiimon
パラメーターの指定は不可欠です。指定されないと、リンクが失敗した場合にネットワークパフォーマンスが低下する恐れがあります。mode=0 または mode
=1
(2 つの負荷分散モード)でこの設定を使用する場合は、NIC 全体に均等にパケットを分散するようにネットワークスイッチを設定する必要があります。これを実行する方法の詳細については、/usr/share/doc/kernel-doc- <kernel_version> /Documentation/networking/bonding.txt を参照してください。
デフォルトでは値は0
に設定されており、ARP 監視を無効にします。 -
arp_ip_target=<ip_address> [,<ip_address_2>,...<ip_address_16> ]
arp_interval
パラメーターが有効な場合に ARP 要求のターゲット IP アドレスを指定します。コンマ区切りのリストで、最大 16 個の IP アドレスを指定できます。-
arp_validate=<value>
- ARP プローブのソース/ディストリビューションを検証します。デフォルトは
none
です。他の有効な値は、active
、backup
、およびall
です。 -
debug=<number>
- デバッグメッセージを有効にします。以下の値が使用できます。
0
: デバッグメッセージが無効になります。これがデフォルトです。1
: デバッグメッセージが有効になっています。
-
downdelay=<time_in_milliseconds>
- リンクを無効にする前に、リンクの失敗後に待機する時間を指定します (ミリ秒単位)。値は、
miimon
パラメーターで指定される値の倍数でなければなりません。デフォルトでは値は0
に設定されており、ARP 監視を無効にします。 - lacp_rate=<value>
- リンクパートナーが 802.3ad モードで LACPDU パケットを送信するレートを指定します。以下の値が使用できます。
slow
または0
: デフォルト設定。パートナーが 30 秒ごとに LACPDU を送信するよう指定します。fast
または1
: パートナーが LACPDU を 1 秒ごとに送信するように指定します。
-
miimon=<time_in_milliseconds>
- MII リンク監視が発生する頻度を指定します (ミリ秒単位)。MII は NIC がアクティブであることを検証するために使用されるため、これは高可用性が必要な場合に役立ちます。特定の NIC のドライバーが MII ツールに対応していることを確認するには、root で以下のコマンドを入力します。
ethtool <interface_name> | grep "Link detected:"
このコマンドで、< ;interface_name> をボンディングインターフェイスではなく、eth0
などのデバイスインターフェイスの名前に置き換えます。MII が対応している場合は、コマンドは以下を返します。Link detected: yes
高可用性のためにボンディングされたインターフェイスを使用する場合、各 NIC のモジュールは MII に対応していなければなりません。値を0
(デフォルト) に設定すると、この機能はオフになります。この設定を設定する際に、このパラメーターのスタート地点は100
になります。重要な影響arp_interval
およびarp_ip_target
の両パラメーター、あるいはmiimon
パラメーターの指定は不可欠です。指定されないと、リンクが失敗した場合にネットワークパフォーマンスが低下する恐れがあります。 -
mode=<value>
- ここでの < ;value> は以下のいずれかになります。
balance-rr
または0
: 耐障害性とロードバランシングにラウンドロビンポリシーを設定します。利用可能な最初のインターフェイスからそれぞれのボンディングされたスレーブインターフェイスで送受信が順次行われます。active-backup
または1
: 耐障害性のためアクティブなバックアップポリシーを設定します。利用可能な最初のボンディングされたスレーブインターフェイスを介して送受信が行われます。別のボンディングされたスレーブインターフェイスは、アクティブなボンディングされたスレーブインターフェイスが失敗した場合にのみ使用されます。balance-xor
または2
: 耐障害性とロードバランシングに XOR (排他的または)ポリシーを設定します。この方法では、インターフェイスは、スレーブ NIC のいずれかに対して、受信要求の MAC アドレスと MAC アドレスが照合されます。このリンクが確立されると、最初に利用可能なインターフェイスから順番に送信が送信されます。broadcast
または3
: 耐障害性にブロードキャストポリシーを設定します。すべての送信は、すべてのスレーブインターフェイスで行われます。802.3ad
または4
: IEEE 802.3ad 動的リンクアグリゲーションのポリシーを設定します。同一の速度とデュプレックス設定を共有するアグリゲーショングループを作成します。アクティブなアグリゲーターのすべてのスレーブで送受信を行います。802.3ad に対応するスイッチが必要です。balance-tlb
または5
: 耐障害性とロードバランシングのための送信ロードバランシング (TLB) ポリシーを設定します。発信トラフィックは、各スレーブインターフェイスの現在の負荷に従って分散されます。受信トラフィックは、現在のスレーブにより受信されます。受信しているスレーブが失敗すると、別のスレーブが失敗したスレーブの MAC アドレスを引き継ぎます。balance-alb
または6
: 耐障害性とロードバランシングに Active Load Balancing (ALB)ポリシーを設定します。IPV4 トラフィック用の送受信負荷分散が含まれます。ARP ネゴシエーションにより、受信負荷分散が実現されます。
-
num_unsol_na=<number>
- フェイルオーバーイベント後に発行される未設定の IPv6 Neighbor Advertisement の数を指定します。フェイルオーバー直後に、未承認の NA が発行されます。有効な範囲は
0 - 255
で、デフォルト値は1
です。このオプションは、active-backup モードにのみ影響します。 -
primary=<interface_name>
- プライマリーデバイスのインターフェイス名(例:
eth0
)を指定します。primary
デバイスは、使用される最初のボンディングインターフェイスであり、失敗しない限りは破棄されません。この設定が特に役立つのは、ボンディングインターフェイスの NIC の 1 つが高速なため、大規模な負荷に対応できる場合です。この設定は、ボンディングインターフェイスがactive-backup
モードの場合にのみ有効です。詳細は、/usr/share/doc/kernel-doc- <kernel-version> /Documentation/networking/bonding.txt
を参照してください。 -
primary_reselect=<value>
- プライマリースレーブに対して再選択ポリシーを指定します。これは、アクティブなスレーブの失敗やプライマリースレーブの回復が発生した場合に、どのようにプライマリースレーブが選択されてアクティブなスレーブになるかという点に影響します。このオプションは、プライマリースレーブと他のスレーブ間のフラップを回避するように設計されています。以下の値が使用できます。
always
または0
: プライマリースレーブは有効になるといつでもアクティブなスレーブになります。better
または1
: プライマリースレーブの速度とデュプレックスが、現在のアクティブなスレーブの速度とデュプレックスと比べて良い場合は、プライマリースレーブは有効になるとアクティブなスレーブになります。failure
または2
: 現在のアクティブなスレーブが失敗してプライマリースレーブが有効になる場合のみ、プライマリースレーブはアクティブなスレーブになります。
primary_reselect
の設定は、以下の 2 つの場合では無視されます。- アクティブなスレーブがない場合は、回復する最初のスレーブがアクティブなスレーブになります。
- 初めにプライマリースレーブがスレーブにされた場合は、それは常にアクティブなスレーブになります。
sysfs
でprimary_reselect
ポリシーを変更すると、新しいポリシーに従って、最適なアクティブなスレーブが即座に選択されます。これにより、状況によってはアクティブなスレーブに変更が生じる場合があります。 -
updelay=<time_in_milliseconds>
- リンクを有効にする前の待機時間を指定します (ミリ秒単位)。値は、
miimon
パラメーターで指定される値の倍数でなければなりません。デフォルトでは値は0
に設定されており、ARP 監視を無効にします。 -
use_carrier=<number>
- リンク状態を決定するために
miimon
が MII/ETHTOOL ioctls またはnetif_carrier_ok()
を使用するかどうか指定します。netif_carrier_ok()
機能は、デバイスドライバーを使用してnetif_carrier_on/off
で状態を維持します。ほとんどのデバイスドライバーはこの機能をサポートします。MII/ETHROOL ioctls ツールは、カーネル内の非推奨の呼び出しシーケンスを使用します。ただし、デバイスドライバーがnetif_carrier_on/off
に対応していない場合でも、これは設定可能です。有効な値は以下のとおりです。1
: デフォルト設定。netif_carrier_ok()
の使用を有効にします。0
: MII/ETHTOOL ioctls の使用を有効にします。
ヒントリンクがアップになっているべきでないときにボンディングインターフェイスがアップになっている場合は、ネットワークデバイスドライバーがnetif_carrier_on/off
に対応していない可能性があります。 -
xmit_hash_policy=<value>
balance-xor
および802.3ad
モードで、スレーブを選択する時に使用する送信ハッシュポリシーを選択します。以下の値が使用できます。0
またはlayer2
: デフォルト設定。このオプションは、ハードウェア MAC アドレスの XOR を使用してハッシュを生成します。使用する式は以下のとおりです。(<source_MAC_address> XOR <destination_MAC>) MODULO <slave_count>
このアルゴリズムは、すべてのトラフィックを同じスレーブの特定のネットワークピアに割り振り、802.3ad に対応します。1
またはlayer3+4
: 上位レイヤープロトコルの情報を (利用可能な場合は) 使用して、ハッシュを生成します。これにより、特定のネットワークピアへのトラフィックが複数のスレーブに及ぶようにできますが、単一の接続では複数のスレーブに及びません。断片化された TCP および UDP パケットに使用される公式は、以下のとおりです:((<source_port> XOR <dest_port>) XOR ((<source_IP> XOR <dest_IP>) AND
0xffff
) MODULO <slave_count>断片化された TCP または UDP パケットおよび他のすべての IP プロトコルトラフィックの場合、送信元ポートおよび宛先ポート情報は省略されます。非 IP トラフィックの場合、式は layer2 送信ハッシュポリシーと同じです。このポリシーの目的は、特に PFC2 付きの Cisco スイッチや Foundry および IBM 製品など一部のスイッチの動作を真似ることです。このポリシーで使用されるアルゴリズムは、802.3ad に対応していません。2
またはlayer2+3
: layer2 および layer3 プロトコル情報の組み合わせを使用して、ハッシュを生成します。ハードウェア MAC アドレスと IP アドレスの XOR を使用してハッシュを生成します。式は以下のとおりです。(((<source_IP> XOR <dest_IP>) AND
0xffff
) XOR ( <source_MAC> XOR <destination_MAC> )) MODULO <slave_count>このアルゴリズムは、すべてのトラフィックを同じスレーブの特定のネットワークピアに割り振ります。非 IP トラフィックの場合、式は layer2 送信ハッシュポリシーと同じです。このポリシーの目的は、特に layer3 ゲートウェイデバイスが大半の宛先に到達する必要がある環境において、layer2 単独の場合より分散されたトラフィックを提供することです。このアルゴリズムは、802.3ad に対応しています。
45.6. 関連情報
45.6.1. インストールされているドキュメント
- lsmod の man ページ - 出力の説明と説明。
- insmod の man ページ - コマンドラインオプションの説明とリスト。
- modprobe の man ページ - コマンドラインオプションの説明と一覧
- rmmod の man ページ - コマンドラインオプションの説明とリスト。
- modinfo の man ページ - コマンドラインオプションの説明とリスト。
/usr/share/doc/kernel-doc- <version> /Documentation/kbuild/modules.txt
- カーネルモジュールをコンパイルし、使用する方法。このファイルを読み取るには、kernel-doc
パッケージがインストールされている必要があります。
45.6.2. 便利な Web サイト
- http://tldp.org/HOWTO/Module-HOWTO/: 『Linux ドキュメントプロジェクトの Linux Loadable カーネルモジュール HOWTO』
第46章 kdump クラッシュリカバリーサービス
kdump
は高度なクラッシュダンプメカニズムです。有効にすると、システムは別のカーネルのコンテキストから起動します。この 2 番目のカーネルは少量のメモリーを予約し、その唯一の目的は、システムがクラッシュした場合にコアダンプイメージを取得することです。コアダンプを分析する機能は、システム障害の正確な原因を特定するのに役立ちます。そのため、この機能を有効にすることが強く推奨されます。
kdump
サービスの設定、テスト、および使用方法を説明します。また、crash デバッグユーティリティーを使用して、作成されるコアダンプを分析する方法の概要を説明します。
46.1. kdump
サービスのインストール
kdump
サービスを使用するには、kexec-tools パッケージがインストールされていることを確認します。これを行うには、root
で次のコマンドを実行します。
~]# yum install kexec-tools
46.2. kdump
サービスの設定
kdump
サービスの設定には、一般的な 3 つの方法があります。初回起動時に有効にして設定するか、グラフィカルユーザーインターフェイスに Kernel Dump Configuration ユーティリティーを使用するか、コマンドラインで手動で行います。
Intel IOMMU
ドライバーの現在の実装の制限により、kdump
サービスがコアダンプイメージをキャプチャーできないことがあります。Intel アーキテクチャーで kdump
を確実に使用するには、IOMMU サポートを無効にすることが推奨されます。
kdump
サービスが確実に機能しないことが知られています。このため、ユーザーは本番環境で使用する前に設定をテストすることを強く推奨します。必要に応じて、ネットワーク経由でカーネルクラッシュダンプをリモートマシンに保存するように kdump
を設定することを強くお勧めします。kdump
設定のテスト方法は、「設定のテスト」 を参照してください。
46.2.1. 初回起動時の kdump の設定
kdump
を設定するには、Kdump ページに移動し、以下の手順に従います。
kdump
クラッシュリカバリーを有効にすると、最小メモリー要件が予約されたメモリー量によって増加します。この値は、ユーザーおよび x86 アーキテクチャー、AMD64 アーキテクチャー、および Intel 64 アーキテクチャーでは、物理メモリーの TB ごとに 128 MB と 64 MB (つまり、物理メモリーが 1 TB のシステムの合計 192 MB)にデフォルト設定されます。
図46.1 kdump 設定画面
[D]
46.2.1.1. サービスの有効化
kdump
デーモンを起動するには、kdump を有効 にする チェックボックスを選択します。これにより、ランレベル 2
、3
、4
、および 5
の サービスが有効になり、現行セッションで起動されます。同様に、チェックボックスを消去すると、すべてのランレベルでそのチェックボックスが無効になり、サービスがすぐに停止されます。
46.2.1.2. メモリー使用量の設定
kdump
カーネル用に予約されているメモリー量を設定するには、Kdump Memory フィールドの横にある上下の矢印ボタンをクリックして値を増減します。システムメモリー フィールドはそれに応じて変更され、システムで 使用 できる残りのメモリーが表示されます。
46.2.2. カーネルダンプ設定ユーティリティーの使用
root
パスワードを入力するように求められます。
図46.2 Kernel Dump 設定ユーティリティー
[D]
kdump
を設定し、システムの起動時にサービスを有効または無効にすることができます。完了したら、OK をクリックして変更を保存します。システムの再起動が要求されます。
kdump
クラッシュリカバリーを有効にすると、最小メモリー要件が予約されたメモリー量によって増加します。この値は、ユーザーおよび x86 アーキテクチャー、AMD64 アーキテクチャー、および Intel 64 アーキテクチャーでは、物理メモリーの TB ごとに 128 MB と 64 MB (つまり、物理メモリーが 1 TB のシステムの合計 192 MB)にデフォルト設定されます。
46.2.2.1. サービスの有効化
kdump
デーモンを起動するには、kdump を有効 にする チェックボックスを選択します。これにより、ランレベル 2
、3
、4
、および 5
の サービスが有効になり、現行セッションで起動されます。同様に、チェックボックスを消去すると、すべてのランレベルでそのチェックボックスが無効になり、サービスがすぐに停止されます。
46.2.2.2. メモリー使用量の設定
kdump
カーネル用に予約されているメモリー容量を設定するには、New kdump Memory フィールドの横にある上下の矢印ボタンをクリックして値を増減します。システムで使用できるメモリーの残量に応じて Usable Memory フィールドが変わることに注意してください。
46.2.2.3. ターゲットタイプの設定
図46.3 Edit Location ダイアログ
[D]
/dev/sdb1
)を入力します。完了したら、OK をクリックして選択を確定します。
penguin.example.com:/export
)。OK ボタンをクリックすると、変更が確定します。最後に、Path フィールドの値を編集して、宛先ディレクトリー(例: cores
)をカスタマイズします。
OK ボタンをクリックすると、変更が確定します。最後に、Path フィールドの値を編集して、宛先ディレクトリー(例: /export/cores
)をカスタマイズします。
46.2.2.4. コアコレクターの設定
vmcore
ダンプファイルのサイズを縮小するために、kdump
では外部アプリケーション(つまりコアコレクター)を指定してデータを圧縮し、必要に応じて関連性のない情報をすべて除外できます。現在、完全にサポートされている唯一のコアコレクターは makedumpfile です。
-c
パラメーターがリストされていることを確認します(例: makedumpfile -c
)。
-d value
パラメーターを追加します。この 値 は、表46.1「サポートされるフィルターレベル」 で説明されているように、省略するページの値の合計です。たとえば、ゼロページと空きページの両方を削除するには、makedumpfile -d 17
を使用します。
46.2.2.5. デフォルトの動作の変更
kdump
がコアダンプの作成に失敗した場合に実行するアクションを選択するには、デフォルトのアクション プルダウン リストから適切なオプションを選択します。使用可能なオプションは、mount rootfs と /sbin/init (デフォルトの動作)、reboot (システムの再起動)、shell (対話式シェルプロンプトを持つユーザーの表示)、および halt (システムを停止するため)です。
46.2.3. コマンドラインで kdump
の設定
46.2.3.1. メモリー使用量の設定
kdump
カーネル用に予約されるメモリー容量を設定するには、root
で /boot/grub/grub.conf
ファイルを開き、crashkernel= <size> M@16M
パラメーターをカーネルオプションの一覧に追加します( 例46.1「/boot/grub/grub.conf
ファイルのサンプル」 を参照)。
kdump
クラッシュリカバリーサービスは動作しません。最小メモリー要件については、Red Hat Enterprise Linux の比較チャート を参照してください。kdump
を有効にすると、最小メモリー要件は、予約されているメモリー量を増やします。この値は、ユーザーおよび x86 アーキテクチャー、AMD64 アーキテクチャー、および Intel 64 アーキテクチャーでは、物理メモリーの TB ごとに 128 MB と 64 MB (つまり、物理メモリーが 1 TB のシステムの合計 192 MB)にデフォルト設定されます。
例46.1 /boot/grub/grub.conf
ファイルのサンプル
# 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
46.2.3.2. ターゲットタイプの設定
vmcore
ファイルをローカルファイルシステムの /var/crash/
ディレクトリーに保存します。これを変更するには、root
で /etc/kdump.conf
設定ファイルを開き、以下のようにオプションを編集します。
「#」path /var/crash
の行頭にあるハッシュ記号(#)を取り除き、値を希望のディレクトリーパスに置き換えます。必要に応じて、ファイルを別のパーティションに書き込む場合は、#ext3 /dev/sda3
行でも同じ手順に従い、ファイルシステムタイプとデバイス(デバイス名、ファイルシステムのラベル、UUID がすべてサポートされる)を変更します。以下に例を示します。
ext3 /dev/sda4 path /usr/local/cores
「#」raw /dev/sda5
の行頭にあるハッシュ記号(#)を取り除き、値を任意のデバイス名に置き換えます。以下に例を示します。
raw /dev/sdb1
「#」net my.server.com:/export/tmp
の行頭にあるハッシュ記号(#)を取り除き、値を有効なホスト名とディレクトリーパスに置き換えます。以下に例を示します。
net penguin.example.com:/export/cores
「#」net user@my.server.com
の行頭にあるハッシュ記号(#)を取り除き、値を有効なユーザー名およびホスト名に置き換えてください。以下に例を示します。
net john@penguin.example.com
46.2.3.3. コアコレクターの設定
vmcore
ダンプファイルのサイズを縮小するために、kdump
では外部アプリケーション(つまりコアコレクター)を指定してデータを圧縮し、必要に応じて関連性のない情報をすべて除外できます。現在、完全にサポートされている唯一のコアコレクターは makedumpfile です。
/etc/kdump.conf
設定ファイルを root
として開き、「#」core_collector makedumpfile -c --message-level 1
の行頭にあるハッシュ記号(#)を取り除き、以下のようにコマンドラインオプションを編集します。
-c
パラメーターを追加します。以下に例を示します。
core_collector makedumpfile -c
-d
valueパラメーターを追加します。value は、表46.1「サポートされるフィルターレベル」 で説明されているように、省略するページの値の合計になります。ゼロと未使用ページを除外する場合は次のようになります。
core_collector makedumpfile -d 17 -c
表46.1 サポートされるフィルターレベル
オプション | 説明 |
---|---|
1 | ゼロページ |
2 | キャッシュページ |
4 | キャッシュプライベート |
8 | ユーザーページ |
16 | フリーページ |
46.2.3.4. デフォルトの動作の変更
kdump
がコアダンプの作成に失敗すると、root ファイルシステムがマウントされ、/sbin/init が実行されます。この動作を変更するには、root
として /etc/kdump.conf
設定ファイルを開き、#default shell
の行頭にあるハッシュ記号(「#」)を取り除き、表46.2「サポートされるアクション」 で説明されているように、値を目的のアクションに置き換えます。以下に例を示します。
default halt
表46.2 サポートされるアクション
オプション | アクション |
---|---|
reboot | システムを再起動します。プロセスのコアが失われます。 |
halt | コアの取得に失敗した後に、システムを停止します。 |
shell | initramfs 内から msh セッションを実行し、ユーザーが手動でコアを記録できるようにします。 |
46.2.3.5. サービスの有効化
kdump
デーモンを起動するには、シェルプロンプトで root
として以下を入力します。
~]# chkconfig kdump on
2
、3
、4
、および 5
の サービスが有効になります。同様に、chkconfig kdump off と入力すると、すべてのランレベルで無効になります。現行セッションでサービスを起動するには、root
で以下のコマンドを使用します。
~]# service kdump start
No kdump initial ramdisk found. [WARNING]
Rebuilding /boot/initrd-2.6.18-194.8.1.el5kdump.img
Starting kdump: [ OK ]
46.2.4. 設定のテスト
kdump
を有効にしてシステムを再起動し、root
でサービスが実行中であることを確認します。
~]# service kdump status
Kdump is operational
root
で次のコマンドを実行します。
~]# echo 1 > /proc/sys/kernel/sysrq ~]# echo c > /proc/sysrq-trigger
YYYY-MM-DD-HH:MM/vmcore
ファイルが設定で選択した場所(デフォルトでは /var/crash/
)にコピーされます。
46.3. コアダンプの分析
vmcore
ダンプファイルを分析するには、crash パッケージおよび kernel-debuginfo パッケージがインストールされている必要があります。これを行うには、root
で次のコマンドを実行します。
~]# yum install --enablerepo=rhel-debuginfo crash kernel-debuginfo
netdump
、diskdump
、xendump
、または kdump
によって作成されたコアダンプを対話的に分析できます。開始すると、GNU Debugger (GDB)と非常に似ている対話式のプロンプトが表示されます。
crash /var/crash/timestamp/vmcore /usr/lib/debug/lib/modules/kernel/vmlinux
kdump
が取得したバージョンと同じである必要があることに注意してください。現在実行中のカーネルを確認するには、uname -r コマンドを使用します。
例46.2 crash ユーティリティーの実行
~]# 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>
46.3.1. メッセージバッファーの表示
例46.3 カーネルメッセージバッファーの表示
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
46.3.2. バックトレースの表示
例46.4 カーネルスタックトレースの表示
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
46.3.3. プロセスステータスの表示
例46.5 システム内のプロセスの状態の表示
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
46.3.4. 仮想メモリー情報の表示
例46.6 現在のコンテキストの仮想メモリー情報の表示
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 ...
46.3.5. 開いているファイルの表示
例46.7 現在のコンテキストのオープンファイルについての情報の表示
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
46.4. 関連情報
46.4.1. インストールされているドキュメント
- man kdump.conf
- 利用可能なオプションの詳細なドキュメントを含む
/etc/kdump.conf
設定ファイルの man ページです。 - man kexec
- kexec の man ページには、その使用方法に関する詳細なドキュメントが含まれています。
- man クラッシュ
- crash ユーティリティーの man ページには、その使用方法に関する完全なドキュメントが含まれています。
/usr/share/doc/kexec-tools-version/kexec-kdump-howto.txt
kdump
および kexec のインストールと使用の概要。
46.4.2. 便利な Web サイト
- https://access.redhat.com/kb/docs/DOC-6039
- kexec および
kdump
設定に関する Red Hat ナレッジベースアーティクルです。 - http://people.redhat.com/anderson/
- crash ユーティリティーのホームページです。
パート VII. セキュリティーおよび認証
第47章 セキュリティーの概要
47.1. セキュリティーの概要
47.1.1. コンピューターセキュリティーとは
47.1.1.1. How did Computer Security Come about?
47.1.1.2. Security Today
47.1.1.3. セキュリティーの標準化
- 機密性 - 機密情報は、事前に定義された個人だけが利用できるようにする必要があります。許可されていない情報の送信や使用は、制限する必要があります。たとえば、情報に機密性があれば、権限のない個人が顧客情報や財務情報を悪意のある目的 (ID 盗難やクレジット詐欺など) で入手できません。
- 保全性 - 情報は、改ざんして不完全または不正確なものにすべきではありません。承認されていないユーザーが、機密情報を変更したり破壊したりする機能を使用できないように制限する必要があります。
- 可用性 - 情報は、認証されたユーザーが必要な時にいつでもアクセスできるようにする必要があります。可用性は、合意した頻度とタイミングで情報を入手できることを保証します。これは、パーセンテージで表されることが多く、ネットワークサービスプロバイダーやその企業顧客が使用するサービスレベルアグリーメント (SLA) で正式に合意となります。
47.1.2. セキュリティーコントロール
- 物理的
- 技術的
- 管理的
47.1.2.1. 物理的コントロール
- 有線監視カメラ
- 動作または温度の感知アラームシステム
- 警備員
- 写真付き身分証明書
- 施錠された、デッドボルト付きのスチールドア
- バイオメトリクス (本人確認を行うための指紋、声、顔、虹彩、筆跡などの自動認識方法が含まれます)
47.1.2.2. 技術的コントロール
- 暗号化
- スマートカード
- ネットワーク認証
- アクセス制御リスト (ACL)
- ファイルの完全性監査ソフトウェア
47.1.2.3. 管理的コントロール
- トレーニングおよび認識の向上
- 災害準備および復旧計画
- 人員採用と分離の戦略
- 人員登録とアカウンティング
47.1.3. まとめ
47.2. 脆弱性のアセスメント
- 技術の設定、監視、および保守を行うスタッフの専門知識
- サービスとカーネルのパッチ、および更新を迅速かつ効率的に行う能力
- ネットワーク上での警戒を常に怠らない担当者の能力
47.2.1. 不利な点を考える
47.2.2. アセスメントとテストの定義
- 情報セキュリティーにプロアクティブなフォーカスを作成
- クラッカーが発見する前に潜在的な不正使用を見つける
- システムを最新の状態に保ち、パッチを当てる
- スタッフの専門知識開発における成長と支援
- Abates Financial loss and negative publicity
47.2.2.1. メソッドの確立
- http://www.isecom.org/projects/osstmm.htm 『Open Source Security Testing Methodology Manual』 (OSSTMM)
- http://www.owasp.org/ 『Open Web Application Security プロジェクト』
47.2.3. ツールの評価
47.2.3.1. Nmap を使用したホストのスキャン
47.2.3.1.1. Nmap の使用
nmap foo.example.com
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
47.2.3.2. Nessus
47.2.3.3. Nikto
47.2.3.4. VLAD the Scanner
47.2.3.5. 将来のニーズの予測
47.3. 攻撃者および脆弱性
47.3.1. ハッカーのクイック履歴
47.3.1.1. Gray の shades
47.3.2. ネットワークセキュリティーへの脅威
47.3.2.1. セキュリティーが十分ではないアーキテクチャー
47.3.2.1.1. ブロードキャストネットワーク
47.3.2.1.2. 集中化サーバー
47.3.3. サーバーセキュリティーへの脅威
47.3.3.1. 未使用のサービスと開かれたポート
47.3.3.2. パッチが適用されないサービス
47.3.3.3. 管理における不注意
47.3.3.4. 本質的に安全ではないサービス
47.3.4. ワークステーションおよび家庭用 PC のセキュリティーに対する脅威
47.3.4.1. 不適切なパスワード
47.3.4.2. 脆弱なクライアントアプリケーション
47.4. 一般的な不正使用と攻撃
表47.1 一般的な不正使用
不正使用 | 説明 | 注記 | |||
---|---|---|---|---|---|
空またはデフォルトのパスワード | 管理パスワードを空白のままにしたり、製品ベンダーが設定したデフォルトのパスワードをそのまま使用します。これは、ルーターやファイアウォールなどのハードウェアで最もよく見られますが、Linux で実行されるサービスにはデフォルトの管理者パスワードを含めることができます(ただし、Red Hat Enterprise Linux 5 には同梱されません)。 |
| |||
デフォルトの共有鍵 | セキュアなサービスでは、開発や評価テスト向けにデフォルトのセキュリティー鍵がパッケージ化されていることがあります。この鍵を変更せずにインターネットの実稼働環境に置いた場合は、同じデフォルトの鍵を持つ すべての ユーザーがその共有鍵のリソースや、そこにあるすべての機密情報にアクセスできるようになります。 |
| |||
IP スプーフィング | リモートマシンがローカルネットワークのノードのように動作し、サーバーに脆弱性を見つけるとバックドアプログラムまたはトロイの木馬をインストールして、ネットワークリソース全体へのコントロールを得ようとします。 |
| |||
盗聴 | 2 つのノード間の接続を盗聴することにより、ネットワーク上のアクティブなノード間を行き交うデータを収集します。 |
| |||
サービスの脆弱性 | 攻撃者はインターネットで実行しているサービスの欠陥や抜け穴を見つけます。攻撃者がこの脆弱性を利用する場合は、システム全体と格納されているデータを攻撃するだけでなく、ネットワーク上の他のシステムも攻撃する可能性があります。 |
| |||
アプリケーションの脆弱性 | 攻撃者はデスクトップおよびワークステーションのアプリケーション(メールクライアントなど)で障害を見つけ、任意コードを実行し、今後の不正使用のために Trojan Horses を引き継ぎ、システムをクラッシュさせます。攻撃を受けたワークステーションがネットワークの残りの部分に対して管理特権を持っている場合は、さらなる不正使用が起こる可能性があります。 |
| |||
サービス拒否攻撃 (DoS: Denial of Service) | 単独の攻撃者または攻撃者のグループは、目標のホスト (サーバー、ルーター、ワークステーションのいずれか) に認証されていないパケットを送り、組織のネットワークまたはサーバーのリソースに対して攻撃を仕掛けます。これにより、正当なユーザーがリソースを使用できなくなります。 |
|
47.5. セキュリティー更新
47.5.1. パッケージの更新
- 一覧表示され、Red Hat Network でダウンロードできます。
- Red Hat エラータ Web サイトで一覧表示およびリンク解除
47.5.1.1. RHN Classic での自動更新の使用
47.5.1.2. Red Hat エラータ Web サイトの使用
/tmp/updates
などの新しいディレクトリーを作成し、ダウンロードしたパッケージをすべて保存することを強く推奨します。
47.5.1.3. 署名パッケージの検証
/mnt/cdrom
にマウントされている場合は、以下のコマンドを使用してキー リング (システム上の信頼できるキーのデータベース)にインポートします。
rpm --import /mnt/cdrom/RPM-GPG-KEY-redhat-release
rpm -qa gpg-pubkey*
gpg-pubkey-37017186-45761324
rpm -qi gpg-pubkey-37017186-45761324
rpm -K /tmp/updates/*.rpm
gpg OK
を返します。そうでない場合は、正しい Red Hat 公開鍵を使用していることと、コンテンツのソースを確認してください。GPG 検証に合格しないパッケージは、サードパーティーによって変更されている可能性があるため、インストールしないでください。
47.5.1.4. 署名パッケージのインストール
rpm -Uvh /tmp/updates/*.rpm
rpm -ivh /tmp/updates/<kernel-package>
rpm -e <old-kernel-package>
47.5.1.5. 変更の適用
- アプリケーション
- ユーザー空間アプリケーションは、システムユーザーが開始できるプログラムです。通常、このようなアプリケーションは、ユーザー、スクリプト、または自動タスクユーティリティーがそれらを起動し、長期間維持されない場合にのみ使用されます。このようなユーザー空間アプリケーションが更新されたら、システム上のアプリケーションのインスタンスをすべて停止し、プログラムを再度起動し、更新されたバージョンを使用します。
- カーネル
- カーネルは、Red Hat Enterprise Linux オペレーティングシステムのコアソフトウェアコンポーネントです。メモリー、プロセッサー、および周辺機器へのアクセスを管理し、すべてのタスクをスケジュールします。その中心的なロールがあるため、コンピューターを停止せずにカーネルを再起動することはできません。そのため、システムを再起動するまで、更新されたバージョンのカーネルを使用することはできません。
- 共有ライブラリー
- 共有ライブラリーは、多くのアプリケーションやサービスによって使用される
glibc
などのコードの単位です。共有ライブラリーを使用するアプリケーションは、通常、アプリケーションの初期化時に共有コードを読み込むため、更新されたライブラリーを使用するアプリケーションはすべて停止および再起動する必要があります。実行中のどのアプリケーションが特定のライブラリーに対してリンクしているかを確認するには、以下の例のように lsof コマンドを使用します。lsof /usr/lib/libwrap.so*
このコマンドは、ホストアクセス制御に TCP ラッパーを使用する実行中のすべてのプログラム一覧を返します。したがって、tcp_wrappers
パッケージが更新されると、リストされているプログラムは停止して再起動する必要があります。 - SysV Services
- SysV サービスは、システムの起動プロセス中に起動する永続的なサーバープログラムです。SysV サービスの例としては、sshd、vsftpd、xinetd などがあります。これらのプログラムは通常マシンが起動されている限りメモリーに保持されるため、更新された各 SysV サービスは、パッケージのアップグレード後に停止して再起動する必要があります。これは、Services Configuration Tool を使用するか、root シェルプロンプトにログインして、/sbin/service コマンドを以下の例のように実行して実行できます。
service <service-name> restart
前の例で、< ;service-name& gt; を sshd などのサービスの名前に置き換えます。Services Configuration Tool の詳細は、17章Network Configuration を参照してください。 - xinetd サービス
- xinetd スーパーサービスが制御するサービスは、アクティブな接続がある場合にのみ実行されます。xinetd が制御するサービスの例には、Telnet、IMAP、および POP3 が含まれます。これらのサービスの新しいインスタンスは新しいリクエストを受け取るたびに xinetd によって起動されるため、アップグレード後に発生する接続は更新されたソフトウェアによって処理されます。ただし、xinetd が制御するサービスのアップグレード時にアクティブな接続がある場合は、ソフトウェアの古いバージョンによって提供されます。特定の xinetd 制御サービスの古いインスタンスを強制終了するには、そのサービスの パッケージをアップグレードしてから、現在実行中のプロセスをすべて停止します。プロセスが実行されているかどうかを確認するには、ps コマンドを使用して kill または killall コマンドを使用して、サービスの現在のインスタンスを停止します。たとえば、セキュリティーエラータ
imap
パッケージがリリースされている場合は、パッケージをアップグレードし、root でシェルプロンプトに以下のコマンドを入力します。ps -aux | grep imap
このコマンドは、アクティブな IMAP セッションをすべて返します。以下のコマンドを実行すると、個々のセッションを終了できます。kill <PID>
セッションの終了に失敗した場合は、代わりに以下のコマンドを使用します。kill -9 <PID>
前の例では、& lt;PID > を IMAP セッションのプロセス ID 番号( ps コマンドの 2 列目にある)に置き換えます。アクティブな IMAP セッションをすべて強制終了するには、以下のコマンドを実行します。killall imapd
第48章 ネットワークのセキュリティー保護
48.1. ワークステーションのセキュリティー
48.1.1. ワークステーションのセキュリティーの評価
- BIOS およびブートローダーセキュリティー:承認されていないユーザーがマシンに物理的にアクセスし、パスワードなしで単一ユーザーまたはレスキューモードで起動 できますか ?
- パスワードセキュリティー - マシン上のユーザーアカウントのパスワードのセキュリティーはどのように安全ですか ?
- 管理コントロール - システム上にアカウントがあり、管理者の制御はどの程度ありますか ?
- 利用可能なネットワーク サービス - ネットワークからの要求をリッスンしているサービスや、それらを全く実行すべきサービス
- パーソナル ファイアウォール - 必要なファイアウォールのタイプ。
- Security Enhanced Communication Tools - ワークステーションと、避けるべきなワークステーション間の通信に使用する必要があるツールは何ですか ?
48.1.2. BIOS およびブートローダーのセキュリティー
48.1.2.1. BIOS パスワード
- BIOS 設定の変更を防止する - 侵入者が BIOS にアクセスできる場合は、ディスケットまたは CD-ROM から起動するように設定できます。このようにすると、侵入者がレスキューモードやシングルユーザーモードに入ることが可能になり、システムで任意のプロセスを開始したり、機密性の高いデータをコピーできるようになってしまいます。
- システムの起動を防止する - BIOS の中には起動プロセスをパスワードで保護できるものもあります。これを有効にすると、攻撃者は BIOS がブートローダーを開始する前にパスワード入力を求められます。
48.1.2.1.1. x86 以外のプラットフォームのセキュリティー保護
48.1.2.2. ブートローダーのパスワード
- シングルユーザーモードへのアクセスの防止 - 攻撃者がシステムをシングルユーザーモードで起動できる場合、root パスワードを求められることなく、root として自動的にログインします。
- GRUB コンソールへのアクセスの防止 - マシンがブートローダーとして GRUB を使用している場合、攻撃者は GRUB エディターインターフェイスを使用して設定を変更したり、cat コマンドを使用して情報を収集したりできます。
- 安全でないオペレーティングシステムへのアクセスの防止 - デュアルブートシステムの場合、攻撃者はアクセス制御やファイルパーミッションを無視するオペレーティングシステムを起動時に選択することができます(DOS など)。
48.1.2.2.1. GRUB が保護するパスワード
grub-md5-crypt
/boot/grub/grub.conf
を編集します。ファイルを開き、ドキュメントのメインセクションにある timeout 行の下に、以下の行を追加します。
password --md5 <password-hash>
/boot/grub/grub.conf
ファイルの別の部分を編集する必要があります。
title
行を探し、その下の lock ディレクティブの行を追加します。
title DOS lock
/boot/grub/grub.conf
ファイルのメインセクションに password
行が存在する必要があります。そうしないと、攻撃者は GRUB エディターインターフェイスにアクセスし、ロックラインを削除できます。
title DOS lock password --md5 <password-hash>
48.1.3. パスワードセキュリティー
/etc/passwd
ファイルに保存されるため、システムはオフラインでのパスワードクラッキング攻撃に対して脆弱になります。侵入者が通常のユーザーとしてマシンにアクセスできる場合は、/etc/passwd
ファイルを自分のマシンにコピーし、それに対して任意の数のパスワードクラッキングプログラムを実行できます。ファイル内に安全でないパスワードがあれば、パスワードクラッカーに発見されるのは時間の問題です。
/etc/shadow
に保存することで、このタイプの攻撃を排除します。
48.1.3.1. 強固なパスワードの作成
- Words または Numbers のみは使用しないでください。パスワードには数字または単語のみを使用しないでください。非セキュアな例には、以下が含まれます。
- 8675309
- juan
- hackme
- Recogniz able Words は使用しないでください。適切な名前、辞書の単語、またはテレビター の用語や、数字で予約されている場合でも、回避すべきです。非セキュアな例には、以下が含まれます。
- john1
- DS-9
- mentat123
- Foreign Languages で Words を使用しないでください。パスワードクラッキングプログラムは、多くの言語のディクショナリーを含む単語リストに対してチェックを行う ことがよくあります。安全なパスワードに外部言語を使用することは安全ではありません。非セキュアな例には、以下が含まれます。
- cheguevara
- bienvenido1
- 1dumbKopf
- do not use Hacker Terminology: ハッカーの用語(l337 (LEET)マクターとも呼ばれる)を使用する場合には、パスワードについて再度考えてください。多くの単語リストには、LEET マクターが含まれます。非セキュアな例には、以下が含まれます。
- H4X0R
- 1337
- do not use Personal Information - パスワードに個人情報を使用 しないでください。攻撃者がアイデンティティーを知らせると、パスワードを減らすタスクが簡単になります。以下は、パスワードの作成時に回避する情報の種類の一覧です。非セキュアな例には、以下が含まれます。
- 自分の名前
- ペットの名前
- ファミリーメンバーの名前
- 生年月日
- 電話番号または zip コード
- Not Invert Recognizable Words - Good password checkers always reverse common words, so inverting a bad password does not any more secure.非セキュアな例には、以下が含まれます。
- R0X4H
- nauj
- 9-DS
- Do not Write Down Your Password: 文書にパスワードを保存しないでください。覚えておく方がはるかに安全です。
- すべてのマシンに同じパスワードを使用しないでください。各マシンに個別のパスワードを作成することが重要です。これにより、1 つのシステムが危険にさらされると、すべてのマシンが危険にさらされることはありません。
- パスワード を Least Eight Characters Long にする - パスワードが より長くなります。MD5 パスワードを使用する場合は、15 文字以上である必要があります。DES パスワードでは、最大長(8 文字)を使用します。
- 大文字の組み合わせと小文字の組み合わせ - Red Hat Enterprise Linux は大文字と小文字を区別するため、組み合わせてパスワードの強度を強化します。
- 英数字と番号の組み合わせ - 特に(最初または末尾だけでなく)中間者に追加する場合はパスワードの強度を強化できます。
- Include Non-Alphanumeric Characters - &, $, > などの特殊文字を使用すると、パスワードの強度が大幅に向上します(DES パスワードを使用する場合は不可能です)。
- パスワード を覚えておくことができない場合、パスワードの選択 - 世界で最善な パスワードはほとんど役に立ちません。パスワードを記憶するには、頭文字などのデバイスを使用してください。
48.1.3.1.1. 安全なパスワード作成方法
- 以下のような簡単に覚えているフレーズについて考えてみましょう。"Randm through the river and through the woods, to grandmother's house we go."
- 次に、頭字語(句読点を含む)に変換します。
otrattw,tghwg.
- 略語の文字の番号と記号を置き換えて、複雑さを追加します。たとえば、
7
をt
に、at 記号(@
)をa
に置き換えます。o7r@77w,7ghwg.
H
など、少なくとも 1 文字を大文字にして、複雑さをさらに追加します。o7r@77w,7gHwg.
- 最後に、システムには上記のサンプルパスワードを使用しないでください。
48.1.3.2. 組織内でのユーザーパスワードの作成
48.1.3.2.1. 強固なパスワードの強制
pam_NORMAL.so
PAM モジュールを使用して実行されます。PAM はカスタマイズ可能であるため、pam_passwdqc
( http://www.openwall.com/passwdqc/から利用可能)や新しいモジュールを書き込むなど、パスワード整合性チェッカーをさらに追加することができます。利用可能な PAM モジュールの一覧は、http://www.kernel.org/pub/linux/libs/pam/modules.html を参照してください。PAM の詳細は、「PAM (プラグ可能な認証モジュール)」 を参照してください。
- John The Ripper - 高速で柔軟なパスワードクラッキングプログラム。複数の単語リストを使用でき、ブルートフォースのパスワードクラッキングが可能です。http://www.openwall.com/john/ からオンラインで使用できます。
- crack - 最もよく知られているパスワードクラッキングソフトウェアも非常 に 高速ですが、John The Ripper として簡単に使用できません。オンラインについては http://www.openwall.com/john/ を参照してください。
- Slurpie - Slurpie は John The Ripper and Crack と似ていますが、複数のコンピューターで同時に実行するように設計されており、分散パスワードクラッキング攻撃を作成します。これは、http://www.ussrback.com/distributed.htm でオンラインの他の多くの分散攻撃セキュリティー評価ツールと共に確認できます。
48.1.3.2.2. パスワードのエージング
-M
オプションは、パスワードの最大有効日数を指定します。たとえば、ユーザーのパスワードを 90 日間で期限切れになるように設定するには、以下のコマンドを使用します。
chage -M 90 <username>
-M
オプションの後に 99999 の値を使用することは従来の 273 年以上に相当します。
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]:
~]#
- パネル上の システム メニューをクリックして 管理 から ユーザーとグループ をクリックして User Manager を表示させます。または、シェルプロンプトでコマンド system-config-users を入力します。
- ユーザー タブをクリックして、ユーザーリストの中から必要なユーザーを選択します。
- ツールバーの 設定 をクリックして、ユーザー設定のダイアログボックスを表示させます (または ファイル メニューで 設定 を選択します) 。
- Password Info タブをクリックし、Enable password expiration のチェックボックスを選択します。
- Days before change required フィールドに必要な値を入力して、OK をクリックします。
図48.1 パスワードのエージングオプションの指定
[D]
48.1.4. 管理的コントロール
s
で示されます。
-rwsr-xr-x 1 root root 47324 May 1 08:09 /bin/su
s
は大文字または小文字の場合があります。大文字で表示されている場合は、基になる許可ビットが設定されていないことを意味します。
pam_console.so
と呼ばれる PAM モジュールを介して、リムーバブルメディアの再起動やマウントなど、通常は root ユーザー専用に予約されている一部のアクティビティーは、物理コンソールでログインする最初のユーザーに許可されます( pam_console.so
モジュールの詳細は、「PAM (プラグ可能な認証モジュール)」 を参照してください)。 ただし、ネットワーク設定の変更、新しいマウスの設定、ネットワークデバイスのマウントなど、その他の重要なシステム管理タスクは、管理者権限なしではできません。その結果、システム管理者は、ネットワーク上のユーザーがどの程度のアクセスを受けるべきかを決定する必要があります。
48.1.4.1. Root アクセスの許可
- マシン の設定ミス - root アクセス権を持つユーザーは、マシンの設定を誤設定し、問題の解決にサポートが必要になる場合があります。さらに悪いことに、知らずにセキュリティーホールを発生させてしまう可能性があります。
- 安全で ないサービス の実行 - root アクセスを持つユーザーは、マシン上で FTP や Telnet などのセキュアでないサーバーを実行し、ユーザー名とパスワードを危険にさらす可能性があります。これらのサービスは、この情報をプレーンテキストでネットワーク経由で送信します。
- 電子メールの添付ファイルを root で実行 — まれにですが、Linux に影響を与える電子メールウィルスが存在します。ただし、脅威となるのは、root ユーザーが実行する時だけです。
48.1.4.2. Root アクセスの拒否
- root シェルの変更
- ユーザーが root として直接ログインできないように、システム管理者は、
/etc/passwd
ファイルで root アカウントのシェルを /sbin/nologin に設定します。表48.1 Root シェルの無効化
影響あり 影響なし root シェルへのアクセスを阻止し、そのような試行をログに記録します。以下のプログラムは root アカウントにアクセスできません。- login
- gdm
- kdm
- xdm
- su
- ssh
- scp
- sftp
FTP クライアント、メールクライアント、多くの setuid プログラムなど、シェルを必要としないプログラム。以下のプログラムは root アカウントにアクセスでき ません。- sudo
- FTP クライアント
- Email クライアント
- 任意のコンソールデバイス(tty)を介した root アクセスの無効化
- root アカウントへのアクセスをさらに制限するために、管理者は
/etc/securetty
ファイルを編集してコンソールで root ログインを無効にすることができます。このファイルは、root ユーザーがログインできるすべてのデバイスを一覧表示します。ファイルが存在しない場合は、コンソールまたは raw ネットワークインターフェイスを介して、root ユーザーはシステム上の任意の通信デバイス経由でログインできます。これは危険です。これは、ユーザーが Telnet を介して root としてマシンにログインできるためです。これにより、パスワードがプレーンテキストでネットワークを介して送信されます。デフォルトでは、Red Hat Enterprise Linux の/etc/securetty
ファイルでは、マシンに物理的に接続されているコンソールで root ユーザーしかログインできません。root ユーザーがログインできないようにするには、root でシェルプロンプトで以下のコマンドを入力して、このファイルの内容を削除します。echo > /etc/securetty
KDM、GDM、XDM のログインマネージャーでsecuretty
サポートを有効にするには、次の行を追加します。auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
追加対象のファイルは以下のとおりです。/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
Warning空の/etc/securetty
ファイルは、root ユーザーが OpenSSH スイートを使用してリモートでログインすることを阻止し ませ ん。これは、認証後までコンソールが開かないためです。表48.2 Root ログインの無効化
影響あり 影響なし コンソールまたはネットワークを介して root アカウントにアクセスできないようにします。以下のプログラムは root アカウントにアクセスできません。- login
- gdm
- kdm
- xdm
- tty を開くその他のネットワークサービス
root としてログインしないが、setuid またはその他のメカニズムを使用して管理タスクを実行するプログラム。以下のプログラムは root アカウントにアクセスでき ません。- su
- sudo
- ssh
- scp
- sftp
- Root SSH ログインの無効化
- SSH プロトコルを介した root ログインを防ぐには、SSH デーモンの設定ファイル
/etc/ssh/sshd_config
を編集し、以下の行を変更します。#PermitRootLogin yes
の行を以下のように変更します。PermitRootLogin no
表48.3 Root SSH ログインの無効化
影響あり 影響なし ツールの OpenSSH スイートを介した root アクセスを防ぎます。以下のプログラムは root アカウントにアクセスできません。- ssh
- scp
- sftp
OpenSSH のツール群に含まれないプログラム。 - PAM を使用して、サービスへの root アクセスを制限する
- PAM は、
/lib/security/pam_listfile.so
モジュールを通じて、特定のアカウントを非常に柔軟に拒否することができます。管理者は、このモジュールを使用して、ログインを許可されていないユーザーのリストを参照できます。システムサービスへの root アクセスを制限するには、/etc/pam.d/
ディレクトリーのターゲットサービスの ファイルを編集し、pam_listfile.so
モジュールが認証に必要であることを確認します。以下は、/etc/pam.d/vsftpd
PAM 設定ファイルの vsftpd FTP サーバーに対するモジュールの使用例です (ディレクティブが 1 行の場合、最初の行の最後の\
文字は 不要 です)。auth required /lib/security/pam_listfile.so item=user \ sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
これにより、PAM は/etc/vsftpd.ftpusers
ファイルを参照し、記載されているユーザーのサービスへのアクセスを拒否するように指示されます。管理者はこのファイルの名前を変更することができ、各サービスごとに個別のリストを保持することも、1 つの中央リストを使用して複数のサービスへのアクセスを拒否することもできます。管理者が複数のサービスへのアクセスを拒否したい場合、同様の行を PAM 設定ファイル (メールクライアントの場合は/etc/pam.d/pop
と/etc/pam.d/imap
、SSH クライアントの場合は/etc/pam.d/ssh
) に追加することができます。PAM の詳細は、「PAM (プラグ可能な認証モジュール)」 を参照してください。表48.4 PAM を使用した root の無効化
影響あり 影響なし PAM が認識するネットワークサービスへの root アクセスを防ぎます。以下のサービスは、root アカウントにアクセスできません。- login
- gdm
- kdm
- xdm
- ssh
- scp
- sftp
- FTP クライアント
- Email クライアント
- すべての PAM 対応サービス
PAM を意識していないプログラム、サービス。
48.1.4.3. Root アクセスの制限
48.1.4.3.1. su コマンド
usermod -G wheel <username>
- パネル上の システム メニューをクリックして 管理 から ユーザーとグループ をクリックして User Manager を表示させます。または、シェルプロンプトでコマンド system-config-users を入力します。
- ユーザー タブをクリックして、ユーザーリストの中から必要なユーザーを選択します。
- ツールバーの 設定 をクリックして、ユーザー設定のダイアログボックスを表示させます (または ファイル メニューで 設定 を選択します) 。
- テキストエディターで su (
/etc/pam.d/su
)の PAM 設定ファイルを開き、以下の行からコメント # を削除します。auth required pam_wheel.so use_uid
この変更により、wheel
の管理グループメンバーのみが、su コマンドを使用して別のユーザーに切り替えることができます。
図48.2 wheel グループにユーザーを追加します。
[D]
wheel
グループに含まれます。
48.1.4.3.2. sudo コマンド
sudo <command>
/etc/sudoers
を使用して変更できます。
/etc/sudoers
設定ファイルに記載されているユーザーのみが sudo コマンドの使用が許可され、root シェルではなく、ユーザーの シェルでコマンドが実行されます。これは、「Root アクセスの拒否」 に示されるように、root シェルを完全に無効にできることを意味します。
/var/log/messages
ファイルに記録され、発行者のユーザー名とともに発行されたコマンドは /var/log/secure
ファイルに記録されます。
/etc/sudoers
を編集する場合は、visudo コマンドを使用する必要があります。
juan ALL=(ALL) ALL
juan
が任意のホストから sudo を使用し、任意のコマンドを実行できます。
%users localhost=/sbin/shutdown -h now
sudoers
の man ページには、このファイルのオプションの詳細なリストがあります。
48.1.5. 利用可能なネットワークサービス
48.1.5.1. サービスへのリスク
- サービス拒否攻撃 (DoS) — サービスにリクエストをフラッディングさせると、サービスは各リクエストをログに記録して応答しようとするため、サービス拒否攻撃はシステムを使用不能にすることができます。
- Script Vulnerability Attacks - サーバーが、Web サーバーが一般的に行うようにサーバー側のアクションを実行するスクリプトを使用している場合、クラッカーが不適切に記述されたスクリプトを攻撃する可能性があります。これらのスクリプトの脆弱性攻撃により、バッファーオーバーフロー状態が発生したり、攻撃者がシステム上のファイルを変更したりできます。
- バッファーオーバーフロー攻撃 - 0 から 1023 までのポート番号が付いたポートに接続するサービスは、管理ユーザーとして実行する必要があります。アプリケーションに悪用可能なバッファーオーバーフローがある場合、攻撃者はデーモンを実行しているユーザーとしてシステムにアクセスできます。悪用可能なバッファーオーバーフローが存在するため、クラッカーは自動化ツールを使って脆弱性のあるシステムを特定し、アクセス権を獲得した後は、自動化ルートキットを使ってシステムへのアクセス権を維持します。
48.1.5.2. サービスの識別と設定
- cupsd: Red Hat Enterprise Linux のデフォルトのプリントサーバー。
- L PD: 代替プリントサーバー。
- xinetd — gssftp や telnet などのさまざまな下位サーバーへの接続を制御するスーパーサーバー。
- Sendmail - Sendmail Mail Transport Agent (MTA)はデフォルトで有効になっていますが、からの接続はリッスンしません。 localhostをクリックします。
- sshd — OpenSSH サーバー。Telnet に代わる安全なサーバー。
図48.3 サービス設定ツール
[D]
48.1.5.3. 安全でないサービス
- 暗号化されていないネットワーク上でのユーザー名とパスワードの送信 — Telnet や FTP などの多くの古いプロトコルは、認証セッションを暗号化しないため、可能な限り避ける必要があります。
- 暗号化されていないネットワーク上での機密データの送信 — 多くのプロトコルは、暗号化されていないネットワーク上でデータを送信します。これらのプロトコルには、Telnet、FTP、HTTP、および SMTP が含まれます。NFS や SMB などの多くのネットワークファイルシステムも、暗号化されていないネットワークを介して情報を送信します。これらのプロトコルを使用する場合、ユーザーの責任において、送信されるデータの種類を制限する必要があります。netdump などのリモートメモリーダンプサービスは、暗号化されていないネットワーク上でメモリーの内容を送信します。メモリーダンプにはパスワードや、さらに悪いデータベースエントリーやその他の機密情報を含めることができます。finger や rwhod などの他のサービスは、システムのユーザーに関する情報を表示します。
- finger
- authd (これは以前の Red Hat Enterprise Linux リリースで identd と呼ばれていました)
- netdump
- netdump-server
- nfs
- rwhod
- sendmail
- SMB (Samba)
- yppasswdd
- ypserv
- ypxfrd
48.1.6. 個人ファイアウォール
48.1.7. セキュリティー強化通信ツール
- OpenSSH: ネットワーク通信を暗号化する SSH プロトコルのフリー実装。
- GNU Privacy Guard (GPG): データを暗号化する PGP (Pretty Good Privacy)暗号化アプリケーションの無料実装。
- ssh: セキュアなリモートコンソールアクセスクライアント。
- scp: セキュアなリモートコピーコマンド。
- SFTP: インタラクティブなファイル転送セッションを可能にするセキュアな擬似ftpクライアント。
48.2. サーバーセキュリティー
- 最新の脅威から保護するために、すべてのサービスを最新の状態に保ちます。
- 可能な限りセキュアなプロトコルを使用します。
- 可能な場合は、マシンごとに 1 つのタイプのネットワークサービスのみを提供します。
- 疑わしいアクティビティーのために、すべてのサーバーを慎重に監視します。
48.2.1. TCP Wrapper と xinetd を使用したサービスの保護
48.2.1.1. TCP Wrapper を使用したセキュリティーの強化
hosts_options
の man ページを参照してください。
48.2.1.1.1. TCP Wrapper と接続バナー
banner
オプションを使用します。
/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.
/etc/hosts.allow
ファイルに次の行を追加します。
vsftpd : ALL : banners /etc/banners/
48.2.1.1.2. TCP Wrapper と攻撃警告
/etc/hosts.deny
ファイルに次の行を配置して、そのネットワークからの接続試行を拒否し、その試行を特別なファイルに記録します。
ALL : 206.182.68.0 : spawn /bin/ 'date' %c %d >> /var/log/intruder_alert
/etc/hosts.allow
ファイルに配置します。
48.2.1.1.3. TCP Wrapper とロギングの強化
/etc/hosts.deny
に配置します。
in.telnetd : ALL : severity emerg
48.2.1.2. xinetd でのセキュリティーの強化
xinetd.conf
の man ページを参照してください。
48.2.1.2.1. トレイトの設定
no_access
リストに追加する機能です。このリストのホストは、指定された期間、または xinetd が再起動するまで、xinetd が管理するサービスへの後続の接続を拒否します。これは、SENSOR 属性を使用して実行できます。これは、サーバー上のポートをスキャンしようとするホストを簡単にブロックする方法です。
/etc/xinetd.d/telnet
ファイルを編集し、フラグ
の行を次のように変更します。
flags = SENSOR
deny_time = 30
disable = no
SENSOR
の使用は、望ましくないホストからの接続を検出および停止するのに適した方法として、2 つの欠点があります。
- Stealth スキャンでは機能しません。
SENSOR
が実行されていることがわかっている攻撃者は、IP アドレスを改ざんし、禁止されたポートに接続することで、特定のホストに対してサービス拒否攻撃をマウントすることができます。
48.2.1.2.2. サーバーリソースの制御
CPs = <number_of_connections> <wait_period>
; - 受信接続のレートを制限します。このディレクティブは 2 つの引数を取ります。<number_of_connections
>: 処理する 1 秒あたりの接続数。受信接続のレートがこれよりも大きい場合、サービスは一時的に無効になります。デフォルト値は 15 (50)です。<wait_period
>: 無効にした後にサービスを再度有効にするまで待機する秒数。デフォルトの間隔は 10 秒です。
instances = <number_of_connections>
- サービスに対して許可される接続の総数を指定します。このディレクティブは、整数値または UNLIMITED を受け入れます。per_source = <number_of_connections>:
各ホストがサービスに対して許可される接続の数を指定します。このディレクティブは、整数値または UNLIMITED を受け入れます。rlimit_as = <number[K|M]>
;: サービスがキロバイトまたはメガバイトで占有できるメモリーアドレス空間の量を指定します。このディレクティブは、整数値または UNLIMITED を受け入れます。rlimit_cpu = <number_of_seconds&
gt;: サービスが CPU を占有する時間を秒単位で指定します。このディレクティブは、整数値または UNLIMITED を受け入れます。
48.2.2. ポートマップのセキュリティー保護
48.2.2.1. TCP Wrapper によるポートマップの保護
48.2.2.2. iptables によるポートマップの保護
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
iptables -A INPUT -p udp -s! 192.168.0.0/24 --dport 111 -j DROP
48.2.3. NIS のセキュア化
- /usr/sbin/rpc.yppasswdd — yppasswdd サービスとも呼ばれるこのデーモンを使用すると、ユーザーは NIS パスワードを変更できます。
- /usr/sbin/rpc.ypxfrd — ypxfrd サービスとも呼ばれるこのデーモンは、ネットワークを介した NIS マップ転送を担当します。
- /usr/sbin/yppush: このアプリケーションは、変更した NIS データベースを複数の NIS サーバーに伝播します。
- /usr/sbin/ypserv — これは、NIS サーバーデーモンです。
48.2.3.1. ネットワークの注意深いプランニング
48.2.3.2. パスワードのような NIS ドメイン名とホスト名の使用
ypcat -d <NIS_domain> -h <DNS_hostname> passwd
ypcat -d <NIS_domain> -h <DNS_hostname> shadow
o7hfawtgmhwg.domain.com
などのランダムな文字列を作成します。同様に、異なるランダムな NIS ドメイン名を作成します。これにより、攻撃者が NIS サーバーにアクセスすることがより困難になります。
48.2.3.3. /var/yp/securenets
ファイルを編集する
/var/yp/securenets
ファイルが空白または存在しない場合 (デフォルトのインストール後の場合)、NIS はすべてのネットワークをリッスンします。まず最初にすべきことは、ネットマスクとネットワークのペアをファイルに記述し、ypservが適切なネットワークからのリクエストにのみ反応するようにすることです。
/var/yp/securenets
ファイルからのエントリーの例です。
255.255.255.0 192.168.0.0
/var/yp/securenets
ファイルを作成せずに、NIS サーバーを初めて起動しないでください。
48.2.3.4. 静的ポートの割り当てと iptables ルールの使用
/etc/sysconfig/network
に以下の行を追加します。
YPSERV_ARGS="-p 834" YPXFRD_ARGS="-p 835"
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
48.2.3.5. Kerberos 認証の使用
/etc/shadow
マップからのパスワードハッシュがネットワーク経由で送信されることです。侵入者が NIS ドメインにアクセスしてネットワークトラフィックを盗んだ場合は、ユーザー名とパスワードのハッシュを収集できます。十分な時間があれば、パスワードクラッキングプログラムは弱いパスワードを推測することができ、攻撃者はネットワーク上の有効なアカウントにアクセスすることができます。
48.2.4. NFS のセキュア化
RPCSEC_GSS
カーネルモジュールの一部として、Kerberos ユーザーおよびグループ認証が含まれるようになりました。Red Hat Enterprise Linux は NFSv2 および NFSv3 をサポートしているため、portmap に関する情報は引き続き含まれています。いずれも portmap を使用します。
48.2.4.1. ネットワークの注意深いプランニング
48.2.4.2. 構文エラーに注意
/etc/exports
ファイルを参照して、エクスポートするファイルシステムとこれらのディレクトリーをエクスポートするホストを決定します。このファイルを編集する際には、余計なスペースを加えないように注意してください。
/etc/exports
ファイルの次の行は、ディレクトリー /tmp/nfs/ を読み取り/書き込みパーミッションを持つホスト bob.example.com と共有しています。
/tmp/nfs/ bob.example.com(rw)
/etc/exports
ファイルの以下の行は、同じディレクトリーを読み取り専用パーミッションでホスト bob.example.com
と共有し、ホスト名の後の 1 つのスペース文字が原因で、読み取り/書き込み権限で すべてのユーザー と共有します。
/tmp/nfs/ bob.example.com (rw)
showmount -e <hostname>
48.2.4.3. no_root_squash オプションは使用しないでください。
48.2.5. Apache HTTP Server のセキュリティー保護
48.2.5.1. FollowSymLinks
/
へシンボリックリンクを提供することはお勧めできません。
48.2.5.2. インデックス のディレクティブ
48.2.5.3. UserDir ディレクティブ
UserDir enabled UserDir disabled root
/root/
以外のすべてのユーザーディレクトリーの閲覧を有効にします。無効化されたアカウントの一覧にユーザーを追加するには、UserDir disabled 行にスペースで区切られたユーザーの一覧を追加します。
48.2.5.4. IncludesNoExec ディレクティブを削除しないでください。
48.2.5.5. 実行可能なディレクトリーのパーミッションの制限
chown root <directory_name> chmod 755 <directory_name>
48.2.6. FTP のセキュア化
- gssftpd - Kerberos 対応の xinetd- ネットワーク経由で認証情報を送信しない ベースの FTP デーモン。
- Red Hat Content Accelerator (tux) — FTP 機能を持つカーネルスペースの Web サーバー。
- vsftpd — スタンドアロンの、セキュリティー指向の FTP サービスの実装。
48.2.6.1. FTP グリーティングバナー
/etc/vsftpd/vsftpd.conf
ファイルに次のディレクティブを追加します。
ftpd_banner=<insert_greeting_here>
/etc/banners/
という新しいディレクトリーに配置します。この例の FTP 接続のバナーファイルは /etc/banners/ftp.msg
です。以下は、このようなファイルの例です。
######### # Hello, all activity on ftp.example.com is logged. #########
/etc/vsftpd/vsftpd.conf
ファイルに追加します。
banner_file=/etc/banners/ftp.msg
/etc/vsftpd/vsftpd.conf
でバナーファイルへのパスを正しく指定しないと、vsftpd に接続しようとすると接続が即座に閉じられ、500 OOPS: cannot open banner < path_to_banner_file
> エラーメッセージが表示されます。
/etc/vsftpd/vfsftpd.conf
の banner_file
ディレクティブは、設定ファイルの ftpd_banner
ディレクティブよりも優先されることに注意してください。banner_file
が指定されている場合は、ftpd_banner
は無視されます。
48.2.6.2. Anonymous Access
/var/ftp/
ディレクトリーが存在すると、匿名アカウントが有効になります。
vsftpd
パッケージをインストールすることです。本パッケージは、匿名ユーザーのためのディレクトリーツリーを構築し、匿名ユーザーのためにディレクトリーのパーミッションを読み取り専用に設定します。
48.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
/etc/vsftpd/vsftpd.conf
ファイルに追加します。
anon_upload_enable=YES
48.2.6.3. ユーザーアカウント
/etc/vsftpd/vsftpd.conf
に追加します。
local_enable=NO
48.2.6.3.1. ユーザーアカウントの制限
/etc/pam.d/vsftpd
です。
/etc/vsftpd.ftpusers
に追加します。
48.2.6.4. TCP Wrapper を使用してアクセスを制御する
48.2.7. Sendmail のセキュア化
/etc/mail/sendmail.mc
を編集し、m4 コマンドを使用して、有効な /etc/mail/sendmail.cf
を生成する基本的な知識を想定しています。
48.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 つのメッセージの最大許容サイズ(バイト単位)。
48.2.7.2. NFS および Sendmail
/var/spool/mail/
を NFS 共有ボリュームに置かないでください。
SECRPC_GSS
カーネルモジュールは UID ベースの認証を利用しないため、これは当てはまりません。ただし、メールスプールディレクトリーを NFS 共有ボリュームに配置し ない ことが推奨されます。
48.2.7.3. メール専用ユーザー
/etc/passwd
ファイル内のすべてのユーザーシェルは /sbin/nologin に設定されている必要があります (root ユーザーを除く可能性があります)。
48.2.8. リッスンしているポートの確認
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 には mystery サービスもあります。ポートが既知のサービスの公式リストに関連付けられているかどうかを確認するには、以下を入力します。
cat /etc/services | grep 834
netstat -anp | grep 834
tcp 0 0 0.0.0.0:834 0.0.0.0:* LISTEN 653/ypbind
[p]
オプションは、ポートを開いたサービスのプロセス ID (PID)を表示します。この場合、オープンポートは ypbind (NIS)に属します。これは、portmap サービスとともに処理される RPC サービスです。
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)
services
の man ページを参照してください。
48.3. シングルサインオン(SSO)
48.3.1. はじめに
48.3.1.1. サポート対象のアプリケーション
- Login
- screensaver
- Firefox および Thunderbird
48.3.1.2. サポートされる認証メカニズム
- Kerberos 名/パスワードログイン
- スマートカード/PIN ログイン
48.3.1.3. 対応するスマートカード
48.3.1.4. Red Hat Enterprise Linux Single Sign-on の利点
- 各オペレーティングシステム上の NSS 暗号ライブラリーの共有インスタンス 1 つを提供します。
- Certificate System の Enterprise Security Client (ESC)をベースオペレーティングシステムで出荷します。ESC アプリケーションは、スマートカード挿入イベントを監視します。ユーザーが Red Hat Enterprise Linux Certificate System サーバー製品で使用するために設計されたスマートカードを挿入したことを検知すると、そのスマートカードの登録方法をユーザーに指示するユーザーインターフェイスが表示されます。
- スマートカードを使用してオペレーティングシステムにログインするユーザーが Kerberos 認証情報(ファイルサーバーなどにログインできる)も取得できるように Kerberos と NSS を統合する。
48.3.2. 新しいスマートカードの使用
- Kerberos 名とパスワードでログインします。
nss-tools
パッケージが読み込まれていることを確認します。- 企業固有のルート証明書をダウンロードしてインストールします。以下のコマンドを使用して、ルート CA 証明書をインストールします。
certutil -A -d /etc/pki/nssdb -n "root ca cert" -t "CT,C,C" \ -i ./ca_cert_in_base64_format.crt
- 次の RPM がシステムにインストールされていることを確認します。esc、pam_pkcs11、coolkey、ifd-egate、ccid、gdm、authconfig、authconfig-gtk。
- スマートカードログインサポートの有効化
- Gnome Title Bar で、System->Administration->Authentication を選択します。
- 必要に応じて、マシンの root パスワードを入力します。
- Authentication Configuration ダイアログで、Authentication タブをクリックします。
- Enable Smart Card Support チェックボックスを選択します。
- Configure Smart Card... ボタンをクリックして、Smartcard Settings ダイアログを表示し、必要な設定を指定します。
- ログインにはスマートカードが 必要 - このチェックボックスをオフにします。スマートカードで正常にログインしたら、このオプションを選択して、ユーザーがスマートカードなしでログインできないようにします。
- Card Removal Action - ログイン後にスマートカードを削除するときに何が起こるかを制御します。利用可能なオプションは以下のとおりです。
- lock - スマートカードを削除すると、X 画面がロックされます。
- ignore - スマートカードを削除しても効果はありません。
- OCSP(Online Certificate Status Protocol)を有効にする必要がある場合は、
/etc/pam_pkcs11/pam_pkcs11.conf
ファイルを開き、以下の行を見つけます。enable_ocsp = false;以下のようにこの値を true に変更します。enable_ocsp = true; - スマートカードの登録
- CAC カードを使用している場合は、以下の手順も実行する必要があります。
- root アカウントに切り替え、
/etc/pam_pkcs11/cn_map
という名前のファイルを作成します。 - 以下のエントリーを
cn_map
ファイルに追加します。MY.CAC_CN.123454 -> myloginidここで、MY.CAC_CN.123454 は CAC のコモンネームで、myloginid は UNIX ログイン ID です。
- ログアウト
48.3.2.1. トラブルシューティング
pklogin_finder debug
48.3.3. スマートカードの登録の仕組み
- ユーザーは、スマートカードをワークステーションのスマートカードリーダーに挿入します。このイベントは、Enterprise Security Client (ESC)によって認識されます。
- 登録ページがユーザーのデスクトップに表示されます。ユーザーは必要な情報を完了し、ユーザーのシステムは Token Processing System (TPS)および CA に接続します。
- TPS は、CA によって署名された証明書を使用してスマートカードを登録します。
図48.4 スマートカードの登録の仕組み
[D]
48.3.4. スマートカードログインの仕組み
- ユーザーがスマートカードリーダーにスマートカードを挿入すると、このイベントは PAM 機能によって認識され、ユーザーの PIN の入力が求められます。
- 次に、システムはユーザーの現在の証明書を検索し、その有効性を検証します。証明書はユーザーの UID にマッピングされます。
- これは KDC に対して検証され、ログインに付与されます。
図48.5 スマートカードログインの仕組み
[D]
48.3.5. Firefox で SSO に Kerberos を使用する設定
- Firefox のアドレスバーに、
about:config
と入力して現在の設定オプションの一覧を表示します。 - Filter フィールドに、オプションのリストを制限するために
negotiate
と入力します。 - network.negotiate-auth.trusted-uris エントリーをダブルクリックして、Enter string value ダイアログボックスを表示します。
- 認証に使用するドメイン名( .example.com など)を入力します。
- 同じドメインを使用して、network.negotiate-auth.delegation-uris エントリーに対して上記の手順を繰り返します。注記この値は空白のままにすることができます。これは、Kerberos チケットのパススルーを可能にするためですが、必須ではありません。これら 2 つの設定オプションが一覧にない場合は、お使いの Firefox のバージョンが Negotiate 認証をサポートするのに古くなる可能性があるため、アップグレードを検討してください。
図48.6 Kerberos での SSO 用の Firefox の設定
[D]
~]$ 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
48.3.5.1. トラブルシューティング
- Firefox のすべてのインスタンスを閉じます。
- コマンドシェルを開き、以下のコマンドを入力します。
export NSPR_LOG_MODULES=negotiateauth:5 export NSPR_LOG_FILE=/tmp/moz.log
- そのシェルから Firefox を再起動し、以前に認証できなかった Web サイトにアクセスします。情報は
/tmp/moz.log
に記録され、問題が解消される可能性があります。以下に例を示します。-1208550944[90039d0]: entering nsNegotiateAuth::GetNextToken() -1208550944[90039d0]: gss_init_sec_context() failed: Miscellaneous failure No credentials cache found
これは、Kerberos チケットがなく、kinit を実行する必要があることを示しています。
-1208994096[8d683d8]: entering nsAuthGSSAPI::GetNextToken() -1208994096[8d683d8]: gss_init_sec_context() failed: Miscellaneous failure Server not found in Kerberos database
/etc/krb5.conf
ファイルの [domain_realm] セクションに正しいエントリーがあることを確認します。以下に例を示します。
.example.com = EXAMPLE.COM example.com = EXAMPLE.COM
48.4. PAM (プラグ可能な認証モジュール)
48.4.1. PAM の利点
- さまざまなアプリケーションで使用できる一般的な認証スキーム。
- システム管理者とアプリケーション開発者の両方に対する優れた柔軟性と制御性。
- 単一の完全に文書化されたライブラリー。開発者は独自の認証スキームを作成せずにプログラムを作成できます。
48.4.2. PAM 設定ファイル
/etc/pam.d/
ディレクトリーには、PAM 対応アプリケーションごとに PAM 設定ファイルが含まれます。以前のバージョンの PAM では、/etc/pam.conf
ファイルが使用されていましたが、このファイルは非推奨となり、/etc/pam.d/
ディレクトリーが存在しない場合にのみ使用されます。
48.4.2.1. PAM サービスファイル
/etc/pam.d/
ディレクトリーにファイルがあります。このディレクトリーの各ファイルは、アクセスを制御するサービスと同じ名前を持ちます。
/etc/pam.d/
ディレクトリーにインストールします。たとえば、login プログラムは、login としてサービス名を定義し、/etc/pam.d/login
の PAM 設定ファイルをインストールします。
48.4.3. PAM 設定ファイル形式
<module interface> <control flag> <module name> <module arguments>
48.4.3.1. モジュールインターフェイス
- auth: このモジュールインターフェイスは使用を認証します。たとえば、パスワードの有効性を要求し、検証します。このインターフェイスのあるモジュールは、グループメンバーシップや Kerberos チケットなどの認証情報を設定することもできます。
- account: このモジュールインターフェイスは、アクセスが許可されることを確認します。たとえば、ユーザーアカウントの有効期限が切れたか、または特定の時刻にユーザーがログインできるかどうかを確認できます。
- password: このモジュールインターフェイスは、ユーザーパスワードの変更に使用されます。
- session: このモジュールインターフェイスは、ユーザーセッションを設定および管理します。このインターフェイスのあるモジュールは、ユーザーのホームディレクトリーをマウントしたり、ユーザーのメールボックスを利用可能にするなど、アクセスを許可するために必要な追加のタスクも実行できます。
pam_unix.so
は 4 つのモジュールインターフェイスをすべて提供します。
auth required pam_unix.so
pam_unix.so
モジュールの認証インターフェイスを使用するように指示します。
48.4.3.1.1. モジュールインターフェイスのスタッキング
~]# 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 - この行は、UID が 0 であることを確認して、
pam_rootok.so
モジュールを使用して、現在のユーザーが root かどうかを確認します。このテストに成功すると、他のモジュールは参照されず、コマンドが実行されます。このテストが失敗すると、次のモジュールが参照されます。 - auth required pam_console.so - この行は、
pam_console.so
モジュールを使用してユーザーを認証しようとします。このユーザーがすでにコンソールにログインしている場合、pam_console.so
はサービス名(reboot)と同じ名前を持つ/etc/security/console.apps/
ディレクトリーにファイルが存在するかどうかを確認します。そのようなファイルが存在する場合は、認証が成功し、制御が次のモジュールに渡されます。 - #auth include system-auth - この行はコメント化され、処理されません。
- account required pam_permit.so - この行は、
pam_permit.so
モジュールを使用して、root ユーザーまたはコンソールにログインしているすべてのユーザーがシステムを再起動します。
48.4.3.2. 制御フラグ
- required: 認証を継続するには、モジュール結果が成功する必要があります。この時点でテストが失敗すると、そのインターフェイスを参照するすべてのモジュールテストの結果が完了するまでユーザーには通知されません。
- requisite: 認証を継続するには、モジュール結果が成功する必要があります。ただし、この時点でテストが失敗すると、最初に失敗した required または requisite モジュールテストを反映したメッセージとともに、すぐにユーザーに通知されます。
- sufficient: モジュール結果は、失敗すると無視されます。ただし、モジュールフラグ付きの sufficient の結果が成功で、かつ、以前のモジュールフラグ付きの required が失敗していない場合、その他の結果は不要で、ユーザーはサービスに認証されます。
- optional: モジュール結果は無視されます。その他のモジュールがインターフェイスを参照しない場合に認証成功に必要となるのは、optional としてフラグが付いたモジュールです。
/usr/share/doc/pam- <version-number> / ディレクトリーにある pam.d
の man ページと PAM ドキュメントです。ここで、< version-number > はシステム上の PAM のバージョン番号で、この新しい構文の詳細を説明します。
48.4.3.3. モジュール名
security/ ディレクトリーに保存する multilib システムについては、アプリケーションが適切なバージョンの lib
pam
にリンクされているため、ディレクトリー名は省略されます。これにより、モジュールの正しいバージョンを見つけることができます。
48.4.3.4. モジュール引数
pam_userdb.so
モジュールは Berkeley DB ファイルに保存されている情報を使用してユーザーを認証します。Berkeley DB は、多くのアプリケーションに埋め込まれたオープンソースデータベースシステムです。モジュールは db
引数を取り、リクエストされたサービスに使用するデータベースを認識できるようにします。
pam_userdb.so
行です。& lt;path-to-file> は、Berkeley DB データベースファイルへの完全パスです。
auth required pam_userdb.so db=<path-to-file>
/var/log/secure
ファイルに報告します。
48.4.4. 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 がファイルに記載されていない場合は、root でログインしようとするとLogin incorrect
メッセージで失敗します。auth required pam_unix.so nullok — このモジュールはユーザーにパスワードを要求し、/etc/passwd
に保存された情報を使用してパスワードをチェックしします。存在する場合は/etc/shadow
。認証フェーズでは、pam_unix.so
モジュールは、ユーザーのパスワードがpasswd
ファイルかシャドウ
ファイルにあるかを自動的に検出します。詳細は、「シャドウパスワード」 を参照してください。 - auth required pam_nologin.so — これは、認証の最終ステップです。これは、
/etc/nologin
ファイルが存在するかどうかを確認します。ユーザーが存在して root でない場合は、認証に失敗します。注記この例では、最初の auth モジュールが失敗しても、3 つの auth モジュールがすべてチェックされます。これにより、ユーザーは認証に失敗したステージを把握できません。攻撃者のこのような知識により、システムのクラッキング方法がより簡単に推測される可能性があります。 - account required pam_unix.so — このモジュールは、必要なアカウントの検証を実行します。たとえば、シャドウパスワードが有効になっていると、
pam_unix.so
モジュールのアカウントインターフェイスが、アカウントの有効期限が切れたかどうか、または許可された猶予期間内にユーザーがパスワードを変更していないかどうかを確認します。 - password required pam_NORMAL.so retry=3 - パスワードの有効期限が切れると、
pam_NORMAL.so
モジュールのパスワードコンポーネントは新しいパスワードを要求します。その後、新たに作成されたパスワードをテストして、辞書ベースのパスワードクラッキングプログラムで簡単に判別できるかどうかを確認します。- 引数 retry=3 は、テストに 1 回失敗しても、ユーザーは強固なパスワードを作成する機会があと 2 回あることを示しています。
- password required pam_unix.so shadow nullok use_authtok - この行は、プログラムがユーザーのパスワードを変更した場合、
pam_unix.so
モジュールの パスワード インターフェイスを使用してそれを行う必要があることを指定します。- 引数 shadow は、ユーザーのパスワード更新の際にシャドウパスワードを作成するようモジュールに指示します。
- この引数 nullok は、ユーザーが空のパスワード から パスワードを変更できるようにするようにモジュールに指示します。それ以外の場合は、null パスワードはアカウントロックとして扱われます。
- この行の最後の引数 use_authtok は、PAM モジュールをスタックする際に順序の重要性を示す優れた引数を提供します。この引数は、ユーザーに新しいパスワードを要求しないようにモジュールに指示します。代わりに、以前のパスワードモジュールで記録されたパスワードを受け入れます。これにより、新しいパスワードはすべて、受け入れられる前に安全なパスワードの
pam_NORMAL.so
テストを渡す必要があります。
- session required pam_unix.so — 最後の行は、
pam_unix.so
モジュールのセッションインターフェイスにセッションを管理するよう指示します。このモジュールは、各セッションの開始と最後で、ユーザー名とサービスタイプを/var/log/secure
に記録します。このモジュールは、追加機能のために他のセッションモジュールとスタックすることで補足できます。
48.4.5. PAM モジュールの作成
/usr/share/doc/pam- <version-number> /
ディレクトリーに含まれています。< version-number > は、システムの PAM のバージョン番号になります。
48.4.6. PAM と管理認証情報のキャッシング
pam_timestamp.so
モジュールを使用して最大 5 分間、ユーザーに昇格した特権を提供します。このメカニズムの仕組みを理解することが重要です。これは、pam_timestamp.so
が有効なときににターミナルから出るユーザーが、コンソールに物理的にアクセスできるユーザーすべてがマシンを変更できる状態のままにするためです。
pam_timestamp.so
モジュールはタイムスタンプファイルを作成します。デフォルトでは、これは /var/run/sudo/
ディレクトリーに作成されます。タイムスタンプファイルがすでに存在する場合は、グラフィカル管理プログラムではパスワードの入力が求められません。代わりに、pam_timestamp.so
モジュールはタイムスタンプファイルを最新の状態にし、ユーザーの不完全な管理アクセスを 5 分追加で保持します。
/var/run/sudo/<user> ファイルを確認して、タイムスタンプファイルの実際の状態を確認
できます。デスクトップでは、関連するファイルは unknown:root
です。これが存在し、タイムスタンプが 5 分未満の場合は、認証情報が有効です。
図48.7 認証アイコン
[D]
48.4.6.1. タイムスタンプファイルの削除
図48.8 認証ダイアログを閉じる
[D]
- 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
の man ページを参照してください。
48.4.6.2. 一般的な pam_timestamp ディレクティブ
pam_timestamp.so
モジュールは複数のディレクティブを受け入れます。最も一般的に使用される 2 つのオプションを以下に示します。
- timestamp_timeout - タイムスタンプファイルが有効な期間(秒単位)を指定します。デフォルト値は 300 (5 分) です。
- timestampdir - タイムスタンプファイルを保存するディレクトリーを指定します。デフォルト値は /var/run/sudo/ です。
pam_timestamp.so
モジュールの制御に関する詳細は、「インストールされているドキュメント」 を参照してください。
48.4.7. PAM とデバイスの所有者
pam_console.so
と呼ばれる PAM モジュールによって制御されます。
48.4.7.1. デバイスの所有者
pam_console.so
モジュールはログ イン またはグラフィカルログインプログラムである gdm、kdm、および xdm によって呼び出されます。このユーザーが、コンソールユーザー と呼ばれる物理コンソールにログインする最初の ユーザー である場合、モジュールは通常 root が所有するさまざまなデバイスのユーザー所有権を付与します。コンソールユーザーは、そのユーザーの最後のローカルセッションが終了するまでこれらのデバイスを所有します。このユーザーがログアウトした後、デバイスの所有権は root ユーザーに戻ります。
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
ファイルでデフォルト値が上書きされます。
/etc/security/console.perms
の < console > と {} ディレクティブを次の値に変更することを推奨します。
<console>=tty[0-9][0-9]* vc/[0-9][0-9]* :0\.[0-9] :0 <xconsole>=:0\.[0-9] :0
<console>=tty[0-9][0-9]* vc/[0-9][0-9]*
48.4.7.2. アプリケーションアクセス
/etc/security/console.apps/
ディレクトリーで使用するために設定された特定のプログラムにもアクセスできます。
/sbin
および /usr/sbin
で特定のアプリケーションを実行できるようにする設定ファイルが含まれています。
- /sbin/halt
- /sbin/reboot
- /sbin/poweroff
pam_console.so
モジュールを使用要件として呼び出します。
48.4.8. 関連情報
48.4.8.1. インストールされているドキュメント
- PAM 関連の man ページ:PAM に関連するさまざまなアプリケーションや設定ファイルには、いくつかの man ページが存在します。以下は、より重要な man ページの一部の一覧です。
- 設定ファイル
- PAM - PAM 設定ファイルの構造や目的など、PAM に関する理解情報。この man ページでは、
/etc/pam.conf
と個々の設定ファイルの両方が、/etc/pam.d/
ディレクトリーにある説明にご留意ください。デフォルトでは、Red Hat Enterprise Linux は/etc/pam.d/
ディレクトリーの個々の設定ファイルを使用し、/etc/pam.conf
が存在しても無視します。 - pam_console -
pam_console.so
モジュールの目的を説明しています。また、PAM 設定ファイル内のエントリーに適した構文も説明します。 - console.apps:
/etc/security/console.apps
設定ファイルで利用可能な形式およびオプションを説明します。これは、PAM が割り当てたコンソールユーザーがアクセス可能なアプリケーションを定義します。 - console.perms -
/etc/security/console.perms
設定ファイルで利用可能な形式およびオプションを説明します。これは、PAM によって割り当てられるコンソールユーザーパーミッションを指定します。 - pam_timestamp:
pam_timestamp.so
モジュールを説明しています。
/usr/share/doc/pam- <version-number
>: 『System Administrators' Guide』、『Module Writers' Manual』、および 『Application Developers' Manual』、および PAM 標準 DCE-RFC 86.0 のコピーが含まれます。< version-number > は PAM のバージョン番号です。/usr/share/doc/pam- <version- <version-number> /txts/README.pam_timestamp
-pam_timestamp.so
PAM モジュールに関する情報が含まれます。< version-number > は PAM のバージョン番号になります。
48.4.8.2. 便利な Web サイト
- http://www.kernel.org/pub/linux/libs/pam/ - Linux-PAM プロジェクトの主要なディストリビューション Web サイト。さまざまな PAM モジュール、FAQ、および追加の PAM ドキュメントに関する情報が含まれます。注記上記の Web サイトのドキュメントは、最後にリリースされた PAM のアップストリームバージョン用で、Red Hat Enterprise Linux に含まれる PAM バージョンについては 100% 正確ではない可能性があります。
48.5. TCP Wrapper および xinetd
xinetd
スーパーサーバー です。このサービスは、ネットワークサービスのサブセットへの接続を制御し、アクセス制御をさらに絞り込むため、スーパーサーバーと呼ばれます。
図48.9 ネットワークサービスへのアクセス制御
[D]
xinetd
のロールと、ロギングと使用状況管理の両方を強化するためにこれらのツールがどのように使用されるかを確認することに重点を置いています。iptables でファイアウォールを使用する方法は、「iptables」 を参照してください。
48.5.1. TCP Wrapper
tcp_wrappers
)はデフォルトでインストールされ、ホストベースのアクセス制御にホストベースのアクセス制御が提供されます。パッケージ内の最も重要なコンポーネントは、/usr/lib/libwrap.a
ライブラリーです。一般的に、TCP-wrapped サービスは、libwrap.a
ライブラリーに対してコンパイルされているサービスです。
/etc/hosts.allow
および /etc/hosts.deny
)を参照して、クライアントが接続できるかどうかを判断します。ほとんどの場合、syslog デーモン(syslogd
)を使用して要求元のクライアントの名前と要求されたサービスを /var/log/secure
または /var/log/messages
に書き込みます。
libwrap.a
ライブラリーにリンクされています。このようなアプリケーションには、/usr/sbin/sshd
、/usr/sbin/sendmail、および /usr/sbin/xinetd
が含まれます。
libwrap.a
にリンクされているかどうかを確認するには、root で以下のコマンドを入力します。
ldd <binary-name> | grep libwrap
libwrap.a
にリンクされて いません。
/usr/sbin/sshd
が libwrap.a
にリンクされていることを示しています。
~]# ldd /usr/sbin/sshd | grep libwrap
libwrap.so.0 => /usr/lib/libwrap.so.0 (0x00655000)
~]#
48.5.1.1. TCP Wrapper の利点
- クライアントとラップされたネットワークサービスの両方に対する透過性:接続クライアントとラップ されたネットワークサービスの両方が、TCP Wrapper が使用されていることを認識しません。正当なユーザーは、禁止されたクライアントからの接続中にログに記録され、要求されたサービスに接続されます。
- 複数のプロトコルの一元管理: TCP Wrapper は、保護するネットワークサービスとは別に動作し、多くのサーバーアプリケーションが共通のアクセス制御設定ファイルのセットを共有できるため、管理が容易になります。
48.5.2. TCP Wrapper 設定ファイル
/etc/hosts.allow
/etc/hosts.deny
- これは
/etc/hosts.allow
を参照します。: TCP ラップされたサービスは/etc/hosts.allow
ファイルを順番に解析し、そのサービスに指定された最初のルールを適用します。マッチングルールを見つけると、接続が許可されます。そうでない場合は、次のステップに移動します。 - これは、
/etc/hosts.deny
を参照します。: TCP ラップされたサービスは、/etc/hosts.deny
ファイルを順番に解析します。マッチングルールを見つけると、接続を拒否します。そうでない場合は、サービスへのアクセスを付与します。
hosts.allow
のアクセスルールは最初に適用されるため、hosts.deny
で指定されたルールよりも優先されます。したがって、hosts.allow
でサービスへのアクセスが許可されると、hosts.deny
内の同じサービスへのアクセスを拒否するルールは無視されます。- 各ファイルのルールは上から読み取られ、指定されたサービスの最初のマッチングルールのみが適用されます。ルールの順序は極めて重要です。
- いずれかのファイルにサービスのルールがない場合、またはファイルが存在しない場合には、サービスへのアクセスが許可されます。
- TCP ラップされたサービスは、ホストのアクセスファイルのルールをキャッシュしないため、ネットワークサービスを再起動しなくても
hosts.allow
またはhosts.deny
への変更は即座に有効になります。
/var/log/messages
または /var/log/secure
のいずれかに記録されます。これは、バックスラッシュ文字を使用せずに複数の行にまたがるルールにも当てはまります。以下の例は、これらの状況のいずれかによるルール失敗に関するログメッセージの関連部分を示しています。
warning: /etc/hosts.allow, line 20: missing newline or line too long
48.5.2.1. アクセスルールのフォーマット
/etc/hosts.allow
と /etc/hosts.deny
の両方の形式は同じです。各ルールはそれぞれの行に指定する必要があります。ハッシュ(#)で始まる空白行または行は無視されます。
<daemon list>: <client list> [: <option>: <option>: ...]
- <daemon list >: プロセス名(サービス名ではない )またはすべてのワイルドカードのコンマ区切りリスト。
デーモンリストは、柔軟性を高めるために演算子( 「Operator」を参照)も受け入れます。
- <client list >: ルールの影響を受けるホストを識別するホスト名、ホスト IP アドレス、特別なパターン、またはワイルドカードのコンマ区切りリスト。クライアントリストは、「Operator」 に記載されている演算子も受け入れ、柔軟性を高めることができます。
- <option>: ルールがトリガーされたときに実行されるアクションのオプション のアクションまたはコロン区切りの一覧。オプションフィールドは、拡張、シェルコマンドの起動、アクセスを許可または拒否、およびロギング動作の変更をサポートします。
vsftpd : .example.com
example.com
ドメインのホストから FTP デーモン(vsftpd
)への接続を監視するように TCP Wrapper に指示します。このルールが hosts.allow
に表示されると、接続は受け入れられます。このルールが hosts.deny
に表示されると、接続は拒否されます。
sshd : .example.com \ : spawn /bin/echo `/bin/date` access denied>>/var/log/sshd.log \ : deny
example.com
ドメインのホストから SSH デーモン(sshd
)への接続を試行する場合は、echo コマンドを実行して特別なログファイルに試行を追加し、接続を拒否します。オプションの deny ディレクティブが使用されるため、この行は hosts.allow
ファイルに表示された場合でもアクセスを拒否します。利用可能なオプションの詳細は、「オプションフィールド」 を参照してください。
48.5.2.1.1. ワイルドカード
all
: すべてに一致します。これは、デーモンリストとクライアント一覧の両方に使用できます。LOCAL
- localhost などのピリオド(.)を含まないホストに一致します。KNOWN
- ホスト名およびホストアドレスが分かっているホスト、またはユーザーが認識されているホストと一致します。UNKNOWN
: ホスト名またはホストアドレスが不明なホスト、またはユーザーが不明なホストと一致します。PARANOID
: ホスト名がホストアドレスに一致しないホストと一致します。
N、
UNKNOWN
、および PARANOID
ワイルドカードは、正しい操作のために機能する DNS サーバーに依存するため、注意して使用する必要があります。名前解決が中断されると、正当なユーザーがサービスへのアクセスを取得できなくなる可能性があります。
48.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 address]/prefixlen ペア - [net]/prefixlen ペアを、特定の IPv6 アドレスのグループへのアクセスを制御するパターンとして使用することもできます。以下の例では、3ffe:505:2:1: through
3ffe:505:2:1: through
のアドレス範囲を持つホストに適用されます。3ffe:505:
2:1:ffff:ffff:ffff :ALL : [3ffe:505:2:1::]/64
- アスタリスク(*): Asterisks を使用して、他のタイプのパターンを含むクライアントリストで混在しない限り、ホスト名または IP アドレスのグループ全体を照合できます。以下の例では、
example.com
ドメイン内の任意のホストに適用されます。ALL : *.example.com
- スラッシュ(/): クライアントリストがスラッシュで始まる場合は、ファイル名として処理されます。これは、多数のホストを指定するルールが必要な場合に役立ちます。以下の例では、すべての Telnet 接続の
/etc/telnet.hosts
ファイルに TCP Wrapper を参照します。in.telnetd : /etc/telnet.hosts
hosts_access
の man 5 ページを参照してください。
48.5.2.1.3. portmap および TCP Wrapper
hosts.allow
または hosts.deny
の portmap のアクセス制御ルールは、ホストの指定に IP アドレスまたはキーワード ALL
を使用する必要があります。
48.5.2.1.4. Operator
EXCEPT
)を受け入れます。これは、デーモンリストとルールのクライアントリストの両方で使用できます。
EXCEPT
演算子を使用すると、同じルール内のより幅広い一致に対して特定の例外を許可します。
hosts.allow
ファイルからの例では、example.com
ホストはすべて cracker.example.com
以外のすべてのサービスに接続できます。
ALL: .example.com EXCEPT cracker.example.com
hosts.allow
ファイルの別の例では、192.168.0.
X ネットワークのクライアントは FTP 以外のすべてのサービスを使用できます。
ALL EXCEPT vsftpd: 192.168.0.
EXCEPT
演算子の使用は避けやすくなります。これにより、EXCEPT
オペレーターでソートせずに、適切なファイルをすばやくスキャンして、サービスへのアクセスが許可または拒否されるホストを確認できます。
48.5.2.2. オプションフィールド
48.5.2.2.1. ロギング
severity
ディレクティブを使用してルールのログファシリティと優先度レベルを簡単に変更できます。
example.com
ドメイン内のホストから SSH デーモンへの接続が、優先度が emerg
のデフォルトの authpriv
syslog
ファシリティーに記録されます(ファシリティー値が指定されていないため)。
sshd : .example.com : severity emerg
severity
オプションを使用してファシリティーを指定することもできます。以下の例では、ホストによる SSH 接続の試行を example.com
ドメインの local0
機能に記録し、優先度が alert
にします。
sshd : .example.com : severity local0.alert
syslogd
)が local0 ファシリティーにログを記録するように設定されるまで動作しません。カスタムログ機能の設定に関する詳細は、syslog.conf
の man ページを参照してください。
48.5.2.2.2. アクセス制御
許可
または 拒否
することもできます。
client-1.example.com からの SSH 接続を許可します
が、client-2.example.com からの接続を拒否します。
sshd : client-1.example.com : allow sshd : client-2.example.com : deny
hosts.allow
または hosts.deny
のいずれかのすべてのアクセス制御ルールを単一のファイルに統合できます。一部の管理者は、これをより簡単にアクセスルールを整理する方法を検討します。
48.5.2.2.3. シェルコマンド
- Launchs: シェルコマンドを子プロセスとして起動します。このディレクティブは、/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: 要求されたサービスを、指定したコマンドに置き換えます。このディレクティブは、多くの場合、侵入者(honey pots とも呼ばれる)のトラップを設定するために使用されます。また、接続しているクライアントへのメッセージ送信にも使用できます。twist ディレクティブは、ルール行の最後に行われる必要があります。以下の例では、
example.com
ドメインから FTP サービスにアクセスしようとするクライアントには、echo コマンドを使用してメッセージを送信します。vsftpd : .example.com \ : twist /bin/echo "421 This domain has been black-listed. Access denied!"
hosts_options
を参照してください。
48.5.2.2.4. 拡張
%a
- クライアントの IP アドレスを返します。%
a - サーバーの IP アドレスを返します。%c
: ユーザー名、ホスト名、ユーザー名および IP アドレスなどのさまざまなクライアント情報を返します。%d
: デーモンプロセス名を返します。%h
- クライアントのホスト名(またはホスト名が利用できない場合は IP アドレス)を返します。%h
- サーバーのホスト名(またはホスト名が利用できない場合は IP アドレス)を返します。%n
- クライアントのホスト名を返します。利用できない場合は、unknown
が出力されます。クライアントのホスト名とホストアドレスが一致しない場合は、paranoid
が出力されます。%n
- サーバーのホスト名を返します。利用できない場合は、unknown
が出力されます。サーバーのホスト名とホストアドレスが一致しない場合は、paranoid
が出力されます。%p
- デーモンのプロセス ID を返します。%s
- デーモンプロセス、サーバーのホストまたは IP アドレスなどのさまざまな種類のサーバー情報を返します。%u
- クライアントのユーザー名を返します。利用できない場合は、unknown
が出力されます。
example.com
ドメインのホストから SSH デーモン(sshd
)への接続を試行する場合は、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 セクション5 および hosts_
optionsの man ページを参照してください。
48.5.3. xinetd
xinetd
デーモンは TCP ラップされた スーパーサービス で、FTP、IMAP、Telnet などの一般的なネットワークサービスのサブセットへのアクセスを制御します。また、アクセス制御、強化されたロギング、バインディング、リダイレクト、およびリソース使用状況制御のためのサービス固有の設定オプションも提供します。
xinetd
によって制御されるネットワークサービスへの接続を試みると、スーパーサービスは要求を受け取り、TCP Wrappers アクセス制御ルールを確認します。
xinetd
は、そのサービスの独自のアクセスルールで接続が許可されることを確認します。また、サービスがより多くのリソースを割り当てることができるかどうかや、定義されたルールに違反するかどうかをチェックします。
xinetd
は要求されたサービスのインスタンスを起動し、接続の制御を渡します。接続が確立されると、xinetd
はクライアントとサーバー間の通信の一部を取りません。
48.5.4. xinetd 設定ファイル
xinetd
の設定ファイルは、以下のとおりです。
/etc/xinetd.conf
: グローバルxinetd
設定ファイル。/etc/xinetd.d/
: サービス固有のファイルをすべて含むディレクトリー。
48.5.4.1. /etc/xinetd.conf ファイル
/etc/xinetd.conf
ファイルには、xinetd
のコントロール下にあるすべてのサービスに影響する一般的な設定が含まれています。xinetd
サービスが最初に起動されると読み取られるため、設定の変更を有効にするには、xinetd
サービスを再起動する必要があります。以下は、/etc/xinetd.conf
ファイルの例です。
defaults { instances = 60 log_type = SYSLOG authpriv log_on_success = HOST PID log_on_failure = HOST cps = 25 30 } includedir /etc/xinetd.d
xinetd
の以下の側面を制御します。
instances
-xinetd
が処理できる同時要求の最大数を指定します。log_type
: ログエントリーを/var/log/secure
ファイルに書き込む authpriv ログファシリティーを使用するようにxinetd
を設定します。FILE /var/log/xinetdlog
などのディレクティブを追加すると、/var/log/
ディレクトリーにxinetdlog
という名前のカスタムログファイルが作成されます。log_on_success
- 正常な接続試行をログに記録するようにxinetd
を設定します。デフォルトでは、リモートホストの IP アドレスと、要求を処理するサーバーのプロセス ID が記録されます。log_on_failure
:xinetd
が、失敗した接続試行をログに記録するか、接続が拒否されたかどうかを設定します。CP:
サービスに対する 1 秒あたり 25 を超える接続を許可するように設定します。この制限を超えると、サービスは 30 秒間廃止されます。xinetd
を、特定のincludedir
/etc/xinetd.d/
-/etc/xinetd.d/
ディレクトリーにあるサービス固有の設定ファイルに宣言されたオプションを含めます。詳細は、「/etc/xinetd.d/ ディレクトリー」 を参照してください。
/etc/xinetd.conf
の log_on_success
設定および log_on_failure
設定は、サービス固有の設定ファイルでさらに変更されます。したがって、/etc/xinetd.conf
ファイルよりも、指定のサービスのログファイルにより多くの情報が表示される可能性があります。詳細は、「ロギングのオプション」 を参照してください。
48.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 }
- service:
サービス
名を指定します(通常は/etc/services
ファイルに記載されているもののいずれか)。 flags
: 接続の属性を複数設定します。REUSE
は、Telnet 接続のソケットを再利用するようにxinetd
に指示します。注記REUSE
フラグは非推奨になりました。すべてのサービスは、暗黙的にREUSE
フラグを使用するようになりました。socket_type
: ネットワークソケットの種別をストリーム
に設定します。wait
: サービスがシングルスレッド(yes
)またはマルチスレッド(no
)であるかを指定します。user
: プロセスを実行するユーザー ID を指定します。server
- 起動するバイナリー実行ファイルを指定します。log_on_failure
:xinetd.conf
にすでに定義されているものに加えて、log_on_failure
のログパラメーターを指定します。disable
: サービスを無効にする(はい)か有効にするか
を指定します(は
無効)。
xinetd.conf
の man ページを参照してください。
48.5.4.3. xinetd 設定ファイルの変更
xinetd
が保護するサービスには、さまざまなディレクティブを使用できます。本セクションでは、一般的に使用されるオプションの一部を説明します。
48.5.4.3.1. ロギングのオプション
/etc/xinetd.conf
と /etc/xinetd.d/
ディレクトリー内のサービス固有の設定ファイルの両方で利用できます。
ATTEMPT
- 試行に失敗したファクトをログに記録します(log_on_failure
)。DURATION
- サービスがリモートシステムで使用される期間をログに記録します(log_on_success
)。EXIT
- サービスの終了ステータスまたは終了シグナルをログに記録します(log_on_success
)。HOST
: リモートホストの IP アドレスをログに記録します(log_on_failure
およびlog_on_success
)。PID
- 要求を受信するサーバーのプロセス ID をログに記録します(log_on_success
)。USERID
: 全マルチスレッドストリームサービスに対して RFC 1413 で定義された方法を使用してリモートユーザーをログに記録します(log_on_failure
およびlog_on_success
)。
xinetd.conf
の man ページを参照してください。
48.5.4.3.2. アクセス制御オプション
xinetd
サービスのユーザーは、TCP Wrapper のホストアクセスルールの使用、xinetd
設定ファイルを介したアクセス制御の提供、またはその両方の組み合わせを選択できます。TCP Wrappers ホストアクセス制御ファイルの詳細は、「TCP Wrapper 設定ファイル」 を参照してください。
xinetd
を使用してサービスへのアクセスを制御する方法を説明します。
xinetd
管理者が xinetd
サービスを再起動する場合にのみ有効になります。
xinetd
を介したアクセス制御は xinetd
によって制御されるサービスにのみ影響します。
xinetd
のホストアクセス制御は、TCP Wrapper で使用される方法とは異なります。TCP Wrapper は、すべてのアクセス設定を /etc/hosts.allow
と /etc/hosts.deny
の 2 つのファイルに配置しますが、xinetd
のアクセス制御は /etc/xinetd.d/
ディレクトリーの各サービスの設定ファイルにあります。
xinetd
でサポートされています。
only_from
: 指定されたホストのみがサービスを使用できるようにします。no_access
: サービスの使用から一覧表示されるホストをブロックします。access_times
: 特定のサービスを使用できる時間の範囲を指定します。時間の範囲は、24 時間形式の表記(HH:MM-HH:MM)で記述する必要があります。
only_from
オプションおよび no_access
オプションは、IP アドレスまたはホスト名の一覧を使用するか、ネットワーク全体を指定できます。TCP Wrapper と同様に、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)
xinetd
アクセス制御と併用する場合は、2 つのアクセス制御メカニズム間の関係を理解することが重要です。
xinetd
が続くイベントシーケンスになります。
xinetd
デーモンは、libwrap.a
ライブラリー呼び出しを使用して、ホストアクセスルールにアクセスします。deny ルールがクライアントと一致する場合、接続は破棄されます。allow ルールがクライアントと一致する場合、接続はxinetd
に渡されます。xinetd
デーモンは、xinetd
サービスと要求されたサービスの両方について、独自のアクセス制御ルールをチェックします。deny ルールがクライアントと一致する場合、接続は破棄されます。それ以外の場合は、xinetd
は要求されたサービスのインスタンスを開始し、そのサービスへの接続の制御を渡します。
xinetd
アクセス制御とともに TCP Wrapper のアクセス制御を使用する場合は注意が必要です。設定が間違っていると、望ましくない結果が生じる可能性があります。
48.5.4.3.3. バインディングおよびリダイレクトオプション
xinetd
のサービス設定ファイルは、サービスを IP アドレスにバインドし、そのサービスの受信要求を別の IP アドレス、ホスト名、またはポートにリダイレクトすることをサポートしています。
bind
オプションで制御され、そのサービスをシステム上の 1 つの IP アドレスにリンクします。これを設定すると、bind
オプションは、正しい IP アドレスへの要求のみがサービスにアクセスできるようにします。この方法を使用して、要件に基づいて異なるサービスを異なるネットワークインターフェイスにバインドできます。
redirect
オプションは、IP アドレスまたはホスト名の後にポート番号を受け入れます。このサービスの要求を指定されたホストおよびポート番号にリダイレクトするようにサービスを設定します。この機能は、同じシステム上の別のポート番号を参照したり、要求を同じマシン上の別の IP アドレスにリダイレクトしたり、完全に異なるシステムとポート番号に要求したり、これらのオプションの組み合わせを移行したりできます。したがって、システムで特定のサービスに接続するユーザーは、中断することなく別のシステムに再ルーティングされる可能性があります。
xinetd
デーモンは、要求元のクライアントマシンと実際には 2 つのシステム間でデータを転送して、接続期間中に有効なプロセスを生成することで、このリダイレクトを実行できます。
bind
および redirect
オプションの利点は、一緒に使用されると最も明確になります。サービスをシステム上の特定の IP アドレスにバインドし、このサービスの要求を最初のマシンのみが確認できる 2 つ目のマシンにリダイレクトすることで、内部システムを使用して、完全に異なるネットワークのサービスを提供できます。または、これらのオプションを使用して、マルチホームマシン上の特定のサービスの公開を既知の IP アドレスに制限したり、そのために特に設定された別のマシンにサービスの要求をリダイレクトしたりできます。
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 }
bind
および redirect
オプションは、マシンの Telnet サービスが、インターネットに接続されている外部 IP アドレス(123.123.123.123
)にバインドされていることを確認します。さらに、123.123. 123.123
に送信された Telnet サービスの要求は、2 番目のネットワークアダプターを介して、ファイアウォールおよび内部システムのみがアクセスできる内部 IP アドレス(10.0.1.13
)にリダイレクトされます。次に、ファイアウォールは 2 つのシステム間の通信を送信し、接続システムは、実際に別のマシンに接続されているときに 123.123
.123.123 に接続していると見なします。
xinetd
が制御する特定のサービスが bind
および redirect
オプションで設定されている場合、ゲートウェイマシンは外部システムと、そのサービスを提供するように設定された特定の内部マシンとの間のプロキシーとして機能します。さらに、追加の保護には、xinetd
のさまざまなアクセス制御とロギングオプションも利用できます。
48.5.4.3.4. リソース管理オプション
xinetd
デーモンは、DoS (Denial of Service)攻撃からの基本的な保護レベルを追加できます。以下は、このような攻撃の効果を制限するのに役立つディレクティブの一覧です。
per_source
: ソース IP アドレスあたりのサービスの最大インスタンス数を定義します。これは整数を引数としてのみ使用でき、xinetd.conf
と、xinetd.d/
ディレクトリーのサービス固有の設定ファイルの両方で使用できます。CP
: 1 秒あたりの接続の最大数を定義します。このディレクティブは、空白で区切られた 2 つの整数引数を取ります。最初の引数は、1 秒あたりのサービスに対して許可される接続の最大数です。2 つ目の引数は、サービスを再度有効にする前にxinetd
が待機する必要のある秒数です。これは整数としてのみ使用でき、xinetd.conf
ファイルまたはxinetd.d/
ディレクトリー内のサービス固有の設定ファイルで使用できます。max_load
: サービスの CPU 使用率または負荷平均しきい値を定義します。浮動小数点数の引数を受け入れます。平均負荷は、特定の時点でアクティブなプロセス数に関する大まかな測定値です。平均負荷の詳細は、uptime コマンド、who コマンド、および procinfo コマンドを参照してください。
xinetd
では、より多くのリソース管理オプションを利用できます。詳細は、xinetd.conf
の man ページを参照してください。
48.5.5. 関連情報
xinetd
の詳細は、システムドキュメントおよびインターネットを参照してください。
48.5.5.1. インストールされているドキュメント
xinetd
、および アクセス制御の追加設定オプションの検索を開始するのに適した場所です。
/usr/share/doc/tcp_wrappers- <version> /
- このディレクトリーには、TCP Wrapper の仕組みと、存在するさまざまなホスト名およびホストアドレスのスプーフィングリスクを説明するREADME
ファイルが含まれています。/usr/share/doc/xinetd- <version> /
- このディレクトリーには、アクセス制御の側面を説明するREADME
ファイルと、/etc/xinetd.d/
ディレクトリーのサービス固有の設定ファイルを変更するさまざまな概念を持つsample.conf
ファイルが含まれています。- TCP Wrapper と
xinetd
関連の man ページ:TCP Wrapper とxinetd
に関連するさまざまなアプリケーションおよび設定ファイル用の man ページが多数あります。以下は、より重要な man ページの一部です。- サーバーアプリケーション
- man xinetd:
xinetd
の man ページ
- 設定ファイル
- man 5 hosts_access: TCP Wrapper の man ページは、アクセス制御ファイルをホストします。
- man hosts_options: TCP Wrappers オプションフィールドの man ページです。
- man xinetd.conf:
xinetd
設定オプションを一覧表示する man ページです。
48.5.5.2. 便利な Web サイト
- http://www.xinetd.org/ - サンプル設定ファイル、機能の完全なリスト、および情報 FAQ を含む
xinetd
のホーム。 - http://www.macsecurity.org/resources/xinetd/tutorial.shtml: 特定のセキュリティー目標を達成するためにデフォルトの
xinetd
設定ファイルを最適化するさまざまな方法を説明する詳細なチュートリアルです。
48.5.5.3. 関連書籍
- 『Hacking Linux Exposed』 by 2007 Hatch, James Lee, and George Kurtz; Osbourne/McGraw-Hill - TCP Wrappers および
xinetd
に関する情報を含む優れたセキュリティーリソース。
48.6. Kerberos
48.6.1. Kerberos とは
48.6.1.1. Kerberos の利点
48.6.1.2. Kerberos の欠点
- このタスクを実行する自動メカニズムがないため、
/etc/passwd
や/etc/shadow
などの標準の UNIX パスワードデータベースから Kerberos パスワードデータベースにユーザーパスワードを移行することはできます。オンラインの Kerberos FAQ で質問 2.23 を参照してください。 - Kerberos は、ほとんどの Red Hat Enterprise Linux サーバーが使用する PAM (Pluggable Authentication Modules)システムとの部分的な互換性しかありません。この問題の詳細は、「Kerberos および PAM」 を参照してください。
- Kerberos は、各ユーザーが信頼されていて、信頼できないネットワーク上で信頼できないホストを使用していることを前提としています。その主な目的は、暗号化されていないパスワードがそのネットワーク上で送信されないようにすることです。ただし、適切なユーザー以外のユーザーが、認証に使用されるチケットを発行するホスト( キー配布センター (KDC)と呼ばれる)にアクセスできる場合、Kerberos 認証システム全体が危険にさらされます。
- アプリケーションが Kerberos を使用するには、そのソースを変更して Kerberos ライブラリーに適切な呼び出しを行う必要があります。この方法で変更したアプリケーションは、Kerberos 対応 または Kerberized として考慮されます。アプリケーションによっては、アプリケーションのサイズや設計により、非常に問題になる場合があります。その他の互換性のないアプリケーションでは、サーバーとクライアントが通信する方法に変更を加える必要があります。ここでも、詳細なプログラミングが必要になる場合があります。デフォルトでは Kerberos サポートのないクローズソースアプリケーションは、多くの場合最も問題となります。
- Kerberos は、すべてまたはなしのソリューションです。ネットワークで Kerberos を使用する場合は、Kerberos 以外の対応サービスに転送される暗号化されていないパスワードはすべて危険にさらされます。したがって、このネットワークは Kerberos を使用する利点はありません。Kerberos でネットワークを保護するには、暗号化されていないパスワードを送信する すべて のクライアント/サーバーアプリケーションの Kerberos 対応バージョンを使用するか、そのようなクライアント/サーバーアプリケーションをまったく使用しない必要があります。
48.6.2. Kerberos の用語
- 認証サーバー(AS)
- ユーザーがサービスにアクセスできるようになる目的のサービスのチケットを発行するサーバー。AS は、要求でクレデンシャルを送信しない、または送信していないクライアントから要求に応答します。通常、TGT (Ticket-granting Ticket)を発行することで、TGS (Ticket-granting Server)サービスへのアクセスを取得するために使用されます。AS は通常、キー配布センター(KDC)と同じホストで実行されます。
- ciphertext
- 暗号化されたデータ。
- クライアント
- Kerberos からチケットを取得できるネットワーク上のエンティティー(ユーザー、ホスト、またはアプリケーション)。
- credentials
- 特定のサービスのクライアントの ID を確認する電子クレデンシャルの一時的なセット。チケットとも呼ばれます。
- 認証情報キャッシュまたはチケットファイル
- ユーザーとさまざまなネットワークサービス間の通信を暗号化する鍵を含むファイル。Kerberos 5 は、共有メモリーなどの他のキャッシュタイプを使用するためのフレームワークをサポートしますが、ファイルはより詳細にサポートされます。
- 暗号化ハッシュ
- ユーザーの認証に使用される一方向ハッシュ。暗号化されていないデータを使用するよりも安全性が高くなりますが、経験のあるクラッカーの暗号は比較的簡単です。
- GSS-API
- Generic Security Service Application Program Interface (RFC-2743 で定義)は、The Internet Engineering Task Force (Internet Engineering Task Force)によって公開される一連の関数です。この API は、基盤となるメカニズムに関する特定の知識がなくても、クライアントおよびサービスによって相互の認証に使用されます。ネットワークサービス(cyrus-IMAP など)が GSS-API を使用する場合は、Kerberos を使用して認証できます。
- ハッシュ
- ハッシュ値 とも呼ばれます。ハッシュ関数 で文字列を渡すことで生成された値。これらの値は、通常、送信データが改ざんされないようにするために使用されます。
- ハッシュ関数
- 入力データからデジタルフィンガープリントを生成する方法。これらの関数は、ハッシュ値 を生成するためにデータを再編成、変換、または変更します。
- key
- 他のデータの暗号化または復号化時に使用されるデータ。暗号化されたデータは、適切なキーなしで復号できず、クラッカーの一部で調整が非常に良くなります。
- キー配布センター(KDC)
- Kerberos チケットを発行し、通常は ticket-granting サーバー(TGS)と同じホストで実行されるサービス。
- keytab (またはキーテーブル)
- プリンシパルとそのキーの暗号化されていないリストが含まれるファイル。サーバーは、kinit を使用する代わりにキータブファイルから必要なキーを取得します。デフォルトのキータブファイルは
/etc/krb5.keytab
です。KDC 管理サーバー /usr/kerberos/sbin/kadmind は、他のファイルを使用する唯一のサービスです(/var/kerberos/krb5kdc/kadm5.keytab
を使用します)。 - kinit
- kinit コマンドを使用すると、すでにログインしているプリンシパルが、最初の TGT (Ticket-granting Ticket)を取得してキャッシュできます。詳細は、kinit の man ページを参照してください。
- プリンシパル(またはプリンシパル名)
- プリンシパルは、Kerberos を使用した認証が許可されるユーザーまたはサービスの一意の名前です。プリンシパルの形式は
root[/instance]@REALM
に従います。一般的なユーザーの場合、root はログイン ID と同じです。インスタンス
はオプションです。プリンシパルにインスタンスがある場合、これはスラッシュ("/")でルートから分離されます。空の文字列("")は有効なインスタンス(デフォルトのNULL
インスタンスとは異なる)とみなされますが、これを使用すると混乱が生じる可能性があります。レルムのすべてのプリンシパルには独自のキーがあり、ユーザーはパスワードから派生するか、またはサービスにランダムに設定されます。 - realm
- KDC と呼ばれる 1 つ以上のサーバーと、潜在的に多数のクライアントで設定される Kerberos を使用するネットワーク。
- サービス
- ネットワーク経由でアクセスするプログラム。
- ticket
- 特定のサービスのクライアントの ID を確認する電子クレデンシャルの一時的なセット。credentials とも呼ばれます。
- Ticket-Granting サーバー(TGS)
- ユーザーがサービスにアクセスできるようになる目的のサービスのチケットを発行するサーバー。通常、TGS は KDC と同じホストで実行されます。
- TGT (Ticket-Granting Ticket)
- KDC から適用せずにクライアントが追加のチケットを取得できるようにする特別なチケット。
- 暗号化されていないパスワード
- プレーンテキストの人間が判読できるパスワード。
48.6.3. Kerberos の仕組み
- ネットワーク上のマシン間のクロック同期の概算。クロック同期プログラムは、ntpd などのネットワークに設定する必要があります。ネットワークタイムプロトコルサーバーのセットアップに関する詳細は、
/usr/share/doc/ntp- <version-number> /index.html
を参照してください。< version-number > は、システムにインストールされているntp
パッケージのバージョン番号に置き換えます。 - DNS (Domain Name Service)ネットワーク上の DNS エントリーとホストがすべて適切に設定されていることを確認する必要があります。詳細は、
/usr/share/doc/krb5-server- <version-number
> の 『Kerberos V5 System Administrator's Guide』 を参照してください。< version-number > は、システムにインストールされているkrb5-server
パッケージのバージョン番号に置き換えてください。
48.6.4. Kerberos および PAM
pam_krb5
モジュール( pam_krb5
パッケージで提供)がインストールされていると、PAM を使用するアプリケーションは認証に Kerberos を使用できます。pam_krb5
パッケージには、ログイン や gdm などのサービスがユーザーを認証し、パスワードを使用して初期認証情報を取得できるようにする設定ファイルのサンプルが含まれています。ネットワークサーバーへのアクセスが常に、IMAP などの GSS-API を使用する Kerberos 対応のサービスまたはサービスを使用して実行される場合、ネットワークは適度に安全であると見なされます。
48.6.5. Kerberos 5 サーバーの設定
- Kerberos を設定する前に、時刻同期と DNS がすべてのクライアントおよびサーバーマシンで正しく機能していることを確認します。Kerberos サーバーとそのクライアント間の時刻同期に特に注意してください。サーバーとクライアント間の時間差が 5 分を超える場合(これは Kerberos 5 で設定可能)、Kerberos クライアントはサーバーに認証できません。この時間同期は、攻撃者が古い Kerberos チケットを使用して有効なユーザーとしてマスカレードしないようにするために必要です。Kerberos が使用されていない場合でも、NTP (Network Time Protocol)と互換性のあるクライアント/サーバーネットワークを設定することが推奨されます。Red Hat Enterprise Linux には、この目的のために
ntp
パッケージが含まれています。ネットワークタイムプロトコルサーバーの設定方法は/usr/share/doc/ntp-< version-number > /index.html
(<version-number> はシステムにインストールされているntp
パッケージのバージョン番号)、および NTP の詳細は http://www.ntp.org を参照してください。 - KDC を実行する専用マシンに
krb5-
パッケージをインストールします。このマシンは非常に安全である必要があります。可能な場合は、KDC 以外のサービスを実行しないでください。libs
、krb5-server
、および krb5-workstation - レルム名と、ドメインからレルムへのマッピングを反映するように
/etc/krb5.conf
と/var/kerberos/krb5kdc/kdc.conf
設定ファイルを編集します。シンプルなレルムは、EXAMPLE.COM と example.com のインスタンスを正しいドメイン名で置き換えることで設定できます。これは、正しい形式で大文字と小文字の名前を維持することが確実にでき、KDC を kerberos.example.com から Kerberos サーバーの名前に変更することで設定できます。通常、レルム名はすべて大文字で、DNS ホスト名およびドメイン名はすべて小文字になります。これらの設定ファイルの形式に関する詳細は、それぞれの man ページを参照してください。 - シェルプロンプトから kdb5_util ユーティリティーを使用してデータベースを作成します。
/usr/kerberos/sbin/kdb5_util create -s
この create コマンドは、Kerberos レルムのキーを保存するデータベースを作成します。-s スイッチは、マスターサーバーキーが保存される stash ファイルの作成を強制します。キーの読み取り元となる stash ファイルがない場合、Kerberos サーバー (krb5kdc) は起動時に毎回マスターサーバーのパスワード (このパスワードを使って鍵を再生成できる) を要求します。 /var/kerberos/krb5kdc/kadm5.acl
ファイルを編集します。このファイルは、Kerberos データベースへの管理アクセス権限およびそのアクセスレベルを決定するために kadmind によって使用されます。ほとんどの組織は、次の 1 行で取得できます。*/admin@EXAMPLE.COM *
多くのユーザーは、データベース内で単一のプリンシパルで表されます (joe@EXAMPLE.COM などの NULL または空のインスタンス)。この設定では、admin (例: joe/admin@EXAMPLE.COM)のインスタンスを持つ 2 番目のプリンシパルを持つユーザーは、レルムの Kerberos データベース全体のフルパワーをワイドできます。kadmind がサーバーで起動した後、ユーザーはレルム内のいずれかのクライアントまたはサーバーで kadmin を実行することで、そのサービスにアクセスできます。ただし、kadm5.acl
ファイルにリストされているユーザーのみが、自身のパスワードを変更することを除いて、データベースを編集できます。注記この kadmin ユーティリティーはネットワーク経由で kadmind サーバーと通信し、Kerberos を使用して認証を処理します。したがって、ネットワーク経由でサーバーに接続してサーバーを管理するには、最初のプリンシパルがすでに存在している必要があります。kadmin.local コマンドを使用して最初のプリンシパルを作成します。これは、KDC と同じホストで使用するように特別に設計されており、認証に Kerberos を使用しません。KDC ターミナルに以下の kadmin.local コマンドを入力して、最初のプリンシパルを作成します。/usr/kerberos/sbin/kadmin.local -q "addprinc username/admin"
- 以下のコマンドを使用して Kerberos を起動します。
service krb5kdc start service kadmin start service krb524 start
- kadmin 内で addprinc コマンドを使用してユーザーのプリンシパルを追加します。kadmin および kadmin.local は、KDC へのコマンドラインインターフェイスです。そのため、addprinc などのコマンドの多くは、kadmin プログラムの起動後に利用できます。詳細については kadmin の man ページを参照してください。
- KDC がチケットを発行していることを確認します。まず、kinit を実行してチケットを取得し、認証情報キャッシュファイルに保存します。次に、klist を使用してキャッシュ内の認証情報の一覧を表示し、kdestroy を使用して、キャッシュと含まれる認証情報を破棄します。注記デフォルトでは、kinit は、(Kerberos サーバーではなく)同じシステムログインユーザー名を使用して認証を試みます。ユーザー名が Kerberos データベースのプリンシパルに対応しない場合は、kinit がエラーメッセージを発行します。その場合は、コマンドライン( kinit <principal>)の引数として、正しいプリンシパルの名前とともにkinit を提供します。
48.6.6. Kerberos 5 クライアントの設定
krb5.conf
設定ファイルを提供します。クライアントシステムにリモートでログインする方法として、ssh と slogin が推奨されていますが、Kerberos 化されたバージョンの rsh と rlogin は引き続き利用できますが、それらをデプロイするにはさらに多くの設定変更を行う必要があります。
- Kerberos クライアントと KDC の間で時刻同期が行われていることを確認します。詳細は、「Kerberos 5 サーバーの設定」 を参照してください。さらに、Kerberos クライアントプログラムを設定する前に、DNS が Kerberos クライアントで適切に機能していることを確認します。
- すべてのクライアントマシンに
krb5-libs
およびkrb5-workstation
パッケージをインストールします。各クライアントに有効な/etc/krb5.conf
ファイルを指定します(通常は、KDC で使用される同じkrb5.conf
ファイルになります)。 - レルムのワークステーションが Kerberos を使用して、ssh または Kerberized rsh または rlogin を使用して接続するユーザーを認証する前に、Kerberos データベースに独自のホストプリンシパルが必要になります。sshd、kshd、および klogind サーバープログラムはすべて、ホスト サービスのプリンシパルのキーへのアクセスが必要になります。さらに、kerberized rsh および rlogin サービスを使用するには、そのワークステーションに
xinetd
パッケージがインストールされている必要があります。kadmin を使用して、KDC 上のワークステーション用のホストプリンシパルを追加します。この場合のインスタンスはワークステーションのホスト名です。kadmin の addprinc コマンドに -randkey オプションを指定してプリンシパルを作成し、それをランダムな鍵に割り当てます。addprinc -randkey host/blah.example.com
プリンシパルが作成されたので、ワークステーション 自体で kadmin を実行し、 kadmin 内で ktadd コマンドを使用すると、ワークステーション 用の鍵を抽出できるようになりました。ktadd -k /etc/krb5.keytab host/blah.example.com
- その他の Kerberos ネットワークサービスを使用するには、まずそれらを起動する必要があります。以下は、一般的な Kerberos サービスの一覧と、そのサービスを有効にする手順です。
- SSH - クライアントとサーバーの設定で
GSSAPIAuthentication
が有効になっている場合、OpenSSH は GSS-API を使用してサーバーにユーザーを認証します。クライアントでもGSSAPIDelegateCredentials
が有効な場合は、ユーザーの認証情報がリモートシステムで利用可能になります。 - rsh および rlogin: kerberized バージョンの rsh および rlogin を使用するには、klogin、eklogin、および kshell を有効にします。
- telnet - kerberized Telnet を使用するには、krb5-telnet を 有効にする必要があります。
- FTP: FTP アクセスを提供するには、
ftp
のルートでプリンシパルのキーを作成して展開します。インスタンスを FTP サーバーの完全修飾ホスト名に設定し、gssftp を有効にするようにしてください。 - IMAP - kerberized IMAP サーバーを使用するには、
cyrus-sasl-gssapi
パッケージがインストールされている場合は、cyrus-imap
パッケージも Kerberos 5 を使用します。cyrus-sasl-gssapi
パッケージには、GSS-API 認証をサポートする Cyrus SASL プラグインが含まれます。Cyrus IMAP は、cyrus ユーザーが/etc/krb5.keytab
で適切な鍵を見つけ、プリンシパルのルートが imap ( kadminで作成された)に設定されている限り Kerberos で適切に機能します。cyrus-imap
の代替は、dovecot パッケージにあります。これは、Red Hat Enterprise Linux にも含まれています。このパッケージには IMAP サーバーが含まれていますが、現在のところ GSS-API および Kerberos には対応していません。 - CVS - kerberized CVS サーバーを使用するには、gserver は root が
cvs
のプリンシパルを使用し、それ以外の場合は CVS pserver と同じです。
サービスを有効にする方法は、18章 を参照してください。
48.6.7. ドメインからレルムへのマッピング
foo.example.org → EXAMPLE.ORG
foo.example.com → EXAMPLE.COM
foo.hq.example.com → HQ.EXAMPLE.COM
krb5.conf
の domain_realm セクションで指定する必要があります。以下に例を示します。
[domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM
48.6.8. セカンダリー KDC の設定
krb5.conf および kdc.conf
ファイルがスレーブ KDC にコピーされていることを確認します。
~]# 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
~]# 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
/var/kerberos/krb5kdc/kpropd.acl
に記載されているクライアントからの更新のみを受け入れます。マスター KDC のホストサービス名をこのファイルに追加します。
~]# echo host/masterkdc.example.com@EXAMPLE.COM > /var/kerberos/krb5kdc/kpropd.acl
/var/kerberos/krb5kdc/.k5.REALM
という名前)、利用可能なセキュアな方法を使用してこれをスレーブ KDC にコピーするか、kdb5_util create -s を実行して、スレーブ KDC で同一の stash ファイルを作成します。
/var/kerberos/krb5kdc/slave_datatrans
)、kprop コマンドを使用してその内容をスレーブ KDC に送信します。
~]# /usr/kerberos/sbin/kdb5_util dump /var/kerberos/krb5kdc/slave_datatrans ~]# kprop slavekdc.example.com
krb5.conf
がレルムの KDC 一覧にあるスレーブ KDC のみを一覧表示することを確認します。これにより、スレーブ KDC から初期認証情報を正しく取得できるようになりました。
48.6.9. レルム間の認証の設定
A.EXAMPLE.COM
という名前のレルムのクライアントが B.EXAMPLE.COM
レルムのサービスにアクセスするには、両方のレルムが krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM
という名前のプリンシパルの鍵を共有し、両方のキーに同じキーバージョン番号が関連付けられている必要があります。
~]# 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
kvno
の値) と暗号化タイプの両方が一致することを確認します。
-randkey
オプションを使用し、最初のレルムのデータベースから新しいエントリーをダンプして、2 番目のレルムにインポートすることができます。データベースダンプに含まれる鍵自体がマスターキーを使用して暗号化されるため、レルムデータベースのマスターキーが同一でない限り動作しません。
A.EXAMPLE.COM
レルムのクライアントは、B.EXAMPLE.COM
レルムのサービスに対して認証できるようになりました。別の方法では、B.EXAMPLE.COM
レルムが A.EXAMPLE.COM
レルムを 信頼 するか、またはより簡単にフレーズされた B.EXAMPLE.COM
が A.EXAMPLE.COM を 信頼 するようになりました。
B.EXAMPLE.COM
レルムの KDC は、B.EXAMPLE.COM
レルムのサービスに対して認証するために A.EXAMPLE.COM
からのクライアントを信頼する可能性がありますが、B.EXAMPLE.COM
レルムのクライアントが A.EXAMPLE.COM
レルムのサービスに対して認証するために信頼されているかどうかには影響しません。反対方向の信頼を確立するには、両方のレルムが krbtgt/A.EXAMPLE.COM@B.EXAMPLE.COM
サービスの鍵を共有する必要があります(上記の例と比較した 2 つのレルムの順番で逆順で注意します)。
A.EXAMPLE.COM
のクライアントが B.EXAMPLE.COM
のサービスに対して認証でき、B.EXAMPLE.COM
のクライアントが C.EXAMPLE.COM
のサービスに対して認証できる場合、C.EXAMPLE.COM のクライアントは、C.EXAMPLE.COM
で直接 A.EXAMPLE.COM
の サービスに対して認証することもできます。つまり、相互に信頼する必要がある複数のレルムがあるネットワークでは、セットアップする信頼関係に適切な選択を行うことで、必要な作業量を大幅に削減できる可能性があることを意味します。
service/server.example.com@EXAMPLE.COM
EXAMPLE.COM
はレルムの名前です。
/etc/krb5.conf
の DNS または domain_realm
セクションを参照して、ホスト名(server.example.com)または DNS ドメイン名(.example.com)をレルム名(EXAMPLE.COM)にマッピングします。
A.EXAMPLE.COM
、B.EXAMPLE.COM
、および EXAMPLE.COM
という名前のレルムを想定します。A.EXAMPLE.COM
レルムのクライアントが B.EXAMPLE.COM
のサービスに対して認証を試みると、デフォルトでは、最初に EXAMPLE.COM
レルムの認証情報を取得しようとし、これらの認証情報を使用して B.EXAMPLE.COM
レルムで使用する認証情報を取得します。
A.EXAMPLE.COM
で認証情報を使用し、B.EXAMPLE.COM
のサービスに対して認証します。
A.EXAMPLE.COM → EXAMPLE.COM → B.EXAMPLE.COM
A.EXAMPLE.COM
およびEXAMPLE.COM
がkrbtgt/EXAMPLE.COM@A.EXAMPLE.COM
の鍵を共有EXAMPLE.COM
およびB.EXAMPLE.COM
がkrbtgt/B.EXAMPLE.COM@EXAMPLE.COM
の鍵を共有
SITE1.SALES.EXAMPLE.COM
で認証情報を使用して EVERYWHERE.EXAMPLE.COM
のサービスに対して認証を行います。
SITE1.SALES.EXAMPLE.COM → SALES.EXAMPLE.COM → EXAMPLE.COM → EVERYWHERE.EXAMPLE.COM
SITE1.SALES.EXAMPLE.COM
とSALES.EXAMPLE.COM
がkrbtgt/SALES.EXAMPLE.COM@SITE1.SALES.EXAMPLE.COM
の鍵を共有SALES.EXAMPLE.COM
とEXAMPLE.COM
がkrbtgt/EXAMPLE.COM@SALES.EXAMPLE.COM
の鍵を共有EXAMPLE.COM
とEVERYWHERE.EXAMPLE.COM
がkrbtgt/EVERYWHERE.EXAMPLE.COM@EXAMPLE.COM
の鍵を共有
DEVEL.EXAMPLE.COM
および PROD.EXAMPLE.ORG
)を共有しているレルム名を使用します。
DEVEL.EXAMPLE.COM → EXAMPLE.COM → COM → ORG → EXAMPLE.ORG → PROD.EXAMPLE.ORG
DEVEL.EXAMPLE.COM
とEXAMPLE.COM
がkrbtgt/EXAMPLE.COM@DEVEL.EXAMPLE.COM
の鍵を共有EXAMPLE.COM
とCOM
がkrbtgt/COM@EXAMPLE.COM
の鍵を共有COM
およびORG
がkrbtgt/ORG@COM
の鍵を共有ORG
とEXAMPLE.ORG
がkrbtgt/EXAMPLE.ORG@ORG
を共有EXAMPLE.ORG
およびPROD.EXAMPLE.ORG
がkrbtgt/PROD.EXAMPLE.ORG@EXAMPLE.ORG
の鍵を共有
/etc/krb5.conf
の capaths
セクションを設定することです。これにより、1 つのレルムのクレデンシャルを持つクライアントは、チェーン内で次にあるレルムを検索し、最終的にサーバーに認証できるようになります。
capaths
セクションの形式は比較的簡単です。セクションの各エントリーは、クライアントが存在する可能性があるレルムの後に名前が付けられます。そのサブセクション内では、クライアントが認証情報を取得する必要のある中間レルムのセットが、サービスが置かれるレルムに対応するキーの値として一覧表示されます。中間レルムがない場合は、.が使用されます。
[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 }
A.EXAMPLE.COM
レルムのクライアントは、A.EXAMPLE.COM KDC から直接 B.EXAMPLE.COM
のレルム間の認証情報を取得できます。
C.EXAMPLE.COM
レルムでサービスに問い合わせたい場合は、最初に B.EXAMPLE.COM
レルムから必要な認証情報を取得する必要があります(これには krbtgt
/B.EXAMPLE.COM@A.EXAMPLE.COM が必要です)。次に、これら
の認証情報を使用して C.EXAMPLE.COM
レルムで使用する認証情報を取得する必要があります( krbtgt/C.EXAMPLE.COM@B.EXAMPLE.COM
を使用)。
D.EXAMPLE.COM
レルムのサービスに問い合わせたい場合は、最初に B.EXAMPLE.COM
レルムから必要な認証情報を取得し、次に C.EXAMPLE.COM
レルムから認証情報を取得して D.EXAMPLE.COM レルムで使用する認証情報を取得する必要があります。
A.EXAMPLE.COM
レルムのクライアントは、B.EXAMPLE.COM
レルムから直接レルム間の認証情報を取得できます。.を指定しないと、クライアントは代わりに階層パスを使用しようとします。この場合は以下のようになります。
A.EXAMPLE.COM → EXAMPLE.COM → B.EXAMPLE.COM
48.6.10. 関連情報
48.6.10.1. インストールされているドキュメント
- 『Kerberos V5 インストールガイド』 および PostScript および HTML 形式 『の Kerberos V5 システム管理者のガイド』。これらは、
/usr/share/doc/krb5-server- <version-number> /
ディレクトリー(< version-number > は、システムにインストールされている krb5-server パッケージのバージョン番号)にあります。 - PostScript および HTML 形式の 『Kerberos V5 UNIX ユーザーガイド』これらは、
/usr/share/doc/krb5-workstation- <version-number> /
ディレクトリー(< version-number > は、システムにインストールされている krb5-workstation パッケージのバージョン番号)にあります。 - Kerberos の man ページ:Kerberos 実装に関連するさまざまなアプリケーションおよび設定ファイルに関する man ページが多数あります。以下は、より重要な man ページの一部の一覧です。
- クライアントアプリケーション
- man kerberos - Kerberos システムの紹介で、認証情報の仕組みを説明し、Kerberos チケットの取得および破棄に関する推奨事項を提供します。man ページの下部では、関連する man ページが多数参照されています。
- man kinit: このコマンドを使用してチケット保証チケットを取得し、キャッシュする方法が説明されています。
- 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 の設定ファイル内で利用可能な形式およびオプションを説明しています。
48.6.10.2. 便利な Web サイト
- http://web.mit.edu/kerberos/www/ - 『Kerberos: MIT のネットワーク認証プロトコル(Network Authentication Protocol』 )の Web ページ
- http://www.nrl.navy.mil/CCS/people/kenh/kerberos-faq.html - Kerberos Frequently Asked Questions (FAQ)
- ftp://athena-dist.mit.edu/pub/kerberos/doc/usenix.PS - PostScript バージョンの 『Kerberos: Jennifer G. Steiner による Open Network Systems の認証サービス』。Steiner、Clifford Neuman、Jeffrey I. Schiller。この文書は、Kerberos を説明するオリジナルの資料です。
- http://web.mit.edu/kerberos/www/dialogue.html - 『Designing an Authentication System: a Dialogue in Four Scenes』 from Bill Bryant in 1988, modified by Theodore Ts'o in 1997.本書は、Kerberos スタイルの認証システムの作成を考慮している 2 人の開発者の会話を表しています。会話スタイルは、Kerberos に精通していないユーザーにとって適切な開始場所となります。
- http://www.ornl.gov/~jar/HowToKerb.html - 『Kerberize your site』 is a good reference for kerberizing a network.
- http://www.networkcomputing.com/netdesign/kerb1.html: 『Kerberos ネットワーク設計マニュアル』 は、Kerberos システムの詳細な概要です。
48.7. 仮想プライベートネットワーク(VPN)
48.7.1. VPN の仕組み
48.7.2. VPN および Red Hat Enterprise Linux
48.7.3. IPsec
48.7.4. IPsec 接続の作成
48.7.5. IPsec のインストール
ipsec-tools
RPM パッケージがすべての IPsec ホスト(ホスト間設定を使用している場合)またはルーター(ネットワーク間設定を使用する場合)にインストールする必要があります。RPM パッケージには、IPsec 接続を設定するための必須ライブラリー、デーモン、および設定ファイルが含まれます。
- /sbin/setkey - カーネルの IPsec のキー管理およびセキュリティー属性を操作します。この実行可能ファイルは、racoon キー管理デーモンによって制御されます。詳細は、setkey(8) man ページを参照してください。
- /usr/sbin/racoon - IPsec に接続されたシステム間のセキュリティー関連付けと鍵共有を管理および制御するために使用される IKE 鍵管理デーモン。
/etc/racoon/racoon.conf
: 接続で使用される認証方法や暗号化アルゴリズムなど、IPsec 接続のさまざまな側面の設定に使用される racoon デーモン設定ファイル。利用可能なディレクティブの完全なリストは、racoon.conf
(5) man ページを参照してください。
- IPsec 経由でネットワーク接続された 2 つのホストを接続するには、「IPsec Host-to-Host の設定」 を参照してください。
- IPsec 経由で 1 つの LAN/WAN を接続するには、「IPsec Network-to-Network の設定」 を参照してください。
48.7.6. IPsec Host-to-Host の設定
48.7.6.1. ホスト間接続
- コマンドシェルで、system-config-network と入力して Network Administration Tool を起動します。
- IPsec タブで、New をクリックして IPsec 設定ウィザードを起動します。
- Forward をクリックして、ホスト間の IPsec 接続の設定を開始します。
- 接続の一意の名前を入力します(例:
ipsec0
必要に応じて、チェックボックスを選択して、コンピューターの起動時に接続を自動的にアクティブにします。進む をクリックして続けます。 - 接続タイプとして Host to Host encryption を選択し、Forward をクリックします。
- 使用する暗号化のタイプ(manual または automatic)を選択します。手動暗号化を選択する場合は、暗号鍵をプロセスの後で提供する必要があります。自動暗号化を選択すると、racoon デーモンが暗号化キーを管理します。自動暗号化を使用する場合は、
ipsec-tools
パッケージをインストールする必要があります。進む をクリックして続けます。 - リモートホストの IP アドレスを入力します。リモートホストの IP アドレスを確認するには、リモートホスト で以下のコマンドを 使用します。
ifconfig <device>
& lt;device > は、VPN 接続に使用するイーサネットデバイスに置き換えます。システムにイーサネットカードが 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:
ラベルの後の番号です。注記ホスト間接続の場合、両方のホストにパブリックかつルーティング可能なアドレスが必要です。また、両方のホストに、sam LAN 上にいる限り、プライベートでルーティング不可能なアドレス(10.x.x.x または 192.168.x.x 範囲から)を指定できます。ホストが異なる LAN 上にある場合、または別のホストにプライベートアドレスがある間にパブリックアドレスがある場合は、「IPsec Network-to-Network の設定」 を参照してください。進む をクリックして続けます。 - 手順 6 で手動暗号化を選択した場合は、使用する暗号化キーを指定するか、Generate をクリックして作成します。
- 認証キーを指定するか、Generate をクリックして生成します。数字と文字の組み合わせを任意に指定できます。
- 進む をクリックして続けます。
- IPsec - Summary ページの情報を確認してから Apply をクリックします。
- File > Save をクリックして設定を保存します。変更を有効にするには、ネットワークを再起動する必要がある場合があります。ネットワークを再起動するには、以下のコマンドを使用します。
service network restart
- 一覧から IPsec 接続を選択し、Activate ボタンをクリックします。
- 他のホストに対して、手順全体を繰り返します。手順 8 の同じキーを他のホストで使用することが重要です。そうしないと、IPsec は機能しません。
図48.10 IPsec 接続
[D]
/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
も作成されます。
/etc/racoon/racoon.conf
が変更され、< remote-ip>.conf
が含まれるようになります。
48.7.6.2. 手動 IPsec Host-to-Host 設定
- 各ホストの IP アドレス
- 一意の名前(例:
ipsec1
)。これは、IPsec 接続を特定し、他のデバイスまたは接続と区別するために使用されます。 - 固定暗号化キーまたは racoon によって自動的に生成される暗号鍵。
- 接続の初期段階で使用され、セッション中に暗号鍵を交換するために使用される事前共有認証キー。
Key_Value01
の値で共有前のキーを使用して接続し、ユーザーは各ホスト間で認証キーを自動的に生成して共有することに同意します。両方のホストユーザーは、接続 ipsec1
に名前を付けます。
/etc/sysconfig/network-scripts/ifcfg-ipsec1
と呼ばれます。
DST=X.X.X.X TYPE=IPSEC ONBOOT=no IKE_METHOD=PSK
ONBOOT=no
)、事前共有鍵メソッド(IKE_METHOD=PSK
)を使用します。
/etc/sysconfig/network-scripts/keys-ipsec1
と呼ばれる)の内容です。このファイルのコンテンツは両方のワークステーションで同一で、root ユーザーのみがこのファイルの読み取りや書き込みが可能でなければなりません。
IKE_PSK=Key_Value01
keys-ipsec1
ファイルを変更するには、ファイルの作成後に以下のコマンドを使用します。
chmod 600 /etc/sysconfig/network-scripts/keys-ipsec1
keys-ipsec1
ファイルを編集します。適切な接続の場合には、両方の認証キーが同一でなければなりません。
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 ; } }
- remote X.X.X.X
- この設定ファイルの後続のスタンザは、X.X.X.X IP アドレスで識別されるリモートノードにのみ適用されることを指定します。
- exchange_mode aggressive
- Red Hat Enterprise Linux における IPsec のデフォルト設定は、アグレッシブ認証モードを使用します。これにより、複数のホストとの複数の IPsec 接続の設定を許可し、接続のオーバーヘッドが低減します。
- my_identifier アドレス
- ノードの認証時に使用する識別方法を指定します。Red Hat Enterprise Linux は IP アドレスを使用してノードを識別します。
- encryption_algorithm 3des
- 認証中に使用される暗号化暗号を指定します。デフォルトでは、Triple Data Encryption Standard (3DES)が使用されます。
- hash_algorithm sha1;
- ノード間のフェーズ 1 ネゴシエーション中に使用されるハッシュアルゴリズムを指定します。デフォルトでは、Secure Hash Algorithm バージョン 1 が使用されます。
- authentication_method pre_shared_key
- ノードのネゴシエーション中に使用される認証方法を指定します。デフォルトでは、Red Hat Enterprise Linux は認証に事前共有キーを使用します。
- dh_group 2
- 動的に生成されるセッションキーを確立するための Diffie-Hellman グループ番号を指定します。デフォルトでは、modp1024 (グループ 2)が使用されます。
48.7.6.2.1. Racoon 設定ファイル
/etc/racoon/racoon.conf
ファイルは、/ etc/racoon/X.X.X.X.conf ステートメントを 除き、すべての IPsec ノードで同一でなければ なりません。このステートメント(および参照するファイル)は、IPsec トンネルがアクティブになると生成されます。Workstation A の場合、include ステートメントの X.X.X.X は Workstation B の IP アドレスです。ワークステーション B とは反対になります。以下は、IPsec 接続がアクティベートされた場合の一般的な racoon.conf
ファイルを示しています。
# 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 接続の性質(使用される暗号化アルゴリズムを含む)と鍵交換方法である IPsec ノード間のフェーズ 2 SA を記述します。以下のリストは、フェーズ 2 のフィールドを定義します。
- sainfo anonymous
- IPsec 認証情報が一致する場合、SA が任意のピアで匿名で初期化できることを示します。
- pfs_group 2
- Diffie-Hellman 鍵交換プロトコルを定義します。これは、IPsec ノードが IPsec 接続の 2 番目のフェーズで相互一時セッションキーを確立する方法を決定します。デフォルトでは、IPsec の Red Hat Enterprise Linux 実装は、Diffie-Hellman 暗号化鍵交換グループのグループ 2 (または
modp1024
)を使用します。Group 2 は 1024 ビットのモジュール指数を使用し、秘密鍵が侵害された場合でも攻撃者が以前の IPsec 送信を復号化できないようにします。 - ライフタイム 1 時間
- このパラメーターは SA の有効期間を指定し、データの時間またはバイト単位で定量化できます。IPsec のデフォルトの Red Hat Enterprise Linux 実装は、1 時間の長さを指定します。
- encryption_algorithm 3des、blowfish 448、rijndael
- フェーズ 2 でサポートされる暗号を指定します。Red Hat Enterprise Linux は、3DES、448 ビット Blowfish、および Rijndael ( Advanced Encryption Standard または AESで使用される暗号)をサポートします。
- authentication_algorithm hmac_sha1、hmac_md5
- は、認証でサポートされるハッシュアルゴリズムを一覧表示します。サポートされるモードは sha1 および md5 ハッシュされたメッセージ認証コード(HMAC)です。
- compression_algorithm deflate
- IP Payload Compression (IPCOMP)サポート用の Deflate 圧縮アルゴリズムを定義します。これにより、低速な接続で IP データグラムの送信を高速化できます。
ifup <nickname>
~]# 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)
48.7.7. IPsec Network-to-Network の設定
図48.11 ネットワーク間 IPsec トンネル接続
[D]
- 専用 IPsec ルーターの外部からアクセスできる IP アドレス
- IPsec ルーターが提供する LAN/WAN のネットワークアドレス範囲(192.168.1.0/24 または 10.0.1.0/24 など)
- ネットワークノードからインターネットにデータをルーティングするゲートウェイデバイスの IP アドレス
- 一意の名前(例:
ipsec1
)。これは、IPsec 接続を特定し、他のデバイスまたは接続と区別するために使用されます。 - 固定暗号化キーまたは racoonによって自動的に生成される暗号鍵
- 接続の初期段階で使用され、セッション中に暗号鍵を交換するために使用される事前共有認証キー。
48.7.7.1. ネットワーク/ネットワーク(VPN)接続
図48.12 Network-to-Network IPsec
[D]
- コマンドシェルで、system-config-network と入力して Network Administration Tool を起動します。
- IPsec タブで、New をクリックして IPsec 設定ウィザードを起動します。
- Forward をクリックして、ネットワーク間 IPsec 接続の設定を開始します。
- 接続の一意のニックネームを入力します(例:
ipsec0
必要に応じて、チェックボックスを選択して、コンピューターの起動時に接続を自動的にアクティブにします。進む をクリックして続けます。 - 接続タイプとして Network to Network encryption (VPN) を選択し、Forward をクリックします。
- 使用する暗号化のタイプ(manual または automatic)を選択します。手動暗号化を選択する場合は、暗号鍵をプロセスの後で提供する必要があります。自動暗号化を選択すると、racoon デーモンが暗号化キーを管理します。自動暗号化を使用する場合は、
ipsec-tools
パッケージをインストールする必要があります。進む をクリックして続けます。 - Local Network ページで、以下の情報を入力します。
- ローカルネットワークアドレス: プライベートネットワークに接続された IPsec ルーター上のデバイスの IP アドレス。
- ローカルサブネットマスク - ローカルネットワーク IP アドレスのサブネットマスク。
- Local Network Gateway - プライベートサブネットのゲートウェイ。
進む をクリックして続けます。図48.13 ローカルネットワーク情報
[D] - Remote Network ページで、以下の情報を入力します。
- リモート IP アドレス: 他 のプライベートネットワーク用に IPsec ルーターの一般にアドレス指定可能な IP アドレスです。この例では、ipsec0 の場合は ipsec1 の公開されている IP アドレスを入力します。その逆も同様です。
- リモートネットワークアドレス: 他 の IPsec ルーターの背後にあるプライベートサブネットのネットワークアドレス。この例では、ipsec1 を設定する場合は
192.168.1.0
を入力し、ipsec0 を設定する場合は192.168.2.0
と入力します。 - リモートサブネットマスク - リモート IP アドレスのサブネットマスク。
- Remote Network Gateway - リモートネットワークアドレスのゲートウェイの IP アドレス。
- 手順 6 で手動暗号化を選択した場合は、使用する暗号化キーを指定するか、Generate をクリックして作成します。認証キーを指定するか、Generate をクリックして生成します。このキーは、数字と文字の組み合わせを任意に指定できます。
進む をクリックして続けます。図48.14 リモートネットワーク情報
[D] - IPsec - Summary ページの情報を確認してから Apply をクリックします。
- File > Save を選択して設定を保存します。
- 一覧から IPsec 接続を選択し、Activate をクリックして接続をアクティブにします。
- IP 転送を有効にします。
/etc/sysctl.conf
を編集し、net.ipv4.ip_forward を
。1
に設定します- 以下のコマンドを使用して変更を適用します。
sysctl -p /etc/sysctl.conf
48.7.7.2. 手動 IPsec Network-to-Network 設定
r3dh4tl1nux
の値を使用し、A と B の管理者は各 IPsec ルーター間で認証キーを自動的に生成して共有することに同意します。LAN A の管理者は IPsec connection ipsec0
という名前を決定し、LAN B の管理者は IPsec 接続 ipsec1
という名前を付けます。
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
- 宛先ゲートウェイの IP アドレス。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
は LAN A の場合は 0、LAN B の場合は 1)と呼ばれる事前共有キーファイルの内容です。このファイルのコンテンツは同一で、root ユーザーのみがこのファイルの読み取りや書き込みが可能でなければなりません。
IKE_PSK=r3dh4tl1nux
keys-ipsecX
ファイルを変更するには、ファイルの作成後に以下のコマンドを使用します。
chmod 600 /etc/sysconfig/network-scripts/keys-ipsec1
keys-ipsecX
ファイルを編集します。適切な接続の場合には、両方の鍵が同じでなければなりません。
/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
.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 ; } }
/etc/sysctl.conf
を編集し、net.ipv4.ip_forward を
。1
に設定します- 以下のコマンドを使用して変更を適用します。
sysctl -p /etc/sysctl.conf
ifup ipsec0
ip route list
tcpdump -n -i eth0 host lana.example.com
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)
48.7.8. IPsec 接続の開始および停止
ifup <nickname>
ipsec0
)。
ifdown <nickname>
48.8. ファイアウォール
表48.5 ファイアウォールのタイプ
メソッド | 説明 | メリット | デメリット | ||||||
---|---|---|---|---|---|---|---|---|---|
NAT | NAT ( Network Address Translation )は、プライベート IP サブネットワークを 1 つまたはパブリック IP アドレスの小規模なプールの背後に配置し、複数のソースへのすべての要求をマスカレードします。Linux カーネルには、JBDS カーネルサブシステムを介して NAT 機能が組み込まれています。 |
|
| ||||||
パケットフィルター | パケットフィルターリングファイアウォールは、LAN を通過する各データパケットを読み取ります。ヘッダー情報でパケットを読み取り、処理し、ファイアウォール管理者が実装するプログラム可能なルールセットに基づいてパケットをフィルターリングします。Linux カーネルには、JBS カーネルサブシステムを介してパケットフィルターリング機能が組み込まれています。 |
|
| ||||||
Proxy | プロキシーファイアウォールは、LAN クライアントからプロキシーマシンへの特定のプロトコルまたはタイプのすべての要求をフィルターリングします。これにより、ローカルクライアントの代わりにインターネットに対してこれらの要求が行われます。プロキシーマシンは、悪意のあるリモートユーザーと内部ネットワーククライアントマシン間のバッファーとして機能します。 |
|
|
48.8.1. ubuntu および IPTables
48.8.1.1. iptables の概要
48.8.2. ファイアウォールの基本設定
48.8.2.1. Security Level Configuration Tool
system-config-securitylevel
図48.15 Security Level Configuration Tool
[D]
48.8.2.2. ファイアウォールの有効化および無効化
- disabled - ファイアウォールを無効にすると、システムに完全にアクセスでき、セキュリティーチェックは行われません。これは、(インターネットではなく)信頼できるネットワークで実行している場合や、iptables コマンドラインツールを使用してカスタムファイアウォールを設定する必要がある場合にのみ選択する必要があります。Warningファイアウォール設定とカスタマイズされたファイアウォールルールは、
/etc/sysconfig/iptables
ファイルに保存されます。Disabled を選択して OK をクリックすると、これらの設定とファイアウォールルールが失われます。 - enabled: このオプションは、DNS 応答や DHCP 要求など、アウトバウンド要求に応答しない着信接続を拒否するように設定します。このマシンで実行中のサービスへのアクセスが必要な場合は、特定サービスに対してファイアウォールの通過許可を選択できます。システムをインターネットに接続しているが、サーバーを実行する予定がない場合は、最も安全な選択肢になります。
48.8.2.3. 信頼できるサービス
- WWW (HTTP)
- HTTP プロトコルは Apache (およびその他の Web サーバー)によって Web ページを提供するために使用されます。Web サーバーを公開しようとする場合は、このチェックボックスを選択します。このオプションは、ローカルページの表示や Web ページの開発には必要ありません。このサービスは、
httpd
パッケージをインストールすることを要求します。WWW (HTTP) を有効にしても、HTTPS (SSL バージョンの HTTP)のポートが開かれません。このサービスが必要な場合は、Secure WWW (HTTPS) チェックボックスを選択します。 - FTP
- FTP プロトコルは、ネットワーク上のマシン間でファイルを転送するために使用されます。FTP サーバーを公開しようとする場合は、このチェックボックスを選択します。このサービスは、
vsftpd
パッケージをインストールする必要があります。 - SSH
- Secure Shell (SSH)は、リモートマシンでコマンドにログインして実行するツールセットです。ssh 経由でマシンへのリモートアクセスを許可するには、このチェックボックスを選択します。このサービスは、
openssh-server
パッケージをインストールする必要があります。 - Telnet
- telnet は、リモートマシンにログインするためのプロトコルです。telnet 通信は暗号化されず、ネットワークスヌーピングからのセキュリティーは提供されません。受信 Telnet アクセスを許可することは推奨されません。telnet 経由でマシンへのリモートアクセスを許可するには、このチェックボックスを選択します。このサービスは、
telnet-server
パッケージをインストールする必要があります。 - メール(SMTP)
- SMTP は、リモートホストをマシンに直接接続してメールを配信できるようにするプロトコルです。POP3 または IMAP を使用して ISP サーバーからメールを収集する場合、または fetchmail などのツールを使用する場合は、このサービスを有効にする必要はありません。マシンにメールを配信できるようにするには、このチェックボックスを選択します。SMTP サーバーが適切に設定されていないと、リモートマシンがサーバーを使用してスパムを送信することができることに注意してください。
- NFS4
- NFS (Network File System)は、*NIX システムで一般的に使用されるファイル共有プロトコルです。このプロトコルのバージョン 4 は、先行プロトコルよりも安全です。システムのファイルまたはディレクトリーを他のネットワークユーザーと共有する場合は、このチェックボックスを選択します。
- Samba
- Samba は、Microsoft のプロプライエタリー SMB ネットワークプロトコルの実装です。ファイル、ディレクトリー、またはローカルで接続されたプリンターを Microsoft Windows マシンと共有する必要がある場合は、このチェックボックスを選択します。
48.8.2.4. その他のポート
194:tcp,631:tcp
48.8.2.5. 設定の保存
/etc/sysconfig/iptables
ファイルに書き込まれます。また、iptables サービスも起動して、選択したオプションを保存した後すぐにファイアウォールがアクティブになるようにします。Disable firewall が選択されている場合、/etc/sysconfig/iptables
ファイルは削除され、iptables サービスはすぐに停止します。
/etc/sysconfig/system-config-securitylevel
ファイルにも書き込まれ、次回アプリケーションを起動したときに設定を復元できるようにします。このファイルは手動で編集しないでください。
48.8.2.6. IPTables サービスのアクティブ化
service iptables restart
chkconfig --level 345 iptables on
service ipchains stop chkconfig --level 345 ipchains off
48.8.3. IPTables の使用
service iptables start
chkconfig --level 345 iptables on
48.8.3.1. iptables コマンドの構文
iptables -A <chain> -j <target>
-A
オプションは、< chain> にルールを追加するように指定し ます。各チェーンは 1 つ以上の ルール で設定されるため、ルール セット とも呼ばれます。
-j & lt;target
> オプションは、ルールのターゲットを指定します。つまり、パケットがルールと一致する場合のアクション。組み込みターゲットの例は ACCEPT、DROP、および REJECT です。
48.8.3.2. 基本的なファイアウォールポリシー
iptables -P INPUT DROP iptables -P OUTPUT DROP
iptables -P FORWARD DROP
48.8.3.3. IPTables ルールの保存および復元
service iptables save
/etc/sysconfig/iptables
ファイルに保存され、サービスの起動時またはマシンが再起動されるたびに適用されます。
48.8.4. 一般的な IPTables フィルターリング
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-I
オプションを使用します。以下に例を示します。
iptables -I INPUT 1 -i lo -p all -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
48.8.5. FORWARD
および NAT ルール
FORWARD
チェーンを使用すると、管理者は LAN 内でパケットをルーティングできる場所を制御できます。たとえば、LAN 全体の転送を許可するには(eth1 のファイアウォール/ゲートウェイに内部 IP アドレスが割り当てられていると仮定)、以下のルールを使用します。
iptables -A FORWARD -i eth1 -j ACCEPT iptables -A FORWARD -o eth1 -j ACCEPT
eth1
デバイスを介して渡します。
sysctl -w net.ipv4.ip_forward=1
/etc/sysctl.conf
ファイルを編集します。
net.ipv4.ip_forward = 0
net.ipv4.ip_forward = 1
sysctl.conf
ファイルへの変更を有効にします。
sysctl -p /etc/sysctl.conf
48.8.5.1. POSTROUTING および IP マスカレード
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
-t nat
)を使用し、ファイアウォールの外部ネットワークデバイス(-o eth0
)上の NAT 用の組み込みの POSTROUTING (-A POSTROUTING
)を指定します。
-j MASQUERADE
ターゲットは、ファイアウォール/ゲートウェイの外部 IP アドレスを持つノードのプライベート IP アドレスをマスクするために指定されます。
48.8.5.2. PREROUTING
-j DNAT
ターゲットを使用して、内部サービスへの接続を要求する着信パケットを転送できる宛先 IP アドレスとポートを指定できます。
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 172.31.0.23:80
iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 172.31.0.23 -j ACCEPT
48.8.5.3. DMZs および IPTables
PREROUTING
テーブルを使用してパケットを適切な宛先に転送します。
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.0.4.2:80
48.8.6. 悪意のあるソフトウェアおよびスポンクション IP アドレス
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
iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -j DROP
DROP
ターゲットと REJECT
ターゲットの間に区別があります。
REJECT
ターゲットはアクセスを拒否し、サービスへの接続を試みるユーザーに connection refused
エラーを返します。名前が示すように DROP
ターゲットは、警告なしでパケットをドロップします。
REJECT
ターゲットが推奨されます。
48.8.7. iptables および接続トラッキング
NEW
- HTTP リクエストなどの新しい接続を要求するパケット。ESTABLISHED
: 既存の接続の一部であるパケットです。RELATED
: 新しい接続を要求しているが、既存の接続の一部であるパケットです。たとえば、FTP はポート 21 を使用して接続を確立しますが、データは別のポート(通常はポート 20)で転送されます。INVALID
: コネクション追跡テーブルの接続の一部ではないパケット。
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
48.8.8. IPv6
ip6tables -A INPUT -i eth0 -p tcp -s 3ffe:ffff:100::1/128 --dport 22 -j ACCEPT
48.8.9. 関連情報
48.8.9.1. インストールされているドキュメント
- 多くのコマンドオプションの定義など、iptables コマンドの詳細については、「iptables」 を参照してください。
- iptables の man ページには、さまざまなオプションの概要が記載されています。
48.8.9.2. 便利な Web サイト
- http://www.netfilter.org/ - SQS および iptables プロジェクトの公式ホームページです。
- http://www.tldp.org/: Linux ドキュメントプロジェクトには、ファイアウォールの作成と管理に関連する便利なガイドが複数含まれています。
- http://www.iana.org/assignments/port-numbers - Internet Assigned Numbers Authority によって割り当てられた登録済みおよび一般的なサービスポートの公式リストです。
48.8.9.3. 関連ドキュメント
- 『Red Hat Linux』 ファイアウォール(Bill McCarty)、Red Hat のプレス。Red Hat Press: オープンソースのパケットフィルターリングテクノロジーを使用してネットワークおよびサーバーファイアウォールを構築するための包括的なリファレンスです(例:Bill McCarty )。これには、ファイアウォールログの分析、ファイアウォールルールの開発、およびさまざまなグラフィカルツールを使用したファイアウォールのカスタマイズに関するトピックが含まれます。
- 『Linux Firewalls』 (Robert Ziegler)、New Riders Press には、2.2 カーネル ipchains と iptables の両方を使用してファイアウォールを構築する際のさまざまな情報が含まれています。リモートアクセスの問題や侵入検知システムなどの追加のセキュリティートピックについても扱います。
48.9. iptables
48.9.1. パケットフィルターリング
filter
: ネットワークパケットを処理するデフォルトのテーブル。NAT
- 新しい接続を作成し、ネットワークアドレス変換 (NAT)に使用されるパケットを変更するために使用されます。mangle
- 特定のタイプのパケット変更に使用されます。
filter
テーブルの組み込みチェーンは次のとおりです。
- INPUT: ホストの対象となるネットワークパケットに適用されます。
- OUTPUT: ローカルで生成されたネットワークパケットに適用されます。
- FORWARD: ホスト経由でルーティングされるネットワークパケットに適用されます。
nat
テーブルの組み込みチェーンは以下のとおりです。
- PREROUTING - ネットワークパケットが到達するとそのパケットを変更します。
- OUTPUT: ローカルで生成されたネットワークパケットが送信される前に変更します。
- POSTROUTING - ネットワークパケットが送信される前に変更します。
mangle
テーブルの組み込みチェーンは次のとおりです。
- INPUT: ホストの対象となるネットワークパケットを変更します。
- OUTPUT: ローカルで生成されたネットワークパケットが送信される前に変更します。
- FORWARD - ホストを介してルーティングされるネットワークパケットを変更します。
- PREROUTING - 着信ネットワークパケットがルーティングされる前に、それらを変更します。
- POSTROUTING - ネットワークパケットが送信される前に変更します。
/etc/sysconfig/iptables
ファイルまたは /etc/sysconfig/ip6tables
ファイルに保存されます。
48.9.2. IPTables と IPChains の相違点
- iptables を使用すると、フィルターされた各パケットは、複数のチェーンではなく 1 つのチェーンのルールを使用して処理されます。
- たとえば、ipchains を使用するシステムに送信される FORWARD パケットは、INPUT、FORWARD、および OUTPUT チェーンを通過して、宛先を続行する必要があります。ただし、iptables はローカルシステム向けの宛先である場合のみ、iptables はパケットを INPUT チェーンに送信し、ローカルシステムがパケットを生成した場合にのみ OUTPUT チェーンに送信します。したがって、実際にはパケットを処理するチェーン内に特定のパケットを取得するように設計されたルールを配置することが重要です。
- DENY ターゲットが DROP に変更になりました。
- ipchains では、チェーン内のルールに一致するパケットは DENY ターゲットに転送することができます。このターゲットは、iptables で DROP に変更する必要があります。
- ルールにオプションを配置する際の順序は重要です。
- ipchains では、ルールオプションの順序は重要ではありません。iptables コマンドの構文はより厳格です。iptables コマンドでは、送信元ポートまたは宛先ポートの前にプロトコル(ICMP、TCP、または UDP)を指定する必要があります。
- ネットワークインターフェイスは、ファイアウォールルールの正しいチェーンに関連付けられている必要があります。
- たとえば、受信インターフェイス(
-i
オプション)は INPUT または FORWARD チェーンでのみ使用できます。同様に、出力インターフェイス(-o
オプション)は、FORWARD チェーンまたは OUTPUT チェーンでのみ使用できます。つまり、INPUT チェーンと受信インターフェイスは連携し、OUTPUT チェーンと発信インターフェイスは連携します。FORWARD チェーンは、着信インターフェイスと発信インターフェイスの両方で機能します。OUTPUT チェーンは着信インターフェイスで使用されなくなり、送信インターフェイスを通過するパケットは INPUT チェーンを認識しません。
48.9.3. IPTables のコマンドオプション
- パケットタイプ: コマンドがフィルターするパケットのタイプを指定します。
- パケットソース/宛先: コマンドがパケットの送信元または宛先に基づいてフィルターするパケットを指定します。
- target - 上記の基準に一致するパケットに対して実行するアクションを指定します。
48.9.3.1. IPTables コマンドオプションの構造
iptables [-t <table-name>] <command> <chain-name> \ <parameter-1> <option-1> \ <parameter-n> <option-n>
filter
テーブルが使用されます。
48.9.3.2. コマンドオプション
-
a - 指定されたチェーンの最後にルールを追加します。以下の-I
オプションとは異なり、整数の引数は指定しません。常に指定されたチェーンの最後にルールを追加します。-c
- ユーザー指定のチェーンに追加する前に、特定のルールを確認します。このコマンドは、追加のパラメーターおよびオプションの入力を求めて、複雑な iptables ルールを構築するのに役立ちます。-d <integer> | <rule
>: 特定のチェーンのルールを番号(チェーンの5
番目のルールの 5 など)、またはルール指定で削除します。ルールの指定は、既存のルールに完全に一致する必要があります。-e
- ユーザー定義のチェーンの名前を変更します。ユーザー定義のチェーンは、デフォルトの既存のチェーン以外のチェーンです。(ユーザー定義のチェーンの作成に関する詳細は、以下の-N
オプションを参照してください)。 これは表の構造には影響しません。注記デフォルトのチェーンのいずれかの名前を変更しようとすると、システムはMatch not found
エラーを報告します。デフォルトのチェーンの名前を変更することはできません。-f -
選択したチェーンをフラッシュして、チェーン内のすべてのルールを効果的に削除します。チェーンが指定されていない場合、このコマンドはすべてのチェーンからすべてのルールをフラッシュします。-h
: コマンド構造の一覧と、コマンドパラメーターおよびオプションの概要を提供します。-I [<integer>
;] - ユーザー定義の整数引数で指定された時点で、指定したチェーンにルールを挿入します。引数が指定されていない場合、ルールはチェーンの上部に挿入されます。注意上記のように、チェーン内のルールの順序によって、どのルールがどのパケットに適用されるかが決まります。これは、-A
または-I
オプションのいずれかを使用してルールを追加するときに覚えておくことが重要です。これは、整数の引数で-I
を使用してルールを追加する場合に特に重要です。チェーンにルールを追加するときに既存の番号を指定すると、iptables は既存のルールの 前 (またはそれ以上)に新しいルールを追加します。-l -
コマンドの後に指定したチェーン内のすべてのルールを一覧表示します。デフォルトのフィルター
テーブルのすべてのチェーンのすべてのルールを一覧表示するには、チェーンまたはテーブルを指定しないでください。それ以外の場合は、特定のテーブルの特定のチェーンのルールを一覧表示するには、以下の構文を使用します。iptables -L <chain-name> -t <table-name>
ルール番号を提供し、より詳細なルールの説明を許可する-L
コマンドオプションの追加オプションは、「オプションの一覧表示」 で説明されています。-n
- ユーザー指定の名前で新しいチェーンを作成します。チェーン名は一意である必要があります。一意でなければ、エラーメッセージが表示されます。-p:
指定されたチェーンのデフォルトポリシーを設定します。これにより、パケットがルールを照合せずにチェーン全体を通過すると、ACCEPT や DROP などの指定されたターゲットに送信されます。-r
: 指定されたチェーン内のルールを置き換えます。ルールの番号は、チェーンの名前の後に指定する必要があります。チェーンの最初のルールはルール番号 1 に対応します。-x
: ユーザー指定のチェーンを削除します。ビルトインチェーンは削除できません。-z
- テーブルのすべてのチェーンのバイトカウンターおよびパケットカウンターをゼロに設定します。
48.9.3.3. iptables パラメーターオプション
-c
- 特定のルールのカウンターを設定します。このパラメーターは、PKTS
オプションおよびBYTES
オプションを受け入れて、リセットするカウンターを指定します。-d
: ルールに一致するパケットの宛先ホスト名、IP アドレス、またはネットワークを設定します。ネットワークに一致する場合、以下の IP アドレス/ネットマスクの形式がサポートされます。N.N.N.N
/ M.M.M: N.N.N.N は IP アドレス範囲で、M. M.M.M はネットマスクです。N.N.N.N
/M - N.N.N は IP アドレス範囲で、M はビットマスクです。
-f
- このルールが断片化されたパケットのみに適用されます。このパラメーターの後に感嘆符(!
)オプションを使用して、断片化されていないパケットのみが一致するように指定できます。注記断片化されたパケットが IP プロトコルの標準的な部分であるにもかかわらず、断片化されたパケットと断片化されていないパケットを区別することが望ましいです。当初は、IP パケットが異なるフレームサイズを持つネットワークで通過できるように設計されました。これらの日数の断片化は、マル形式のパケットを使用して DoS 攻撃を生成するためにより一般的に使用されます。また、IPv6 では断片化を完全に許可しない点にも留意してください。-i
-eth0
やppp0
などの受信ネットワークインターフェイスを設定します。iptables では、これはfilter
テーブルと PREROUTING チェーンとnat
テーブルおよびmangle
テーブルと使用すると、INI および FORWARD チェーンでのみ使用できます。このパラメーターは、以下の特別なオプションもサポートします。- 感嘆符文字(
!
)- ディレクティブを逆にすると、指定したインターフェイスはこのルールから除外されます。 - プラス文字(
+
)- 指定の文字列に一致するすべてのインターフェイスに一致するために使用されるワイルドカード文字。たとえば、パラメーター-i eth+
は、このルールを任意のイーサネットインターフェイスに適用しますが、ppp0
などの他のインターフェイスを除外します。
-i
パラメーターが使用されていてもインターフェイスが指定されていない場合は、すべてのインターフェイスがルールに影響されます。-j
- パケットが特定のルールに一致する場合に、指定したターゲットにジャンプします。標準のターゲットはACCEPT
、DROP
、QUEUE
、およびRETURN
です。拡張オプションは、Red Hat Enterprise Linux iptables RPM パッケージでデフォルトでロードされているモジュールからも利用できます。これらのモジュールの有効なターゲットには、LOG
、MARK
、およびREJECT
が含まれます。これらのターゲットおよびその他のターゲットの詳細は、iptables の man ページを参照してください。このオプションを使用して、特定のルールに一致するパケットを現在のチェーン外のユーザー定義のチェーンに転送し、他のルールをパケットに適用することもできます。ターゲットが指定されていない場合、パケットはアクションを実行せずにルールに移動します。ただし、このルールのカウンターは 1 つずつ増えます。-o
- ルールの送信ネットワークインターフェイスを設定します。このオプションは、filter
テーブルの OUTPUT および FORWARD チェーンにのみ有効です。また、nat
テーブルおよびmangle
テーブルの POSTROUTING チェーンにのみ有効です。このパラメーターは、受信ネットワークインターフェイスパラメーター(-i
)と同じオプションを受け入れます。-p <protocol>
;: ルールの影響を受ける IP プロトコルを設定します。これは、icmp
、tcp
、udp
、またはall
のいずれか、またはこれらのプロトコルの 1 つを表す数値にすることもできます。/etc/protocols
ファイルに記載されているプロトコルを使用することもできます。"all
" プロトコルは、ルールがサポートされるすべてのプロトコルに適用されることを意味します。このルールにプロトコルが一覧にない場合は、デフォルトで "all
" に設定されます。-s
: 宛先(-d
)パラメーターと同じ構文を使用して、特定のパケットのソースを設定します。
48.9.3.4. iptables の一致オプション
-p < protocol-name
> は指定されたプロトコルのオプションを有効にします。プロトコル名の代わりにプロトコル ID を使用することもできます。以下の例を参照してください。それぞれの効果は同じです。
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
48.9.3.4.1. TCP プロトコル
-p tcp
)で利用できます。
--dport
- パケットの宛先ポートを設定します。このオプションを設定するには、ネットワークサービス名(www、smtp など)、ポート番号、またはポート番号の範囲を使用します。ポート番号の範囲を指定するには、2 つの数字をコロン(:
)で区切ります。例:-p tcp --dport 3000:3200
許容可能な最大有効な範囲は0:65535
です。--dport
オプションの後に感嘆符(!
)を使用して、そのネットワークサービスまたはポートを使用し ない すべてのパケットに一致します。ネットワークサービスの名前とエイリアスと、それらが使用するポート番号を参照するには、/etc/services
ファイルを表示します。--destination-port
match オプションは、--dport
と同義です。--sport
---dport
と同じオプションを使用して、パケットの送信元ポートを設定します。--source-port
match オプションは、--sport
と同義です。--sYN
- 一般に SYN パケット と呼ばれる通信を開始するように設計されたすべての TCP パケット に適用されます。データペイロードを伝送するパケットには影響はありません。--syn
オプションの後に感嘆符(!
)を使用して、すべての非 SYN パケットに一致します。--tcp-flags <tested flag list> <set flag list
> - ルールに一致する特定のビット(フラグ)が設定された TCP パケットを許可します。--tcp-flags
match オプションは、2 つのパラメーターを受け入れます。最初のパラメーターはマスクで、パケット内で検査されるフラグのコンマ区切りリストです。2 番目のパラメーターは、ルールが一致するように設定する必要があるフラグのコンマ区切りリストです。使用できるフラグは以下のとおりです。ACK
FIN
PSH
RST
SYN
URG
ALL
NONE
たとえば、以下の仕様を含む iptables ルールは、SYN フラグが設定され、ACK フラグおよび FIN フラグが設定されていない TCP パケットのみに一致します。--tcp-flags ACK,FIN,SYN SYN--tcp-flags
の後にある感嘆符(!
)を使用して、一致オプションの影響を元に戻します。--tcp-option
- 特定のパケット内で設定できる TCP 固有のオプションと一致しようとします。この一致オプションは、感嘆符(!
)で逆にすることもできます。
48.9.3.4.2. UDP プロトコル
-p udp
)で利用できます。
--dport
- サービス名、ポート番号、またはポート番号の範囲を使用して、UDP パケットの宛先ポートを指定します。--destination-port
match オプションは、--dport
と同義です。--sport
- サービス名、ポート番号、またはポート番号の範囲を使用して、UDP パケットのソースポートを指定します。--source-port
match オプションは、--sport
と同義です。
--dport
オプションおよび --sport
オプションでは、ポート番号の範囲を指定するには、2 つの数字をコロン(:)で区切ります。例: -p tcp --dport 3000:3200
許容可能な最大有効な範囲は 0:65535 です。
48.9.3.4.3. ICMP プロトコル
-p icmp
)では、次の一致オプションを使用できます。
--ICMP-type
- ルールに一致する ICMP タイプの名前または番号を設定します。iptables -p icmp -h コマンドを入力して、有効な ICMP 名の一覧を取得できます。
48.9.3.4.4. 追加の一致オプションモジュール
-m <module-name> を使用して 名前でモジュール
を読み込みます。< module-name > はモジュールの名前になります。
limit
module: 特定のルールに一致するパケット数を制限します。LOG ターゲットと併用すると、limit
モジュールにより、一致するパケットが繰り返しメッセージまたはアップシステムリソースでシステムログがいっぱいになるのを防ぐことができます。LOG ターゲットの詳細については、「ターゲットオプション」 を参照してください。limit
モジュールは、以下のオプションを有効にします。--limit
- <value>/<period> ペアとして指定される特定の期間の
最大一致数を設定します。たとえば、--limit 5/hour
を使用すると、1 時間あたり 5 つのルール一致が許可されます。期間は、秒、分、時間、または日で指定できます。数字と時間修飾子が使用されていない場合、デフォルト値の3/hour
が想定されます。--limit-burst
- 一度にルールに一致することのできるパケット数に制限を設定します。このオプションは整数として指定され、--limit
オプションと併用する必要があります。値の指定がない場合は、デフォルト値の 5 (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
match オプションの後に感嘆符(!
)を追加します。
48.9.3.5. ターゲットオプション
<user-defined-chain
> - テーブル内のユーザー定義のチェーン。ユーザー定義のチェーン名は一意である必要があります。このターゲットは、パケットを指定されたチェーンに渡します。ACCEPT
- 宛先または別のチェーンへのパケットを許可します。DROP
- リクエスターに応答せずにパケットをドロップします。パケットを送信したシステムは、失敗について通知されません。QUEUE
- パケットは、ユーザー空間のアプリケーションによって処理されるためにキューに置かれます。RETURN
: 現在のチェーンのルールに対するパケットの確認を停止します。RETURN
ターゲットを持つパケットが、別のチェーンから呼び出されたチェーン内のルールと一致する場合、パケットは最初のチェーンに返され、停止した場所の確認を再開します。RETURN
ルールが組み込みチェーンで使用され、そのパケットが以前のチェーンに移動できない場合は、現在のチェーンのデフォルトターゲットが使用されます。
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
- エラーパケットをリモートシステムに送信し、パケットをドロップします。REJECT
ターゲットは--reject-with < type
> (< type > は rejection タイプ)を受け入れます。これにより、エラーパケットとともにより詳細な情報が返されます。メッセージポート到達不能
は、他のオプションが使用されていない場合に指定されるデフォルトのエラータイプです。<type> オプションの完全なリストは、iptables の man ページを参照し
てください。
nat
テーブルを使用した IP マスカレード、または mangle
テーブルを使用したパケット変更に便利な複数のターゲット拡張機能は、iptables の man ページにあります。
48.9.3.6. オプションの一覧表示
-v
: 各チェーンが処理したパケット数やバイト数、各ルールが一致したパケットとバイト数、特定のルールに適用されるインターフェイスなど、詳細な出力を表示します。-x
: 番号を正確な値に展開します。ビジーなシステムでは、特定のチェーンまたはルールによって処理されるパケットとバイト数の数は、キロバイト
、メガバイト
(メガバイト)、またはギガバイト(ギガバイト)と省略できます
。このオプションは、完全な番号を強制的に表示します。-n
- デフォルトのホスト名およびネットワークサービス形式ではなく、数値形式で IP アドレスとポート番号を表示します。--line-numbers
- チェーンの数値順の横にある各チェーンのルールを一覧表示します。このオプションは、チェーン内の特定のルールを削除しようとする場合や、チェーン内にルールを挿入する場所を見つける場合に役立ちます。-t <table-name>
- テーブル名を指定します。省略した場合、デフォルトは filter テーブルに設定されます。
-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 ~]#
48.9.4. IPTables ルールの保存
service iptables save
/etc/sysconfig/ iptables
に書き込む iptables init スクリプトを実行します。既存の /etc/sysconfig/iptables
ファイルは /etc/sysconfig/iptables.save
として保存されます。
/etc/sysconfig/iptables
に保存されているルールを再適用します。
/etc/sysconfig/iptables
ファイルにコミットする前に新しい iptables ルールをテストすることが推奨されますが、iptables ルールをこのファイルのバージョンから別のシステムのバージョンからこのファイルにコピーすることができます。これにより、iptables ルールのセットを複数のマシンに簡単に配信できます。
iptables-save > <filename>
/etc/sysconfig/iptables
ファイルを他のマシンに配布する場合は、/sbin/service iptables restart と入力して新しいルールを有効にします。
48.9.5. iptables 制御スクリプト
- Security Level Configuration Tool (system-config-securitylevel): 基本的なファイアウォールルールを作成、アクティベート、および保存するグラフィカルインターフェイスです。詳細は、「ファイアウォールの基本設定」 を参照してください。
- /sbin/service iptables < option>: initscript を使用して iptables のさまざまな機能を操作するのに使用します。以下のオプションを設定できます。
- start - ファイアウォールが設定されている場合(つまり
/etc/sysconfig/iptables
が存在する場合)、実行中の iptables はすべて完全に停止され、/sbin/iptables-restore コマンドを使用して起動します。このオプションは、ipchains カーネルモジュールがロードされていない場合にのみ機能します。このモジュールが読み込まれているかどうかを確認するには、root で以下のコマンドを入力します。lsmod | grep ipchains
このコマンドで出力が返されない場合は、モジュールが読み込まれていないことを意味します。必要に応じて、/sbin/rmmod コマンドを使用してモジュールを削除します。 - stop - ファイアウォールが実行されている場合、メモリーのファイアウォールルールがフラッシュされ、すべての iptables モジュールとヘルパーがアンロードされます。
/etc/sysconfig/iptables-config
設定ファイルの IPTABLES_SAVE_ON_STOP ディレクティブがデフォルト値から yes に変更されると、現在のルールは/etc/sysconfig/iptables
に保存され、既存のルールは/etc/sysconfig/iptables.save
ファイルに移動します。iptables-config
ファイルの詳細は、「iptables 制御スクリプト設定ファイル」 を参照してください。 - restart: ファイアウォールが実行されている場合、メモリーのファイアウォールルールがフラッシュされ、
/etc/sysconfig/iptables
で設定されている場合はファイアウォールが再度起動します。このオプションは、ipchains カーネルモジュールがロードされていない場合にのみ機能します。/etc/sysconfig/iptables-config
設定ファイルの IPTABLES_SAVE_ON_RESTART ディレクティブがデフォルト値から yes に変更されると、現在のルールは/etc/sysconfig/iptables
に保存され、既存のルールは/etc/sysconfig/iptables.save
ファイルに移動します。iptables-config
ファイルの詳細は、「iptables 制御スクリプト設定ファイル」 を参照してください。 - ステータス - ファイアウォールのステータスを表示し、すべてのアクティブなルールを一覧表示します。このオプションのデフォルト設定では、各ルールの IP アドレスが表示されます。ドメインおよびホスト名の情報を表示するには、
/etc/sysconfig/iptables-config
ファイルを編集し、IPTABLES_STATUS_NUMERIC の値を no に変更します。iptables-config
ファイルの詳細は、「iptables 制御スクリプト設定ファイル」 を参照してください。 - panic - すべてのファイアウォールルールを表示します。設定されたすべてのテーブルのポリシーは DROP に設定されます。このオプションは、サーバーが危険にさらされることがわかっている場合に役立ちます。ネットワークから物理的に切断したり、システムをシャットダウンしたりするのではなく、このオプションを使用して、それ以降のネットワークトラフィックをすべて停止できますが、分析またはその他のフォレンジック用にマシンを状態にしておくことができます。
- Save: iptables- save を使用して、ファイアウォールルールを
/etc/sysconfig/ iptables に保存
します。詳細は、「IPTables ルールの保存」 を参照してください。
48.9.5.1. iptables 制御スクリプト設定ファイル
/etc/sysconfig/iptables-config
設定ファイルによって制御されます。以下は、このファイルに含まれるディレクティブの一覧です。
- IPTABLES_MODULES - ファイアウォールがアクティブ化されたときにロードする追加の iptables モジュールのスペース区切りの一覧を指定します。これには、接続追跡および NAT ヘルパーを含めることができます。
- IPTABLES_MODULES_UNLOAD - 再起動および停止時にモジュールをアンロードします。このディレクティブは、以下の値を受け入れます。
- ◯: デフォルト値。このオプションは、ファイアウォールの再起動または停止について正しい状態を実現するように設定する必要があります。
- 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 アドレスを出力します。このディレクティブは、以下の値を受け入れます。
- ◯: デフォルト値。ステータス出力内の IP アドレスのみを返します。
- no: ステータス出力内のドメインまたはホスト名を返します。
48.9.6. iptables および IPv6
iptables-ipv6
パッケージがインストールされている場合は、Red Hat Enterprise Linux のnetfilter は次回の世代の IPv6 インターネットプロトコルをフィルターリングできます。IPv6filter の操作に使用するコマンドは ip6tables です。
/etc/sysconfig/ip6tables
ファイルに保存されます。ip6tables initscripts が保存した以前のルールは、/etc/sysconfig/ip6tables.save
ファイルに保存されます。
/etc/sysconfig/ip6tables-config
に保存され、各ディレクティブの名前は iptables で若干異なります。
iptables-config
ディレクティブ IPTABLES_MODULES: ip6tables-config
ファイルの同等は IP6TABLES_MODULES です。
48.9.7. 関連情報
- 「ファイアウォール」 : 全体的なセキュリティーストラテジーにおけるファイアウォールロールに関する章と、ファイアウォールルールを構築するストラテジーについて説明します。
48.9.7.1. インストールされているドキュメント
- man iptables: iptables の説明と、ターゲット、オプション、および一致拡張機能の包括的な一覧が含まれます。
48.9.7.2. 便利な Web サイト
- http://www.netfilter.org/ (netfilter/iptables プロジェクトのホーム)。特定問題に対応する FAQ や Linux IP ファイアウォールメンテナー(Russell)が役立つさまざまなガイドなど、iptables に関するさまざまな情報が含まれています。サイトの HOWTO ドキュメントは、基本的なネットワーク概念、カーネルパケットフィルターリング、NAT 設定などのサブジェクトを対象としています。
- http://www.linuxnewbie.org/nhf/Security/IPtables_Basics.html: パケットが Linux カーネルを通過する方法の概要と、基本的な iptables コマンドの構築を紹介します。
第49章 セキュリティーおよび SELinux
49.1. アクセス制御メカニズム(ACM)
49.1.1. Discretionary Access Control (DAC)
49.1.2. アクセス制御リスト(ACL)
49.1.3. 強制アクセス制御(MAC)
49.1.4. ロールベースアクセス制御(RBAC)
49.1.5. Multi-Level Security (MLS)
49.1.6. Multi-Category Security (MCS)
49.2. SELinux の概要
49.2.1. SELinux の概要
SELinux 意思決定プロセス
サブジェクト(アプリケーションなど)がオブジェクトへのアクセスを試みると(例:ファイル)、カーネル内のポリシー強制サーバーは、サブジェクトとオブジェクトパーミッションが キャッシュされるアクセスベクターキャッシュ (AVC)をチェックします。AVC のデータに基づいて決定を行うことができない場合、要求はセキュリティーサーバーに続行され、アプリケーションとマトリックスでファイルを検索します。次に、パーミッションが許可または拒否され、パーミッションが拒否された場合は、/var/log/messages
に詳細を示す avc: denied
メッセージが表示されます。サブジェクトとオブジェクトのセキュリティーコンテキストはインストールされたポリシーから適用されます。これは、セキュリティーサーバーのマトリックスを設定するための情報を提供します。
図49.1 SELinux デシジョンプロセス
[D]
SELinux の操作モード
SELinux は Enforcing モードで実行する代わりに Permissive モードで実行できます。この場合、AVC が確認され、拒否のログが記録されますが、SELinux はポリシーを強制しません。これは、トラブルシューティングや SELinux ポリシーの開発や微調整に役立ちます。
49.2.2. SELinux に関連するファイル
49.2.2.1. SELinux Pseudo-File System
/selinux/
擬似ファイルシステムには、カーネルサブシステムで最も一般的に使用されるコマンドが含まれています。このタイプのファイルシステムは、/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 コマンドを実行すると、Enforcing モードの場合は 1
、Permissive モードの場合は 0
が表示されます。
49.2.2.2. SELinux 設定ファイル
/etc/
ディレクトリーにある関連ファイルシステムを説明します。
49.2.2.2.1. /etc/sysconfig/selinux
設定ファイル
/etc/sysconfig/selinux
)の 2 つの方法があります。
/etc/sysconfig/selinux
ファイルは、SELinux を有効または無効にする主要な設定ファイルであり、システムで強制するポリシーと、その強制方法を設定します。
/etc/sysconfig/selinux
には、実際の設定ファイル /etc/selinux/config
へのシンボリックリンクが含まれます。
- SELINUX=enforcing|permissive|disabled: システム上の SELinux の最上位状態を定義します。
Enforcing
- SELinux セキュリティーポリシーが適用されます。Permissive
- SELinux システムは警告を出力しますが、ポリシーは強制されません。これは、デバッグおよびトラブルシューティングに役立ちます。- ヒント
注記 - 重要な影響
setsebool -P dhcpd_disable_trans=0
49.2.2.2.2.
-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
49.2.2.3.
- 以下に例を示します。
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
- 注記
49.2.3. 関連情報
49.2.3.1. インストールされているドキュメント
49.2.3.2. 便利な Web サイト
49.3.
49.4. Multi-Category Security (MCS)
49.4.1. はじめに
49.4.1.1.
49.4.2.
49.4.3.
~]# ls -Z gravityControl.txt
-rw-r--r-- user user user_u:object_r:tmp_t:Moonbase_Plans gravityControl.txt
~]# getfattr -n security.selinux gravityControl.txt
# file: gravityControl.txt
security.selinux="user_u:object_r:tmp_t:s0:c10\000"
49.5.
49.5.1. はじめに
49.5.2.
~]# 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
SELinux Logins
~]# semanage login -a james ~]# semanage login -a daniel ~]# semanage login -a olga
~]# 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
49.5.3.
~]# chcat -L
s0
s0-s0:c0.c1023 SystemLow-SystemHigh
s0:c0.c1023 SystemHigh
~]# vi /etc/selinux/targeted/setrans.conf
s0:c0=Marketing
s0:c1=Finance
s0:c2=Payroll
s0:c3=Personnel
~]# 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
~]# service mcstrans restart
49.5.4.
~]# chcat -l -- +Marketing james ~]# chcat -l -- +Finance,+Payroll daniel ~]# chcat -l -- +Personnel olga
~]# chcat -L -l daniel james olga
daniel: Finance,Payroll
james: Marketing
olga: Personnel
# 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
~]# chcat -L -l daniel james olga karl
daniel: Finance,Payroll
james: Marketing
olga: Personnel
karl: Marketing,Finance,Payroll,Personnel
49.5.5.
[daniel@dhcp-133 ~]$ echo "Financial Records 2006" > financeRecords.txt
[daniel@dhcp-133 ~]$ ls -Z financeRecords.txt
-rw-r--r-- daniel daniel user_u:object_r:user_home_t financeRecords.txt
[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
[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
[olga@dhcp-133 ~]$ cat financeRecords.txt
cat: financeRecords.txt: Permission Denied
49.6. Multi-Level Security (MLS)
49.6.1.
図49.2
[D]
49.6.1.1.
図49.3
[D]
49.6.1.2. MLS およびシステム権限
49.6.2.
49.6.3.
49.6.4. SELinux での MLS の有効化
~]# yum install selinux-policy-mls
- MLS ポリシーを有効にする前に、ファイルシステムの各ファイルに、MLS ラベルで再ラベル付けする必要があります。ファイルシステムに再ラベル付けすると、制限されたドメインのアクセスが拒否される可能性があります。これにより、システムが正しく起動しなくなる可能性があります。これを防ぐには、
/etc/selinux/config
ファイルでSELINUX=permissive
を設定します。また、SELINUXTYPE=mls
を設定して、MLS ポリシーを有効にします。設定ファイルは以下のようになります。# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=permissive # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=mls
~]# setenforce 0 ~]# getenforce Permissive
~]# touch /.autorelabel
- システムを再起動します。次回の起動時に、MLS ポリシーに従って、すべてのファイルシステムに再ラベル付けされます。ラベルプロセスは、適切な SELinux コンテキストを使用して、すべてのファイルにラベルを付けます。
*** Warning -- SELinux mls policy relabel is required. *** Relabeling could take a very long time, depending on file *** system size and speed of hard drives. ***********
一番下の行にある * (アスタリスク) 文字は、ラベル付けされている 1000 ファイルを表します。すべてのファイルにラベルを付けるのにかかる時間は、システムのファイル数と、ハードディスクドライブの速度により異なります。最新のシステムでは、このプロセスに 10 分程度かかる場合があります。ラベリングプロセスが終了すると、システムが自動的に再起動します。 ~]# genhomedircon ~]# restorecon -R -v /root /home <other_home_directories>
- Permissive モードでは SELinux ポリシーは強制されませんが、Enforcing モードで実行された場合に拒否されたであろうアクションの拒否は引き続きログに記録されます。最後のシステムの起動時に 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 - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=mls
~]$ getenforce Enforcing
MLS ポリシーが有効になっていることも確認します。~]# sestatus |grep mls Policy from config file: mls
49.6.5.
49.7.
49.7.1.
49.7.1.1.
49.7.1.1.1.
49.7.1.2.
49.7.2.
49.7.2.1.
- 注記
49.7.2.2.
man 3 selinux_binary_policy_path
49.7.3.
49.7.4.
- ファイル関連のクラスには、ファイルシステムの
filesystem
、ファイルのfile
、ディレクトリーのdir
が含まれます。各クラスには、独自の関連付けられたパーミッションセットがあります。
49.8. ターゲットポリシーの概要
49.8.1. ターゲットポリシーとは
unconfined_t
ドメインで実行されます。unconfined_t
ドメインにあるオブジェクトには制限がなく、標準の Linux セキュリティー( DAC )の使用にフォールバックします。ターゲットポリシーの一部であるデーモンは、独自のドメインで実行され、システムで実行するすべての操作で制限されます。このようにして、悪用されたデーモンや侵害されたデーモンは、どのような方法でも含まれており、限られた損傷しか発生しない可能性があります。
http
デーモンと ntp
デーモンは、デフォルトのターゲットポリシーで保護されており、それぞれ httpd_t
ドメインと ntpd_t
ドメインで実行されます。ただし、ssh
デーモンはこのポリシーでは保護されないため、unconfined_t
ドメインで実行されます。
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
Strict ポリシー
Targeted ポリシーの逆は、厳密なポリシー です。strict ポリシーでは、すべてのサブジェクトとオブジェクトが特定のセキュリティードメインに存在し、すべての対話と移行はポリシールール内で個別に考慮されます。
49.8.2. ターゲットされたポリシーのファイルおよびディレクトリー
49.8.3. ターゲットポリシー内のユーザーとロールについて
unconfined_t
タイプはすべてのロールに存在するため、ターゲットポリシーでのロールの有用性が大幅に削減されます。ロールをより広範囲に使用するには、厳密なポリシーパラダイム(各プロセスが個別にドメインと見なされる)に変更する必要があります。
system_r
と object_r
の 2 つのロールのみがあります。初期ロールは system_r
であり、それ以外はすべてそのロールを継承します。残りのロールは、targeted ポリシーと strict ポリシー間の互換性の目的で定義されます。[20]
object_r
は暗黙的なロールで、ポリシーソースには見つかりません。ロールは、ポリシーの 1 つ以上の宣言を使用してタイプで作成および設定されるため、すべてのロールを宣言する単一のファイルはありません。(ポリシー自体は、多数の別々のファイルから生成されることに注意してください。)
system_r
- このロールは、ユーザープロセス以外のすべてのシステムプロセスを対象としています。
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
- これは、通常の Linux ユーザーのデフォルトのユーザーロールです。厳密なポリシーでは、個々のユーザーが使用される可能性があり、ユーザーに特別なロールで特権操作を実行できるようにします。targeted ポリシーでは、すべてのユーザーが
unconfined_t
ドメインで実行されます。 object_r
- SELinux では、RBAC が使用されている場合、ロールはオブジェクトに使用されません。ロールはサブジェクトに厳密に使用されます。これは、ロールはタスク指向で、それらがアクションを実行するエンティティー(プロセスなど)にグループ化するためです。このようなエンティティーはすべて、サブジェクト と呼ばれます。このため、すべてのオブジェクトには
object_r
ロールがあり、ロールはラベルのプレースホルダーとしてのみ使用されます。 sysadm_r
- これは、厳密なポリシーのシステム管理者ロールです。root ユーザーとして直接ログインする場合、デフォルトのロールは実際には
staff_r
である可能性があります。true の場合、newrole -r sysadm_r コマンドを使用して SELinux システム管理者ロールに切り替え、システム管理タスクを実行します。Targeted ポリシーでは、互換性のために以下のsysadm_r
を保持します。sysadm_r (6 types) httpd_helper_t httpd_sys_script_t initrc_t ldconfig_t ndc_t unconfined_t
libselinux
はデフォルトの SELinux ユーザー ID として user_u
に戻されるため、user_u
ID が選択されました。これは、ログインしている Linux ユーザーに一致する SELinux ユーザーがない場合に発生します。ターゲットポリシーで user_u
を単一ユーザーとして使用すると、strict ポリシーへの変更が容易になります。残りのユーザーは、strict ポリシーとの互換性のために存在します。[21]
root
です。プロセスのコンテキストでは、ユーザー ID として root
が確認できます。これは、SELinux ユーザー root
がコマンドラインからデーモンを起動するか、init によって最初に起動するデーモンを再起動する際に発生します。
第50章 SELinux の使用
50.1. SELinux のエンドユーザーコントロール
unconfined_t
のドメインと、ターゲットデーモン 以外 の残りのシステムで実行しているためです。
avc: denied
メッセージを生成しない可能性があります。
50.1.1. ファイルの移動とコピー
ファイルのコピー:cp の SELinux オプション
特に指定しない限り、cp は、作成プロセスのドメインとターゲットディレクトリーのタイプに基づいて新しいファイルを作成するデフォルトの動作に従います。ラベルを設定する特定のルールがない限り、ファイルはターゲットディレクトリーからタイプを継承します。
-Z user:role:type
オプションを使用して、新規ファイルに必要なラベルを指定します。
-p
(または --preserve=mode,ownership,timestamps
)オプションは指定された属性を保持し、可能であれば link などの追加属性を保持します。
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
/tmp
に適用される特定のルールがないため、新しいファイルには親ディレクトリーのタイプが設定されます。
cp bar /tmp ls -Z /tmp/bar -rw-rw-r-- auser auser user_u:object_r:tmp_t /tmp/bar
tmp_t
タイプは、一時ファイルのデフォルトタイプです。
-Z
オプションを使用して、新規ファイルのラベルを指定します。
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
ファイルの移動:mv の SELinux オプション
mv のあるファイルを移動すると、ファイルに関連付けられた元のタイプが保持されます。問題が発生する可能性があるため、このコマンドを使用する場合は注意が必要です。たとえば、タイプ user_home_t
を持つファイルを ~/public_html
に移動すると、httpd
デーモンは再ラベル付けするまでこれらのファイルを提供できなくなります。ファイルのラベリングの詳細は、「ファイルまたはディレクトリーの再ラベル」 を参照してください。
表50.1 mv コマンドおよび cp コマンドの動作
コマンド | 動作 |
---|---|
mv | ファイルは、元のラベルを保持します。これにより、問題、混乱、またはマイナーなセキュリティーが発生する可能性があります。たとえば、sbin_t ドメインで実行している tmpwatch プログラムは、ファイルのタイプが原因で、/tmp ディレクトリー内の経過時間ファイルを削除できない可能性があります。 |
cp | 作成プロセスのドメイン(cp)とターゲットディレクトリーのタイプに基づくデフォルトの動作を使用して、ファイルのコピーを作成します。 |
cp -p | ファイルのコピーを作成し、可能な場合は指定された属性とセキュリティーコンテキストを保持します。デフォルトの属性は mode、ownership、および timestamps です。その他の属性は links および all です。 |
cp -Z <user:role:type> | 指定されたラベルで ファイルのコピーを作成します。-Z オプションは、--context と同義語です。 |
50.1.2. プロセス、ユーザー、またはファイルオブジェクトのセキュリティーコンテキストの確認
プロセス ID の確認
Red Hat Enterprise Linux では、-Z
オプションは --context
と同等で、ps コマンド、id コマンド、ls コマンド、および cp コマンドで使用できます。SELinux に関する cp コマンドの動作は、表50.1「mv コマンドおよび cp コマンドの動作」 で説明されています。
unconfined_t
ドメインで実行されており、いくつかの例外があります。
[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
ユーザー ID の確認
id コマンドで -Z
オプションを使用して、ユーザーのセキュリティーコンテキストを判断できます。このコマンドでは、-Z
と他のオプションを組み合わせることはできません。
[root@localhost ~]# id -Z user_u:system_r:unconfined_t
-Z
オプションを使用して、別のユーザーのセキュリティーコンテキストを検査できないことに注意してください。つまり、現在ログインしているユーザーのセキュリティーコンテキストのみを表示できます。
[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
ファイル ID の確認
ls コマンドに -Z
オプションを使用して、一般的な長い形式情報をグループ化できます。モード、ユーザー、グループ、セキュリティーコンテキスト、およびファイル名の情報を表示できます。
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
50.1.3. ファイルまたはディレクトリーの再ラベル
~/public_html
ディレクトリーなどのターゲットデーモンに関連する特別なディレクトリーに移動またはコピーする場合、または /home
以外のディレクトリーで動作するスクリプトを作成する場合は、ファイルの再ラベル付けが必要になる場合があります。
- ファイルの型を意図的に変更
- ポリシーに応じたデフォルトの状態へのファイルの復元
/usr/sbin/mysqld
に誤ったセキュリティーラベルがあり、restorecon などの再ラベル付け操作を使用してこれに対応する場合は、再ラベル付け操作の後に mysqld
を再起動する必要があります。実行可能ファイルを正しいタイプ(mysqld_exec_t
)に設定すると、起動時に適切なドメインに移行できるようになります。
/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
public_html
ディレクトリーに移動すると、元のタイプを保持します。
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
httpd
が読み取り権限を持つタイプが必要です。Apache HTTP Server は UserDir に対して設定され、ブール値 httpd_enable_homedirs
が有効になります。
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/
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
archives/
ディレクトリーには、ユーザーのホームディレクトリーにデフォルトのタイプが作成されているため、すでにデフォルトのタイプがあります。
ls -Zd archives/ drwxrwxr-x auser auser user_u:object_r:user_home_t archives/
/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
50.1.4. セキュリティーコンテキストを保持するアーカイブの作成
*.star
ファイルのヘッダーが xattrs に完全に対応するタイプになるように、適切な -xattr
および -H=exustar
オプションを使用する必要があります。これらのオプションおよびその他のオプションの詳細は、の man ページを参照してください。
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
star -xattr -H=exustar -c -f all_web.star public_html/ web_files/ star: 11 blocks + 0 bytes (total of 112640 bytes = 110.00k).
-Z
オプションを指定して ls コマンドを使用して、セキュリティーコンテキストを検証します。
ls -Z all_web.star -rw-rw-r-- auser auser user_u:object_r:user_home_t \ all_web.star
/tmp
にコピーされます。派生一時タイプを作成する特定のポリシーがない場合、デフォルトの動作は tmp_t
タイプを取得することです。
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
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
/var/log/httpd/
に復元します。
star -xattr -H=exustar -c -f httpd_logs.star /var/log/httpd/
50.2. SELinux の管理者コントロール
50.2.1. SELinux のステータス表示
~]# sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 21
Policy from config file: targeted
-v
オプションには、/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
-b
は、ブール値の現在の状態を表示します。grep またはその他のツールと組み合わせて使用すると、特定のブール値のステータスを確認できます。
~]# 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
50.2.2. ファイルシステムの再ラベル付け
init を使用したファイルシステムの再ラベル付け
ファイルシステムの再ラベル付けに推奨される方法は、マシンを再起動することです。これにより、init
プロセスが再ラベル付けを実行し、アプリケーションの起動時に正しいラベルがあり、それらのラベルが適切な順序で開始されるようになります。再起動せずにファイルシステムに再ラベル付けすると、一部のプロセスが、誤ったコンテキストで実行し続ける可能性があります。すべてのデーモンが再起動し、正しいコンテキストで実行されていることを手作業で確認することは難しい場合があります。
touch /.autorelabel reboot
init.rc
は /.autorelabel
の存在をチェックします。このファイルが存在する場合は、SELinux が完全なファイルシステムの再ラベル付けを実行し( /sbin/fixfiles -f -F relabel コマンドを使用して)、/.autorelabel
を削除します。
修正ファイルを使用したファイルシステムの再ラベル付け
fixfiles コマンドを使用してファイルシステムの再ラベル付けをしたり、RPM データベースに基づいて再ラベル付けしたりできます。
fixfiles relabel
fixfiles -R <packagename> restore
/tmp/
を確実に再ラベル付けできないため、空の /tmp/
に対する承認を要求します。fixfiles は root として実行されるため、アプリケーションが依存している一時ファイルは消去されます。これにより、システムが不安定になったり、予期せず動作したりする可能性があります。
50.2.3. NFS ホームディレクトリーの管理
nfs_t
タイプがあります。これは、httpd_t
を実行できるタイプではありません。
nfs_t
に問題がある場合は、別のコンテキストでホームディレクトリーをマウントしてみてください。
mount -t nfs -o context=user_u:object_r:user_home_dir_t \ fileserver.example.com:/shared/homes/ /home
50.2.4. ディレクトリーまたはツリーへのアクセスの付与
root_t
、tmp_t
、usr_t
など、多くのタイプがあります。これらのタイプは、機密情報を含まないディレクトリーや、広く読み取り可能にするディレクトリーに適しています。また、異なるコンテキストを持つよりセキュアなディレクトリーの親ディレクトリーに使用することもできます。
avc: denied
メッセージを使用する場合は、ディレクトリートラバーサルで発生する一般的な問題がいくつかあります。たとえば、多くのプログラムは、操作に必要なものではなく、ログに拒否メッセージを生成する ls -l / と同等のコマンドを実行します。そのためには、local.te
ファイルに dontaudit
ルールを作成する必要があります。
path=/
コンポーネントで誤作用しないようにしてください。このパスは、root ファイルシステム /
のラベルに関連しません。これは、実際にはデバイスノード上のファイルシステムのルートに相対的です。たとえば、/var/
ディレクトリーが LVM (論理ボリューム管理)にあるとします。 [22])デバイス /dev/dm-0。
デバイスノードは、メッセージ dev=dm-0 として識別されます
。この例では path=
/ が LVM デバイス dm-0
の最上位に表示されますが、これはルートファイルシステムの指定 /
と同じではありません。
50.2.5. システムのバックアップおよび復元
50.2.6. Enforcement の有効化または無効化
~]# sestatus | grep -i mode
Current mode: permissive
Mode from config file: permissive
~]# setenforce 1 ~]# sestatus | grep -i mode Current mode: enforcing Mode from config file: permissive
名前付きデーモンと
SELinux のトラブルシューティングを行う場合は、そのデーモンのみの Enforcing をオフにできます。
~]# getsebool named_disable_trans
named_disable_trans --> off
~]# setsebool named_disable_trans 1 ~]# getsebool named_disable_trans named_disable_trans --> on
-P
オプションを使用して、再起動後も変更が永続化されるようにします。
~]# getsebool -a | grep disable.*on
httpd_disable_trans=1
mysqld_disable_trans=1
ntpd_disable_trans=1
setsebool -P httpd_disable_trans=1 mysqld_disable_trans=1 ntpd_disable_trans=1
~]# getsebool httpd_disable_trans httpd_disable_trans --> off ~]# togglesebool httpd_disable_trans httpd_disable_trans: active
ランタイムブール値の変更
以下の手順に従って、GUI を使用してランタイムのブール値を変更します。
- System メニューで Administration を参照し、Security Level and Firewall をクリックして Security Level Configuration ダイアログボックスを表示します。
- SELinux タブをクリックし、SELinux ポリシーの変更 をクリックします。
- 選択リストで、Name Service エントリーの横にある矢印をクリックし、Disable SELinux protection for named daemon チェックボックスを選択します。
- OK をクリックして変更を適用します。ポリシーが再読み込みされるまでに少し時間がかかる場合があります。
図50.1 Security Level Configuration ダイアログボックスを使用してランタイムのブール値を変更します。
[D]
50.2.7. SELinux の有効化または無効化
/etc/sysconfig/selinux
ファイルを編集できます。このファイルは、/etc/selinux/config
へのシンボリックリンクです。設定ファイルは自己説明的です。SELINUX
または SELINUXTYPE
の値を変更すると、SELinux のステータスと、次回システム起動時に使用するポリシーの名前が変更されます。
~]# 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
GUI を使用した SELinux モードの変更
以下の手順に従って、GUI で SELinux のモードを変更します。
- System メニューで Administration を参照し、Security Level and Firewall をクリックして Security Level Configuration ダイアログボックスを表示します。
- SELinux タブをクリックします。
- SELinux の設定 で
Disabled
、Enforcing
、またはPermissive
のいずれかを選択し、OK をクリックします。 有効
から 無効 に変更した場合や、
その逆の場合は、変更を有効にするためにマシンを再起動する必要があります。
/etc/sysconfig/selinux
に反映されます。
50.2.8. ポリシーの変更
/etc/sysconfig/selinux
で以下の行を変更します。
SELINUXTYPE=<policyname>
/etc/selinux/
の下のポリシー名ディレクトリーです。これは、カスタムポリシーがインストールされていることを前提としています。SELINUXTYPE
パラメーターを変更したら、以下のコマンドを実行します。
touch /.autorelabel reboot
- 必要なポリシーの完全なディレクトリー構造が
/etc/selinux
に存在することを確認します。 - System メニューで Administration を参照し、Security Level and Firewall をクリックして Security Level Configuration ダイアログボックスを表示します。
- SELinux タブをクリックします。
- Policy Type 一覧で読み込むポリシーを選択し、OK をクリックします。このリストは、複数のポリシーがインストールされている場合にのみ表示されます。
- 変更を有効にするには、マシンを再起動します。
図50.2 Security Level Configuration ダイアログボックスを使用してカスタムポリシーをロードします。
[D]
50.2.9. 全ファイルシステムのセキュリティーコンテキストの指定
cifs_t
や nfs_t
などの genfs ラベルを取得するネットワークファイルシステムである可能性があります。
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
/mnt
にファイルシステムをマウントし、/var/www/html/foo
へのシンボリックリンクがある場合は、セキュリティーコンテキストが 2 つあります。1 つのセキュリティーコンテキストはオブジェクトクラス file と、タイプ lnk_file のもう 1 つはポリシーによって処理されるため、予期せぬ動作が発生する可能性があります。
50.2.10. ファイルまたはディレクトリーのセキュリティーカテゴリーの変更
50.2.11. 特定のセキュリティーコンテキストでのコマンドの実行
~/bin/contexttest
はユーザー定義のスクリプトです。)
runcon -t httpd_t ~/bin/contexttest -ARG1 -ARG2
runcon user_u:system_r:httpd_t ~/bin/contexttest
50.2.12. スクリプトの便利なコマンド
- getenforce
- このコマンドは、SELinux の Enforcing ステータスを返します。
- setenforce [ En for ssive | 1 | 0 ]
- このコマンドは、SELinux の Enforcing モードを制御します。オプション
1
またはEnforcing
は、SELinux に Enforcing モードに入るように指示します。オプション0
またはPermissive
オプションは、SELinux にパッシブモードに入るように指示します。アクセス違反は引き続きログに記録されますが、防止されません。 - selinuxenabled
- このコマンドは、SELinux が有効な場合はステータスが
0
で、SELinux が無効になっている場合は1
で終了します。~]# selinuxenabled ~]# echo $? 0
- getsebool [-a] [boolean_name]
- このコマンドは、すべてのブール値(
-a
)または特定のブール値(<boolean_name>)のステータスを表示し
ます。 - setsebool [-P] <boolean_name> value | bool1=val1 bool2=val2 ...
- このコマンドは、1 つ以上のブール値を設定します。
-P
オプションを使用すると、再起動後も変更が永続化されます。 - togglesebool boolean ...
- このコマンドは、1 つ以上のブール値の設定を切り替えます。これは、メモリーのみのブール値設定に影響します。変更は再起動後は維持されません。
50.2.13. 異なるロールへの変更
newrole -r <role_r> -t <type_t> [-- [ARGS]...]
ARGS
は、/etc/passwd
ファイルのユーザーのエントリーで指定されたシェルに直接渡されます。
policycoreutils-newrole
パッケージの一部で、strict ポリシーまたは MLS ポリシーをインストールする場合に必要になります。Red Hat Enterprise Linux では、デフォルトではインストールされません。
50.2.14. リブートのタイミング
50.3. SELinux のアナリストコントロール
50.3.1. カーネル監査の有効化
/etc/grub.conf
ファイルまたは起動時に GRUB メニューのいずれかで、カーネルブート行に audit=1
パラメーターを追加します。
~/public_html
へのアクセスが拒否された場合の完全な監査ログエントリーの例です。audit (...)フィールドのタイムスタンプとシリアル番号のタイムスタンプは、それぞれ同一である点に注意してください。これにより、監査ログで特定のイベントを簡単に追跡できます。
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
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
Jan 15 08:03:56 hostname kernel: audit(1105805036.075:2392892): \ item=0 name=/home/auser/public_html inode=921135 dev=00:00
/var/log/audit/audit.log
などの /var/log/messages
以外の場所に監査メッセージをキャプチャーできます。
50.3.2. ログのダンプと表示
/var/log/messages
にルーティングされます。標準の検索ユーティリティー( grepなど)のいずれかを使用して、avc
または audit
が含まれる行を検索できます。
第51章 SELinux ポリシーのカスタマイズ
51.1. はじめに
selinux-policy-targeted-sources
パッケージをインストールしてから、/etc/selinux/targeted/src/policy/domains/misc
ディレクトリーに local.te
ファイルを作成する必要がありました。audit2allow ユーティリティーを使用して、AVC メッセージを allow ルールに変換し、ポリシーを再構築して再読み込みできます。
selinux-policy-XYZ.src.rpm
をインストールする必要があります。selinux-policy-devel
パッケージも追加されており、さらにカスタマイズ機能が提供されます。
51.1.1. モジュールポリシー
51.1.1.1. ポリシーモジュールの一覧表示
~]# 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
/usr/share/selinux/targeted/
ディレクトリーには、多数のポリシーパッケージ(*.pp)ファイルが含まれます。これらのファイルは selinux-policy
rpm に含まれており、ポリシーファイルの構築に使用されます。
51.2. ローカルポリシーモジュールの構築
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
51.2.1. audit2allow を使用したローカルポリシーモジュールの構築
audit.log
ファイルの特定のコンテンツに基づいてポリシーモジュールを構築します。
mysemanage.te
)を構築している。次に、checkmodule コマンドを実行してモジュールファイル(mysemanage.mod
)をコンパイルします。最後に、semodule_package コマンドを使用してポリシーパッケージ(mysemanage.pp
)を作成します。semodule_package コマンドは、異なるポリシーファイル(通常はモジュールとファイルコンテキストファイル)をポリシーパッケージに統合します。
51.2.2. Type Enforcement (TE)ファイルの分析
~]# 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;
dontaudit
に変更できます。
51.2.3. ポリシーパッケージの読み込み
~]# semodule -i mysemanage.pp
mysemanage.pp
)を他のマシンにコピーして、semodule を使用してインストールすることもできます。
allow
ルールを dontaudit
に変更できることを意味します。次に、ポリシーパッケージを再コンパイルして再パッケージ化し、再度インストールできます。
第52章 References
書籍
- SELinux by Example
- Mayer, MacMillan, and CaplanPrentice Hall, 2007
チュートリアルおよびヘルプ
- Apache HTTP SELinux ポリシーの概要およびカスタマイズ
- Russell Coker のチュートリアルと講演
- 汎用 Writing SELinux ポリシー HOWTO
- Red Hat ナレッジベース
全般情報
- NSA SELinux のメイン Web サイト
- NSA SELinux FAQ
- Fedora SELinux FAQ
- SELinux NSA のオープンソースセキュリティー強化 Linux
Technology
- オブジェクトクラスおよびパーミッションの概要
- セキュリティーポリシーの Linux オペレーティングシステムへの柔軟なサポートの統合(Linux における Flask 実装の履歴)
- Linux セキュリティーモジュールとしての SELinux の実装
- Security-Enhanced Linux のセキュリティーポリシー設定
コミュニティー
- SELinux コミュニティーページ
- IRC
- irc.freenode.net, #rhel-selinux
履歴
- Flask のクイック履歴
- Fluke に関する完全な背景
パート VIII. Red Hat のお客様および認定
第53章 Red Hat のお客様および認定
53.1. Train に 3 つの方法
- 登録を開く
- オープン登録の取り組みは、米国および 125 以上の場所で、50 以上の場所で継続的に提供されます。Red Hat の取り組みは、少なくとも 1 つの専用システム、そしてある程度の 5 つの専用システムにアクセスできるパフォーマンスベースの学習者です。教師はすべて、経験のある Red Hat Certified Engineers (----------|-----s)で、その方針を熟知している方です。学習スケジュールは http://www.redhat.com/explore/trainingから入手できます。
- オンサイトセッション
- オンサイトトレーニングは、クラスごとに 12 - 16 のチームが Red Hat が提供しています。Red Hat の技術スタッフは、Red Hat Enterprise Linux、Red Hat、または JBoss の認定テストを実行する準備が整うため、技術スタッフが技術スタッフをサポートします。オンサイトは、大規模なグループを一度にトレーニングする優れた方法です。オープン登録は、後でインクリメンタルトレーニングに使用できます。詳細については、http://www.redhat.com/explore/onsiteをご覧ください。
- eLearning
- Red Hat Enterprise Linux 4 用の完全に更新されています !クラスの時間はありませんか ?Red Hat の e 関連タイトルはオンラインに提供され、RHCT およびvideo 追跡スキルについて説明します。また、拡張するカタログには、最新のプログラミング言語、スクリプト、および電子商取引も含まれます。当然の一覧については、http://www.redhat.com/explore/elearningにアクセスしてください。
53.2. Microsoft Certified Professional Resource Center
第54章 認定トラッキング
- Red Hat Certified Technician®(RHCT®)
- 3 年目に入り、Red Hat Certified Technician はすべての Linux で最速の認定であり、現在 15,000 以上の認定保持者となります。RHCT は、Linux 認証情報を確立するための最適な最初の手順であり、UNIX 以外の環境または Linux 環境から移行するための理想的な初期認定です。Red Hat の認定は、Linux にとって最善であると見なされており、おそらくすべての IT においてもそうです。Red Hat の認定プログラムは、経験のある Red Hat のエキスパートによってまったく対応し、実際のライブシステムでの能力を測定し、採用者や IT 担当者にとって大きな要求となります。適切な認定の選択は、お客様の背景と目標によって異なります。UNIX または Linux の高度な経験、最小限の経験、または Linux の経験がなくても、Red Hat のトレーニングと認定パスが適切です。
- Red Hat Certified Engineer®(NORMAL®)
- Red Hat Certified Engineer は 1999 年に開始され、20,000 を超える Linux エキスパートがもたらされています。独立した調査では、Linux 認定の "crown jewel" と呼ばれることが、すべての IT で #1 位にランク付けされました。
- Red Hat 認定セキュリティー(RHCSS)
- RHCSS には、現在のエンタープライズ環境のセキュリティー要件を満たすために、Red Hat Enterprise Linux、Red Hat Directory Server、および SELinux のセキュリティー知識と特殊なスキルがあります。RHCSS は、Red Hat の最新の認定であり、その種類の 1 つが Linux のみです。
- Red Hat 認定アーキテクト(NORMAL)
- 上級トレーニングをシークすると、エンタープライズアーキテクトへの登録と、新しく発表された Red Hat 認定アーキテクト(NORMAL)認定の能力を証明できます。Red Hat Certified Technician (RHCT)および Red Hat Certified Engineer (NORMAL)の認定を主な認定であり、Linux 分野で最も要求の認定です。
54.1. 無料の事前評価テスト
第55章 RH033: Red Hat Linux Essentials
55.1. 当然の説明
55.1.1. 前提条件
55.1.2. 目的
55.1.3. 対象者
55.1.4. 学習目的
- Linux ファイルシステムを理解する
- 一般的なファイルメンテナーンスを実行する
- GNOME インターフェイスの使用およびカスタマイズ
- コマンドラインから基本的な Linux コマンドを発行する
- GNOME GUI を使用して一般的なタスクを実行する
- vi エディターを使用してテキストドキュメントを開いた、編集、および保存します。
- ファイルアクセスのパーミッション
- X Window System のカスタマイズ
- 正規表現パターンの一致と I/O リダイレクト
- システムでパッケージをインストール、アップグレード、削除、およびクエリーします。
- ユーザーのネットワークユーティリティー
- パワーユーザーユーティリティー
55.1.5. フォローオンフォル
第56章 RH035: Red Hat Linux Essentials for Windows Professionals
56.1. 当然の説明
56.1.1. 前提条件
56.1.2. 目的
56.1.3. 対象者
56.1.4. 学習目的
- ソフトウェアのインストール、ネットワークの設定、認証の設定、およびグラフィカルツールを使用した各種サービスのインストールおよび設定方法
- Linux ファイルシステムを理解する
- コマンドラインから基本的な Linux コマンドを発行する
- ファイルアクセス権限の理解
- X Window System のカスタマイズ
- 正規表現パターンの一致と I/O リダイレクトの使用
56.1.5. フォローオンフォル
第57章 RH133: Red Hat Linux System Administration and Red Hat Certified Technician (RHCT) Certification
57.1. 当然の説明
57.1.1. 前提条件
57.1.2. 目的
57.1.3. 対象者
57.1.4. 学習目的
- Red Hat Linux の対話的なインストールとキックスタートによるインストール
- 一般的なシステムハードウェアの制御 - Linux 印刷サブシステムの管理
- Linux ファイルシステムの作成および維持
- ユーザーおよびグループの管理の実行
- ワークステーションと既存ネットワークの統合
- NIS、DNS、および DHCP サービスに対するクライアントとしてワークステーションを設定する
- at、cron、および anacron を使用してタスクを自動化します。
- テープおよび tar アーカイブへのファイルシステムのバックアップ
- RPM によるソフトウェアパッケージを操作します。
- X Window System および GNOME d.e を設定します。
- パフォーマンス、メモリー、およびプロセス mgmt を実行します。
- 基本的なホストセキュリティーの設定
57.1.5. フォローオンフォル
第58章 RH202 RHCT EXAM - すべての Linux で最も急速に広がった認証情報
- RHCT試験はRH133に含まれています。$349 用に独自に購入することもできます。
- RHCT の試験は、すべての RH133 クラスの 5 日目に実施
58.1. 当然の説明
58.1.1. 前提条件
第59章 RH253 Red Hat Linux Networking and Security Administration
59.1. 当然の説明
59.1.1. 前提条件
59.1.2. 目的
59.1.3. 対象者
59.1.4. 学習目的
- Red Hat Linux サーバー側のセットアップ、設定、および一般的なネットワークサービスの基本的な管理(DNS、NIS、Apache、SMB、DHCP、Sendmail、FTP)上のネットワークサービス。その他の一般的なサービス:tftp、pppd、proxy
- セキュリティーの概要
- セキュリティーポリシーの開発
- ローカルセキュリティー
- ファイルおよびファイルシステムのセキュリティー
- パスワードのセキュリティー
- カーネルセキュリティー
- ファイアウォールの基本要素
- Red Hat Linux ベースのセキュリティーツール
- 一休みの試みへの対応
- セキュリティーソースおよびメソッド
- OSS セキュリティーツールの概要
59.1.5. フォローオンフォル
第60章 RH300: knowledge course (RH300: track course) (および----------|-----試験)
60.1. 当然の説明
60.1.1. 前提条件
60.1.2. 目的
60.1.3. 対象者
60.1.4. 学習目的
- ハードウェアおよびインストール(x86 アーキテクチャー)
- 設定および管理
- 代替インストール方法
- カーネルサービスおよび設定
- 標準のネットワークサービス
- X ウィンドウシステム
- ユーザーとホストのセキュリティー
- ルーター、ファイアウォール、クラスター、およびトラブルシューティング
60.1.5. フォローオンフォル
第61章 RH302 RHCE EXAM
- 試験は RH300 に含まれています。独自に購入することもできます。
- すべての RH300 クラスの 5 日目に実施
61.1. 当然の説明
61.1.1. 前提条件
61.1.2. コンテンツ
- セクション I: トラブルシューティングとシステムメンテナーンス(2.5 hrs)
- セクション II: インストールと設定(3 クリス)
第62章 RHS333: Red Hat のエンタープライズセキュリティー:ネットワークサービス
62.1. 当然の説明
62.1.1. 前提条件
62.1.2. 目的
62.1.3. 対象者
62.1.4. 学習目的
- 基本的なサービスセキュリティーのマスター
- 暗号化について
- システムアクティビティーのロギング
- BIND および DNS のセキュア化
- ネットワークユーザー認証のセキュリティー
- NFS セキュリティーの強化
- セキュアシェル:OpenSSH
- Sendmail および Postfix による電子メールのセキュア化
- FTP アクセスの管理
- Apache セキュリティー
- 侵入応答の基本
62.1.5. フォローオンフォル
第63章 RH401: Red Hat エンタープライズ 導入およびシステム管理
63.1. 当然の説明
63.1.1. 前提条件
63.1.2. 目的
63.1.3. 対象者
63.1.4. 学習目的
- CVS を使用した設定管理
- カスタム RPM パッケージの構築
- Red Hat Network Proxy Server によるソフトウェア管理
- ホストのプロビジョニングおよび管理システムのアセンブル
- パフォーマンスチューニングおよび分析
- 高可用性ネットワーク負荷分散クラスター
- 高可用性アプリケーションのフェイルオーバークラスター
63.1.5. フォローオンフォル
第64章 RH423: Red Hat Enterprise Directory サービスと認証
64.1. 当然の説明
64.1.1. 前提条件
64.1.2. 目的
64.1.3. 対象者
64.1.4. 学習目的
- LDAP の基本概念
- OpenLDAP サーバーの設定および管理方法
- Using LDAP as a "white pages" directory service
- ユーザー認証および管理での LDAP の使用
- 複数の LDAP サーバーの統合
64.1.5. フォローオンフォル
第65章 SELinux で
65.1. RHS427: SELinux と Red Hat Targeted ポリシーの概要
65.1.1. 対象者
65.1.2. 当然サマリー
65.2. RHS429: Red Hat Enterprise SELinux ポリシー管理
第66章 RH436: Red Hat Enterprise Storage Management
- 5 つのサーバー
- ストレージアレイ
66.1. 当然の説明
66.1.1. 前提条件
66.1.2. 目的
66.1.3. 対象者
66.1.4. 学習目的
- Red Hat Enterprise Linux ストレージ管理テクノロジーを確認する
- データストレージ設計:データ共有
- Cluster Suite の概要
- Global File System (GFS)の概要
- GFS 管理
- オンラインの GFS 環境の変更:データ容量の管理
- GFS の監視
- GFS 変更を実装
- クラスタースイート NFS の DAS から GFS への移行
- GFS を使用したクラスタースイートの再検討
66.1.5. フォローオンフォル
第67章 RH442: Red Hat Enterprise システムの監視およびパフォーマンスチューニング
67.1. 当然の説明
67.1.1. 前提条件
67.1.2. 目的
- システムアーキテクチャーとシステムパフォーマンスのシステムアーキテクチャーの影響を理解することに重点を置いた説明
- パフォーマンス調整の影響をテストする方法(benchmarking)
- オープンソースのベンチマークユーティリティー
- システムのパフォーマンスおよびネットワークパフォーマンスを分析する方法
- 特定のアプリケーション負荷に対する設定のチューニング
67.1.3. 対象者
67.1.4. 学習目的
- システムパフォーマンスに関連するシステムコンポーネントおよびアーキテクチャーの概要
- 製造元のハードウェア仕様を有用な情報に変換する
- 標準の監視ツールを効果的に使用してトレンド情報を収集および分析
- SNMP でのパフォーマンス関連のデータの収集
- オープンソースのベンチマークユーティリティーの使用
- ネットワークパフォーマンスチューニング
- アプリケーションのパフォーマンスチューニングに関する考慮事項
- 特定の設定のチューニング
67.1.5. フォローオンフォル
第68章 Red Hat Enterprise Linux 開発者
68.1. RHD143: Red Hat Linux Programming Essentials
68.2. RHD221 Red Hat Linux デバイスドライバー
68.3. RHD236 Red Hat Linux Kernel Internals
68.4. RHD256 Red Hat Linux アプリケーション開発および移植
第69章 JBoss 社
69.1. RHD161 JBoss および EJB3 for Java
69.1.1. 前提条件
- 継承、ポリモーフィズム、カプセル化のオブジェクト指向の概念
- Java 構文(データタイプ、変数、演算子、ステートメント、制御フロー用)
- Java クラスの作成、および Java インターフェイスおよび抽象クラスの使用
69.2. RHD163 JBoss for Web Developers
69.2.1. 前提条件
- JNDI
- Servlet 2.3/2.4 API
- The JSP 2.0 API
- JBoss Application Server での J2EE アプリケーション開発およびデプロイメント
- 組み込み(スタンドアロン)Tomcat または統合された Tomcat (JBossWeb)への Web アプリケーションのデプロイメント
- JDBC および EJB2.1 または EJB3.0 の実務知識
69.3. RHD167: JBOSS - HIBERNATE ESSENTIALS
69.3.1. 前提条件
- リレーショナル永続化モデルを理解している
- Java 言語での競合
- OOAD の概念に関する知識
- UML に精通している
- SQL のダイアレクトの使用経験
- JDK を使用してコマンドラインから Java 実行可能ファイルのコンパイルおよび実行に必要な環境を作成する
- JDB を理解していること
69.3.2. 当然サマリー
69.4. RHD267: JBOSS - ADVANCED HIBERNATE
69.4.1. 前提条件
- Hibernate の基本知識。
- Java 言語での競合
- OOAD の概念に関する知識
- UML に精通している
- SQL のダイアレクトの使用経験
- JDK を使用して、コマンドラインから Java 実行可能ファイルのコンパイルおよび実行に必要な環境を作成します。
- JNDI および JDBC の豊富な経験または包括的な知識。
- 前提条件ではなく、エンティティー EJB2.1 または EJB3.0 の知識が役立ちます。
- Christian Bauer および Gavin King (Manning によって公開)によると、Hibernate in Action を読む前に推奨されます。
69.5. RHD261:JBOSS for advanced J2EE developers
69.5.1. 前提条件
- JNDI
- JDBC
- サーブレットとJSP
- Enterprise Java Beans
- JMS
- J2EE セキュリティーモデル
- JBoss アプリケーションへの J2EE アプリケーションの開発およびデプロイ
- ANT および XDoclet または同様のテクノロジーの使用経験。
69.6. RH336: 管理者向けの JBOSS
69.6.1. 前提条件
- ディレクトリー、ファイルの作成、およびファイルストアへのアクセス権限の変更
- JDK のインストール
- オペレーティングシステム用の JAVA_HOME などの環境変数の設定
- Java アプリケーションの起動と、Java アプリケーションを起動する OS 依存スクリプトの実行
- Java アーカイブファイルの作成および拡張(jar ユーティリティー)
69.6.2. 当然サマリー
69.7. RHD439: JBoss Clustering
69.7.1. 前提条件
- JTA、トランザクション、Java 並行処理
- EJB 2.1、JMS、信頼できるメッセージング技術
- Apache httpd と mod_jk や mod_proxy への何らかの公開経験
- JBoss AS マイクロカーネルと JMX に精通している
- TCP/IP、UDP、マルチキャストについて
69.8. RHD449: JBoss jBPM
69.8.1. 説明
69.8.2. 前提条件
- 学生は、Hibernate アプリケーションの開発経験が必要です。学生は、Hibernate 用のシンプルなセッションファクトリーの設定方法、Hibernate Session およびトランザクション境界を利用する方法、および Hibernate オブジェクトで基本的なクエリーを実行する方法を知っている必要があります。
- Java アプリケーション開発との競合
- ワークフローとビジネスプロセスモデラー(BPM)の概念に対する以前の公開は必要ありません。
- JBoss プラグインを使用した JBoss Eclipse または Eclipse IDE の使用が推奨されていますが、必須ではありません。
- JUnit テストフレームワークの基本概念が推奨されます。
69.9. RHD451 JBoss Rules
69.9.1. 前提条件
- 基本的な Java 競合
- 推論規則エンジンとスクリプトエンジンの設定についての理解
- 対象ルールの表示とデモが推奨されますが、必須ではありません。
- Java EE 固有の経験は必須ではありませんが、Java EE との統合方法を学ぶ必要のある方は適切な経験が必要です。
付録A 更新履歴
改訂履歴 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
改訂 11-1 | Tue 30 Jun 2015 | Barbora Ančincová | |||||||||||
| |||||||||||||
改訂 11-0 | Fri 12 Sep 2014 | Barbora Ančincová | |||||||||||
| |||||||||||||
改訂 10-0 | Tue 01 Oct 2013 | Jaromír Hradílek | |||||||||||
| |||||||||||||
改訂 9-6 | Tue Jan 08 2013 | Jaromír Hradílek | |||||||||||
| |||||||||||||
改訂 8-0 | Tue Feb 21 2012 | Jaromír Hradílek | |||||||||||
| |||||||||||||
改訂 7-0 | Thu Jul 21 2011 | Jaromír Hradílek | |||||||||||
| |||||||||||||
改訂 6-0 | Thu Jan 13 2011 | Jaromír Hradílek | |||||||||||
| |||||||||||||
改訂 5-0 | Thu July 30 2010 | Douglas Silas | |||||||||||
| |||||||||||||
改訂 4-2 | Wed Sep 30 2009 | Douglas Silas, Jaromír Hradílek, Martin Prpic | |||||||||||
| |||||||||||||
改訂 4-1 | Mon Sep 14 2009 | Douglas Silas | |||||||||||
| |||||||||||||
改訂 4-0 | Wed Sep 02 2009 | Douglas Silas | |||||||||||
| |||||||||||||
改訂 3-0 | Wed Jan 28 2009 | Michael Hideo Smith | |||||||||||
|
付録B コロンフィン
- east Asian Languages
- 簡体字中国語
- Tony Tongjie Fu
- Simon Xi Huang
- Leah Wei Liu
- Sarah Saiying Wang
- 繁体字中国語
- Chester Cheng
- Terry Chuang
- Bu Hung-Pin Wu
- 日本語
- Kiyoto Hashida
- Junko Ito
- Noriko Mizumoto
- Takuro Nagamoto
- 韓国語
- Eun-ju Kim
- Michelle Kim
- Latin 言語
- フランス語
- Jean-Paul Aubry
- Fabien Decroux
- Myriam Malga
- Audrey Simons
- Corina Roe
- ドイツ語
- Jasna Dimanoski
- Verena Furhuer
- Bernd Groh
- Daniela Kugelmann
- Timo Trinks
- イタリア語
- Francesco Valente
- ブラジルポルトガル語
- Glaucia de Freitas
- Leticia de Lima
- David Barzilay
- スペイン語
- Angela Garcia
- Gladys Guerrero
- Yelitza Louze
- Manuel Ospina
- ロシア語
- Yuliya Poyarkova
- Indic 言語
- Bengali
- Runa Bhattacharjee
- グjarati
- Ankitkumar Rameshchandra Patel
- Sweta Kothari
- Hindi
- Rajesh Ranjan
- マレーナム
- Ani Peter
- Marathi
- Sandeep Shedmake
- Punjabi
- Amanpreet Singh Alam
- Jaswinder Singh
- Tamil
- I Felix
- N Jayaradha