#navi(OpenBlockS)

#contents

**ちょっとした技 [#m98fc012]
***sudo [#j817e288]
ssdlinux には sudo コマンドが付いているが、設定がされていない。

/etc/pam.conf に以下を加える

 #
 # The PAM configuration file for the `sudo' service
 #
 sudo    auth       required   pam_unix.so
 sudo    account    required   pam_unix.so
 sudo    session    required   pam_unix.so

root になって visudo コマンドで、wheel グループに属するユーザーは一定時間なんでも出来るように設定する。(コメントを外すだけ、コマンドを限定したほうが良さそうだが、実行したコマンドのログが残るのでよしとする)

 # Uncomment to allow people in group wheel to run all commands
 %wheel  ALL=(ALL)       ALL

wheel に属する一般ユーザーで sudo cat /etc/shadow とすれば、パスワードを聞いてくる。自分のパスワードを入れれば、実行されるはず。後は、5分間パスワード無しで sudo コマンドが使える。./configure ; make ; sudo make install というスクリプトを書いても大丈夫だ。

su - コマンドのような、ユーザーの環境を引き継がないで実行する方法がわからない。

***時刻合わせ [#t99d95c3]
/etc/rc.conf に ntpdate=YES ntpdate_hosts="210.173.160.27 210.173.160.57 210.173.160.87" ntpd=YES を加える。

/etc/ntp.conf に以下の設定を加える

 # ntp[123].jst.mfeed.ad.jp
 server 210.173.160.27
 server 210.173.160.57
 server 210.173.160.87

root になって /usr/sbin/ntpd を起動、しばらく経ってから ntpq で様子を見る。ホスト名を付けないとエラーになるのは、eth1 とか tun0 とか動いていないインターフェースがあるからかも。

 $ /usr/sbin/ntpq minig
 ntpq> peer
      remote           refid      st t when poll reach   delay   offset  jitter
 ==============================================================================
 *ntp1.jst.mfeed. utc3.crl.go.jp   2 u   32   64  377   23.266   -0.722   2.338
 +ntp2.jst.mfeed. utc3.crl.go.jp   2 u   37   64  377   22.886    4.153   4.064
 +ntp3.jst.mfeed. utc2.crl.go.jp   2 u   33   64  377   23.003   -1.002   2.714
 ntpq> 

時刻が合ったら、hwclock --systohc しておく。

***ブロードバンド・ルータのDNS [#u34e5425]
ブロードバンド・ルータのDHCPにアドレスを割り当ててもらう場合、DNSの設定 (/etc/resolv.conf) がブロードバンド・ルータを指すように変更される。ブロードバンド・ルータでは、プロバイダのDNSとの間で問い合わせを中継 (forwarding) してくれる。

内部にメール・サーバーを置いて外部へメールを出そうとする場合、宛先に対応するメール・サーバーを見つけるために、DNSを使ってMXレコードを検索しないといけないのだが、どうもブロードバンド・ルータがMXレコードの中継をやってくれないようだ。セキュリティ上の問題で意図してやっているのか、そういう仕様なのか不明だ。

仕方が無いので、以前からやろうと思っていたのだが決心がつかないでいた、OpenBlockS の固定アドレス化を行うことにした。ブロードバンド・ルータのアドレスは、192.168.0.1 で、OpenBlockS (ホスト名 minig)のアドレス 192.168.0.80 で、このアドレスをブロードバンド・ルータが DHCP で割り当てることが無いことを確認し、/etc/rc.conf を書き換えて再起動。

 $ cat /etc/rc.conf
 if [ -r /etc/defaults/rc.conf ]; then
         . /etc/defaults/rc.conf
 fi
 
 rc_configured=YES
 
 do_contrib_rc=NO
 
 hostname="minig"
 defaultroute="192.168.0.1"
 domainname="localdomain"
 
 auto_ifconfig=NO
 net_interfaces="eth0"
 ifconfig_eth0="192.168.0.80"
 
 ntpdate=YES
 ntpdate_hosts="210.173.160.27 210.173.160.57 210.173.160.87"
 ntpd=YES
 
 sshd=YES

他にも、ls /usr/contrib/samba/lib/smb.conf でインターフェース名をアドレスで指定していたのを修正。/etc/resolv.conf には、プロバイダから指定された DNS のアドレスを書いておく。

***rsyncを使ったバックアップ [#b569c6fc]
Linux同士でホーム・ディレクトリの内容を、rsyncを使って
お互いにバックアップしあうには、例えば fedra1 から minig(OpebBlockS)に
バックアップしたいときは、fedra1側から以下のようにする。

 rsync -avz --delete -e ssh --exclude="otsuka/backup/*" $HOME \
 minig:backup/fedora1

バックアップが完了した後、以下のようなエラーが出ることがある。

 rsync error: partial transfer (code 23) at main.c(925)

これはファイルの owner が違っていて変更できなかったといったことのようだ。-a は -rlptgoD と等価なのだが一般ユーザでは goD オプションは使えないので、-a ではなく -rlpt を指定すればいい。

Red Hat や Debian のホームディレクトリのグループは、uid と同じだが、
ssdlinuxでは、users になるので、変更できないということのようだ。

-参考: http://oku.edu.mie-u.ac.jp/~okumura/networking/rsync.html
-[[ITmedia エンタープライズ:rsyncを使った熟練者レベルのバックアップ (1/3):http://www.itmedia.co.jp/enterprise/articles/0707/19/news059.html]]

***画像の大きさ [#ze60051b]
perlのCGIで画像を送るときにサイズ指定する必要がある場合、
今までは Windows で調べて直接コーディングに埋め込んでいた。
shellのコマンドラインから調べられれば、
もう少し手間をかけずに画像の大きさが調べられるはずだ。

ImageMagick というパッケージに identify というツールが付いているので、
これで任意の画像ファイルの大きさなどが得られるらしい。
そこで debian PC から apt-get source imagemagick で持ってきた
ソースを OpenBlockS でコンパイルしてみたが、
 libtool: link: `/usr/cross/powerpc/powerpc-ssd-linux-gnu/lib/./libstdc++.la' \
 is not a valid libtool archive
というようなエラーで止まってしまった。
セルフ環境でコンパイルしているにもかかわらず、/usr/cross/powerpc/...
からライブラリをリンクしようとしているようだ。
これを制御しているのが、libtool という configure で自動的に作られた
ファイルで、これが腐っているためにそうなる、ということのようだが、
これ以上かかわるのはやめた。

次に、libextractor というパッケージで、画像ファイルの
自動判別が出来るようなので、これをまた apt-get source extract で
持ってきてコンパイルを試みたが、これも失敗。
付属の README によると、凶悪な大きさの C のソースを辞書として
コンパイルしなければならないようで、100MBのメインメモリが必要なので、
なるべくバイナリで入手するように、とのことでこちらも断念。

よくよく考えたら、すでに php が動いているので、
これをコマンドラインから以下のスクリプトで呼び出せば
簡単にプログラムできることに気が付いた。
 #!/usr/local/bin/php
 <?php
 if ($argc <= 1) {
   echo "Usage: Calculate image size\n";
   echo "getimagesize.php {file} ...\n";
 } else {
   while($fn = next($argv)) {
     $size = getimagesize($fn);
     echo $fn . ": " . $size['mime'] . ": " . $size[3] . "\n";
   }
 }
 ?>

***GnuPG [#t1eaecc4]
署名の確認方法。怪しいソースに入れ替わってないか、よく確認しよう。
Linuxのカーネル・ソースを貰ってくる例。

+kernel.org から linux のカーネル・ソースをダウンロード
 $ wget http://www.jp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.9.tar.gz
 $ wget http://www.jp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.9.tar.gz.sign
+署名を確認
 $ gpg --verify linux-2.6.9.tar.bz2.sign
 gpg: 2004年10月19日 07時19分21秒 JST のDSA鍵ID 517D0F0Eによる署名
 gpg: 署名を検査できません: 公開鍵が見つかりません
+鍵を持っていなかった場合は鍵サーバーから貰ってくる。
0xから先のIDの部分を、先の手順で無いと言われたメッセージから拾ってくる。((最近は wwwkeys.pgp.net というサーバーが応答しないようなので、~/.gnupg/gpg.conf に keyserver hkp://subkeys.pgp.net と書いておくと --keyserver オプションを省略できる))
0xから先のIDの部分を、先の手順で無いと言われたメッセージから拾ってくる。((最近は wwwkeys.pgp.net というサーバーが応答しないようなので、『[[Submitting your GPG key to a keyserver:http://www.debian-administration.org/articles/451]]』を参考に ~/.gnupg/gpg.conf に keyserver hkp://subkeys.pgp.net と書いておいて --keyserver を省略して使ってみる))
 $ gpg --keyserver wwwkeys.pgp.net --recv-keys 0x517D0F0E
 gpg: 鍵517D0F0E: 公開鍵「Linux Kernel Archives Verification Key \
 <ftpadmin@kernel.org>」を読み込みました
 gpg:          処理数の合計: 1
 gpg:                読込み: 1
+改めて署名を確認する
 $ gpg --verify linux-2.6.9.tar.bz2.sign
 gpg: 2004年10月19日 07時19分21秒 JST のDSA鍵ID 517D0F0Eによる署名
 gpg: 正しい署名: "Linux Kernel Archives Verification Key <ftpadmin@kernel.org>"
 gpg:        別名 "Linux Kernel Archives Verification Key <ftpadmin@kernel.org>"
 gpg: 信用データベースの検査
 gpg: 絶対的に信用する鍵が見つかりません
 gpg: 警告: この鍵は信用できる署名で証明されていません!
 gpg:       この署名が本人のものかどうかの検証手段がありません。
 主鍵の指紋: C75D C40A 11D7 AF88 9981  ED5B C86B A06A 517D 0F0E
+鍵の指紋(Finger Print)をkernel.orgのサイトを見て確かめる。

apacheやphp等も同じ要領で確認できる。

***出先からお家サーバーに繋ぐ方法 [#j9952ec8]

出先のサーバー satellite にある ~/RELEASE-20050119/ 以下のファイルを
お家サーバー minig.example.jp にミラーリングする。

会社から出先のサーバーに入って、出先のサーバーのIPアドレスをお家サーバーに伝える。
 [otsuka@satellite otsuka]$ mkdir tmp/minig.example.jp ; cd tmp/minig.example.jp
 [otsuka@satellite minig.example.jp]$ wget http://minig.example.jp/

会社からお家サーバーに入って、追加で出先サーバーからの ssh ができるように iptables の
チェーンの最初に加える。
 [root@minig root]# tail /var/log/access_log | grep wget
 172.16.110.220 - - [26/May/2005:18:46:23 +0900] "GET / HTTP/1.0" 200 311 "-" "Wget/1.8.2"
 [root@minig root]# /sbin/iptables -I INPUT 1 -p tcp -s 172.16.110.220 --dport 22 -j ACCEPT

出先のサーバーのディレクトリをsshで繋いだお家サーバーのディレクトリにミラーする。
 [otsuka@satellite minig.example.jp]$ cd ~
 [otsuka@satellite otsuka]$ rsync -avz -e ssh RELEASE-20050119 \
 minig.example.jp:/home/ftp/pub/plathome/OpenBlockS266/

ミラーが終わったらお家サーバーの iptables チェーンから出先サーバーを抹消する。
 [root@minig root]# /sbin/iptables -D INPUT 1

----
#include(免責事項)

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS