Product SiteDocumentation Site

8.9. その他の設定: 時刻同期、ログ、共有アクセス…

この節にリストされている多くの要素は、 GNU/Linux システムの設定のあらゆる側面を極めたいと思う人なら誰でも、知っておくと良い知識です。しかしながらここでは、各要素を簡単に紹介し、頻繁に文書を参照するだけにとどめます。

8.9.1. タイムゾーン

タイムゾーンは最初のインストール時に設定され、tzdata パッケージでタイムゾーンを設定します。タイムゾーンを変更するには、dpkg-reconfigure tzdata コマンドを使ってください。このコマンドを使えば、対話的に変更したいタイムゾーンを選ぶことが可能です。タイムゾーンの設定は /etc/timezone ファイルに保存されます。さらに、/usr/share/zoneinfo ディレクトリに含まれるタイムゾーンに対応するファイルが /etc/localtime にコピーされます; /etc/localtime には、夏時間を使う国向けに夏時間が有効な場所で日付を左右するルールが含まれています。
一時的にタイムゾーンを変更したい場合、TZ 環境変数を使ってください。この変数に設定した値はシステムデフォルトで設定された値よりも優先されます:
$ date
Wed Mar 28 15:51:19 CEST 2012
$ TZ="Pacific/Honolulu" date
Wed Mar 28 03:51:21 HST 2012

8.9.2. 時刻同期

時刻同期は、コンピュータ上で不必要のように見えますが、ネットワーク上でとても重要です。ユーザは日付と時間を変更することを許可されていないので、混乱を防ぐためには時刻情報を正確に保つことがとても重要です。さらに、ネットワーク上の全てのコンピュータの時刻を同期させておけば、異なるマシン間でログから情報を相互参照しやすくなります。攻撃を受けた際に、不正アクセスを受けた複数のマシンで時系列順に操作を再構成することが簡単になります。時刻が同期されていなかった場合、統計的目的で複数のマシンからデータを集めても、意味を成しません。

8.9.2.1. ワークステーション向けの設定

ワークステーションは (エネルギーを節約するためだけだったとしても) 日常的に再起動されますから、NTP と同期するのは起動時だけで十分です。これを行うには、ntpdate パッケージをインストールします。必要なら /etc/default/ntpdate ファイルを変更して NTP サーバを変更することも可能です。

8.9.2.2. サーバ向けの設定

サーバはほとんど再起動されません。サーバのシステム時間を正確にすることはとても重要です。恒久的にに正確な時間を保つためには、ntp パッケージの提供する NTP サーバをインストールするべきです。デフォルトの設定では、このサーバは pool.ntp.org と同期し、ローカルネットワークからの要求に対して時刻を提供します。/etc/ntp.conf ファイルを編集して NTP サーバを設定できます。最も大きな変更は、この NTP サーバがどの NTP サーバを参照するかです。ネットワークに多くのサーバがある場合、公開サーバと同期している 1 台のローカルタイムサーバを、そのネットワークの他のサーバに対する時間ソースとして使うことは興味深いかもしれません。

8.9.3. ログファイルの循環

ログファイルのサイズは素早く増加しますから、ログファイルをアーカイブに保管する事が必要です。最も一般的なやり方はアーカイブを循環させることです: ログファイルは日常的にアーカイブに保管され、最新の X 個のアーカイブが保存されます。logrotate は、/etc/logrotate.conf ファイルと /etc/logrotate.d/ ディレクトリ内に含まれる全てのファイルに書かれた指示に従って、ログファイルの循環を担当するプログラムです。管理者が Debian の定義するログ循環ポリシーを適用したい場合、これらの設定ファイルを変更するかもしれません。logrotate(1) man ページでは、これらの設定ファイルで利用可能な全てのオプションが説明されています。ログ循環で保存されるファイルの数を増加させたかったり、削除せずにアーカイブ専用の特定のディレクトリにログファイルを移動させたいと思うかもしれません。また、電子メールを送信してログを別の場所にアーカイブすることも可能です。
logrotate プログラムは cron スケジューリングプログラム (cronatd を使ったスケジューリングタスク」 で説明されています) によって毎日実行されます。

8.9.4. 管理者権限の共有

しばしば、複数の管理者が同じネットワーク上で仕事をする場合があります。root パスワードの共有は的確なやり方ではありません。共有することで生まれる匿名性により、root 権の乱用が可能になります。この問題の解決策が sudo プログラムです。このプログラムは特定のユーザに特別な権限で特定のコマンドを実行することを可能にします。最も一般的な用途は、sudo を使うことで、信頼できるユーザが root としてコマンドを実行できる様になります。これを行うには、ユーザは単純に sudo command を実行し、自分のパスワードを使って認証するだけです。
インストールされると、sudo パッケージは sudo Unix グループのメンバーに完全な root 権を与えます。他の権利を委譲するには、管理者は visudo コマンドを用いなければいけません。このコマンドを使うことで、管理者は /etc/sudoers 設定ファイルを変更することができます (繰り返しになりますが、これは vi エディタまたはEDITOR 環境変数で表される他のエディタを実行します)。username ALL=(ALL) ALL のような行を追加することで、対象のユーザは root としてコマンドを実行することが可能になります。
より洗練された設定を使うことで、特定のコマンドに必要な権限を特定のユーザに与えることも出来ます。設定可能な要素の全ての詳細を確認するには sudoers(5) man ページを御覧ください。

