第5章 wheezy で知っておくべき問題点

目次

5.1. LDAP サポート
5.2. ウェブブラウザにおけるセキュリティ更新の状態
5.3. ConsoleKit および代替ディスプレイマネージャ
5.4. GNOME デスクトップに関する変更とサポート
5.5. KDE デスクトップの変更
5.6. ネットワークマネージャ
5.7. perl-suid の削除
5.8. Request Tracker のバージョン
5.9. bootlogd の変更
5.10. /etc/mtab_netdev
5.11. pdksh から mksh への移行
5.12. Puppet 2.6 / 2.7 の互換性
5.13. ツールチェーンにとっての multiarch の実装
5.14. Cyrus SASL SQL バックエンド
5.15. ネットワークおよびグラフィックドライバのファームウェア

新しいリリースに導入された変化には当然のように副作用がつきもので、どこか他の場所でバグを出してしまうこともあります。この章では、現時点で私たちが知っている問題点を記載しています。正誤表・関連パッケージの付属文書・バグ報告や、「もっと読みたい」で触れられているその他の情報も読んでください。

5.1. LDAP サポート

LDAP ライブラリ中で使われている暗号化ライブラリの機能は、TLSSSL を使っている LDAP サーバに接続する際に、LDAP を使っていて有効になっている特権を変更しようとするプログラムの接続障害を引き起こします。sudosuschroot のような libnss-ldap を使っているシステムの setuid プログラムや、sudo-ldap のような LDAP 検索を実行する setuid プログラムに問題が発生します。

libnss-ldap パッケージを、すべての LDAP 検索に分割されたデーモン (nslcd) を使っている新しいライブラリである libnss-ldapd に置き換えることをお勧めします。libpam-ldap の代替品は libpam-ldapd です。

libnss-ldapd が、NSS キャッシュデーモン (nscd) をインストール前にあなたの環境に適しているかどうかを評価するのを推奨している点にご注意ください。nscd の代替としては unscd が考えられます。

更なる情報は、バグ#566351 およびバグ#545414 で得られます。

5.2. ウェブブラウザにおけるセキュリティ更新の状態

Debian 7.0 は複数のブラウザエンジンを含んでおり、これらは一定の割合でセキュリティ脆弱性の影響を受けます。高い脆弱性率と一部開発元での長期間サポートブランチの欠落によって、セキュリティ修正をバックポートしてこれらのブラウザをサポートする事が難しくなっています。さらに、ライブラリへの内部依存性のため、開発元の新しいリリースバージョンへの更新を不可能にしています。そのようなものとしては、Wheezy に含まれている webkit・qtwebkit・khtml エンジンを使ったブラウザがありますが、これらは完全なセキュリティサポートはされません。一般的にこれらのブラウザを信用できないウェブサイトを閲覧するのに使うべきではありません。

通常、ウェブブラウザを利用するには、Mozilla xulrunner エンジンを使ったブラウザ (Iceweasel および Iceape)、あるいは Chromium をお勧めします。

Xulrunner は、これまでのリリースサイクルで古いリリースバージョンへのバックポートが良好だった経歴を持っています。Chromium - Webkit のコードをベースに構築されています - は独立したパッケージで、最新の Chromium を安定版上で再構築して最新状態を維持します。

5.3. ConsoleKit および代替ディスプレイマネージャ

Debian 7.0 の ConsoleKit は startx により開始されたセッションやローカル側に consolekit 統合機能がないディスプレイマネージャ (例えば xdmslim) には対応しておらず、デバイスによってはアクセスできません。

gdm3kdmlightdm のどれかを代わりに使うことを勧めます。

5.4. GNOME デスクトップに関する変更とサポート

デフォルトでは、一部のアクセシビリティツールは GNOME ディスプレイマネージャー (gdm3) では有効にされていません。拡大鏡やビジュアルキーボードを使えるようにするのにもっとも簡単なやり方は、シェル greeter を有効にする事です。

これを行うには、/etc/gdm3/greeter.gsettings ファイルを編集して、以下のようにします:

session-name='gdm-shell'

上記をコメントアウトして以下の様にします

session-name='gdm-fallback'

互換性がある 3D グラフィックカードが必要になることに注意してください — デフォルトでは有効になっていない理由がこれです。

5.5. KDE デスクトップの変更

knetworkmanager パッケージは時代遅れとなり、新しい KDE Plasma Workspace の plasma-widget-networkmanagement で置き換えられています。

