ホームページへ戻る
 

上へ戻る
 

    Linux入門 その4  設定ファイル  BY H.Y  2月 24  17:52:57 JST 2002


Linuxの設定ファイルのほとんどが/etc以下に納められている。
そこで /etc 以下の設定ファイルについて説明する。

目次
1。起動の設定
1ー1。/etc/inittab
1ー2。/etc/rc.d ディレクトリの rc?.d ディレクトリ
1ー3。/etc/rc.d/rc.sysinit
1ー4。/etc/rc.d/rc.local
2。ハードウェアの設定
2ー1。有効なデバイスの探し方
2ー2。/etc/fstab
2ー3。モジュールの設定
3。ライブラリー
3ー1。ライブライの種類
3ー2。参照するライブラリーのチェック方法
3ー3。ライブラリーを参照するパス
4。シェルの環境設定
4ー1。設定ファイル
4ー2。.bash の設定ファイルの内容
(1)コマンドパスを設定する。
(2)環境変数を設定する。
(3)エイリアス(コマンドの省略形)を設定する。
(4) umask の設定
(5)他の設定ファイルを読み込む
4ー3。/etc/profile
4ー4。/etc/shells
4ー5。/etc/sudoers
4ー6。プロンプト文字列
5。システム設定ファイル
5ー1。画面表示用
5ー2。ユーザーグループの設定
(1) /etc/default/useradd
(2)/etc/passwd, /etc/shadow
(3) /etc/group, gshadow
6。デーモンの設定
6ー1。/etc/auto.master
6ー2。定期的にコマンドを実行させるためのファイル群。
(1)/etc/crontab
(2) /etc/cron.*/crontab
6ー3。ネットワークの設定
-------------------------------------------------------------------

1。起動の設定
1ー1。/etc/inittab
デバイスドライバやシステムの初期化の後に起動するプロセスinitが最初
に参照するファイル。
1)形式:
id : run levels : action : process
1)id : ファイル中のエントリを表す
2)run level:
複数のレベルを指定できる。
これらのレベルで次のプロセスを起動できることをあらわす。
0 : 停止
1 : シングルユーザーモード
2 : シングルユーザーモード(テキストベース)(slackware無し)
3 : マルチユーザーモード
4 : 未定義
5 : マルチユーザーモード(XWindowベース)(slackware無し)
6 : リブート
S : シングルユーザーモード(slackwareのみ)
3)action
実行する動作をあらわす。
respawn :プロセスが終了した場合は常に再起動する。
wait :指定したランレベルになった時に一度だけ起動する。
プロセス nit はこのプロセスが終了するまで待機する。
onece :指定したランレベルになった時に一度だけ起動する。
boot :システムブート中に実行される。ランレベルは無視する。
bootwait:システムブート中に実行されるが、initはそれが終了する
まで待機する。
initdefault:システムブート完了時に入るべきランレベルをしめす。
sysinit :このエントリーはboot及びbootwaitよりも先に実行される。
ctrlaltdel:initがSIGINITを受け取ったときに実行される。
CTRL+ALT+DELキイを押したことを意味する。
4)process
実行されるプロセスを指定する。
1ー2。/etc/rc.d ディレクトリの rc?.d ディレクトリ
? が起動されるランレベルに相当する。rc3.d はランレベル3に相当する。
このディレクトリ内のファイルは全て/etc/init.d 以下の起動スクリプト
へのリンクである。この起動スクリプトは start/stop の引数で該当する
デーモンの起動/停止を実行する。リンクの頭の文字が S の場合は起動を、
K の場合は停止を実行する。また次の数字は実行の順序をあらわす。
例えば、
S05kudzu,S08iptable,S10network がある場合は、
kudzu,iptable,network の順にデーモンは起動される。

/etc/rc または /etc/rc.d/rc スクリプトでランレベル毎のデーモンの
起動/停止を実行する。デーモンの起動スクリプトは /etc/init.dまたは
/etc/rc.d/init.d に格納
されている。
1ー3。/etc/rc.d/rc.sysinit
init 起動後最初に実行されるシェルスクリプトである。
システム全般にわたる初期化を実行する。
1ー4。/etc/rc.d/rc.local
/etc/rc.d/rc?.d ディレクトリにある S99local のリンクで起動される。
即ち、rc で最後に起動されるスクリプトである。
通常ユーザーが独自に追加するデーモンはここに書き込む。

1ー5。LILOの設定
LILOは別にLinux ブートアップの仕組みで詳しく解説する。

2。ハードウェアの設定
2ー1。有効なデバイスや情報の探し方
1)dmesg で確認する。
2)/etc/sysconfig/hwconf で確認する。
3)cat /proc/devices
4)ls /proc/ide/ で有効な ide を調べる
5)ls /proc/scsi で有効な scsi を調べる
6)有効な PCI デバイスを調べる
cat /proc/pci
lspci
7)kudzu を実行している場合は
/etc/sysconfig/hwconf を調べる
kudzu は /etc/init.d/kudzu start で実行できる。
8)XFree86に関するものは /var/log/XFee86.0.log で調べる。
9)/var/log/mesages でも調べられる。

