目次へもどる  

Google

Linuxの管理・設定

ここでは、ネットワークやXwindowなどのLinux自体の動作に関する設定を中心に説明する。

情報表示

ここでは、各種の情報を集める際の表示方法について説明する。

コンピュータに関する情報

OSのバージョンのような基本的な情報を取得するには、

$ uname -a
Linux example.com 2.6.15-1.2054_FC5 #1 SMP Tue Mar 14 15:48:20 EST 2006 x86_64 x86_64 x86_64 GNU/Linux

でわかる

ハードウェア情報を表示する方法

ドライバなどの設定には、ハードウェアの情報が欠かせない。本体をあけてみるのが一番確実ではあるが、ソフトウェア的に表示させるには下記のようにして行う。まず、http://ezix.sourceforge.net/software/lshw.htmlからlshwをダウンロードする。

$ tar zxvf lshw-B.02.06.tar.gz
$ cd lshw-A.01.08
$ make

srcディレクトリにlshwという実行ファイルができているのでそれを実行する。rootである必要はない。必要であればパスの通っているディレクトリにコピーしておく。

参考:PCのハードウェア情報を表示するには

ネットワークの設定確認

IPアドレスなどネットワークの設定の確認は

$ /sbin/ifconfig

ホスト名の表示・設定

表示するには

# hostname
mail.example.com

設定するには

# hostname mail.example.com

サーバの自動起動

サーバの自動起動状況を表示するには、

# chkconfig --list
Makefile 0:off 1:off 2:off 3:off 4:off 5:off 6:off
SuSEfirewall2_init 0:off 1:off 2:off 3:off 4:off 5:off 6:off
SuSEfirewall2_setup 0:off 1:off 2:off 3:off 4:off 5:off 6:off
acpid 0:off 1:off 2:on 3:on 4:off 5:on 6:off
alsasound 0:off 1:off 2:on 3:on 4:off 5:on 6:off
apache2 0:off 1:off 2:off 3:on 4:off 5:on 6:off
atd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
autofs 0:off 1:off 2:off 3:off 4:off 5:off 6:off
autoyast 0:off 1:off 2:off 3:off 4:off 5:off 6:off
bluetooth 0:off 1:off 2:off 3:off 4:off 5:off 6:off

...

# chkconfig named --list
apache2 0:off 1:off 2:off 3:on 4:off 5:on 6:off

サーバの自動起動をOn、Offするには、

# chkconfig named on
# chkconfig named off

ディストリビューションによって、同じサーバのでも名前が違う場合がある。例えば、apacheのOn、OffはFC4、FC5ではhttpdであるが、openSUSE 10.0の場合はapache2である。

NFSでネットワークドライブを構成する

sshfsで遠隔地のディレクトリを安全に共有する

sshfsがお薦め。

shfsは古い。

参考:SHFSで安全に別のPCのディレクトリを共有するには

ソフトのインストール

fedoraにおけるyumの使用方法

#yum info xxx

で、パッケージxxxの情報が得られる。例えば、

# yum info mrtg
Setting up repositories
Reading repository metadata in from local files
Available Packages インストールされていない場合はこのように表示される
Name : mrtg
Arch : i386
Version: 2.11.1
Release: 3
Size : 853 k
Repo : base
Summary: Multi Router Traffic Grapher
Description:
The Multi Router Traffic Grapher (MRTG) is a tool to monitor the traffic
load on network-links. MRTG generates HTML pages containing PNG
images which provide a LIVE visual representation of this traffic.
#yum install xxx

でパッケージxxxのインストールを行う。

Linuxを最新状態に保つ

FC4、FC5の場合

最新のパッケージにアップデートするには、

# yum update

自動化するには、

# chkconfig yum on

ログの管理 - logrotate

ログファイルをローテンションする。logrotate.confでlogrotate全体の設定を、/etc/logrotate.d下の各ファイルで各ログファイルの処理方法設定する。logrotate.confにデフォルトの設定を書き、/etc/logrotate.d下の各ファイルの設定で上書きされる。