時代遅れとなったスタンドアロンのアプリケーションである knetworkmanager を使っている場合、手作業による設定がアップグレード後に必要となるはずです。plasma-widget-networkmanagement を手作業でパネルかデスクトップに追加する必要があるかもしれません。

また、network-manager widget が動作していることにネットワーク接続が依存しない方が好ましい場合、system connection で設定するといいかもしれません。

5.6. ネットワークマネージャ

NetworkManager はネットワークインターフェースが ifupdown により管理されているかどうか検出して衝突を回避することができますが、wicd-daemon 等、他のネットワーク管理プログラムの検出には対応していません。こういった 2 つのデーモンが同一のインターフェースを管理した場合、ネットワークに接続しようとしたときに問題や想定外の挙動が発生する可能性があります。

例えば wicd-daemonNetworkManager がともに動作している場合に wicd クライアントを使って接続しようとすると失敗して

接続に失敗しました: パスワードが間違っています

というエラーメッセージを出します。NetworkManager クライアントを使った場合は同様に失敗して

NetworkManager は実行されていません。実行してください。

というメッセージを出します。GNOME のユーザには NetworkManager デーモンをインストールして試してみることを勧めますが、コマンド

# update-rc.d network-manager disable

を使うことにより、必要に応じて NetworkManager デーモンを恒久的に無効化することもできます。デーモンを無効化したら、/etc/resolv.conf の内容を確認することを勧めます。このファイルは名前解決用の DNS サーバを指定するのに使われ、その内容は NetworkManager により書き換えられていることがあります。

5.7. perl-suid の削除

suidperl は、開発元により 5.12 で削除されました。そのため Debian で配布されていた perl-suid パッケージも削除されています。ハードコードした場所から perl スクリプトを実行するシンプルな setuid C ラッパーを使う、あるいはより汎用的な sudo などのツールを使うのが代替として考えられます。

5.8. Request Tracker のバージョン

squeeze のシステムに request-tracker3.8 を入れている場合、このパッケージは wheezy では削除されており、request-tracker4 に置き換えられている点に注意してください。request-tracker3.8 から request-tracker4 へのアップグレードには、いくつか手作業が必要になります: request-tracker3.8 のインストールはそのままにして request-tracker4 をインストールし、/usr/share/doc/request-tracker4/README.Debian.gz にあるインストール/アップグレードの注意 (Upgrading from request-tracker3.8 to request-tracker4 の章) に従ってください。

以前の Debian リリースでの request-tracker3.6 やそれ以前のパッケージをまだ使っている場合、同じアドバイスが当てはまります。そのような場合、適切なアップグレード文書に従って、一つずつアップグレードする事をお勧めします。

5.9. bootlogd の変更

bootlogd は、sysvinit-utils から bootlogd パッケージに分離されました。bootlogd を使いつづけたい場合は、bootlogd パッケージをインストールする必要があります。設定ファイル /etc/default/bootlogd とそのオプション BOOTLOGD_ENABLE はもはや存在しないことに注意してください: bootlogd を動作させたくない場合は、 bootlogd パッケージを削除してください。

5.10. /etc/mtab_netdev

現在マウントされているファイルシステム一覧の保管に利用されるファイル /etc/mtab/proc/mounts へのシンボリックリンクに変更されています。ほぼすべての場合、この変更によって一覧が現実と合わなくなることがなくなるため、システムの健全性は向上することになります。 しかし、/etc/fstab_netdev オプションを使ってそのファイルシステムが特別な処理を必要とするネットワークファイルシステムであることを示している場合、リブート後にはこれは /proc/mounts でセットされなくなります。NFS 等、_netdev オプションに依存しない標準的なネットワークファイルシステムでは問題は発生しません。この問題の影響のないファイルシステムには、cephcifscodagfsncpncpfsnfsnfs4、+ocfs2smbfs があります。シャットダウン時に正常にマウント解除するのに _netdev に依存しているファイルシステムでは、例えば NBD を使う際に、通常ファイルの mtab が _netdev を wheezy で利用する唯一の方法となります。こういった状況がある場合は、wheezy へのアップグレード完了後に以下のようにして、通常ファイルの /etc/mtab を復元してください:

  • /etc/init.d/checkroot.sh を編集し、以下の行をコメントアウトしてください:

            if [ "$rootmode" != "ro" ]; then
                    mtab_migrate
            fi
    

  • 既にシステムをリブートしていれば、/etc/mtab はもうシンボリックリンクになっています:

    # rm /etc/mtab
    # cp /proc/mounts /etc/mtab
    

    当該ファイルシステムをマウントし直して _netdev オプションを再び追加します:

    # mount -o remount filesystem
    

    次にシステムをリブートしたときに /etc/mtab は完全に作り直されます。

