1.5.4. 変更の適用

セキュリティに関するエラータと更新をダウンロードしてインストールした後は、古いソフトウェアの使用を中止して新しいソフトウェアの使用を開始することが重要です。これを実際に行う方法は、更新済みのソフトウェアの種類によって異なります。以下では、ソフトウェアの一般的なカテゴリを示し、パッケージのアップグレード後に更新バージョンを使用する方法について説明します。

注記

一般に、システムの再起動は、ソフトウェアパッケージの最新バージョンが使用されていることを確認するための最も確実な方法です。ただし、このオプションはシステム管理者に常に必要、または利用可能というわけではありません。
アプリケーション
ユーザースペースのアプリケーションとは、システムユーザーが開始可能なすべてのプログラムのことです。一般的に、このようなアプリケーションは、ユーザー、スクリプトまたは自動化されたタスクユーティリティがそれらを起動する場合にのみ使用されるものであり、長い期間持続するものではありません。
ユーザースペースのアプリケーションが更新されると、システムにあるアプリケーションのすべてのインスタンスが停止し、更新バージョンを使用するためにプログラムが再起動されます。
カーネル
カーネルは、Red Hat Enterprise Linux オペレーティングシステムの中心的なソフトウェアコンポーネントです。カーネルはメモリー、プロセッサーおよび周辺機器へのアクセスを管理するだけでなく、すべてのタスクをスケジュールします。
カーネルは中心的な役割を担うので、カーネルの再起動にはコンピューターの停止が伴います。つまりカーネルの更新バージョンは、システムの再起動後にはじめて使用できるようになります。
共有ライブラリ
共有ライブラリは、glibc のように、多くのアプリケーションやサービスにより使用されるコードの集合です。通常、共有ライブラリを使用しているアプリケーションは、アプリケーションが初期化されるときに共有コードを読み込みます。そのため、更新されたライブラリを使用しているすべてのアプリケーションは、まず停止してから再起動する必要があります。
特定ライブラリにリンクしている実行中のアプリケーションを判別するには、以下の例のように lsof コマンドを使用します。
lsof <path>
例えば、libwrap.so ライブラリにリンクしている実行中のアプリケーションを判別するには、以下を入力します。
~]# lsof /lib64/libwrap.so*
COMMAND     PID      USER  FD   TYPE DEVICE SIZE/OFF   NODE NAME
sshd      13600 root mem    REG  253,0    43256 400501 /lib64/libwrap.so.0.7.6
sshd      13603 juan mem    REG  253,0    43256 400501 /lib64/libwrap.so.0.7.6
gnome-set 14898 juan mem    REG  253,0    43256 400501 /lib64/libwrap.so.0.7.6
metacity  14925 juan mem    REG  253,0    43256 400501 /lib64/libwrap.so.0.7.6[出力は省略されています]
このコマンドは、ホストのアクセス制御に TCP Wrapper を使用する実行中のプログラムの一覧を返します。そのため tcp_wrappers パッケージが更新される場合には、リストにあるすべてのプログラムを中止し、再起動する必要があります。
SysV サービス
SysV サービスは、ブート中に起動される永続的なサーバープログラムです。SysV サービスの例としては、 sshdvsftpd、および xinetd があります。
通常、これらのプログラムはマシンが稼働している間はメモリ内に残るので、パッケージのアップグレード後にはそれぞれの更新 SysV サービスを停止してから再起動する必要があります。これは、サービス設定ツールを使用するか、または root としてシェルプロンプトにログインし、以下の例のように /sbin/service コマンドを発行することで実行されます。
/sbin/service <service-name> restart
上記の例にある <service-name>sshd などのサービス名に置き換えます。
xinetd サービス
xinetd スーパーサービスによって管理されているサービスは、アクティブな接続があるときにのみ実行されます。xinetd に制御されるサービスの例には、Telnet、IMAP、および POP3 などがあります。
これらのサービスの新規インスタンスは、新しい要求が受信されるたびに xinetd が起動されるので、アップグレード後に発生する接続は更新ソフトウェアによって処理されます。ただし、xinetd が制御するサービスのアップグレード時にアクティブな接続がある場合、それらは古いバージョンのソフトウェアによって処理されます。
xinetd が制御する特定サービスの古いインスタンスを停止するには、そのサービスのパッケージをアップグレードしてから、現在実行中のすべてのプロセスを停止します。プロセスが実行中であるかどうかを判別するには ps または pgrep コマンドを使用し、kill または killall コマンドを使用してサービスの現在のインスタンスを停止します。
例えば、imap パッケージのセキュリティエラータがリリースされている場合、パッケージをアップグレードしてから、シェルプロンプトに root として以下のコマンドを入力します。
~]# pgrep -l imap
1439 imapd
1788 imapd
1793 imapd
このコマンドはすべてのアクティブな IMAP セッションを返します。それぞれのセッションを終了するには、root として以下のコマンドを発行します。
kill <PID>
セッションの終了に失敗した場合は、代わりに以下のコマンドを使用します。
kill -9 <PID>
上記の例では、<PID> を IMAP セッションのプロセス ID 番号 (pgrep -l コマンドの 2 番目の列) に置き換えます。
すべてのアクティブな IMAP セッションを終了するには、以下のコマンドを発行します。
~]# killall imapd