カテゴリー
Linux

CentOS6の練習-#9(ビルド環境を整える)。

 明日は,旧7月1日らしい。朝夕はすっかり秋めいてきたが,昼は相変わらず暑い。それでも,盆休みが終わって,昨日1週間ぶりで道々の田んぼを見たら,稲穂が出そろっていた。今日はツクツクボウシの鳴くのも聞いた。そして今は,これから夕立が来るのか,PCに触っているのが気持ち悪いほど,雷鳴がしている。

 夕べはギータの劇的なサヨナラホームランで勝った。球宴後,さあダッシュと思ったら,がっくりくる試合が続いて落ち込んでいたのだが,8月に入ってから,まあまあだ。何とか,5割復帰したし。上も抜け出せないでいるから,ここが踏ん張りどころだよー。鷹のみなさま,頑張ってちょうだい。

 ところで本題の方だが,いつも,buildとmakeはどう違うんだろうと思っていた。今回ちょっと気を入れてあちこち読み漁ってみたら,用語の発生した時期が違うだけで意味はあまり違わないらしいネ。少し,違う意味で使っているページもあるようだが,作業的にはだいたい同じことをやっているようだ。

 CentOS6の練習-#6で書いたように,すべてパッケージで済ませるかどうか悩んでいるが,それにしてもこの際buildの勉強は身を入れてやっておくべきだろう。今まで,実践でビルドにかかわったことはあっても,何やっているかなんて,あまりまじめに考えたことがない。コンパイルはやってるんだろうとか思ってたけど,リンクなんかの作業も入るんだねー。知らなかった。

 まっ,ありがちな「Hello, World!」の表示プログラムのbuildでもやってみるかな。今回の参照ページは,仕事で使える魔法のLAMPだけ。

  1. まずは,GCC(GNU Compiler Collection)のインストール。こういうところはパッケージを利用する(爆)。
       $ sudo yum install gcc gcc-c++
  2.    $ vi hello.c
    で,/home/centosに,以下の内容で,hello.cを作成する。
         #include <stdio.h>
         main()
         {
          printf(“Hello, World!n”);
         }
  3.    $ gcc hello.c -o hello
    で,コンパイルしてみる。-oオプションで実行ファイル名をhelloに指定。一瞬で終わるよ。
  4.    $ ./hello
    と実行してみると,
         Hello, World!
    と,表示された。

 ふーん,シェアードライブラリ(=.so⇒シェアードオブジェクト)っていうのは,Winのダイナミックリンクライブラリ(.dll)と同じなんだ。以下のコマンドで,いつもお世話になっているbashがリンクしている.soを調べてみた。
   $ ldd /bin/bash
     linux-gate.so.1 => (0x003da000)
     libtinfo.so.5 => /lib/libtinfo.so.5 (0x00e49000)  <<—  helloと違う.so
     libdl.so.2 => /lib/libdl.so.2 (0x004dc000)  <<—  helloと違う.so
     libc.so.6 => /lib/libc.so.6 (0x00110000)
     /lib/ld-linux.so.2 (0x00b31000)

 ついでに, $ ldd hello をやって比べてみた。
     linux-gate.so.1 => (0x00d44000)
     libc.so.6 => /lib/libc.so.6 (0x00110000)
     /lib/ld-linux.so.2 (0x00634000)
となるので,この3つは簡単なプログラムでも,C言語で書かれたプログラムが動くためには,絶対にいるようだネ。

 次に,hello.cを2つの分けて,一つずつコンパイルした後,リンカを使って一つのファイルに仕上げる作業をやってみる。

  1. $ vi main.c  で,以下の内容のmain.cを作成する。
         main()
         {
          hello();
         }
  2. $ vi hello.c で,以下の内容のhello.cを作成する。この際,ひらがなの表示を試してみることにした。
         #include <stdio.h>
         hello()
         {
          printf(“こんにちは,みなさん!n”);
         }
  3. まず,main.cだけコンパイル。  $ gcc -c main.c
    lsで調べると分かるけど,この段階で  main.o  ができている。
  4. 次に,hello.cをコンパイル。  $ gcc -c hello.c
    これも調べると  hello.o  ができている。
    -cオプションのときは,「name」.c ⇒ 「name」.oというように.oのファイル名を決めるようだ。
  5. リンク作業。素のリンカldは使わずに,gccから呼び出す形で使う方が普通だそうだ。
       $ gcc main.o hello.o -o hello
    調べてみると,実行ファイルhelloができているので,
       $ ./hello
    と実行してみると,
         こんにちは,みなさん!
    と,表示された。ちゃんと,ひらがなも表示される。日本語フォントを特別に手動で入れる必要はないようだ。

 この時点で,/home/centosには
   hello hello.c hello.o main.c main.o
があるが,あとの都合上生成された hello,hello.o,main.o を削除する。
   $ rm hello main.o hello.o

 さて,makeをインストールしますか。
   $ sudo yum install make

 Makefile作成。  $ vi Makefile  で,内容は次の1行。
     hello: main.o hello.o
     ターゲット: 依存ファイル1 依存ファイル2 ……
