<< Back to man.lupaworld.com


[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 次のページ ]

Debian リファレンス
第 9 章 - Debian システムのチューニング


本章はシステム設定の基本をコマンドラインインターフェース のみで説明します。本章を読む前にDebian システムインストールのヒント, 第 3 章を読んで下さい。

セキュリティに関して関心があるなら、 harden-doc パッケージにある Securing Debian Manual を読んでください。


9.1 システムの初期化

Debian は Systen V 形式の init スクリプトシステムを採用しています。 イントロダクションとして init プログラム, 第 2.4.1 節 をご覧ください。


9.1.1 init スクリプトのカスタマイズ

init スクリプトの挙動を制御する最も易しい方法は /etc/default/ ディレクトリにある init スクリプトのような名前のファイルにある環境変数の 指定を変更することです。 [40] 例えば、/etc/default/hotplug/etc/init.d/hotplug の挙動を制御するために使えます。 /etc/default/rcS ファイルは motdsulogin などのブート時の標準をカスタマイズするために使えます。

これらの変数を変更することにより望みの挙動を実現できない場合は、 init スクリプト自身を修正できます。これらは全て設定ファイルです。


9.1.2 システムのログ記録をカスタマイズする

システムのログモードは /etc/syslog.conf を使って設定可能です。 システムのログファイルに色づけするためのプログラムについては colorize パッケージをチェックしてください。 又、syslogd(8)syslog.conf(5) もご覧ください。


9.1.3 ハードウェアの最適化

Debian でシステム管理者に管理が任されているハードウェアの最適化設定はあまり ありません。

noatime オプション付でファイルシステムをマウントすることも ファイルへの読み込みアクセスが高速化するには非常に効率的です。 fstab(5)mount(8) をご覧ください。

proc ファイルシステムを通じて Linux kernel 自身により直接チューンできる ハードウェアもあります。proc filesystem により Linux kernel をチューニングする, 第 7.3 節 をご覧ください。

Debian には特定のハードウェアに特化した設定ユーティリティが数多く存在します。 これらの多くはノート PC に特定したニーズに対応しています。ここに Debian で 得られるいくつかの興味深いパッケージを挙げます。

ここで、ACPI は APM より新しい電源管理システムのフレームワークです。

これらのパッケージのいくつかは特別な kernel モジュールを要求します。 これらは多くの場合、既に最新の kernel ソースに含まれています。 問題が発生した場合、kernel に最新のパッチを適用する必要があるかもしれません。


9.2 アクセス制限


9.2.1 PAM を用いたログイン制限