5.11. pdksh から mksh への移行

pdksh が保守されなくなっているため (活発な開発は 1999 年以降行われていません)、Public Domain Korn Shell (pdksh) パッケージは wheezy 以後のリリースからは退役となります。

MirBSD Korn Shell (mksh) パッケージがその後継となります。これは Public Domain Korn Shell から発展したもので、シェルの最新の POSIX 標準を保っています。Debian wheezy では、pdkshmksh の改良型である lksh を利用した移行用パッケージとなっています。このパッケージは特別に互換用のオプションを指示してビルドされ、pdksh バイナリへのシンボリックリンクを提供します。この互換用バイナリは現在の mksh よりも、古い Public Domain Korn Shell に近い挙動をとります。しかし、挙動の変更を伴うバグ修正が取り入れられているため、全くそのままで置き換えられるものではありません。そういったわけで、

#!/bin/pdksh

となっているスクリプトを

#!/bin/mksh

に変更してテストすることをお勧めします。テストが失敗する場合にはスクリプトの修正を勧めます。何らかの理由により修正できない場合は、

#!/bin/lksh

スクリプトに変更してテストをやり直してみてください。このテストはコードを大幅に変更せずに成功する可能性が高くなります。しかし、移行用パッケージは将来のある時点で Debian から削除される予定であることに注意してください。

この互換用バイナリは対話的な利用には適していないため、システム管理者として Korn Shell ユーザのログインシェルを調整してください。サービス中断を最小限にするため、OS のアップグレードの前に手作業で mksh パッケージをインストールして pdksh を利用しているユーザのログイン用/対話用シェルを mksh に変更してください。さらに、/etc/skel/.mkshrc をそれぞれのホームディレクトリにコピーしておくことを勧めます。これにより、pushdpopddirs 等一部のシェル機能や立派な

PS1

(シェルプロンプト) が提供されます。

5.12. Puppet 2.6 / 2.7 の互換性

Puppet により管理されているシステムを squeeze から wheezy にアップグレードする場合、その puppetmaster は確実に Puppet バージョン 2.7 以降である必要があります。squeeze の puppetmaster がマスターとして動作している場合、管理する wheezy システムに接続することができません。

こういった組み合わせの場合、puppet agent の実行時に

Could not retrieve catalog from remote server: Error 400 on SERVER: No support for http method POST

というエラーメッセージを出すことになります。この問題の解決には puppetmaster のアップグレードが必要です。2.7 のマスターは 2.6 のクライアントシステムを管理することができます。

5.13. ツールチェーンにとっての multiarch の実装

multiarch の導入 (「Multiarch」 で説明されています) により一部のファイルのパスが変更されているため、ツールチェーン側での前提が成り立たなくなっているかもしれません。Debian のツールチェーンは更新されていますが、ビルドや外部コンパイラを使おうとするユーザは留意する必要があるかもしれません。

こういった問題への対処についての情報が /usr/share/doc/libc6.1/NEWS.Debian.gz やバグ報告 #637232 にあります。

5.14. Cyrus SASL SQL バックエンド

libsasl2-modules-sql パッケージにより提供される Cyrus SASL 用の SQL エンジンのバックエンドの設定が、データベース固有 (例えば mysql) の設定から一般的な sql auxprop プラグインに変更されています。

SASL を利用するアプリケーションの設定ファイルは更新の必要があります。例えば

auxprop_plugin: mysql

は次のようになります:

auxprop_plugin: sql
sql_engine: mysql

さらに、SQL クエリ (使っている場合) は %u%u@%r に置き換える必要があります。これはユーザと認可領域 (realm) が別個に提供されるようになったためです。

5.15. ネットワークおよびグラフィックドライバのファームウェア

(有線/無線) ネットワークカード用ドライバを含め、一部のハードウェアのドライバでは ATI/AMD グラフィックチップセット用ドライバと同様に、正常に機能するためにロードできるファームウェアが必要です。

この種のファームウェアは、フリーソフトウェアではないために non-free アーカイブの firmware-linuxその他のパッケージからのみ利用可能な場合が多くあります。