8.9.5. マウントポイントのリスト

/etc/fstab ファイルには、起動時に自動マウントされるものやリムーバブルストレージデバイス用の手作業でマウントするものを含めて、全ての考え得るマウントポイントがリストされています。それぞれのマウントポイントは空白区切りフィールドを持つ各行によって表現されます:
  • マウントするデバイス: ローカルパーティション (ハードドライブ、CD-ROM) またはリモートファイルシステム (NFS など) を指定できます。
    このフィールドではしばしば、UUID= を前に付けたファイルシステムの一意的な ID (この値は blkid device を使えばわかります) が使われることがあります。これを使うことで、ディスクを取り付けたり取り外した事や異なる順番でディスクが検出された事によりデバイスの名前が変わっても問題が無くなります。
  • マウントポイント: これはデバイス、リモートシステム、パーティションがマウントされるローカルファイルシステムの場所です。
  • ファイルシステムタイプ: このフィールドは、マウントされたデバイスで使われているファイルシステムを定義します。ext4ext3vfatntfsbtrfsxfs が例です。
    既知のファイルシステムの完全なリストは mount(8) man ページからに書かれています。swap は swap パーティション専用の特殊値です; automount プログラムに自動的にファイルシステムを検出させるための特殊値です (この値はディスクリーダと USB メモリで特に便利です。なぜなら、機器毎に異なるファイルシステムを使っている可能性があるからです)。
  • オプション: ファイルシステム毎に多くのオプションがあり、これらの値は mount man ページに書かれています。最もよく使われるものは
    • rw または ro、デバイスが読み書き可能状態または読み取り専用でマウントされる、ことを意味しています。
    • noauto は起動時の自動マウントを無効化します。
    • user は全てのユーザにこのファイルシステムをマウントする許可を与えます (このオプションを指定しなければ、マウントおよびアンマウント操作をできるのは root ユーザだけに限られます)。
    • defaults はデフォルトオプション群を意味します: rwsuiddevexecautonouserasyncdefaults の後に nosuidnodev などを付ければ、suiddev をブロックし、これらのオプションを無効化することも可能です。user オプションを追加すればこれが再有効化されます。なぜなら defaultsnouser を含むからです。
  • バックアップ: このフィールドはほぼ常に0 を設定します。1 を設定した場合、dump ツールに、このパーティションにはバックアップされるデータが含まれること、を伝えます。
  • ファイルシステムのチェック順: 最後のフィールドは、起動時にファイルシステムの完全性がチェックされるか否かと、チェックが実行される順番を意味します。0 の場合、チェックされません。root ファイルシステムに対しては 1 を設定するべきです。他の恒久的なファイルシステムに対しては 2 を設定するべきです。

例8.5 /etc/fstab ファイルの例:

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# / was on /dev/sda1 during installation
UUID=c964222e-6af1-4985-be04-19d7c764d0a7 / ext3 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
UUID=ee880013-0f63-4251-b5c6-b771f53bd90e none swap sw  0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto 0       0
/dev/fd0        /media/floppy   auto    rw,user,noauto  0       0
arrakis:/shared /shared         nfs     defaults        0       0
この例の最後のエントリはネットワークファイルシステム (NFS) に対応します: arrakis サーバの /shared/ ディレクトリがローカルマシンの /shared/ にマウントされます。/etc/fstab ファイルのフォーマットは fstab(5) man ページに書かれています。

8.9.6. locateupdatedb

locate コマンドを使うと、名前の一部を知っているだけのファイルの場所を見つけ出すことが可能です。結果はぼほ一瞬で返されます。なぜならシステムのファイルの全ての場所を保存するデータベースを持っているからです; このデータベースは updatedb コマンドを使って毎日更新されます。locate コマンドには複数の実装があり、Debian は標準的なシステム向けに mlocate を選んでいます。
mlocate は賢明なので、システムの全てのファイルについて知っているデータベースを使っている (なぜなら、mlocateupdatedb 実装は root 権で実行されるからです) にも関わらず、コマンドを実行したユーザがアクセスできるファイルだけを返します。さらなる安全性のために、管理者は /etc/updatedb.conf の中で PRUNEDPATHS を使って、幾つかのディレクトリのインデックス化を避ける事が可能です。