となるらしいが,今回は,main.o と hello.o から hello を作るだけなので,この1行でO.K.
 makeを走らせてみる。
   $ make
   cc -c -o hello.o hello.c
   cc -c -o main.o main.c
   cc hello.o main.o -o hello
とメッセージが出て,終了すると,/home/centosに hello,hello.o,main.o ができている。

   $ touch hello.c
をやったのち,makeをやると,
   cc -c -o hello.o hello.c
   cc hello.o main.o -o hello
さっきよりメッセージが1行少ない。touchでタイムスタンプの変わったhello.cだけがコンパイルし直されて,新しいhelloが作られることが分かる。

 本日の最後の練習は,GNU Helloを使った実行ファイルの作成。

  1. まず,ダウンロードのために wget をインストール。もっとも,自鯖の場合,この間のClamAVがらみでwgetは導入済み(汗)。
       $ sudo yum install wget
  2. 最新のGNU Helloをゲット。
       $ wget http://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz
  3. 同じバージョンのシグネチャファイルもダウンロード。
       $ wget http://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz.sig
  4. GnuPG(調べてみたら,gnupg2-2.0.14-4.el6.i686が,すでにインストール済みだった。)を使って,ファイルの正当性を確認する。
       $ gpg –list-keys    <<—  初回起動で,/home/centos/.gnupg が作成される。
       $ vi ~/.gnupg/gpg.conf
    で,中ごろにある keyserver-options auto-key-retrieve 行をアンコメントする。
  5. 以下のコマンドで,シグネチャの確認。
       $ gpg –verify hello-2.8.tar.gz.sig
     これ,何もしないでやったら日本語のメッセージが戻ってきたが,変な日本語。もちっとどうにかならんの。
         ————————————————————————————————————————
         gpg: 2012年04月21日 02時55分39秒 JSTにDSA鍵ID 80EE4A00で施された署名
         gpg: 鍵80EE4A00をhkpからサーバーkeys.gnupg.netに要求
         gpg: 鍵80EE4A00: 公開鍵“Reuben Thomas <rrt@sc3d.org>”を読み込みました
         gpg: 絶対的に信用する鍵が見つかりません
         gpg: 処理数の合計: 1
         gpg: 読込み: 1
         gpg: “Reuben Thomas <rrt@sc3d.org>”からの正しい署名  <<— こういう行があれば,O.K.というか,うーむ。
         gpg: 警告: この鍵は信用できる署名で証明されていません!
         gpg: この署名が所有者のものかどうかの検証手段がありません。
         主鍵の指紋: 9297 8852 A62F A5E2 85B2 A174 6808 9F73 80EE 4A00
         ————————————————————————————————————————
  6. パッケージを展開し,展開されてできたディレクトリに移動する。その後,ls -pで直下のファイルとディレクトリを確認する。
       $ tar zxvf hello-2.8.tar.gz
       $ cd hello-2.8
       $ ls -p
         ————————————————————————————————————————
         ABOUT-NLS GNUmakefile README build-aux/ doc/ po/
         AUTHORS INSTALL README-release config.in lib/ src/
         COPYING Makefile.am THANKS configure m4/ tests/
         ChangeLog Makefile.in TODO configure.ac maint.mk
         ChangeLog.O NEWS aclocal.m4 contrib/ man/
         ————————————————————————————————————————
    /の付いてるやつはディレクトリね。READMEとかTODOとかINSTALLあたりは読むけど,あとはドキュメント関係でもあんまり読んだことがない(汗)。あっ,たまにChangeLogも読む。
  7.    $ less INSTALL
     「Briefly, the shell commands `./configure; make; make install’ should configure, build, and install this package.」ということなので,素直に,
       $ ./configure –prefix=/opt/hello-2.8    <<—  インストール先を/opt/hello-2.8にしてやってみた。
     無事通ったので,もう1回, $ ls -p をやってみると,いろいろ変化があるが,大きなところで Makefile ができたのが分かる。とすると,ちゃんとmakeできるはずなので,
       $ make

       $ ./configure | grep ‘checking’ | wc -l
    で何をチェックしているのか項目数を調べてみた。参照ページでは,202と書いてあるが,うちのでは250あった。どんどん増えていくんだろうなあ。

     makeが終わったので,インストールしてみた。
       $ sudo make install

       $ ls -p /opt/hello-2.8  で確認してみると,確かに bin/ share/ ができている。
       $ ls -p /opt/hello-2.8/bin で見ると,中に実行ファイル hello があった。
       $ /opt/hello-2.8/bin/hello  と実行してみた。
         世界よ、こんにちは!
    と表示された。完了!!!

 本日は,ここまで。

カテゴリー
Linux

CentOS6の練習-#8(ClamAVの話,続き)。

投稿アップデート情報  追記(9/8)  追記2(10/1)

 前項で

そういえば,指定のリポジトリを書き直した方がいいということをよくネット上で見るが,Minimalインストールでも,CentOS6.3には初めからyum-plugin-fastestmirrorとyum-prestoが入ってる。これがあれば,ミラーリストをざっとなめてからやってくれてるみたいだが,それでも指定のリポジトリを書き直したがいいんだろうか。

と書いたのだが,ClamAVをwgetでインストールしたときに分かったことがある。
 常識なんだろうが,yumでインストールすると,依存関係をyumの方でちゃんとやってくれる。なので,
   $ sudo yum install clamd
とやると,clamav,clamd,clamav-dbが,すべてインストールされるが,wgetでダウンロードして,rpmでインストールするとそうはいかないから,順番とかライブラリに気を付けなければいけないことになる。どのサイトにも「yumは依存関係の処理もやってくれる」と書いているし,clamav直前のlm_sensorsのインストールでは,自分でも依存関係でいろいろ入ることに驚いているのに,これらのことをしっかり認識していなかったりするのだ(汗)。ただし,rpmを手動でインストールしても,yumは関知してるようで,
   $ sudo yum list installed|grep clam*
   clamav.i686 0.97.5-2.el6.rf installed
   clamav-db.i686 0.97.5-2.el6.rf installed
   clamd.i686 0.97.5-2.el6.rf installed
とちゃんとリストに表示される。

 ということになると,やはりclamavを含むリポジトリの導入をやっておいた方がいいわけで,ここ(魚拓です)を参考にそれをちょっとやってみた。大概のところは,clamavの導入時にリポジトリを追加し,あとでこれを外すみたいに書いてあって,「めんどくさいな。それならwgetでその都度やっても,同じジャン」とか思っていたのだが,参考ページではyum-prioritiesプラグインをインストールすることになっている。これ,いいな。
   $ sudo yum install yum-plugin-priorities
 CentOs6のCentOS-Base.repoを弄る。[priority=1]を追加してやって,リポジトリに優先順位をつけるわけだ。
   $ sudo vi /etc/yum.repos.d/CentOS-Base.repo

   [base]
   name=CentOS-$releasever – Base
   mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
   #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
   gpgcheck=1
   gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
   priority=1 <<— 追加

   #released updates
   [updates]
   name=CentOS-$releasever – Updates
   mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
   #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
   gpgcheck=1
   gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
   priority=1 <<— 追加

   #additional packages that may be useful
   [extras]
   name=CentOS-$releasever – Extras
   mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
   #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
   gpgcheck=1
   gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
   priority=1 <<— 追加
上書き保存して,終了。

 さて,rpmforgeリポジトリをインストールし,ついでにアップデートしておく。どうして,rpmforgeリポジトリにしたかっていうと,ClamAVオフィシャルのLinux(魚拓です)「RedHat and Fedora」のところに,「Dag Wieersによって大変よくメンテされてるリポジトリがあるのでそれを使うといい」と書いてある。これが http://packages.sw.be/clamav/ で,前項ではここからwgetで入れたわけ。今回は,も一度FAQを読みに行って,How do I use Yum ?のところを読み,rpmforge-release packageを見に行って,「RHEL6 and CentOS-6 x86 32bit」の下記を選択した。でもこれ,結局のところ理研のミラーから落ちてくるようだ。
   $ sudo rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
   $ sudo yum update rpmforge-release

 「11 packages excluded due to repository priority protections」と出た。yum-prioritiesを入れた効用だ。お利口さん。さて改めて,
   sudo yum install clam*    で,うっかりインストールしてしまったので,改めて   sudo yum install clamd
でやり直した。clamav,clamd,clamav-dbについては,最新版がインストールされていると出たが,依存関係がうまく解決されていなかったようだサービスを止めて,インストールし直してみた。

 その後,
   $ sudo vi /etc/clamd.conf
で,189行目を下記のようにコメントアウトする。
   #User clamav
clamdを再スタート。
   $ sudo /etc/rc.d/init.d/clamd restart
 –9/8(土),消し線追加。どうしてもうまくclamdscanを走らせられないので,clamscanで行くことにした。この場合,Userはclamavのままで,不都合はなかった。clamdscanの不具合は,SELinuxをpermissiveにし,Userをrootにしても直らなかった。今のところ,何が足を引っ張っているのか,不明。当面は,clamscanでいいことにしよう。–

   $ chkconfig –list
をチェックしてみると,この段階で,

clamd  0:off  1:off  2:on  3:on  4:on  5:on  6:off

となっており,clamav-milterとclamdが自動起動O.K.になっているようだ。sudo yum install clamdだと,有効になっているサービスは,clamdだけだった。

   $ sudo freshclam
 $ sudo /etc/rc.d/init.d/clamd restartも,freshclamやるまえから一度でうまくいった。やっぱ,前回は何かまずかったのかな。
 sudo yum install clamd でやると,やはり,freshclamを先にやらないと,clamd restartがうまくいかない。

追記2(10/1):
 上に,
> clamdscanの不具合は,SELinuxをpermissiveにし,Userをrootにしても直らなかった。
と書いたのだが,これについては,CentOS6.3 Minimalを改めて新規インストールして試したら,permissive+rootでは走らせることができた。いろいろ弄っていたのでどこかがまずくなっていたのかもしれない。

カテゴリー
Linux

CentOS6の練習-#7(lm_sensorsとClamAVの話)。

投稿アップデート情報  追記(8/12)

 今日は,夕立あり。3時過ぎには,降り出した。まぁ,一時の雨足は強かったが,本当に夕立で,すぐにやんだ。昨日は立秋。暑い暑いと言っていても,季節は進んでいるな。

 Tera Termを起動して,サーバに接続する。
   $ sudo yum update
をやってみた。できたけど,アップデートが何もなかった(爆)。そういえば,指定のリポジトリを書き直した方がいいということをよくネット上で見るが,Minimalインストールでも,CentOS6.3には初めからyum-plugin-fastestmirrorとyum-prestoが入ってる。これがあれば,ミラーリストをざっとなめてからやってくれてるみたいだが,それでも指定のリポジトリを書き直したがいいんだろうか。

 Tera Termそのものは,CUIのターミナルエミュレータだが,マウスでコピー&ペーストもできるし,サーバの処理をやりながらおんなじPC上でこの記事も書けるし,うんと楽チン。CentOS6.3のMinimalインストールでは,マウスさえ使える状態になっていなくて,久しぶりにキーボード頼りだった。日頃も結構ショートカットキーを使ってはいるが,全部となると,また問題が別。今日の夜中にSSHが使えるようになって,前記事の冒頭でぼやいたことが嘘みたい。サーバ上はこのまま,CUIだけでいいや。現金なやつ —>> 自分

 本家のお世話-#40。で書いたように,春から初夏にかけて,温度のことで大騒ぎしたxw4200なので,lm_sensorsを入れて温度を測ってみた。しかし,lm_sensorsを入れるだけでも,依存関係で結構いろいろ入るものである。
   $ sudo yum install lm_sensors
   $ sudo sensors-detect
   $ sensors
      ———————————————
      smsc47b397-isa-0480
      Adapter: ISA adapter
      fan1: 5619 RPM
      fan2: 0 RPM
      fan3: 0 RPM
      fan4: 3810 RPM
      temp1: +52.0°C
      temp2: +0.0°C
      temp3: +42.0°C
      temp4: +0.0°C
      ———————————————
 今朝からずっと火を入れていて,14:00現在,室温34℃の状態で上記だと,上出来じゃないだろうか。ただし,システムファンは7段階の7番目(「低 <-- 123456(7) --> 高」)でフル回転していて,ものすごーくウルサイ。

 そういえばClamAVを入れていないので入れてみることにする。標準のリポジトリには含まれていないので,ダウンロードにwgetを使うが,これもMinimalには入っていないので,先にwgetをインストール。
   $ sudo yum install wget
 次に,ClamAV関係の3ファイルをダウンロードする。
   $ sudo wget http://pkgs.repoforge.org/clamav/clamav-0.97.5-2.el6.rf.i686.rpm
   $ sudo wget http://pkgs.repoforge.org/clamav/clamd-0.97.5-2.el6.rf.i686.rpm
   $ sudo wget http://pkgs.repoforge.org/clamav/clamav-db-0.97.5-2.el6.rf.i686.rpm
 ダウンロードした3ファイルは/home/centosに保存されている。
   $ sudo rpm -ivh clamav-db-0.97.5-2.el6.rf.i686.rpm
はできたが,
   $ sudo rpm -ivh clamav-0.97.5-2.el6.rf.i686.rpm
をやると,libltdl.so.7がないと怒られるので,libtool-ltdlをインストール。
   $ sudo yum install libtool-ltdl
改めて,次をやると
   $ sudo rpm -ivh clamav-0.97.5-2.el6.rf.i686.rpm
通ったので,次に,
   $ sudo rpm -ivh clamd-0.97.5-2.el6.rf.i686.rpm
で,インストールは完了。

   $ sudo /etc/rc.d/init.d/clamd start
とやると,
     Starting Clam AntiVirus Daemon: LibClamAV Error: cl_cvdhead: Can’t read CVD header in
     /var/clamav/daily.cld
     LibClamAV Error: cli_loaddbdir(): error parsing header of /var/clamav/daily.cld
     ERROR: Malformed database
と daily.cld が壊れているらしいので,先に
   $ sudo freshclam
をやってみた。その後,改めて
   $ sudo /etc/rc.d/init.d/clamd start
をやったら,Clam AntiVirus Daemon が無事走り出した。

追記(8/12):
 ちゃんとrpmforgeリポジトリを導入して,ClamAVのインストールをやり直した。その経緯を次記事に書いたので,インストールする場合は,そっちを参考にしてください。

カテゴリー
Linux

CentOS6の練習-#6(SSHサーバ)。

 まず,ぼやき。LINUXサーバはCUIで行くって一応決めたんだが,やっぱ慣れない。なんか何十年も時代を遡った気分になる。しかし,使い勝手は別にして,セキュリティの点から言うとあんまりいらないものというか,使わなくてすむものは入れないほうがいいんだろう。例えば,BINDだって,うちのレベルだとなければないですむ。
 それと,もうひとつ悩んでいるのが,パッケージの利用。表題のSSHだってCentOS6.3標準のパッケージだと,openssh-5.3p1。開発元の最新だと,openssh-6.0p1。Apacheは2.2.15だし,PHPは5.3.3と来る。これまでのポリシーに反するから,やはり,自分でビルドすることに馴染むべきなのかなぁ。でも,Winだと最新バージョンを使うからって,ビルドまではやらないから,ホント馴染みがない。どうしよう。

 ところで本題。今のところユーザがrootしかいない。昨今,SSHの接続には,rootを使わないのが主流みたい。というわけで,この際,-gオプション付きでグループ(users)を指定して,一般管理ユーザcentosを作る。ホームディレクトリが一緒に作られるようだ。パスワードも設定しておく。
   # useradd -g users centos
   # passwd centos
 この一般ユーザをsudoで使いたいのだが,Minimalインストールの場合は,sudoそのものがインストールされていないので,これをインストールする。
   # yum install sudo
 あと,sudoersの編集をする。以下を追加。(注:sudoersファイルって,実は行単位で管理されているようで,追加場所は root の直下でなくて,末尾でも構わないようだ。)
   centos ALL=(ALL) ALL
 ひとまずログアウト,centosでログイン。プロンプトが# —->> $に変わる。
   # exit
   login: centos  <<—- 作成したユーザ名
   Password:  <<—- 作成したユーザのパスワードを入力
   $ pwd
   /home/centos と表示され,ログイン直後はユーザのホームディレクトリにいることが分かる。
   $ sudo -l  <<—- このユーザのsudo権限を確認(表示結果は,sudo_-l.txt参照)

 ところで,CentOS6の練習-#5で,SSHデーモンはデフォルトで動いていることが分かっているので,現時点のバージョンと設定を確認。
   $ rpm -q openssh
と問い合わせると,openssh-5.3p1-81.el6.i686が戻ってきた。これは,インストール時と同じである。OpenSSHによれば,現時点の最新バージョンはopenssh-6.0p1なんだが,wikiをうろうろしていたら,Securing OpenSSHの8. Frequently Asked Question (FAQ)にUpstream Vendorが出すセキュリティ・パッチをきっちり当てていれば,無理に最新バージョンにする必要はないと書いてあった。前述のように悩んではいるのだが,独自にビルドしてインストールするのは,もう少しわかってきてからにして,今回はこのままで行くことにした。
 さて,設定を弄るにあたってマニュアルを見たいのだが,installed.txtでわかるとおりMinimalでは,Manもインストールされていない。ここで,インストールする。
   $ sudo yum install man
   $ man sshd_config
で表示されたものを参考にしながら, /etc/ssh/sshd_configを見ていく。これの一番上の方に注釈として,コメントアウトの形で書いてあるのがデフォルトの設定で,アンコメントの分が特別に設定を変えてあるところだと書いてある。ずーっと見ていくと,まず,

  1. #Port 22 になっているのだが,これを Port xxxxx (0 ~ 65535なら何でもよい。)にする。
    ssh のポート22っていうのはWELL KNOWNだから,自分しか使わない接続のポートとしては「変えておいた方が無難だよな」って程度。普通は,0からずっと開いてるポートをなめてくって形だろうから,時間かかったらあきらめてくれることを狙って,大きい数の方がいいのかな。今どき,時間もあんまり関係ないかなぁ。まっ,でも22のままよりはいいだろう。
  2. Protocol 2(つまり,SSH2)になってて,レガシー(つまり,SSH1)は殺されてるから,O.K.
  3. #ServerKeyBits 1024  —>>  ServerKeyBits 2048
  4. #PermitRootLogin yes  —>>  PermitRootLogin no
  5. #RSAAuthentication yes だから,デフォルトで使えることになっているのだが,
    RSAAuthentication yes にして,利用していることを明示しておく。そのほうが,あとで自分が確認するとき,混乱しなくて済む。<<— 設定はデフォルトのままだけど,自分がこれを使うと特に認識したいときは,すべてこの書き方で行く。ということで,
    #PubkeyAuthentication yes  —>>  PubkeyAuthentication yes
    #AuthorizedKeysFile .ssh/authorized_keys  —>>  AuthorizedKeysFile .ssh/authorized_keys
  6. #HostbasedAuthentication no  —>>  HostbasedAuthentication no
  7. PasswordAuthentication yes  —>>  PasswordAuthentication no
    #PermitEmptyPasswords no  —>>  PermitEmptyPasswords no
  8. ChallengeResponseAuthentication no になっているからてるから,O.K.
  9. GSSAPIAuthentication yes  —>>  GSSAPIAuthentication no にもどす。ここは,あとで変えるかもしれない。
  10. X11Forwarding yes  —>>  X11Forwarding no にもどす。ここも後で変えるかもしれない。

 こんな感じかな。これで,

  • SSH2 接続。
  • 2048ビットのRSA公開鍵・秘密鍵
  • 上記鍵ペアのパスフレーズ

を想定した接続になるはず。

   $ sudo vi /etc/ssh/sshd_config
で設定を書き換える。
   $ which sshd
でsshdの場所を調べる。
   $ sudo /usr/sbin/sshd -t
で,テスト。bad configurationが戻ってきたら対処。今回は何も戻ってこないので,次へ進む。
   $ sudo service sshd restart
   Stopping sshd:                  [ OK ]
   Starting sshd:                  [ OK ]
が瞬時で戻ってきた。ハヤッ。

 SSHのポートを変更したので,ファイアーウォールの設定(/etc/sysconfig/iptables)で,ポート22を上で設定したものに変更する。変更を適用するために,サービスをリスタート。
   $ sudo service iptables restart

 「2048ビットのRSA公開鍵・秘密鍵」のつもりなので,鍵を用意しなければいけない。ssh-keygenコマンドで,CentOS6上で生成できるようだが,鍵ペアのパスフレーズにかなり長いものを使うつもりなので,入力が不安。まぁ,出来るまで何度でもやればいいようなもんだが……それに,公開鍵・秘密鍵の性質から考えて,クライアント側で生成して,サーバに送るほうが安全だろう。秘密鍵はメールで送るわけにいかないが,公開鍵ならそれもできるわけだし。
 どうせWin端末からリモートするから,ターミナルエミュレータとしてTera Termを導入することにした。Tera Termには鍵生成の機能もある。Tera TermはかなりあとまでSSH2やUTF-8に対応していなかったらしいが,現在はサポートするようになり,Tera Termプロジェクトが順調に動いているようなので,PuTTYでなくこちらを使うことにした。

  1. リリースファイル一覧から,teraterm-4.74.exeをダウンロード。Windows用定番SSHクライアント「Tera Term」の使い方を参考にしながら,イントラ内のWin端末にインストール。オプションがいろいろあるが,今回は初めてのことなので,「標準インストール」した。自分が使わないオプションは,入れないほうがいいかもしれないが,インストールするのはWin端末で,サーバ上じゃないから,ちょっとお気楽。
  2. Tera Termを起動する。新しい接続の窓は閉じて,鍵を生成する。練習サーバは,自LAN内からだけのアクセスだが,これ(今回のLINUX サーバ構築)を機会に外部からでもリモート出来るようにしてみたいという夢(オーバー ^^,,, )があるので,ガンバ。
    「設定」>>「SSH鍵生成」から,図1の設定で鍵を生成。生成の終わったところでパスフレーズを入力。公開鍵と秘密鍵を保存したら,鍵生成の窓を閉じてTera Termを終了する。
    ところで,
       公開鍵(id_rsa.pub)
         = サーバに登録する鍵(人に見られても問題ない鍵)
       秘密鍵(id_rsa)
         = ローカルマシンに置いておく鍵(人に見られてはいけない鍵)
    なので,公開鍵の方をサーバにコピーしなければいけない。
         参考ページ:秘密鍵と公開鍵
  3. Tera Termで鍵を作ったので,サーバ上にディレクトリ.sshがない。これを作る。場所は,/home/centos/.ssh 。
       $ cd
       $ mkdir .ssh   パーミッション755 ownerはcentos
       $ chmod 700 .ssh
     USBフラッシュメモリに入れたid_rsa.pubをサーバにコピーする。
       $ sudo mount -t vfat /dev/sdb1 /mnt/flash
       $ cp /mnt/flash/id_rsa.pub .ssh/authorized_keys
          パーミッション755 ownerはcentos
       $ sudo umount /mnt/flash
       $ chmod 600 .ssh/authorized_keys
       $ sudo service sshd restart

 さて,Tera Termを起動して,イントラ内から接続してみよう。

  1. 新しい接続のホスト名と,TCPポートだけをデフォルトから変更して[OK]をクリック(図2)。
  2. 1度目は,セキュリティ警告が出る(図3)。ここで,known hostsリストに追加しておくと,次から出なくなる。サーバ情報が何も変わっていないのに,セキュリティ警告が出る場合は,なりすましなどの危険があるので,そういう場合の用心のためにも,この画面は記録しておいた方がいいと思う。
  3. 図4でユーザ名とパスフレーズ,秘密鍵の場所を指定してやると,接続できた(図5)。
図1
図1

図2
図2

図3
図3

図4
図4

図5
図5

 今回の主たる参照先(上記ですでにリンクを貼っているところ以外)。

  1. Red Hat Enterprise Linux 6
  2. 仕事で使える魔法のLAMP
  3. Linuxコマンド百科辞典
カテゴリー
Linux

CentOS6の練習-#5(デフォルトで動いてるサービス)。

 アヂ,アヂ,アヂ!! やっと,昨日梅雨が明けた。しかし,今週の天気は,一昨日も昨日も今日も,梅雨というより,晴れーーーのち夕立ッ,見たいな感じだった。暑いし湿気てるし,「うーっ,溶けてしまいそうだ」。日本の夏だー。

 ひとしきり唸ったところで本題。7/13に6.3のMinimalをインストールしてから,正直,まだ何も手を付けていない。一番最初に,CentOSを使おうかなと決めたときのサイトを見に行って,別のディストリに食指を動かすなんてことをやったりもしている。まぁ,でもCentOSで行くことは変えてないけどね。

 電源入れるたび,yum updateだけをやってる感じなんだが,結構頻繁にkernelのマイナー・アップデートがあるんだな。7/13からもう2回もアップデートがあった。
   kernel.i686 2.6.32-279.el6  <<— インストール時
   kernel.i686 2.6.32-279.1.1.el6
   kernel.i686 2.6.32-279.2.1.el6
という感じ。でもって,
   yum list installed|grep kernel
とか
   rpm -qa|grep kernel
とかで問い合わせてやると,3つとも出てくるから,kernelについては自動で清掃作業はやらないみたい。まぁ,もしやられるとしたら逆に怖くもあるけど。今のところは必要ないが,古いkernelの削除を,CentOS6だと package-cleanup –oldkernels でざっくりできると書いてある。package-cleanup は,yum-utils に含まれているらしい。しかし,installed.txtを見た限りでは,Minimalだとインストールされていない。実際,
   package-cleanup –oldkernels
とやったら, command not found が戻ってきた。で,yum-utils をインストールしてみた。いらんことかもしれんが……。
   yum install yum-utils
 終わってから,
   package-cleanup –oldkernels
をやってみたら,
   kernel.i686 2.6.32-279.1.1.el6
   kernel.i686 2.6.32-279.2.1.el6
だけになった。ふーん,お利口さんだ。最新だけでなく,その直前のkernelも残すんだ。

 Minimal インストールだと,初期の段階で,どんなサービスが動いているんだろうか。 ntsysv が使えると書いてあるが,このパッケージもインストールされていなかった。あれもこれもインストールするのはどうかと思い,
   service –status-all
でチェックして見た。標準出力に出した場合と若干差があるようだが,USBフラッシュメモリに書きだした一覧がこれ。知らないサービスが並んでいて,見てもまだよく意味がよくわからない。しかし,sshdなんかはMinimalでも初めから走ってるんだなということは分かった(爆)。

カテゴリー
Windows

本家のお世話-#46。(PHP5.4.5へアップデート)

投稿アップデート情報  追記(8/10)  追記2(2013/2/14)

 PHPのおニューが出た。というわけで,4日遅れくらいで,PHP5.4.5(Jul-18 23:41:03UTC)にアップデートした。

 Apache Loungeのほうでも,下記のようになっていたので,php5apache2_4.dll-php-5.4-win32.zipをダウンロードし,中にあったPHP5.4.5用のphp5apache2_4.dllをPHPディレクトリにコピーした。
   20 July 2012
   php handler 5.3.15 and 5.4.5

 php.iniは前版と本質的な変更点がなかったので,そのまま利用した。もし,参考にされる方がいたら設定については,本家のお世話-#28。を参照してください。

 しっかし,前にも書いたが,相変わらず php handler が小枝番ごとに変わっている。やはりまだ,安定したとは言い難いんだろうな。

追記(8/10):
 今日は,8月10日。なっなんと,2週間以上,php5ts.dllのcrashが起こってないのだ。びっくり。PHP5.4.5へアップデートにしてからだ。Windows+Apache2.4.x+PHP5.4.xの件,ついに解決かな。開発者のみなさま,おめでとうございます&ありがとうございました。

追記2(2013/2/14):
 php5apache2_4.dll でググって来られる方がおられるようなので,追記。 PHP5.4.10 から php5apache2_4.dll も PHP のオフィシャルバイナリに同梱されるようになりました。

カテゴリー
Linux

CentOS6の練習-#4(インストールされたPackage)。

 現時点でインストールされているパッケージのリストを確認。
   # yum list installed
とやると,一覧が画面上を流れる。特定のパッケージのインストール状況とかを知りたいんであれば,
   yum list installed|grep openssh
とかでいいんだが,今の場合は一覧なので,画面上を流れられても困る。記録のためにフラッシュメモリー上に書きだすことにする。

 で,ちょっと,覚え書。USBフラッシュメモリのマウントのしかた。

  • USBフラッシュメモリを挿す。 <<— 当たり前か(笑)。
  •    # dmesg
    でデバイス名を調べる。  sdb: sdb1  になっていた。
  • マウントポイントを作る。 <<— 初回のみ。
       # mkdir /mnt/flash
  • マウントする。
       # mount -t vfat /dev/sdb1 /mnt/flash
  • installed.txtに書きだす。 <<— 今回はこれをやりたくてマウントしたので,ここの操作は当然毎度変わる。
       # yum list installed > /mnt/flash/installed.txt
  • アンマウントする。
       # umount /mnt/flash
カテゴリー
Linux

CentOS6の練習-#3([Minimal]インストール)。

投稿アップデート情報  更新(7/13)

 さて,いよいよLinux サーバの構築を始めます。Webサーバの構築だから,「本家のお世話」の関係だが,ひとまずはテスト構築なので,「CentOS6の練習」に入れた。何はともあれ,Minimalのインストールまで。
 今日(7/13),CentOS6.3のリリースノートを拾い読みしていたら,「MinimalCD と full DVD から Minimal を選んだ場合は完全に同じわけではないから気をつけてね」と書いてあった。6.2についても同じことが書いてあった。どこが違うんだろう。それもどっかに書いてあるんだろうなと,思った。 yum update したら,6.2が6.3になったんだが,今後,サーバについては,MinimalCDを基準に行こうと思っているので,この際,も一度MinimalCDからやり直しておこうということで,ちょっと書き換え。

  1. xw4200を,CentOS-6.2-i386-bin-DVD1から起動する。Minimalのインストールだから,CentOS-6.2-i386-minimal.iso を使ってもいいんだが,この間作ったDVDがあるのでそれを使用した。CentOS-6.3-i386-minimal.isoから起動する。
  2. 一番上の「Install or upgrade an existing system」のままで[Enter]。
  3. |Disk Found|では「Skip」を選んで[Enter]。
  4. CentOS6のロゴが表示されたら,[Next]をクリック。
  5. Japanese(日本語)を選び,[Next]をクリック。
  6. キーボードは日本語が選ばれていると思うので,そのまま,[次(N)]をクリック。
  7. 「基本ストレージデバイス」を選んだまま,[次(N)]をクリック。
  8. 「新規インストール」を選んだまま,[次(N)]をクリック。
  9. ホスト名は,自鯖のホスト名を設定。
    左下の「Configure Network」に入って,System eth0 の IPv4について自宅LANの情報を設定する。「自動接続する」のところを必ずチェックする。これについては,ルータなどの設定も必要になる。
    [次(N)]をクリック。
  10. タイムゾーンは,「アジア/東京」のまま,左下の「システムクロックで UTCを使用」のチェックをはずし,[次(N)]をクリック。
  11. rootのパスワードを設定。絶対に忘れないように,控えを!! [次(N)]をクリック。
  12. 「既存のLinuxシステムを入れ替える」を選び,左下の「パーティションのレイアウトをレビューまたは修正する」にチェックをしたのち,[次(N)]をクリック。もう1度,[次(N)]をクリック。 「変更をディスクに書き込む」をクリック。
  13. |ブートローダーのオペレーティングシステムのリスト|から「Others」を削除して,[次(N)]をクリック。
  14. [Minimal]をインストールするので,そのままで,[次(N)]をクリック。
  15. DVD CDが排出されるので,取り出した後,光学ドライブを閉じて,「再起動(T)」をクリック。
  16. CentOS release 6.2 (Final) CentOS release 6.3 (Final)
    Kernel 2.6.32-220.e16.i686 on an i686 Kernel 2.6.32-279.e16.i686 on an i686

    login:
    と表示されるので,ユーザ名はrootを使用し,先ほど決めたrootのパスワードで,ログインする。

  17. ここでアップデートを行っておく。
    # yum update
  18. SELinuxの状態の確認。
    # getenforce
    Enforcing <<– 有効です。
    Minimalのノーカスタマイズってことは,xが入っていないので,すべてコマンドラインからなわけ。それでたったこれだけで疲れた。ひとまず,シャットダウン。shutdown -h now (爆)
カテゴリー
Windows

本家のお世話-#43。(PHP5.4.4へアップデート)

投稿アップデート情報  追記(2013/2/14)

 php5ts.dllのクラッシュによる再起動はずいぶん減ったが,Win版ApacheとPHPのおニューが出たときにはアップデートするように心がけている。しかし,PHPはあまりに早く対処すると怖いという経験がある。本日,4日遅れくらいで,PHP5.4.4(Jun-13 22:39:02UTC)にアップデートした。

 Apache Loungeを見たら,下記のようになっていたので,php5apache2_4.dll-php-5.4-win32.zipをダウンロードし,中にあったPHP5.4.4用のphp5apache2_4.dllをPHPディレクトリにコピーした。
   14 June 2012
   php handler 5.3.14 and 5.4.4

 php.iniは前版と変更点がなかったので,そのまま利用した。もし,参考にされる方がいたら設定については,本家のお世話-#28。を参照してください。

 しっかし,php handlerが,小枝番ごとに変わっているところを見ると,まだまだ安定とは言い難いんだろうな。

追記(2013/2/14):
 php5apache2_4.dll でググって来られる方がおられるようなので,追記。 PHP5.4.10 から php5apache2_4.dll も PHP のオフィシャルバイナリに同梱されるようになりました。

カテゴリー
Windows

本家のお世話-#38。(PHP5.4.3へアップデート)

投稿アップデート情報  追記(2013/2/14)

 php5ts.dllのクラッシュによる再起動は完全になくなったわけではないので,Win版ApacheとPHPのおニューが出たときにはアップデートするように心がけているのだが,PHPはあまりに早く対処すると怖いという経験がある。それに,ハードの不具合でバタバタしていたせいで後回しになっていたが,本日遅ればせながら,PHP5.4.3(May-08 18:26:37UTC)にアップデートしてみた。Apache Loungeを見たら,httpd-2.4.2-win32-VC9.zip(May-14)もタイムスタンプが変わっているようなので,これも一緒に入れ替えることにした。

 php5apache2_4.dll-php-5.4-win32.zipも実体は変わっているようなので落として展開してみたら,PHP5.4.3用のphp5apache2_4.dllが入っていた。危ない危ない。気づかなかったら,またハマるところだった。これを忘れずにPHPディレクトリに入れること。

 Apacheのhttpd.confとphp.iniは前版と変更点がなかったので,そのまま利用した。もし,参考にされる方がいたら両方の設定については,本家のお世話-#28。を参照してください。

 ついでに,MySQLもmysql-5.5.25-win32.msiにアップデートした。

追記(2013/2/14):
 php5apache2_4.dll でググって来られる方がおられるようなので,追記。 PHP5.4.10 から php5apache2_4.dll も PHP のオフィシャルバイナリに同梱されるようになりました。