いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.061 / 読者数:833名

こんばんは、うすだです。

昨日、大阪の万博公園に行ってきました。

万博公園 - 独立行政法人 日本万博博覧会記念機構
http://park.expo70.or.jp/

わたしは、小学校3年生まで万博公園の近くに住んでいましたので、 たまに家族で万博公園へ行っていました。

久しぶりだなーなんて思いながら訪れたのですが、残念なことに、 当時の記憶を思い出させるようなモノには、巡り合えませんでした。

太陽の塔なんて、当時から何度も目にしていたはずなのですが、 懐かしいなーという気持ちは、不思議と湧いてきません。

それでも、あのインパクト、巨大さは、想像以上でした。
べたな表現ですが、やっぱ岡本太郎ってすごい!! と思いました。

丹下健三の「お祭り広場」の大屋根をどーんとぶち抜いてしまうほどですから、 でかいだろうというのは頭でわかっていたはずなのですが、 やはり実際に目にすると、かなりの衝撃を感じますね。
(ちなみに、大屋根の高さは 30m、太陽の塔の高さは 70m です。)

やっぱり、頭の中でわかっているつもり…では、ダメなんですね。
これからは、できるだけ実際に経験していこう、と思いました。
みなさんも、読むだけでなく、実際に実行してみてくださいね。(^ε^)

おせっかいなところに着地してしまいましたが、気にしないでください。
それでは、今週も、はりきってまいりましょう!

今週のお題 - 設定ファイルをリビジョン管理する

いまや、 どのディストリビューションにもさまざまなアプリケーションが搭載されており、 どれになにが入っているのか把握しきれなくなってきているように思います。

とはいえ、現在においては、グーグルなどで検索することで、 設定方法を知ることができますので、ドキュメントを読破しなくても、 そして完全に理解をしなくても、それなりに動作させることができます。

そんなわけで、必要な設定を行い、ユーザのみなさまに使っていただき、 フィードバックを得て設定を変更する、というスパイラルが、 各所で日々行われているのだと推測します。

さて、ここで、ふと、管理上の問題に気づきました。
日々刻々と変更される設定ファイルを、どのように管理していけばよいのでしょうか。 たとえば、とあるアプリケーションの設定をあの日の状態に戻してくれ、 なんて言われたら、すんなりと戻せますでしょうか?

というわけで、今週は、RCS を使って、 設定ファイルのリビジョン管理を行ってみようと思います。


今週は、RCS の使い方を、簡単にご紹介します。
もしパッケージが入っていなければ、apt とか yum とかで、 インストールしてください。DVD-ROM や CD-ROM から召喚してもよいと思います。

RCS によるリビジョン管理のおおまかな流れは、以下の通りです。

  1. アーカイブを作成する。
  2. チェックアウトして、ファイルを編集する。
  3. チェックインして、新たなリビジョンを格納する。
  4. 過去に戻るときは、リビジョン番号を指定してチェックアウトする。