2ー2。/etc/fstab
ファイルをマウントするためのマウントポイントを記述するファイル。
形式:
(1)device (2)point (3)type (4)option (5)dump (6)fsck
(1)device :デバイス名
(2)point :マウントポイント
(3)type :ファイルタイプ
(a) ext2 : Linux標準のファイルシステム
(b) ext3 : ジャーナリングファイルシステム
(c) reiserfs : ジャーナリングファイルシステム
(d) iso9660 : CD-ROM ドライブのファイルシステム。
(e) vfat :日本語のファイル名のMS-DOS のファイルシステム
(f) msdos :MS-DOS パーティションのファイルシステム。
(g) nfs :リ モ ー トシステムからマウントした
パーティションのファイルシステム。
(h) auto : ファイルシステムの自動検出
(4)option マウントの機能オプション
(a)default: 起動時にマウントされる。
(b)auto : ファイルシステムを自動検出
(c)noauto : 起動時にマウントされない
(d)ro : 読みだしのみ許可
(e)rw : 読み書きを許可
(f)user : 一般ユーザーでマウントする
(g)suid : SUID/SGIDビットを有効にする
(h)exec : バイナリーの実行を許可
(5)dump
1 の時 dump(バックアップ) の対象になる。
(6)ブート時の fsck の実行順
0 なら実行しない。

2ー3。モジュールの設定
1) /etc/modules.conf は
起動時に自動的に組み込むためのモジュールを別名で記述したもの。
このファイルには必要に応じて、オプションも指定出来る。
例:
alias eth0 ne2k-pci #pci bus ethernet card
options ne2k io=0x300 irq=11

2) /lib/modules/kernel-version/modules.dep
また /sbin/modprobe コマンドはモジュール名を引数として実行すると
適切にモジュールをロードする。そのとき、モジュール間の依存関係を
記述した /lib/modules/kernel-version/modules.dep を参照する。
そして、必要であれば依存するモジュールも併せてロードする。
実行例:
(1) modprobe eth0
(2) modprobe eth0 io=0x300 irq=11