logrotateの設定項目一覧
オプション 意味
compress 圧縮を行う。デフォルトではgzipで圧縮される。
nocompress 圧縮しない
compresscmd 圧縮を行うコマンドを指定する。
uncompresscmd 解凍を行うコマンドを指定する。
compressext 圧縮を行う際の拡張子。
compressoptions 圧縮を行う際のオプション。デフォルトではgzipのオプション"-9"が指定されている。
daily 毎日行う
dateext 数字の代わりに日付の拡張子をつける。(FC4では機能しないがFC5では使える)
ifempty ログファイルが空の場合でもローテーションを実行する
notifempty ログファイルが空の場合はローテーションを実行しない
include /etc/logrotate.d 以下のディレクトリ内のファイルを含める。この場合は、/etc/logrotate.d/
missingok ログファイルが存在しなくてもエラーを出さない
monthly 毎月行う。通常は月の最初の日。
sharedscripts このスクリプトで複数のログファイルを処理する。(prescriptおよびpostscriptを書くログファイルに対して実行する)
firstaction/endscript 一番最初に実行するスクリプトを書く
prerotate/endscript ローテートを実行する前に実行するスクリプト
postrotate/endscript ローテーション実行後に実行するスクリプトをpostrotate~endscriptの間に書く。
lastaction/endscript postrotateよりもさらに後に実行するスクリプトを書く
rotate 4 ローテーションを行う回数。この場合は4回。5個目からは古いものから順に削除される。
size 100k サイズが指定サイズより大きい場合は実行する。この場合は100kB以上の場合。
weekly 毎週実行する

参考:logrotateオプション

Linux上でCD-R、DVD-Rを焼く(mkisofs、cdrecord)

mkisofsによる.isoファイルの作成

LinuxでCDやDVDを焼く場合、まずmkisofsでisoファイルを作成し、それをcdrecordなどのコマンドで焼く。なおmkisofsは標準状態では日本語に対応していないので注意。下記のようなオプションで作成するとWindowsマシンでもロングファイル名などがきちんと表示される。

例)dir1、dir2内のファイルをdisk.isoにまとめる。ボリュームラベルにはVolumeLabelを指定。

$ mkisofs -V "VolumeLabel" -U -J -r -T -o disk.iso ./dir1 ./dir2

主要なオプション(詳しくはmanページを参照)

オプション 意味
-V ボリュームラベルを指定する。これは、Windowsの場合ドライブ名として表示される。
-U -d -l -L -N -relaxed-filenames -allow-lowercase -allow-multidot -no-iso-translateのすべてを指定した状態になる。ISO9660規格に違反するが、通常はこれで良い。
-r Unixで利用する情報を付加する。
-J Windowsからロングファイル名でアクセスできるようにするためにJolietでディレクトリテーブルを作成する。
-o アウトプットファイルを指定する。

cdrecordによるisoファイルのディスクへの焼付け

まずは

$cdrecord -scanbus

でCD/DVDドライブを見つけるためにデバイスの一覧を表示させる。

lftpによるミラーリングバックアップ

rsyncによるミラーリングバックアップ

rsyncはその特別なアルゴリズムにより、すでに存在するファイルを転送しないだけでなく、バイナリの差分のみを転送する非常に優れたバックアップツールである。使い方は下記の通り。

$ rsync -avz -e "ssh -l ユーザー名" コピー元 コピー先

オプションのaは属性の保存を、vはコピー中詳細表示を、zは転送時に圧縮を指定している。

例:

$ rsync -avz -e "ssh -l foo" /hoge example.com:/home/foo/backup

参考:バックアップツール rsyncコマンドの使い方

DenyHostsでsshへの攻撃を防ぐ

例えばopenSUSE 10.0で/var/log/messagesを見ると時々

Mar 26 22:01:32 linux sshd[18645]: Invalid user test12 from 65.205.238.12
Mar 26 22:01:34 linux sshd[18647]: Invalid user test12 from 65.205.238.12
Mar 26 22:01:35 linux sshd[18649]: Invalid user test12 from 65.205.238.12
Mar 26 22:01:37 linux sshd[18651]: Invalid user test12 from 65.205.238.12
Mar 26 22:01:38 linux sshd[18653]: Invalid user test12 from 65.205.238.12
Mar 26 22:01:40 linux sshd[18655]: Invalid user test12 from 65.205.238.12
Mar 26 22:01:41 linux sshd[18657]: Invalid user test12 from 65.205.238.12
Mar 26 22:01:43 linux sshd[18659]: Invalid user test12 from 65.205.238.12
Mar 26 22:01:44 linux sshd[18661]: Invalid user test123 from 65.205.238.12
Mar 26 22:01:46 linux sshd[18663]: Invalid user test123 from 65.205.238.12
Mar 26 22:01:47 linux sshd[18665]: Invalid user test123 from 65.205.238.12
Mar 26 22:01:49 linux sshd[18667]: Invalid user test123 from 65.205.238.12
Mar 26 22:01:50 linux sshd[18669]: Invalid user test123 from 65.205.238.12
Mar 26 22:01:51 linux sshd[18671]: Invalid user test123 from 65.205.238.12
Mar 26 22:01:53 linux sshd[18673]: Invalid user test123 from 65.205.238.12
Mar 26 22:01:54 linux sshd[18675]: Invalid user test123 from 65.205.238.12
Mar 26 22:01:56 linux sshd[18677]: Invalid user test123 from 65.205.238.12
Mar 26 22:01:57 linux sshd[18679]: Invalid user test123 from 65.205.238.12
Mar 26 22:01:59 linux sshd[18681]: Invalid user tester from 65.205.238.12
Mar 26 22:02:00 linux sshd[18683]: Invalid user tester from 65.205.238.12
Mar 26 22:02:02 linux sshd[18685]: Invalid user tester from 65.205.238.12
Mar 26 22:02:03 linux sshd[18687]: Invalid user tester from 65.205.238.12
Mar 26 22:02:05 linux sshd[18689]: Invalid user tester from 65.205.238.12
Mar 26 22:02:06 linux sshd[18691]: Invalid user tester from 65.205.238.12
Mar 26 22:02:08 linux sshd[18693]: Invalid user tester from 65.205.238.12
Mar 26 22:02:09 linux sshd[18695]: Invalid user tester from 65.205.238.12
Mar 26 22:02:11 linux sshd[18697]: Invalid user tester from 65.205.238.12