今回は、/etc/hosts をいじくりながら、ご紹介したいと思います。

  1. なにはともあれ、まずは、アーカイブを作成しましょう。
    アーカイブの作成には、ci コマンドを使用します。
      # cd /etc
      # ci hosts
      hosts,v  <--  hosts
      enter description, terminated with single '.' or end of file:
      NOTE: This is NOT the log message!
      >> static hostname table.    <===== 自分で入力(ファイルの説明)
      >> .                         <===== 自分で入力(. でおわり)
      initial revision: 1.1
      done
    

    ci コマンドを実行すると、hosts,v という名前のアーカイブが作成されます。 ファイルの説明をインタラクティブに聞かれますので、そつなく答えます。 すると、リビジョン 1.1 で登録されました。

    ちなみに、RCS というディレクトリがあるなら、アーカイブはその下に作成されます。 /etc に *,v というファイルがたくさんできて困るよ〜気になるよ〜という貴兄は、 あらかじめ作っておきましょう。

    これでアーカイブができましたが、hosts ファイルがなくなってしまいますので、 co コマンドで、取り出しておきます。

      # co hosts
      hosts,v  -->  hosts
      revision 1.1
      done
      # ls -l hosts hosts,v
      -r--r--r--    1 root     root         3556 Jun 12 00:19 hosts
      -r--r--r--    1 root     root         3756 Jun 12 00:19 hosts,v
    

    書き込みできなくなっている点に、ご注意ください。

  2. 編集したくなったときには、ロックをかけてチェックアウトします。
    ロックをかけることで、編集中であることがわかります。 また、ほかのひとが編集できなくなりますので、安心して編集できます。
    チェックアウトには、co コマンドを使用します。
      # co -l hosts
      hosts,v  -->  hosts
      revision 1.1 (locked)
      done
      # ls -l hosts
      -rw-r--r--    1 root     root         3556 Jun 12 00:28 hosts
    

    今度は、書き込めるようになっています。
    お好きなエディタを使用して、編集しましょう。

  3. 編集し終えたモノを正式に登録したいときは、チェックインします。
    チェックインには、ci コマンドを使用します。
      # ci hosts
      hosts,v  <--  hosts
      new revision: 1.2; previous revision: 1.1
      enter log message, terminated with single '.' or end of file:
      >> add new machine.    <===== 自分で入力(変更点などメモ)
      >> .                   <===== 自分で入力(. でおわり)
      done
    

    変更内容などをログに残せますので、やはりそつなく答えておきます。
    リビジョン 1.2 でアーカイブに格納できました。
    アーカイブ生成時と同様、hosts ファイルがなくなりますので、 ロックせずにチェックアウトします。

      # co hosts
      hosts,v  -->  hosts
      revision 1.2
      done
    

    先ほど登録した、最新のリビジョン 1.2 が召喚されます。

  4. 最新ではなく、過去の状態に戻したいときは、 リビジョン番号を指定してチェックアウトします。
    具体的には、co コマンドに、-r オプションをつけて実行します。
    たとえば、リビジョン 1.1 に戻したければ、以下のように実行します。
      # co -r1.1 hosts
      hosts,v  -->  hosts
      revision 1.1
      done
    

以上、ものすごく大雑把ですが、RCS の使い方をご紹介しました。

簡単には、上記の流れで、リビジョン管理できる…と思います。
ただし、ファイルのアクセス権には、少し注意する必要があります。
ロックをかけずにチェックアウトすると、だれも書き込めない状態になりますし、 ロックをかけると所有者のみ書き込み可の状態になります。

アクセス権に厳しいアプリケーションの場合は、 手動でアクセス権を設定するなどして、しのぐ必要があることを、 覚えておいてください。
(この続きは宿題で…)

宿題の答え

先週の宿題は、

  tcpdump を使って、POP3 のパケットを眺めてみましょう。

でした。

こんな宿題を出して、今、激しく後悔しておりますが、 できるところまでやってみたいと思います。

tcpdump -x -s 0 port 110 で得た結果を、超抜粋してご紹介します。
まず、最初の3パケットは、TCP のハンドシェークなので割愛します。
その直後の、POP3 サーバからの返事が以下です。

  01:09:09.989696 IP localhost.localdomain.pop3 > \
  localhost.localdomain.42378: P 1:75(74) ack 1 win 32767 \
  <nop,nop,timestamp 174541460 174541434>
    0x0000:  4500 007e 2547 4000 4006 1731 7f00 0001  E..~%G@.@..1....
    0x0010:  7f00 0001 006e a58a 0baa 6f3d 0b05 b503  .....n....o=....
    0x0020:  8018 7fff c69d 0000 0101 080a 0a67 4a94  .............gJ.
    0x0030:  0a67 4a7a 2b4f 4b20 5170 6f70 7065 7220  .gJz+OK.Qpopper.
    0x0040:  2876 6572 7369 6f6e 2034 2e30 2e39 2920  (version.4.0.9).
    0x0050:  6174 2074 616d 616f 2073 7461 7274 696e  at.tamao.startin
    0x0060:  672e 2020 3c31 3838 3935 2e31 3135 3030  g...<18895.11500
    0x0070:  3432 3134 3940 7461 6d61 6f3e 0d0a       42149@tamao>..