PAM (Pluggable Authentication Modules) により、ユーザのログイン方法を制御 できます。

     /etc/pam.d/*             # PAM 制御ファイル
     /etc/pam.d/login         # ログイン用の PAM 制御ファイル
     /etc/security/*          # PAM モジュールパラメータ
     /etc/securetty           # 端末による root でのログインを制御
     /etc/login.defs          # ログインの挙動を制御

自分でリスクを負って、安全ではないがパスワード無しで端末にログインしたい 場合は、/etc/pam.d/login の内容を次のように変えてください。

     #auth       required   pam_unix.so nullok
     auth       required   pam_permit.so

パスワード無しで X コンソールにログインするために同様のトリックを xdm, gdm などに適用できます。

一方、良いパスワードポリシーを実施したい場合には、次のように cracklib2 をインストールして /etc/pam.d/passwd をセットしてください。

     password required       pam_cracklib.so retry=3 minlen=6 difok=3

ワンタイムログインパスワードも役に立つかもしれません。 この目的には、passwd コマンドを -e オプション付で 使ってください。passwd(1) をご覧ください。

Bash シェルではプロセスの最大数を ulimit -u 1000 としてセット できますし、/etc/security/limits.conf で PAM から設定 することもできます。core のような他のパラメータも 同様に設定できます。PATH の初期値はシェル起動スクリプトの 起動前に /etc/login.defs によりセットできます。

PAM のドキュメントは libpam-doc パッケージで パッケージングされています。Linux-PAM システム管理者ガイド は PAM の設定、必要なモジュールなどについてカバーしています。この ドキュメントは Linux-PAM アプリケーション開発ガイドLinux-PAM モジュール開発者ガイド も含んでいます。


9.2.2 "なぜ GNU suwheel グループを サポートしていないのか"

これは Richard M. Stallman による古い info su ページの末尾にある 有名なフレーズです。心配ありません。Debian にある現在の su は PAM を使っているので、su が使える能力を /etc/pam.d/su にある pam_wheel.so を使って あらゆるグループに対して制限できます。次の設定は Debian システムの adm グループを BSD の wheel グループと同じようにセットし、 このグループに属するメンバーがパスワード無しで su を使用することを許可します。

     # /etc/pam.d/su において反 RMS 設定を行う
     auth       required   pam_wheel.so group=adm
     
     # Wheel メンバーがパスワード無しで suを使えるようにする
     auth       sufficient pam_wheel.so trust group=adm

9.2.3 標準で存在するグループの目的

興味深いグループがいくつか存在します。

完全なリストは、Woody では harden-doc パッケージでも見つかる Securing Debian Manual の "FAQ" セクションをご覧ください。 又、新しい base-passwd (3.4.6 以降) にも信頼できる リスト: /usr/share/doc/base-passwd/users-and-groups.html が含まれます。


9.2.4 – sudo を使ってより安全に作業をする

私の sudo の使いかたはほとんど自分のミスからの防御が目的です。 個人的には、sudo を使うことは、常に root としてシステムを使う ことに対するより良い代替手段と考えます。

sudo をインストールして /etc/sudoers にあるオプションを 設定して有効にします。また、/usr/share/doc/sudo/OPTIONS にある sudo グループ機能を調べます。

設定サンプルは "staff" グループのメンバが sudo の元で root としてあらゆるコマンドを起動することと "src" メンバが sudo の元で root として選ばれたコマンドを起動することを許可します。

sudo の利点は、ユーザの普通のログインパスワードしか必要とせず、 その行動がモニタできるということです。これはシステム管理者補にいくらかの 権限を与える良い方法です。例えば、

     $ sudo chown -R myself:mygrp .

もちろん root パスワードを知っている場合、(ほとんどのホームユーザがしているように) ユーザアカウントから root としてコマンドを起動できます。

     $ su -c "shutdown -h now"
     Password:

(管理者アカウントの sudo 権限を強化すべきだと知っていますが、 これは私のホームサーバなので、まだ困っていません。)

通常のユーザが root 権限でコマンドを実行することを許可するプログラムが 他にあります。super パッケージをご覧ください。


9.2.5 サービスへのアクセスを制限する

インターネット スーパーサーバ すなわち inetd は ブート時に /etc/init.d/inetd のシンボリックリンクである /etc/rc2.d/S20inetd (ランレベルが 2の場合) により起動されます。 基本的に、inetd は 1つの起動中のデーモンが複数の他のデーモン を起動し、システムの負荷を低減することを許可します。

サービス要求が届いた時には常に /etc/protocols/etc/services にあるデータベース を検索することによりプロトコル並びにサービスが識別されます。 そして inetd は通常のインターネットサービスを /etc/inetd.conf データベース、 Sun-RPC ベースのサービスを /etc/rpc.conf にあるデータベースから 捜し出します。

システムのセキュリティのために、/etc/inetd.conf にある 使用しないサービスを必ず無効化してください。 Sun-RPC サービスは NFS や他の RPC ベースのプログラムが必要とします。

時々、inetd は意図したサーバを直接起動しませんが、 tcpd TCP/IP デーモンラッパプログラムが意図したサーバ名を用いて /etc/inetd.conf にある引数として起動されます。

この場合、tcpd は要求を記録した後に適切なサーバプログラムを 起動し、/etc/hosts.deny/etc/hosts.allow を使ったいくつかの付随的な検査を行います。

最近の Debian システムで遠隔アクセスに問題が発生した場合、 /etc/hosts.deny に "ALL: PARANOID" という行が存在する 場合はこれをコメントアウトしてください。

詳細については inetd(8), inetd.conf(5), protocols(5), services(5), tcpd(8), hosts_access(5), そして hosts_options(5) をご覧ください。

Sun-RPC についての詳細は、 rpcinfo(8), portmap(8), そして /usr/share/doc/portmap/portmapper.txt.gz をご覧ください。


9.2.6 集権的認証 – LDAP

Lightweight Directory Access Protocol (LDAP) を使いましょう。 以下を参照してください。


9.3 CD ライター

ATAPI/IDE インターフェースを用いた CD ライターは最近非常にポピュラーな 選択肢になっています。640MB 以下の容量しか必要としないホームユーザ にとってのシステムバックアップとアーカイブのための素晴らしい媒体です。 CD ライターに関する最も信頼できる情報は、LDP CD-Writing-HOWTO をご覧ください。


9.3.1 導入

まず、CD ライターに送るデータが中断すると CD に回復できない被害が発生します。 できるだけ大きなバッファを CD ライターに与えて下さい。 お金を問わないならば、ATAPI/IDE に拘らず、SCSI を使ってください。 接続する IDE インターフェースを選択する場合、ISA バス上 (SB16 カード など) にあるものよりも PCI バス上 (マザーボードにあるものなど) にあるものを 使ってください。

CD ライターが IDE に接続されていると、Linux 2.2 kernel と 2.4 kernel では 通常の IDE CD ドライバの代わりに IDE-SCSI ドライバが働きます。 又、IDE-SCCI ドライバを有効にするには SCSI generic ドライバが必要となります。 最新のディストリビューション (2001 年 3 月現在)により配布されている kernel の使用を仮定すると、CD を焼くためには 2つの可能なアプローチが存在します。

Linux 2.6 カーネルの場合には、通常の IDE ドライバーを使い CD-RW デバイスに /dev/hdx と言ったデバイス名で直接アクセスするべきです。 こうすれば DMA が使えます。


9.3.2 アプローチ 1: モジュール + lilo

Debian パッケージの kernel を使っている場合は、/etc/lilo.conf に次の行を追加してください。複数のオプションを使う場合、スペースでそれらを 区切ってください。

     append="hdx=ide-scsi ignore=hdx"

ここで CD ライターの場所は、ide-scsi ドライバを通してアクセスする場合は hdx により示されます。ここで x は 次のいずれかを表します。

     hda          プライマリ IDE ポートのマスター
     hdb          プライマリ IDE ポートのスレーブ
     hdc          セカンダリ IDE ポートのマスター
     hdd          セカンダリ IDE ポートのスレーブ
     hde から hdh  外部 IDE ポート又は ATA66/100 IDE ポートに接続されたドライブ

root で次のコマンドをタイプすることにより、全設定が有効になります。

     # lilo
     # shutdown -h now

9.3.3 アプローチ 2: kernel 再構築

Debian は kernel を作るために make-kpkg を用います。 複数の kernel イメージを構築するため、make-kpkg の 新しい --append_to_version オプションを用います。 Debian での Linux kernel, 第 7 章 をご覧ください。

make menuconfig を通じて次のセットアップを使用してください。


9.3.4 設定後のステップ

次を実行することによりブート中に kernel の CD ライターのサポートを有効に できます。

     # echo ide-scsi >>/etc/modules
     # echo sg       >>/etc/modules
     # cd /dev; ln -sf scd0 cdrom

手動により CD ライターを有効にするには次を実行します。

     # modprobe ide-scsi
     # modprobe sg

リブート後、このように CD ライターのインストールをチェックできます。

     $ dmesg|less
     # apt-get install cdrecord
     # cdrecord -scanbus

[Warren Dodge による] CD-ROM と CD-R/RW がシステムに同時に存在する場合、時々 ide-scsiide-cd の間で衝突が発生することがありえます。 /etc/modutils/aliaese に次の行を追加して、 update-modules を起動してからリブートしてみてください。

     pre-install      ide-scsi      modprobe ide-cd

この設定は IDE ドライバを ide-scsi の前にロードさせます。 IDE ドライバ ide-cd は ATAPI CD-ROM を制御します。 — これは ide-scsi が制御するデバイスを無視するだけです。


9.3.5 CD イメージファイル (ブータブル)

target-directory/ にあるファイルの CD イメージを cd-image.raw として作成するには、フロッピドライブにブートフロッピを挿入して次を 実行します。 (ブータブルな Joilet TRANS.TBL が有効化されたフォーマット。 ブート不能な場合は、-b-c オプションを取る)

     # dd if=/dev/fd0 target-directory/boot.img 
     # mkisofs -r -V volume_id -b boot.img -c bootcatalog -J -T \
             -o cd-image.raw target_directory/

ブータブル DOS CD-ROM を作るのは面白いハックです。通常の DOS ブートフロッピ ディスクイメージは boot.img にあり、CD-ROM は DOS フロッピが A ドライブにあるかのようにブートします。これを freeDOS を使って行うとより面白いかもしれません。

この CD イメージはループバックデバイスによりマウントして検査できます。

     # mount -t iso9660 -o ro,loop cd-image.raw /cdrom
     # cd /cdrom
     # mc
     # umount /cdrom

9.3.6 CD ライター (R,RW) に書き込む

まず次のようにテストを行います。 (倍速と仮定)

     # nice --10 cdrecord -dummy speed=2 dev=0,0 disk.img

結果が OK ならば、CD-R に次のように書き込みます。

     # nice --10 cdrecord -v -eject speed=2 dev=0,0 disk.img

又は CD-RW ディスクに次のように書き込みます。

     # nice --10 cdrecord -v -eject blank=fast speed=2 dev=0,0 disk.img

次のようにした方が良い CD-RW ドライブもあります。

     # nice --10 cdrecord -v blank=all speed=2 dev=0,0 disk.img

に続いて

     # nice --10 cdrecord -v -eject speed=2 dev=0,0 disk.img

を実行します。 この 2ステップは消去作業中に、書き込み作業を妨害するのを防ぐために 必要となります。nice の引数は幾らか調整が必要となる かもしれません。


9.3.7 CD イメージファイルの作成

ある CD-R や商用 CD は dd によるコピーができなくなるように 終わりに壊れたセクタを持っています。(Windows 98 CD はこの 1つです) cdrecord パッケージには readcd コマンドが付随しています。このコマンドを使うと CD の内容をコピーして イメージファイルを作成できます。データディスクの場合、マウントして df を実行することにより実際のサイズがわかります。 そのブロック数を2で割って実際の CD セクター数がわかります。 (1セクタ = 2048 byte) そして readcd を次に示すオプション付きで実行し、 作成されたディスクイメージを使って CD-R/RW に書き込めます。

     # readcd dev=target,lun,scsibusno # 機能 11 を選択

ここで、ほとんどの場合はこれら 3つのパラメータは全て 0 にセットします。 通常 readcd により与えられるセクタ数は過大です! 実際にマウントして得られる数を使う方がより良い結果をもたらします。

dd を CD に対して使うといくつか問題が発生することを 言及すべきです。dd コマンドを最初に実行すると、 エラーが発生し、末尾が失われた短いディスクイメージができるかもしれません。 次に dd コマンドを実行すると、ディスクサイズが指定されていない 場合、後ろにごみデータが付随した大きなディスクイメージができるかもしれない システムがあるかもしれません。引数として正しいディスクサイズを与えて dd コマンドを 2回実行し、エラーメッセージの後に CD をイジェクトしなければこれらの問題を避けられるようです。 例えば、df により表示されるイメージサイズが 46301184 であった場合、次のコマンドを 2回実行すると 正しいイメージを得られます。(これは経験的な情報です)

     # dd if=/dev/cdrom of=cd.img bs=2048 count=$((46301184/2))

9.3.8 Debian CD イメージ

Debian CD の最新情報を得るには、 Debian CD site を訪れてください。

高速なインターネット接続を持っている場合は、次を用いてネットワーク越しに インストールすることを考えてみてください。

高速なインターネット接続を持っていない場合は、 CD vendor から CD を購入することを 考慮してください。

CD イメージのテスタで無い限り、(たとえ新しい jigdo を使ったとしても) 標準の CD イメージをダウンロードしてバンド幅を無駄に消費しないでください。

言及すべき CD イメージは KNOPPIX - Live Linux Filesystem On CD です。 この CD はハードディスクにインストールせずに機能する Debian システムを ブートします。


9.3.9 システムを CD-R にバックアップ

主要な設定ファイルとデータファイルを CD-R にコピーするには、 backup にあるサンプルバックアップ スクリプトを使います。又、サブディレクトリ全体のコピーとアーカイブ, 第 8.3 節差分バックアップとデータ同期, 第 8.4 節 もご覧下さい。


9.3.10 音楽 CD を CD-R にコピーする

テストしていません。

     # apt-get install cdrecord cdparanoia
     # cdparanoia -s -B
     # cdrecord dev=0,0,0 speed=2 -v -dao -eject defpregap=1 -audio *.wav

又は

     # apt-get install cdrdao #disk at once
     # cdrdao read-cd --device /dev/cdrom --paranoia-mode 3 my_cd # CD を読み込む
     # cdrdao write --device /dev/cdrom --speed 8 my_cd    # 新しい CD を書き込む

cdrdao は (ギャップなどが無い) 真のコピーを作ります。


9.3.11 DVD-R や DVD-RW や DVD+RW への書き込み

DVD に書き込む場合, 2 つのアプローチがあります:


9.4 X

W Window System は XFree86 により 供給されています。Debian システムでは 2つのメジャーバージョンの X サーバ、 すなわち XFree86 Version 3.3 (XF3) と XFree86 Version 4.x シリーズ (XF4) が得られますが、どちらも X.Org による X11R6 規格に基づいています。

X の基礎は、X(7)、LDP XWindow-User-HOWTORemote X Apps mini-HOWTO を参照してください。Debian 特有のユーザガイドは、 xfree86-common パッケージにより供給される /usr/share/doc/xfree86-common/FAQ.gz をご覧下さい。 これには Branded Robinson による興味深く信頼が置けるキーバインディング 問題の報告が含まれます。

X サーバ, 第 9.4.3 節
ユーザのモニタ (CDT,液晶) に X window やデスクトップを 表示し、キーボードやマウスの入力を受け付けるローカルホストでのプログラム。
X クライアント, 第 9.4.4 節
X 互換なアプリケーションソフトを起動する (ローカル又はリモートでの) プログラム

これは他の文脈での通常の "サーバ" と "クライアント" の逆の使いかたです。

"X クライアント" (アプリケーション側) から "X サーバ" (ディスプレイ側) がリモート接続を得るための複数の方法があります。

ssh を除いて、全てのリモート接続は X サーバ上で可能な TCP/IP 接続を要求します。TCP/IP 越しに X を使う, 第 9.4.6 節 をご覧下さい。


9.4.1 X パッケージ

Woody に X システムをインストールするのを簡単にするためにいくつかの (メタ)パッケージが供給されています。

x-window-system-core
このメタパッケージは X Window System を起動するスタンドアロンの ワークステーションに不可欠な構成要素を供給します。X ライブラリ、 X サーバ (xserver-xfree86)、フォント群、そして 基本的な X クライアントおよびユーティリティ群を供給します。
x-window-system
このメタパッケージは XFree86 プロジェクトにより開発されている X Window System としての実質上全ての構成要素を供給するだけでなく、 歴史的に有名なアクセサリプログラムのセットを供給します。 (とりわけ、x-window-system-core, twm, そして xdm などに依存します。これをインストールする場合 x-window-system-core をインストールする必要はありません。)
xserver-common-v3
XFree86 3.x X サーバ (XF3) に共通のファイルやユーティリティです。
xserver-*
何らかの理由で新しい XF4 サーバ (xserver-xfree86) によりサポートされていないハードウェアをサポートするための補助的な XF3 サーバパッケージです。いくつかの古い ATI mach64 カードは XF4 でサポートされていませんし、他のカードも Woody でのバージョンの XF4 ではひどくハングします。(取得可能なパッケージは、 apt-cache search xserver-|less により判明します。 これら XF3 サーバの全ては xserver-common-v3 に 依存します。)

ほとんどの場合、x-window-system パッケージをインストール すべきです。(コンソールでログインしたい場合は、"boot 時に X を無効にさせてくれ!", 第 8.1.4 節 で言及されているように xdm を無効にすることを忘れないで ください。)


9.4.2 X 用のハードウェア検出

X の設定段階でハードウェアの検出を有効にするには、 X システムをインストールする前に次のパッケージをインストールしてください。


9.4.3 X サーバ

X サーバに関する情報は XFree86(1x) をご覧下さい。

ローカルの端末から X サーバを起動するには、次を実行します。

     $ startx -- :<display> vtXX
     例えば、
     $ startx -- :1 vt8 -bpp 16
     ... vt8 で 16bpp モードを用いて X サーバを起動し、localhost:1 に接続

-- の後に与えられた引数は X サーバのためのものです。

X サーバ起動スクリプトをカスタマイズするために ~/.xserverrc スクリプトを使用している場合、本当の X サーバを必ず exec してください。 こうしないと X サーバの起動が遅くなり、exit することに注意してください。 例えば、

     #!/bin/sh
     exec /usr/bin/X11/X -dpi 100 -nolisten tcp

9.4.3.1 X サーバの設定 (version 4)

XF4 サーバの(再)設定を行うには、

     # dpkg-reconfigure --priority=low xserver-common
     # dpkg-reconfigure --priority=low xserver-xfree86

を実行して /etc/X11/XF86Config-4 ファイルを生成し、 dexconf スクリプトを用いて X の設定を行います。


9.4.3.2 X サーバの設定 (version 3)

XF3 サーバの(再)設定を行うには、例えば、ATI mach64 の場合、

     # dpkg-reconfigure --priority=low xserver-common-v3
     # dpkg-reconfigure --priority=low xserver-mach64

を実行して /etc/X11/XF86Config ファイルを生成し、 xf86config-v3 スクリプトを用いて X の設定を行います。


9.4.3.3 X サーバを手動で設定する

Woody の場合、/etc/X11/XF86Config-4 ファイルにユーザの カスタマイズを追加します。 設定ファイル中の次の行を決して編集しないでください。

     ### BEGIN DEBCONF SECTION
     [snip]
     ### END DEBCONF SECTION

その代わり、テキストの前にカスタマイズを追加してください。 例えば、ビデオデバイスをカスタマイズするには、ファイルの 先頭 に次のテキストに似た行を追加してください。

     Section "Device"
       Identifier        "Custom Device"
       Driver            "ati"
       Option            "NoAccel"
     EndSection
     
     Section "Screen"
       Identifier  "Custom Screen"
       Device      "Custom Device"
       Monitor     "Generic Monitor"
       DefaultDepth 24
       Subsection "Display"
         Depth       8
         Modes       "1280x960" "1152x864" "1024x768" "800x600" "640x480"
       EndSubsection
       Subsection "Display"
         Depth       16
         Modes       "1280x960" "1152x864" "1024x768" "800x600" "640x480"
       EndSubsection
       Subsection "Display"
         Depth       24
         Modes       "1280x960" "1152x864" "1024x768" "800x600" "640x480"
       EndSubsection
     EndSection
     
     Section "ServerLayout"
         Identifier        "Custom"
         Screen            "Custom Screen"
         InputDevice       "Generic Keyboard" "CoreKeyboard"
         InputDevice       "Configured Mouse" "CorePointer"
     EndSection

Sarge (この文書の作成時は testing) の場合、 アップグレードを通じてカスタマイズした設定を /etc/X11/XF86Config 保ちたい場合、次のコマンドを root として実行してください。

     # cp /etc/X11/XF86Config-4 /etc/X11/XF86Config-4.custom
     # md5sum /etc/X11/XF86Config-4 > /var/lib/xfree86/XF86Config-4.md5sum
     # dpkg-reconfigure xserver-xfree86

フォントのアンチエイリアス を行うには、 X での TrueType フォント, 第 9.4.13 節 に記述されているように /etc/X11/XF86Config-4 を編集する必要があります。

X の設定ファイルの他の部分もチェックしてみてください。ひどいモニタ設定 はひどいフォントよりも頭痛をもたらします。ですのでリフレッシュレートが 使っているモニタが発揮できるレートと同じ位高いことを確認してください。 (85 Hz なら素晴らしい、75 Hz なら大丈夫、60Hz だと苦痛です)


9.4.4 X クライアント

X クライアントプログラムのほとんどは次のようなコマンドで起動されます。

     client $ xterm -geometry 80x24+30+200 -fn 6x10 -display hostname:0 &

ここで、任意のコマンドライン引数は次を意味します。

X クライアントプログラム (アプリケーション側) 用の標準の displayname は DISPLAY 環境変数によりセットできます。 例えば、環境変数を設定するために X クライアントプログラムより先に 次のコマンドのうちひとつを実行します。

     $ export DISPLAY=:0 
             # 標準、ローカルマシンの第一スクリーン
     $ export DISPLAY=hostname.fulldomain.name:0.2
     $ export DISPLAY=localhost:0

この設定は ~/.xinitrc によりカスタマイズできます。例えば、

     xrdb -load $HOME/.Xresources
     xsetroot -solid gray &
     xclock -g 50x50-0+0 -bw 0 &
     xload -g 50x50-50+0 -bw 0 &
     xterm -g 80x24+0+0 &
     xterm -g 80x24+0-0 &
     twm

X セッションのカスタマイズ, 第 9.4.5.1 節 に記述したように、この設定は startx から実行された場合、Xsession の通常の実行結果を全て上書きします。 その代わり、~/.xsession を苦肉の策としてのみ使ってください。 xsetroot(1x)xset(1x)X リソース, 第 9.4.10 節 をご覧下さい。


9.4.5 X セッション

X セッション (X サーバ + X クライアント) は次のように起動できます。

コンソールは "boot 時に X を無効にさせてくれ!", 第 8.1.4 節 に記述されている方法で取得できます。


9.4.5.1 X セッションのカスタマイズ

標準の起動スクリプト /etc/X11/Xsession/etc/X11/Xsession.d/50xfree86-common_determine-startup/etc/X11/Xsession.d/99xfree86-common_start が組み合わさったもの です。

/etc/X11/Xsession の実行は /etc/X11/Xsession.options にいくらか影響を受け、本質的には 次の順序で最初に見付かったプログラムを exec コマンドで 実行することになります。

  1. 定義されている場合、 ~/.xsession~/.Xsession
  2. 定義されている場合、 /usr/bin/x-session-manager
  3. 定義されている場合、/usr/bin/x-window-manager
  4. 定義されている場合、/usr/bin/x-terminal-emulator

これらのコマンドの正確な意味は Alternative コマンド, 第 6.5.3 節 に記述されている Debian alternative システムにより定義されています。 例えば、

     # update-alternatives --config x-session-manager
     又は
     # update-alternatives --config x-window-manager

GNOME や KDE のセッションマネージャをインストールしたまま他の X ウィンドウマネージャを標準にするには、 /etc/X11/Xsession.d/50xfree86-common_determine-startuphttp://bugs.debian.org/168347 の 2番目のバグレポートに添付されているもの に置き換え (これがすぐに含まれればいいのですが)、 X セッションマネージャを禁じるために次のように /etc/X11/Xsession.options を編集します。

     # /etc/X11/Xsession.options
     #
     # configuration options for /etc/X11/Xsession
     # See Xsession.options(5) for an explanation of the available options.
     # Default enabled
     allow-failsafe
     allow-user-resources
     allow-user-xsession
     use-ssh-agent
     # Default disabled (enable them by uncommenting)
     do-not-use-x-session-manager
     #do-not-use-x-window-manager

上で述べた修正をシステムに行わないと、gnome-sessionkdebase はこれらの X セッションマネージャを含む パッケージとなります。これらを削除すると X ウィンドウマネージャが標準 になります。(Yack, any better idea?)

/etc/X11/Xsession.optionsallow-user-xsession という行が有効になっている場合、 ~/.xsession~/.Xsession を定義したユーザは /etc/X11/Xsession のアクションをカスタマイズできます。

お好みの X ウィンドウ/セッションマネージャを起動するために、 ~/.xsession ファイルの最後のコマンドは exec some-window/session-manager の形にすべきです。

~/.xsession スクリプトの良い例は /usr/share/doc/xfree86-common/examples/xsession.gz に置いておきます。

私はこれをウィンドウマネージャ、スクリーンへのアクセス、ユーザアカウント毎の 言語サポートの設定のために使っています。 ユーザ用に X セッションを開始する, 第 9.4.5.2 節, X で root 権限を取得する, 第 9.4.12 節, そして 多言語 X window システムの例, 第 9.7.9 節 をご覧下さい。

複数の X クライアントプログラムを同時に起動したい場合、 X クライアント, 第 9.4.4 節 の例を見て、それらを ~/.xinitrc ではなく ~/.xsession から起動してください。

ユーザが指定する追加的な X リソースは ~/.Xresources に 保存できます。X リソース, 第 9.4.10 節 をご覧下さい。

X においてユーザがカスタマイズしたキーマップとポインタデバイスのマッピングも ユーザの起動スクリプトで指定できます。X における keymap とポインタボタンマッピング, 第 9.4.11 節 をご覧下さい。


9.4.5.2 ユーザ用に X セッションを開始する

X セッションのカスタマイズ, 第 9.4.5.1 節 に記述されている原則に従い、ユーザ指定の X セッション/ウィンドウマネージャは、指示されたパッケージをインストールし、 次のように ~/.xsession の最後に設定することにより有効化 できます。 (私はシンプルなスタイルと高速性から blackbox/ fluxbox が好きです。)

Window Managers for X をご覧下さい。


9.4.5.3 KDE と GNOME の設定

KDE 又は GNOME 環境を完全に設定するためには、次のメタパッケージが 役立ちます。

これらのパッケージを Recommends を操作できる dselectaptitude のようなツールでインストールすると、 ただ apt-get でインストールするよりも適切な ソフトウェアの選択を行えます。

端末からログインをしたい場合、kdmgdm のような X ディスプレイマネージャを必ず無効に してください。これらは "boot 時に X を無効にさせてくれ!", 第 8.1.4 節 に記述されているように、 メタパッケージといっしょに依存性に従いインストールされるかもしれません。

KDE ではなく、GNOME をシステムの標準にしたい場合、 Alternative コマンド, 第 6.5.3 節 にあるように x-session-manager の 設定を必ず行ってください。


9.4.6 TCP/IP 越しに X を使う

暗号化を行わずにリモートの TCP/IP ソケット接続を行うのは盗聴攻撃を 受けやすいので、最近の Debian における標準の X の設定は TCP/IP ソケットを無効にしています。リモートから X へ接続するには、 ssh の使用を考慮してください。(リモートの X サーバに接続する – ssh, 第 9.4.8 節 参照)

ここで記述する方法は信頼できるユーザしか存在しない良質のファイアーウォール システムの後ろに隠れた非常に安全な環境にいるので無ければ推奨されません。 現在の TCP/IP ソケットに関する X の設定を検証するために、次のコマンドを 使用してください。

     # find /etc/X11 -type f -print0 | xargs -0 grep nolisten
     /etc/X11/xinit/xserverrc:exec /usr/bin/X11/X -dpi 100 -nolisten tcp

X サーバが TCP/IP を listen されるには、-nolisten を削除してください。


9.4.7 リモートの X サーバに接続する – xhost

xhost を使ってホスト名に基づいてリモートホストにアクセスできる ようになります。これは非常に危険です。次の手順によりホストのチェックを 無効にし、TCP/IP ソケット接続が許されている所からならどこからでも 接続を許すようになります。(TCP/IP 越しに X を使う, 第 9.4.6 節 参照)

     $ xhost +

ホストのチェックを次の手順で再び有効にできます

     $ xhost -

xhost はリモートホストの異なるユーザを区別できません。 又、ホスト名 (実際はアドレス) はだまされ得ます。

この方法は信頼できないネットワーク (例えばインターネットへダイアルアップ PPP 接続している場合など) では、より制限されたホスト基準を用いていたとしても 避けるべきです。xhost(1x) をご覧下さい。


9.4.8 リモートの X サーバに接続する – ssh

ssh を使うと、ローカルの X サーバからリモートのアプリケーション サーバに安全な接続を行うことが可能になります。

この方法はローカルの UNIX ドメインソケットを通してローカルで接続 しているかのようにリモートの X クライアントの出力を表示できます。


9.4.9 X ターミナルエミュレータ – xterm

http://dickey.his.com/xterm/xterm.faq.htmlxterm についての全てを学んでください。


9.4.10 X リソース

xterm のような多くの古い X プログラムは、見栄えを設定する ために X リソースデータベースを用います。 ユーザのリソース指定を保存するため、~/.Xresources ファイルを 用います。このファイルはログイン時に標準の X リソースと自動的に マージされます。システムの標準となっている X リソースは /etc/X11/Xresources/* に、アプリケーションの標準リソースは /etc/X11/app-defaults/* に保存されます。 これらの設定を開始点として使用します。

~/.Xresources ファイルに追加すべき役立つ設定を いくつか示します。

     ! フォントを読みやすい 9x15 にセット
     XTerm*font: 9x15
     
     ! スクロールバーを表示
     XTerm*scrollBar: true
     
     ! バッファサイズを 1000 行にセット
     XTerm*saveLines: 1000
     
     ! 大きな kterm スクリーン
     KTerm*VT100*fontList: -*-fixed-medium-r-normal--24-*,\
      -*-gothic-medium-r-normal--24-*,\
      -*-mincho-medium-r-normal--24-*

これらの設定を直ちに有効にするには、次のコマンドを使ってデータベースに マージします。

     xrdb -merge ~/.Xresources

xrdb(1x) をご覧下さい。


9.4.11 X における keymap とポインタボタンマッピング

xmodmap プログラムは X クライアントアプリケーション上で イベントのキーコードをキーシムに変換するために用いるキーボード modifier マップと keymap テーブルを編集したり表示するために用いられます。

     $ xmodmap -pm 
      ... 現在の modifier マップを表示
     $ xmodmap -pk | pager
      ... 現在の keymap テーブルを表示
     $ xmodmap -e "pointer = 3 2 1" # 左利き用マウスに設定
     $ xmodmap ~/.xmodmaprc # キーボードのマッピングを ~/.xmodmaprc で設定

これは通常ユーザのセッション起動スクリプトである ~/.xsession から起動されます。

keycode を取得するには、X 上で xev を起動し、 keycode を取得したいキーを押します。keysym の意味を知るには、 /usr/include/X11/keysymdef.h ファイルにある MACRO 定義を 調べます。このファイルにある全ての #define 文は XK_ として指定されており、それぞれが keysym 名 と対応しています。

xmodmap(1x) をご覧下さい。


9.4.12 X で root 権限を取得する

GUI プログラムを root 権限で起動する必要がある場合、次の手順に従って プログラムの出力をユーザの X サーバに表示してください。 セキュリティの問題を可能な限り避けるため、 決して X サーバを直接 root から起動しようとしてはいけません

X サーバを通常のユーザとして起動し、xterm 端末を開きます。 そして次を実行します。

     $ XAUTHORITY=$HOME/.Xauthority
     $ export XAUTHORITY
     $ su root
     Password:*****
     # printtool &

このトリックを su で非 root ユーザに変更するために使う場合、 ~/.Xauthority がその非 root ユーザが属するグループが 読み込み可能であることを確認してください。

この作業を自動化するには、ユーザアカウントの ~/.xsession に 次の行を追加します。

     # root アカウント に su した時に X が動くようにする。
     if [ -z "$XAUTHORITY" ]; then
             XAUTHORITY=$HOME/.Xauthority
             export XAUTHORITY
     fi
     unset XSTARTUP
     # 特定のウィンドウ/セッションが必要な場合、次の行のコメントを外して
     # 必要に応じて編集する。
     #XSTARTUP=/usr/bin/blackbox
     # x-window/session-manager プログラムを起動
     if [ -z "$XSTARTUP" ]; then
       if [ -x /usr/bin/x-session-manager ]; then
         XSTARTUP=x-session-manager
       elif [ -x /usr/bin/x-window-manager ]; then
         XSTARTUP=x-window-manager
       elif [ -x /usr/bin/x-terminal-emulator ]; then
         XSTARTUP=x-terminal-emulator
       fi
     fi
     # X window/session manager を自動実行
     exec $XSTARTUP

そして (su - ではなく) su を ユーザの xterm ウィンドウ上で起動します。するとこの xterm から起動する GUI プログラムは root 権限で動きますが出力をユーザの X window 上に表示できます。 このトリックは標準の /etc/X11/Xsession が実行される限り 動きます。ユーザが ~/.xinitrc~/.xsession をカスタマイズした場合、上で言及した環境変数 XAUTHORITY がこれらのスクリプトと同じように設定される必要があります。

代わりに、sudo を上記の手順を自動化するために 使用できます。

     $ sudo xterm
     ... 又は
     $ sudo -H -s

ここで、/root/.bashrc に次の行が含まれる必要があります。

     if [ $SUDO_USER ]; then
         sudo -H -u $SUDO_USER xauth extract - $DISPLAY | xauth merge -
     fi

これはユーザのホームディレクトリが NFS マウントされている場合でさえも うまく動きます。それは root が .Xauthority ファイルを読まない ためです。

この目的のために用いられる専門プログラムとしては、 kdesu, gksu, gksudo, gnome-sudo, そして xsu などが存在します。 同様の結果を得るために、 /root/.Xauthority のシンボリックリンクをユーザのホームディレクトリ に作成することや、スクリプト sux を使う、 root の初期化スクリプトに "xauth merge ~USER_RUNNING_X/.Xauthority" を追加するなどの 他にいくつかの方法が使えます。

さらに知りたい場合は debian-devel mailing list をご覧下さい。


9.4.13 X での TrueType フォント

XFree86-4 での標準的な xfs は TrueType をうまく処理します。 XFree86-3 を使っている場合は、xfs-xtt のような サードパーティのフォントサーバをインストールする必要があります。

TrueType フォントを使いたいアプリケーションが libXft にリンクされているか、 それとも libfreetype にリンクされているかを確認することだけが必要です。 (前もってコンパイルされた .deb を使っている場合はこれさえも心配する必要は たぶん無いでしょう。)

まずフォントのサポートインフラを設定します。

次に、DFSG フォントパッケージをインストールします。

フリーな フォントは時々制限があるので、Debian ユーザ にとって商用の TrueType フォントをインストール又は共有することは 選択肢のひとつです。 この手順を容易にするためにいくつか便利なパッケージが作成されています。

フリーな システムを非フリーなフォントで汚染することを 犠牲にするならば、本当に良い TrueType フォントの選択を行ってください。

Debian におけるこれらのフォントパッケージは努力無しで動き、 通常の "コア" フォントシステムを使用する全ての X プログラムに対して 使用できるようになるべきです。X プログラムには Xterm、Emacs や 他のほとんどの 非 KDE 、非 GNOME アプリケーションが含まれます。

ついに、xfontsel を起動して fndry メニュで TrueType フォントを選べば、"fmly" メニュにたくさんの黒色の選択可能なエントリ が見付けられるはずです。

(GTK 1.2 がアンチエイリアスフォントレンダリングを行えるようにハックされた libgdkxft0 を使っている) KDE 2.2 とGNOME 1.4 では、Xft1 を設定する必要が あります。その上、Xft1 はかなり時代遅れになっており、基本的に GNOME 1.4 と KDE 2.2 でしか使われていません。 /etc/X11/XftConfig を編集し、

         dir "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"

のような行を他の dir 行の前に追加してください。

[43]

GNOME2 と KDE3 (Sarge リリース後) では、フォントを見付けるのに Xft2 を使っている fontconfig を設定する必要があります。 [44] fontconfig に依存するパッケージは既に (間接的に) このパッケージに Depends しているので、設定を行うのに何か特別なパッケージを インストールする必要はありません。

まず、/etc/fonts/fonts.conf を見ます。下に示すような行 があるはずです。無い場合は、/etc/fonts/local.conf を開き、 下の内容を <fontconfig> の行のすぐ後に追加します。

         <dir>/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType</dir>

fontconfig はこの変更に直ちに対応し、 "fc-list" により新しいフォントが追加されるはずです。 fontconfig の他の巧妙な機能によって、 フォントを ~/.fonts/ に入れるだけで fontconfig を 使用するプログラムは直ちにこれらのフォントを使用可能になります。

Debian パッケージを使わずに X 上で新しい TrueType フォントセットを 手動でインストールした場合、次を実行します。

     # xset fp rehash

これにより XFree86 がこのディレクトリの内容を再び見て新しいフォントを 取得するようになります。


9.4.14 X でのウェブブラウザ

Woody リリース時点でグラフィカルに表示可能なウェブブラウザパッケージ がいくつか存在します。

mozilla のバージョンと galeon のバージョンは同じである必要があります。これらは UI が異なりますが、 Gecko HTML レンダリングエンジンを共有しているからです。

mozillagaleon のようなブラウザの プラグインはプラグインディレクトリに手動で "*.so" をインストールし、 ブラウザを再起動することにより有効にできます。

プラグイン一覧


9.5 SSH

SSH (Secure SHell) はインターネットに接続するための安全な方法です。 OpenSSH と呼ばれるフリー版の SSH は Debian では ssh パッケージとして得られます。


9.5.1 SSH の基礎

まず OpenSSH サーバとクライアントをインストールします。

     # apt-get update && apt-get install ssh

/etc/apt/source.list に non-US エントリが必要となります。 OpenSSH サーバを起動したい場合は /etc/ssh/sshd_not_to_be_run が存在する必要があります。

SSH には二つの認証プロトコルが存在します。

Woody や他の非 Debian システムに移行しようする場合、これらのプロトコルの違い に注意してください。

詳細は /usr/share/doc/ssh/README.Debian.gzssh(1), sshd(8), ssh-agent(1), 並びに ssh-keygen(1) をご覧下さい。

主要な設定ファイルを次に挙げます。

次のコマンドは ssh 接続をクライアントから開始します。

     $ ssh username@hostname.domain.ext
     $ ssh -1 username@hostname.domain.ext # Force SSH version 1
     $ ssh -1 -o RSAAuthentication=no -l username foo.host
         # SSH1 でパスワードを強制
     $ ssh -o PreferredAuthentications=password -l username foo.host
         # SSH2 でパスワードを強制。

ユーザにとって、ssh は (^] を用いて爆撃しない) 賢くより安全な telnet として働きます。


9.5.2 SMTP/POP3 トンネル用のポートフォワード

ssh を通して localhost の port 4025 から remote-server の port 25 並びに localhost の port 4110 から remote-server の port 100 に接続 するパイプを構築するには、ローカルマシンで次を実行します。

     # ssh -q -L 4025:remote-server:25 4110:remote-server:110 \
                username@remote-server

これはインターネットを通して SMPT/POP3 サーバに接続するための安全な手段です。 リモートホストの /etc/ssh/sshd_configAllowTcpForwarding エントリを yes にセットしてください。


9.5.3 パスワードの入力が少ない接続 – RSA

RSAAuthentication (SSH プロトコル) 又は PubkeyAuthentication (SSH2 プロトコル) を用いてリモートシステムごとのパスワードを覚えるのを避けられます。

リモートホストで、/etc/ssh/sshd_config の各エントリを "RSAAuthentication yes" 又は "PubkeyAuthentication yes" にセットします。

そしてローカルで認証キーを生成し、リモートシステムに公開鍵をインストールします。

     $ ssh-keygen          # RSAAuthentication: SSH1 用の RSA 鍵
     $ cat .ssh/identity.pub | ssh user1@remote \
             "cat - >>.ssh/authorized_keys"
     ...
     $ ssh-keygen -t rsa   # PubkeyAuthentication: SSH2 用の RSA 鍵
     $ cat .ssh/id_rsa.pub | ssh user1@remote \
             "cat - >>.ssh/authorized_keys"
     ...
     $ ssh-keygen -t dsa   # PubkeyAuthentication: SSH2 用の DSA 鍵
     $ cat .ssh/id_dsa.pub | ssh user1@remote \
             "cat - >>.ssh/authorized_keys"

"ssh-keygen -p" を用いて後にパスフレーズを変更できます。 接続できるかテストして必ず設定を検証してください。 問題がある場合は、"ssh -v" を使ってください。

ホスト制限や特定のコマンドを起動するために authorized_keys に あるエントリにオプションを追加できます。詳細は sshd(8) をご覧下さい。

SSH2 には HostbasedAuthentication 機能があることに注意してください。 これを動かすには、サーバマシンの /etc/ssh/sshd_config と クライアントマシンの /etc/ssh/ssh_config 又は $HOME/.ssh/config の両方を yes にセットする 必要があります。


9.5.4 他の SSH クライアントの扱い

非 Unix ライクプラットフォームのためのフリーな SSH クライアントは あまり存在しません。

Windows
puTTY (GPL)
Windows (cygwin)
cygwin (GPL) にある SSH
Macintosh Classic
macSSH (GPL) [Mac OS X には OpenSSH が含まれていることに注意してください。Terminal アプリケーション上で ssh を使ってください。]

SourceForge.net, site documentation の "6. CVS Instructions" もご覧下さい。


9.5.5 ssh-agent のセットアップ

パスフレーズで SSH 認証鍵を保護する方がより安全です。パスフレーズが セットされていなかった場合、ssh-keygen -p を使ってセットしてください。

リモートホストの ~/.ssh/authorized_keys に パスワードを用いてリモートホストに接続して パスワードの入力が少ない接続 – RSA, 第 9.5.3 節 に記述されているように公開鍵 (すなわち、~/.ssh/id_rsa.pub) を置いてください。

     $ ssh-agent bash # 又は代わりに zsh/tcsh/pdksh プログラムを起動する。
     $ ssh-add ~/.ssh/id_rsa
     Enter passphrase for /home/osamu/.ssh/id_rsa:
     Identity added: /home/osamu/.ssh/id_rsa (/home/osamu/.ssh/id_rsa)
     $ scp foo user@remote.host:foo
      ... ここからはパスフレーズが必要 :-)
     $^D
      ... ssh-agent セッションを終了。

X サーバの場合、通常 Debian の起動スクリプトは ssh-agent を親プロセスとして実行します。ですので ssh-add を一度だけしか 実行する必要がありません。

より詳しくは、ssh-agent(1)ssh-add(1) をご覧下さい。


9.5.6 SSH のトラブルシュート

問題が発生した場合、設定ファイルのアクセス権をチェックし、ssh を "-v" オプションつきで実行してください。

root であってファイアーウォールのトラブルが発生した場合、 "-P" オプションを使ってください。これはサーバのポート 1 から 1023 の使用を 避けます。

リモートのサイトへの ssh 接続が突然動かなくなった場合、 それはシステム管理者のやっつけ仕事のせいかもしれませんし、最もありえるのは システムメンテナンス中に host_key が変更されたためです。 このような原因で接続が停止し、だれもハックしてリモートホストを偽造しようと していないことを確認してから、host_key エントリを ローカルマシンの $HOME/.ssh/known_hosts から削除して 接続を回復できます。


9.6 メール

メールの設定は三つのカテゴリに分割されます。


9.6.1 Mail transport agents (MTAs)

フル機能の MTA としては、Woody では eximを、Sarge では exim4 を使っています。 [45] リファレンス:

セキュリティを心配している場合の唯一の妥当な代替 MTA は postfix です。sendmailqmail も Debian パッケージとして得られますが、 お薦めできません。

ノート PC などのサテライトシステムであって MTA のリレー機能が必要ない場合、 次に挙げる軽量なパッケージのどれかの使用を考えても良いかもしれません。

現時点では、私はノート PC をパーソナルワークステーションとして 使う場合でも、exim が最適と考えています。

これらの衝突するパッケージをインストールする場合、exim を 削除する必要があるかもしれません。

     # dpkg -P --force-depends exim
     # apt-get install nullmailer         # 又は ssmtp

9.6.1.1 Smarthost

消費者レベルのサービスの接続をしているホスト上で exim4 又は exim を起動している場合、ISP や他の手段で提供されている smarthost を 通じてメールを送るようにしてください。 [46] いくつかの理由があります。

想像できる唯一の例外としては次があげられます。


9.6.1.2 Exim の基本的な設定

exim4 又は exim を MTA として使うには、 次の設定を行います。

     /etc/exim/exim.conf     "eximconfig" を実行し、編集 (exim)
     /etc/exim4/*            "dpkg-reconfigure exim4" を実行し、編集 (exim4)
     /etc/inetd.conf         exim をデーモンとして起動するために smtp をコメントアウトする
     /etc/email-addresses    外に出すメールのためのドメインリストを追加

exim4 又は exim-brw, -bf, -bF, など の オプション付きで用いてフィルタをチェックしてください。


9.6.1.3 Exim の元で存在しないメールアドレスのための物置を設定する

/etc/exim/exim.conf (Woody 以降) の DIRECTORS パートにおいて、 末尾 (localuser: director の後) にその前の director が解決できない 全てのアドレスにマッチするごみ箱 director を追加してください。 (Miquel van Smoorenburg による)

     catchall:
       driver = smartuser
         new_address = webmaster@mydomain.com

各仮想ドメインなどに対するより詳しいレシピを設定したい場合、 /etc/exim/exim.conf の末尾に次の内容を追加してください。 (あまりテストしていません)

     *@yourdomain.com ${lookup{$1}lsearch*{/etc/email-addresses} \
             {$value}fail} T

そして、/etc/email-addresses に "*" エントリを追加してください。


9.6.1.4 Exim の元で送信メールに対してアドレス書き換えを設定する

適切な "From:" ヘッダを生成するために送信メールのアドレス書き換えを行う には、exim を用いて /etc/exim/exim.conf の末尾 近くに次のような設定を行うことにより行えます。

     *@host1.something.dyndns.org \
       "${if eq {${lookup{$1}lsearch{/etc/passwd}{1}{0}}} {1}  \
        {$0}{$1@somethig.dyndns.org}}"  frFs

これは *@host1.something.dyndns.org にマッチする全アドレスを 書き換えます。

  1. local part ($1) がローカルユーザかどうかを /etc/password を通じて検索する。
  1. ローカルユーザである場合、アドレスを最初の場所 ($0) にあったものに 書き換えます。
  1. ローカルユーザでない場合は、ドメイン部分を書き換えます。

9.6.1.5 Exim の元で SMTP 認証を設定する。

yahoo.com のような SMTP サーバは SMTP 認証を要求します。 /etc/exim/exim.conf を次のように設定します。

     remote_smtp:
       driver = smtp
       authenticate_hosts = smtp.mail.yahoo.com
     ...
     
     smarthost:
       driver = domainlist
       transport = remote_smtp
       route_list = "* smtp.mail.yahoo.com bydns_a"
     ...
     
     plain:
       driver = plaintext
       public_name = PLAIN
       client_send = "^cmatheson3^this_is_my_password"

最後の行をダブルクォートするのを忘れないでください。


9.6.2 メールを取得する – Fetchmail

fetchmail はデーモンモードで起動され、メールを ISP の POP3 アカウントから取得し、ローカルのメールシステムに転送します。 設定ファイルは次のとおり。

     /etc/init.d/fetchmail   
     /etc/rc?.d/???fetchmail 標準では優先度 30 で update-rc.d fetchmail を起動する
     /etc/fetchmailrc        設定ファイル (chmod600 のアクセス権限で fetchmail により所有される)

Potato で init.d スクリプトから fetchmail を デーモンモードで起動する方法に関する情報は混乱しています。 (Woody では既に修正されています) example scripts にある /etc/init.d/fetchmail/etc/fetchmailrc のサンプルをご覧下さい。

メールのヘッダが ISP のメーラのせいで ^M で汚染されている場合、 $HOME/.fetchmailrc に "stripcr" をオプションとして 次のように追加してください。

     options fetchall no keep stripcr

9.6.3 crm114 でのスパム処理

crm114 パッケージは CRM114 で書かれた /usr/share/crm114/mailfilter.crm スクリプト を提供します。このスクリプトはスパム(不要メール)とハム(有用メール) を流し込むと非常に効率的に訓練できるスパムフィルターを提供します。

CRM114 はフィルターを書くために設計された小さな言語です。 スーパーパワーを与えた grep のような物と考えて下さい。 crm(1) を参照してください。


9.6.4 メール処理 – Procmail

procmail はローカルのメール配信およびフィルタプログラムです。 本プログラムを使う際にはアカウント毎に $HOME/.procmailrc を作成する必要があります。例は _procmailrc にあります。


9.6.5 メールを読む – Mutt

mail user agent (MUA) として muttvim と 組み合わせて使ってください。 ~/.muttrc でカスタマイズできます。例えば、

     # use visual mode and "gq" to reformat quotes
     set editor="vim -c 'set tw=72 et ft=mail'"
     #
     # header weeding taken from the manual (Sven's Draconian header weeding)
     #
     ignore *
     unignore from: date subject to cc
     unignore user-agent x-mailer
     hdr_order from subject to cc date user-agent x-mailer
     auto_view application/msword
     ....

HTML メールと MS Word 添付ファイルをインラインで表示するため、次を /etc/mailcap 又は $HOME/.mailcap に追加してください。

     text/html; lynx -force_html %s; needsterminal;
     application/msword; /usr/bin/antiword '%s'; copiousoutput;
     description="Microsoft Word Text"; nametemplate=%s.doc

9.7 ローカライゼーション (l10n)

Debian は国際化されており、言語や地域差に関するサポートが充実しつつあります。 次のサブセクションは Debian が現在サポートする多様性の形態の一部をリストし、 それに続くサブセクションにおいて地域に従って異なる日付表示、数字や金銭の フォーマットなどの円滑な入出力が可能となるように使用環境を カスタマイズするプロセスである ローカライゼーション について議論します。


9.7.1 ローカライゼーションの基本

ローカライゼーションと各国語サポートにはいくつかの観点があります。


9.7.1.1 キーボードのローカライゼーション

Debian は24程のキーマップが配布されています。 Woody でのキーボードを再設定するには、次を実行します。


9.7.1.2 データファイルのローカライゼーション

膨大な Debian ソフトウェアパッケージの大部分は glibc に存在する ロケール 技術 により提供される LC_CTYPE 環境変数 を通して非 US-ASCII 文字データの操作をサポートしています。


9.7.1.3 表示のローカライゼーション

X は UTF-8 を含むあらゆるコーディングを表示できますし、全てのフォントを サポートします。全ての 8 ビットフォントだけでなく、中国語、日本語や韓国語 のような 16 ビットフォントも含まれます。マルチバイト文字の入力メソッドは X での代替入力メソッド, 第 9.7.10 節 メカニズムによりサポートされています。 多言語 X window システムの例, 第 9.7.9 節X 端末エミュレータの UTF-8 サポート, 第 9.7.12 節 をご覧下さい。

日本語 EUC コードは kon2 パッケージを通して (S)VGA グラフィックコンソールにも表示できます。jfbterm という新しい代わりになる日本語ディスプレイがありますが、これはフレームバッファ 端末も使っています。これらの端末環境では、日本語の入力メソッドが アプリケーションによりサポートされている必要があります。 Emacs で日本語を入力するには、egg パッケージを、 Vim 環境で日本語を入力するには、日本語化された jvim パッケージを使ってください。

非 Unicode フォントを X にインストールすると、X においてあらゆる エンコーディングのドキュメントを表示するのに役立ちます。ですから、 フォントのエンコーディングについてあまり心配する必要はありません。


9.7.1.4 メッセージやドキュメンテーションのローカライゼーション

エラーメッセージ、標準的なプログラムの出力、メニュ、そしてマニュアルページ などの Debian システムで表示されるテキストメッセージやドキュメントの多くは 既に翻訳されています。現在、ドイツ語、スペイン語、フィン語、フランス語、 ハンガリー語、イタリア語、日本語、韓国語、ポーランド語、ポルトガル語、 中国語、そしてロシア語のマニュアルページが manpages-LANG パッケージ (ここで LANG は 2文字のコンマで分けられた ISO country code のリストです。取得可能な Unix マニュアルページのリストを得る には apt-cache search manpages-|less を使ってください。) を通じて供給されています。

NLS マニュアルページにアクセスするには、ユーザは環境変数 LC_MESSAGES を 適切な文字列にセットする必要があります。例えば、イタリア語のマニュアルページ の場合は、LC_MESSAGES を it にセットする必要があります。 すると man プログラムは /usr/share/man/it/ の下にある イタリア語のマニュアルページを検索します。


9.7.2 ロケール

Debian は ロケール 技術をサポートしています。ロケールは プログラムが文字セット、時刻や時間のフォーマット、通貨文字などのような ローカルのしきたりに従って適切な出力や機能を供給することを可能とするための 機構です。例えば、米国英語とドイツのロケールの両方をシステムにインストール したと仮定すると、多くのプログラムのエラーメッセージは 2ヵ国語にできます。

     $ LANG="en_US" cat foo
     cat: foo: No such file or directory
     $ LANG="de_DE" cat foo
     cat: foo: Datei oder Verzeichnis nicht gefunden

Glibc はこの機能のプログラムへのサポートをライブラリとして供給します。 locale(7) をご覧下さい。


9.7.3 ロケール入門

完全なロケールの説明は 3つの部分、すなわち xx_YY.ZZZZ から構成されます。

言語コードと国コードについては、info gettext にある適切な説明 をご覧下さい。

このコードセット部分はクロスプラットフォーム互換性を達成するために 全ての - を削除し、全ての文字を小文字に変換することにより 内部で正規化されることがあります。典型的なコードセットは次のとおりです。

基本的なエンコーディングシステムの jargon の意味については次のとおり。

ISO-8859-?, EUC, ISO-10646-1, UCS-2, UCS-4, そして UTF-8 は ASCII コード を 7 ビット文字のために共有しています。EUC と シフト JIS は 最上位ビットが立った (0x80-0xff) 文字をその部分のエンコードが 16 ビット であることを示すために使います。UTF-8 も最上位ビットが立った文字 (0x80-0xff) をこれが非 7 ビット文字シーケンスバイトであり、これが非 ASCII 文字を操作 するのに最適なエンコーディングシステムであることを示すために使います。

Unicode の実装でバイトオーダーが異なるものがあることに注意してください。

各種文字セット間の変換に関しては recode によりテキストファイルを変換する, 第 8.6.12 節 を御覧下さい。 より詳しくは Introduction to i18n をご覧下さい。


9.7.4 ロケールサポートを有効にする

Debian は全ての使用可能なロケールを前もってコンパイルして いません。(標準の "C" ロケールを除いて) システムにコンパイルされているロケールの種類を知るには、 /usr/lib/locale をチェックしてください。 必要なロケールがコンパイルされていない場合には、2つのオプションがあります。


9.7.5 特定のロケールを有効にする

次に示す環境変数はこの順番で評価され、特定のロケール値をプログラムに提供します。

  1. LANGUAGE: この環境変数はコロンで分割され、優先順位の高い順に並んだ ロケール名のリストです。POSIX ロケールが "C" 以外の値にセットされている場合 のみ使われます。[Woody での説明。Potato では常に POSIX ロケールより高い 優先度を持つ] (GNU 拡張)
  1. LC_ALL: これが null ではない場合、全てのロケールカテゴリに対して 使用されます。(POSIX.1) 通常 "" (null) です。
  1. LC_*: これが null ではない場合、この値は対応するカテゴリに対して 使用されます。(POSIX.1) 通常 "C" です。

    LC_* variables には次の値が存在します。

  1. LANG: これが null でなく、LC_ALL が未定義の場合、この値は 未定義の値の全ての LC_* ロケールカテゴリに対して使われます。(POSIX.1) 通常 "C" です。

(Netscape4 などの) いくつかのアプリケーションは LC_* の設定を無視する ことに注意してください。

locale プログラムは有効なロケールの設定と使用可能な ロケールを表示できます。locale(1) をご覧下さい。 (locale -a はシステムが存在を知っている全てのロケールを表示しますが、 これは全てがコンパイル済みであることを意味 しない ことに注意下さい。 ロケールサポートを有効にする, 第 9.7.4 節 をご覧下さい。)


9.7.6 ISO 8601 日付表示ロケール

国際的なデータ標準である yyyy-mm-dd 形式 (ISO 8601 データフォーマット) の日付のロケールのサポートは en_DK すなわち "English in Denmark" と呼ばれるロケールによりサポートされています。これはちょっとしたジョークです。 これは端末上で ls のためにしか動かないようです。


9.7.7 米国 (ISO-8859-1) の例

次の行を ~/.bash_profile に追加してください。

     LC_CTYPE=en_US.ISO-8859-1
     export LC_CTYPE

9.7.8 ユーロを用いたフランス語の例 (ISO-8859-15)

次の行を ~/.bash_profile に追加してください。

     LANG=fr_FR@euro
     export LANG
     LC_CTYPE=fr_FR@euro
     export LC_CTYPE

フランスの "AZERTY" キーボードを キーボードのローカライゼーション, 第 9.7.1.1 節 に記述しているように 設定し、manpages-fr をインストールしてフランス語の マニュアルページを追加してください。米国での 右 Alt キーはヨーロッパでは 右 Gr と呼ばれます。これを他のキーと同時に押すと数多くのアクセント付き 文字や特別な文字の入力ができます。例えば、Alt-Gr+E はユーロ記号になります。

ほとんどの西ヨーロッパ言語は同様に設定可能です。

新しいユーロ貨幣のサポートを追加するには、 Debian Euro HOWTO を、 フランス語についてより詳しく知るには、 Utiliser et configurer Debian pour le français をご覧下さい。


9.7.9 多言語 X window システムの例

コンソール毎に、日本語と英語とドイツ語とフランス語を、それぞれ EUC と UTF-8 と ISO-8859-1 のエンコーディングで同時にサポートする多言語 X window システム を設定しましょう。

まず Debian menu システムを用いたカスタマイズをお見せします。 Debian menu システムの詳細は /usr/share/doc/menu/html/index.html をご覧下さい。 また、この例では mozilla web ブラウザへのショートカットを 作成します。 [47]

他の CJK 言語のサポートについては、次の章に続いて SuSE pages for CJK をご覧下さい。


9.7.10 X での代替入力メソッド

パッケージとして使用可能な X 入力メソッドがいくつか存在します。

     言語   LC_CTYPE     XIM サーバ  XMODIFIERS              開始キー
     日本語   ja_JP*       kinput2    "@im=kinput2"           Shift-Space
     韓国語     ko_KR*       ami        "@im=Ami"               Shift-Space
     中国語(繁体字) zh_TW.Big5   xcin       "@im=xcin-zh_TW.big5"   Ctrl-Space
     中国語(簡体字) zh_CN.GB2312 xcin       "@im=xcin-zh_CN.GB2312" Ctrl-Space

日本語入力メソッドである kinput2kinput2-canna-wnn, kinput2-canna, kinput2-wnn のようなパッケージにより供給されています。 日本語入力には他に cannafreewnn-jserver のような辞書サーバが実際には 必要になります。


9.7.11 X ターミナルエミュレータ

適切なフォントがインストールされた時に 8 ビットエンコーディングを サポートする X 端末は数多く存在します。

X 端末のマルチバイトエンコーディングのサポートは UTF-8 エンコーディング (X 端末エミュレータの UTF-8 サポート, 第 9.7.12 節)を通じて xterm により供給されています。 他の伝統的なエンコーディングのサポートは (2003 年時点で) 推進中です。 次のパッケージは伝統的なエンコーディングのサポートを提供します。

kterm では、(多分他の端末でも) Ctrl-中クリックマウス操作をした後にメニュから XIM を有効にしたいかも しれません。


9.7.12 X 端末エミュレータの UTF-8 サポート

X ターミナルエミュレータの UTF-8 サポートは、XFree86 4.x 用の xterm パッケージにある uxterm プログラム により供給されています。これは全言語のサポートを可能にします。 これは "UXTerm" X リソースクラスセットを用いた後者のプログラムを起動する xterm(1) プログラムのラッパーです。

例えば、英語、ロシア語、日本語、中国語、韓国語の文字をきれいに大きく表示 することを可能にするには、関連する全フォントをインストールした後に ~/.Xresources に次を追加してください。

     ! set large font
     UXTerm*font: -misc-fixed-medium-r-normal-*-18-120-100-100-c-90-iso10646-1
     ! Use XIM for Japanese
     *inputMethod: kinput2

そして X リソースを更新するため、 X リソース, 第 9.4.10 節 に記述されているように xrdb -merge ~/.Xresources を起動します。

vim, muttemacs のような 有名なコンソールプログラムのほとんどは最近 (Woody から Sarge にかけて) UTF-8 と互換性がありますが、mc のようなプログラムは まだ UTF-8 互換ではなく、シンプルな 8 ビット文字を表示できるだけです。 未知あるいは混在したエンコーディングのファイルの中の 7 ビット ASCII の 部分を編集する場合、ロケールを気にしない 8 ビットクリーンなエディタを 使う方が安全です。

The Unicode HOWTO をご覧下さい。


9.7.13 フレームバッファコンソールで UTF-8 を使う例

フレームバッファコンソール上での UTF-8 のサポートは debian-installer 上で使用される bterm により供給されています。


9.7.14 ロケールを越えて

まず最初に 母国語環境 の設定を行う際には、 言語環境に対応するタスクを選ぶことにより選び抜かれるパッケージを調べるために taskselaptitude を使うことを考えてください。 このパッケージの選択は多言語環境のセットアップのためでも役に立ちます。 システムを注意深く設定するために、インストール中に依存性の衝突に出くわした 場合、既存のシステムと衝突するソフトウェアのインストールを避けてください。 新たにインストールしたパッケージは既存のパッケージよりも高い優先度を 持っているかもしれないので、いくつかのコマンドでは元の状態に戻す ために update-alternative を使う必要があるかもしれません。

新しめの主要なプログラムは glibc 2.2 を使っており、ほぼ国際化されています。 それゆえ、Vim に対する jvim のような特別に国際化された バージョンは vim version 6.0 により X 上でほぼ同様の機能が 提供されているために必要では無いかもしれません。 現実には、まだいくらかおおざっぱです。jvim は端末上でも直接 日本語入力メソッド (canna) のサポート付きでコンパイルされており、 さらに多くの他の日本語特有の問題に分別深く対応しているので、まだこれが欲しい かもしれません。 :-)

快適な作業環境を可能にするには、ロケール 設定を越えた設定が 必要になるかもしれません。language-env パッケージや その set-language-env コマンドはこの設定作業をかなり 軽減してくれます。

又、国際化に関する文書である Introduction to i18n もご覧下さい。 これは開発者向けですが、システム管理者に対しても有用です。


9.8 マルチリンガリゼーション (m17n)

language-env 類似パッケージによって実現される ローカライゼーション (l10n), 第 9.7 節 は単一言語によるローカリゼーションを目指しています。 これらのパッケージはテキストのエンコーディングとして 伝統的エンコーディングを使います。このような環境下では フランス語と日本語は それぞれ ISO-8859-1 と EUC-JP という相容れないエンコーディングを使うので テキストを混ぜることが出来ません。

マルチリンガライズされたUTF-8 デスクトップは Gnome や KDE のプログラムを 存在する UTF-8 ロケールの1つのもとでスタートすることで得られます。 (Sarge) そのような環境下では、UTF-8対応のソフトの下で、英語、中国語、 ロシア語、日本語の文字を混ぜて使えます。

m17n-env はそのような環境をセットアップする 補助スクリプトです。マルチリンガルライズされたUTF-8 環境は set-m17n-env コマンドを root とユーザーアカウントから 走らせることで設定できます。 [51]

そのような環境下では、scim を使う マルチリンガライズされた入力メソッド (IM) が好ましいです。 scim によって提供される IM は Ctrl-Space を同時打鍵することで起動や終了ができます。入力変換エンジンは 小さな SCIM のパネルをクリックすることで切替えられます。

伝統的エンコーヂィング環境へは m17n-env が提供するカスタムロケールコンソールで依然簡単にできます。 EUC-JP や ISO-8859-1 でエンコードされた古いファイルを編集しようとする際に 便利です。


[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 次のページ ]

Debian リファレンス

CVS, 2005年 4月 3日 月曜日 22時59分00秒 UTC時間

Osamu Aoki (青木 修) osamu@debian.org
翻訳: 角田 慎一 tsuno@ngy.1st.ne.jp
著者, 第 A.1 節