このようなログが記録されていることがある。また、FC5でも、/var/log/secure内のログを見ると、似たようなsshを拒否したログを見つけることができる。これは、ssh対する辞書攻撃を試みているのであるが、これを簡単に防ぐにはDenyHostsが有効である。

DenyHostsはログファイルをcronで時々監視して攻撃してきたホストを/etc/hosts.denyに追加するPythonで書かれたスクリプトである。

FC4、FC5の場合はyumを使って簡単にインストールすることができる(yum install denyhostsでインストールして、/etc/init.d/denyhosts startで起動するだけである。)。
openSUSE 10.0の様にソースを取ってきてインストールする必要がある場合は、ファイルは、ここ(http://denyhosts.sourceforge.net/)からダウンロードする。

yumでインストールする場合は、

# yum install denyhosts
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
core [1/3]
updates [2/3]
extras [3/3]
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for denyhosts to pack into transaction set.
denyhosts-2.4b-1.fc5.noar 100% |=========================| 18 kB 00:00
---> Package denyhosts.noarch 0:2.4b-1.fc5 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
denyhosts noarch 2.4b-1.fc5 extras 94 k

Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 94 k
Is this ok [y/N]: y
Downloading Packages:
(1/1): denyhosts-2.4b-1.f 100% |=========================| 94 kB 00:00
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: denyhosts ######################### [1/1]

Installed: denyhosts.noarch 0:2.4b-1.fc5
Complete!

設定ファイルは

/etc/denyhosts.conf

にある。必要であれば設定を書き換える。

あとは、

/etc/init.d/denyhosts start

で起動する。また、

# chkconfig denyhosts on

として、サーバ起動時に、自動的にDenyHostsも起動するようにしておく。

一方ソースからインストールする場合は、

# tar zxvf DenyHosts-2.4b.tar.gz
# cd DenyHosts-2.4b/
# python setup.py install

これで、/usr/share/denyhosts/にインストールされるはずである。

一度インストールする際に、下記のようなエラーが起きた。
# python setup.py install
Traceback (most recent call last):
File "setup.py", line 4, in ?
from distutils.core import setup
ImportError: No module named distutils.core
ここで、python-develをインストールしたら問題なくインストールすることができた。

そして、

# cd /usr/share/denyhosts/
# cp denyhosts.cfg-dist denyhosts.cfg

として、デフォルトの設定ファイルをコピーする。

openSUSE 10.0の場合は、下記の行のコメントを外し、他のOSの行はコメントアウトする。

SECURE_LOG = /var/log/messages

次に、

# cp daemon-control-dist daemon-control

daemon-controlファイルで変更できる箇所は、次の3つの行のみである。通常はデフォルトのままで動くはずであるが、必要であれば変更する。

DENYHOSTS_BIN	 = "/usr/bin/denyhosts.py"
DENYHOSTS_LOCK	= "/var/lock/subsys/denyhosts"
DENYHOSTS_CFG 	= "/usr/share/denyhosts/denyhosts.cfg"

もしdaemon-controlのownerがrootになっていないようであれば、rootに変更する。

# chown root daemon-control

また、アクセス権は0700にする。

# chmod 700 daemon-control

あとは、

# ./daemon-control start

でデーモンとして起動する。

# cd /etc/init.d
# ln -s /usr/share/denyhosts/daemon-control denyhosts

とすると、

# /etc/init.d/denyhosts start

で起動できるようになる。サーバ起動時に、自動的にDenyHostsも起動するようにするには下記のように打つ。

# chkconfig denyhosts on

なお、sshに対する攻撃に対しては、sshのポート番号を変えてしまうというのも一つの手である。

sshのポート番号を変えてsshへの攻撃を防ぐ

もしsshのポート番号を変えることができるようであれば、変えてしまった方がssh経由の攻撃を受けるリスクはずっと低くなる。

変更方法は、/etc/ssh/sshd_config内の

#Port 22

とコメント化されている行を

Port 22222

の様に変更して、再起動する。(この場合は22222番ポートを指定している。)

圧縮転送を指定するとsshに接続できない

FC4やFC5ではデフォルトではsshサーバの設定でCompressionの項目はdelayedになっている。
この設定だといくつかのsshクライアントでは圧縮転送を指定すると接続できない。

Compression yes

とすることによって、接続できるようになる。

bashの設定

全ユーザーに適応される設定

/etc/profileで設定する。

各ユーザー毎の設定

ログイン時には、~/.bash_profileがあれば読み込み、無ければ、~/.bash_loginがあれば読み込み、無ければ~/.profileが読み込まれる。

また、bashが起動するたびに、.bashrcが読み込まれる。

なお、ログアウト時には、~/.bash_logoutが読み込まれる。

環境変数の設定方法

2通りある。

一つ目は、

export 環境変数=値

二つ目は

シェル変数=値
export シェル変数

シェル変数、環境変数の表示

setコマンドでシェル変数を、printenvで環境変数を表示できる。

ヒストリ関係

HISTSIZEはヒストリに保存するコマンド数を指定する。
HISTFILESIZEはヒストリファイルに保存するコマンド数を指定する。
HISTCONTROLはignoredupsで重複するものを記録しない。ignorespaceで空白などで始まるコマンドは記録しない。ignorebothでその両方とも指定。

.bashrcなどには下記のように書く

HISTSIZE=10000
HISTFILESIZE=10000
HISTCONTROL=ignoreboth
export HISTSIZE HISTFILESIZE HISTCONTROL

パス

パスを追加するには、例えば/home/hogehogeというパスを追加するには、

PATH="$PATH":/home/hogehoge

言語の設定

使用しているターミナルによっては、英数字以外の文字で文字化けする場合がある。

下記の設定をすると、英語のみになる。

export LANG=C

もしくは

unset LANG

で解除してもよい。

Ubuntu

Ubuntuのインストール

Ubuntuのインストールは非常に簡単である。
まず、Ubuntuのダウンロードページ(http://www.ubuntu.com/getubuntu/download)からDesktopバージョンをダウンロードし、CD-Rに焼く。

CDからパソコンを立ち上げると、メニューが出てくるのでその中の一番上の、「start or install Ubuntu」を選択する。するとしばらくの後、Ubuntuが起動し、ネットワークがつながっていれば、FirefoxでWebページを閲覧することも可能である。ただし、このままではCDからプログラムが読み込まれるため動作は非常に遅い。

ハードディスクへのインストールであるが、起動したUbuntuのデスクトップにあるinstallアイコンをダブルクリックする。インストーラが立ち上がり、「使用言語」、「時間の設定」、「キーボードの設定」、「パーティションの設定」、「アカウントの設定」について訊かれるので、それぞれ設定していけばよい。パーティションの設定以外は特に問題ないはずである。

CDからのインストールが始まるのでそのまま待てば、インストールは以上で完了である。

Ubuntuとrootアカウント

基本的にUbuntuではrootアカウントではなく、sudoを使って各種管理コマンドを実行するのが基本である。

どうしてもrootでログインしたい場合は

$sudo passwd root

で、パスワードを設定する。

Ubuntuへsshで接続するには?

sshサーバが初期状態ではインストールされていない。外部からsshで接続したい場合は、sshdをインストールする必要がある。

UbuntuのSambaへ接続するには?

GUIで共有フォルダを設定すれば、もしsambaサーバがインストールされていない場合は自動的にインストールするかどうか聞いてくる。手動でsambaサーバをインストールしても良い。

問題は、SambaのパスワードはLinuxのパスワードとは別に設定しなければならない点である。具体的にはターミナルから

$sudo smbpasswd username

で設定することになる。usernameには各自のユーザー名を入れること。

Ubuntuを最新状態に保つには?

apt-getコマンドを使います。具体的には、

$sudo apt-get upgrade

自動的に行いたい場合は、cronの設定に

apt-get -y upgrade

を書き込みます。-yは質問に常にyesで答えると言うことです。

リンク集


本文中のFC4はFedora ProjectのFedora Core 4を、FC5はFedora Core 5を、FC6はFedora Core 6、FC7はFedora Core 7をopenSUSEはNovellのSUSE Linux OSSを表します。

ここに登場するドメイン名やIPアドレスなどはフィクションです。実在の人物・団体等とは一切関係がありません。
実際に使用する際は、各自の環境に合わせて書き換えてください。
もし何か間違いなどありましたらこちらからご連絡ください
リンクに許可は不要です。
Copyright (C) 2007 Chikuma Engineering Co., Ltd. All Rights Reserved.