見にくくてすみません。
最初の20オクテットが、IPヘッダです。
RFC791 を参考にして、さらっと見てみましょう。

  4500 : 4=Version(IPv4), 5=IHL(32bitx5=20octet), 00=ToS
  007e : Total Length
  2547 : Identification
  4000 : 4=Flags(Don't fragment), 000=Fragment offset
  4006 : 40=TTL, 06=Protocol(TCP)
  1731 : Checksum
  7f00 0001 : Source Address (127.0.0.1)
  7f00 0001 : Destination Address (127.0.0.1)

IP のバージョンや、次ヘッダ(TCP)、IPアドレスなどがわかります。
次の32オクテットが、TCP ヘッダです。(以下の Offset でわかります)
RFC793 や RFC1323 を参考にして、さらさらっと見てみましょう。

  006e : Source Port(110)
  a58a : Destination Port(42378)
  0baa 6f3d : Sequence Number
  0b05 b503 : Acknowledgment Number
  8018 : 8=Offset(32bitx8=32octet), 18=Flags(ACK,PSH)
  7fff : Window
  c69d : Checksum
  0000 : Urgent Pointer
  0101 : Option:No-operation
  080a 〜 4a7a : Option:Timestamps

ポート番号、シーケンス番号、ACK番号、ウィンドウサイズなどがわかります。 (TCP ヘッダのオプションは、RFC1323 に書いてあります。)
そして、残りがデータです。+OK Qpopper 云々とおっしゃいます。

これに対して、以下の ACK を返します。

  01:09:09.989734 IP localhost.localdomain.42378 > \
  localhost.localdomain.pop3: . ack 75 win 32767 \
  <nop,nop,timestamp 174541460 174541460>
    0x0000:  4510 0034 ff7a 4000 4006 3d37 7f00 0001  E..4.z@.@.=7....
    0x0010:  7f00 0001 a58a 006e 0b05 b503 0baa 6f87  .......n......o.
    0x0020:  8010 7fff 6d92 0000 0101 080a 0a67 4a94  ....m........gJ.
    0x0030:  0a67 4a94                                .gJ.

IPヘッダは割愛します。TCPヘッダは以下の通りです。

  a58a : Source Port(42378)
  006e : Destination Port(110)
  0b05 b503 : Sequence Number
  0baa 6f87 : Acknowledge Number
  8010 : 8=Offset(32bitx8=32octet), 10=Flags(ACK)
  7fff : Window
  6d92 : Checksum
  0000 : Urgent Pointer
  0101 : Option:No-operation
  080a 〜 4a94 : Option:Timestamps

受けとりましたよという返事なので、データはありません。

その後、"USER ユーザ名" "+OK 云々" "PASS パスワード" "+OK 云々"... というやりとりが続きますが、これはアレですので、割愛します。

あ、そうそう、RFC は、たとえば以下から参照してください。

IETF RFC Page
http://www.ietf.org/rfc.html

今週の宿題

今週の宿題は、

  RCS で、もとのアクセス権を保存する方法を、考えてみましょう。

です。

たとえば、万人が読み書きできないといけないファイルを、 RCS を使って管理しようとします。

  % ls -l file 
  -rw-rw-rw-    1 usu      adm             5 Jun 12 01:00 file
  % ci file 
  % co file
  % ls -l file
  -r--r--r--    1 usu      adm             5 Jun 12 01:01 file

上記のように、チェックアウトすると、書き込み権が失われます。
だめなんだーとあきらめずに、 もとのアクセス権を保存するような方法を考えてみましょう。 (…次週までになにか考えます。)

あとがき

前回のネタについて、読者の方から、ご指摘いただきました。

> 試していいマシン上で以下を設定して、別のマシンから ping します。
> 
>   # iptables -A INPUT -p icmp -j DROP
> 
> …再現したでしょうか。
> 試したら、以下を実行して、もとに戻しましょう。
> 
>   # iptables -F

なんて気軽に書きましたが、上記のように iptables -F と実行しますと、 他の設定もまるっと消えてしまいます。
ですので、以下のように、追加した設定だけ消した方がよいと思います。

  # iptables -D INPUT -p icmp -j DROP

ご指摘いただいた○○さん、どうもありがとうございました。

もし、iptables -F を実行して、 のっぴきならない状況に陥ってしまった方がいらっしゃいましたら、 この場を借りて、陳謝いたします。m(_o_)m

…というわけで、最近、ちらほらと、感想などをいただいております。
ありがたい限りです。いやー、○△□☆【▲♀〜…

…あーもうだめです、今日は気力体力の限界に達しました。
土日に大阪の実家に帰ったのですが、ちょっとハードスケジュールだったため、 モウロウとしています。

すみません、しりきれとんぼ的ですが、ここでおわりにします。

今週も、ここまで読んでいただき、ありがとうございました。
それでは、また来週に、お会いしましょう!

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」−新日曜美術館に出ることが目下の夢です。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://www.fumido.co.jp/kuriniki/ (栗日記ぎゃらりー)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本