3。ライブラリー
3ー1。ライブライの種類
アプリケーションがそのコードを実行する時に使用する、汎用的なプログ
ラムの集合のこと。次の2種類に分けられる。
(1)スタティックライブラリ
アプリケーションのコンパイル時に組み込まれるライブラリー。
メモリ消費量が増え、バイナリーサイズが増えるが実行環境の影響を受
け難い。
(2)ダイナミックライブラリー
必要に応じてアプリケーションに呼び出される。
lib***.so.*.* のファイル名を持つ。
3ー2。参照するライブラリーのチェック方法
(1) file fullpass/application_name で調べる
例: file /usr/bin/emacs :フルパスで書く
/usr/bin/emacs: sticky ELF 32-bit LSB executable,Intel \
80386, version 1, dynamically linked (uses shared libs),\
stripped
これでダイナミックライブラリを参照していることがわかる。
(2) ldd fullpass/application_name で調べる
例: ldd /usr/bin/emacs
libXaw.so.7 => /usr/X11R6/lib/libXaw.so.7 (0x40018000)
libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x40074000)
libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x4008a000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x400db000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x400e5000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x400fc000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x4010b000)
libncurses.so.5 => /usr/lib/libncurses.so.5 (0x40225000)
libm.so.6 => /lib/libm.so.6 (0x40268000)
libc.so.6 => /lib/libc.so.6 (0x40288000)
libXpm.so.4 => /usr/X11R6/lib/libXpm.so.4 (0x403ae000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
必要なライブラリーとそのパスが表示さる。
3ー3。ライブラリーを参照するパス
/lib 以外のパスは /etc/ld.so.conf に書かれている。
この情報は ldconfig で更新される。また ldconfig は
/etc/ld.so.cache を更新する。
4。シェルの環境設定
4ー1。設定ファイル
ユーザーがログインすると、/etc/passwd に記述により、ユーザーの使用
するシェルが起動する。Linuxでは通常 bash が起動する。
-------- /etc/passwd の一部 --------------------------
hiromu:x:500:500:H.Yoshinouchi:/home/hiromu:/bin/bash
student:x:501:501::/home/student:/bin/bash

hiromu がユーザー名、/bin/bash が起動シェル名
------------------------------------------------------
bash が参照する設定ファイルは次の通りである。
/etc/profile
~/.bash_profile , ~/.bash_login, ~/.profile, /etc/profile
~/.bashrc
~/.bash_logout
(1) bash はログイン時に
.bash_profile をさがす。
なければ .pash_login をさがす。
これもなければ .profile をさがす。
これもなければ /etc/profile をさがす。
(2)シェルの子プロセスとして bash が起動された場合は
~/.bashrc を読み込んで処理を実行する。例えば kterm 起動した
場合に読み込まれて処理される。この場合、どちらか一方のファイル
が他のファイルを読み込むようにしておけば, bash の起動方法によ
り環境が変化することを防ぐことができる。
----- ~/.bash_profile の最初 --------
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
-------------------------------------
(3).bash_logout
ユーザーがログアウトするときに読み込まれ実行される。
(4).bash_history
bash のシェルコマンドの履歴が保存されている。
デフォルトでは500行まで。HISTFILESIZEで変更できる。
4ー2。.bash の設定ファイルの内容
(1)コマンドパスを設定する。
例:
PATH=$PATH:/usr/local/apache/bin:/opt/jbuilder5/bin
パスの区切りは : を用いる。
=$PATH: で既に設定されているPATHの内容に追加できる。
(2)環境変数を設定する。
例:
ENV=$HOME/.bashrc
USERNAME="root"
export USERNAME ENV PATH
(3)エイリアス(コマンドの省略形)を設定する。
例:
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias down='shutdown -h now'
alias rdown='shutdown -r now'
(4) umask の設定
例:--------------------------------------------
if [ `id -gn` = `id -un` -a `id -u` -gt 14 ]
then
umask 002
else
unask 022
fi
ファイルの書き込み権をユーザにより変更する例
----------------------------------------------
(5)他の設定ファイルを読み込む
4ー1ー(2) のサンプルを参照。
4ー3。/etc/profile
このファイルは全ユーザー共通の設定ファイルである。
bash の場合、このファイルで /etc/profile.d ディレクトリーの
*.sh 設定ファイルを読み込み実行する。
---------- /etc/profile の一部 --------------
for i in /etc/profile.d/*.sh ; do
if [ -x $i ]; then
. $i
fi
done
--------------------------------------------
4ー4。/etc/shells
ログインシェルとして指定可能なシェルのフルパスを記述。
chsh コマンドでログインシェルを変更するときに参照する。
4ー5。/etc/sudoers
別のユーザーとしてコマンドを実行することが出来る sudo コマンド
が参照するファイル。どのユーザー毎の実行権限とコマンドを記述する。
4ー6。プロンプト文字列
bash では PS1 ー PS4 がプロンプト文字列として用意されている。
PS1は通常のプロンプト、PS2はコマンドラインが完成していない場合の
プロンプト。 PS3,PS4 はシェルプログラミング用とデバッグ用。
例:
PS1="[\u@\h \W]\$" : 設定値
PS2=">"
[hiromu@hiromu /bin]$ : プロンプト
設定文字 表示内容
\d 今日の日付
\H ホスト名(myhost.subdomain.domain.com)
\h ホスト名(myhost)
\s シェル名
\t 現在の時刻を24時間表示
\@ 現在の時刻をAM/PM
\u 現在のユーザー名
\w カレントディレクトリー(/usr/local/bin)
\W カレントディレクトリーのベース名(bin)
\$ root なら #、それ以外なら $を表示
5。システム設定ファイル
5ー1。画面表示用
(1) /etc/X11/ディレクトリー
ここに X 関連の設定ファイルが置かれている。
CFConfig ,XFConfig-4 等。
5ー2。ユーザーグループの設定
(1) /etc/default/useradd
usradd コマンドで新たにユーザーを追加した場合のデフォルトの設定。
--------- useradd --------------------
GROUP=100 :Group ID
HOME=/home :ユーザーの親ホームディレクトリー
INACTIVE=-1 :パスワード期限切れ後、無効にするまでの期限
-1 の場合は無期限
EXPIRE= :パスワードの有効期限(日単位)
SHELL=/bin/bash :ユーザーのシェル
SKEL=/etc/skel :ユーザーの個人設定ファイルの雛型のある
ディレクトリー
(2)/etc/passwd, /etc/shadow
passwd にはユーザーのアカウント情報が含まれている。
例: student:x:501:501::/home/student:/bin/bash
ユーザー名: パスワードは暗号化(x): ユーザーID: グループID:
コメント: ホームディレクトリー: シェル
shadow には暗号化されたパスワードが書かれている。
例: student:Qqj4YpgjmNU3k:11588:0:99999:7:-1:-1:0
(3) /etc/group, gshadow
グループに関する情報とパスワード
groupの例: daemon:x:2:root,bin,daemo
グループ daemon のIDは 2
所属ユーザーは root、 bin、daemo
6。デーモンの設定
6ー1。/etc/auto.master
ファイルシステムを自動的にマウントする為の設定ファイル。
例: /misc /etc/auto.misc --timeout=60
automount でマウントするディレクトリーは /misc
ファイルシステムのマップファイルは /etc/auto.misc
アンマウントの為のノーアクセスのタイムアウトは60秒
---- /etc/auto.misc -----------------------
cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
この設定で、/dev/cdrom をアクセスすると automountが起動
して、CD-ROMを自動的にマウントする。
6ー2。定期的にコマンドを実行させるためのファイル群。
(1)/etc/crontab
例: ----- /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

01 4 * * 0 root /usr/bin/webalizer
-----------------------------------------------
実行日時の指定は
分: 時: 日: 月: 曜日 の順
(2) /etc/cron.*/crontab
/etc/crontab で指定する日時にこれらのスクリプトが実行される。
6ー3。ネットワークの設定
ネットワークの設定は別の原稿で説明する。