タグ「ubuntu」が付けられているエントリー

php-openidのドキュメントを作成する方法

| php-openidのドキュメントを作成する方法

備忘録的メモ.前提条件として,apacheやphpは入っていること,pearが使える状態であること.こっちのOSはUbuntu9.10amd64です.他の環境でも似たようなものです.

PHPでOpenIDなライブラリといえば,php-openidだと思います.2.2系になってから,githubに移行して,docディレクトリが無くなりました.「なんでドキュメントがないんだ,むぎゃ!」って思っていたのですが,やり方がわかったので,メモ.

DOCUMENTATION
=============

You can view the HTML library documentation in the doc/ directory.

This package's documentation is in PhpDoc format.  To generate the
documentation, install phpdoc and run the admin/makedoc.sh script.
Phpdoc lives at:

  http://www.phpdoc.org/

openid's php-openid at master - GitHub

書いてある通りなんですが,ドキュメントはPhpdocなるものを使って作れと言っています.Phpdocの正式名称はphpDocumentorで,pearからインストールできるようなので,入れます.

$ sudo pear install --alldeps PhpDocumentor

簡単ね!続いて,ドキュメントをmakeするよ.ディレクトリとかは適宜読み替えて下され.

$ unzip openid-php-openid-2.2.2-0-ga287b2d.zip
$ cd openid-php-openid-782224d
$ chmod +x admin/makedoc.sh
$ admin/makedoc.sh

簡単ね!これでdocにドキュメントができあがります.

参考:
How to install PhpDocumentor on Ubuntu | greenhughes.com

みんな大好きUbuntuの最新版である10.10がリリースされました.まぁ,10.10はLTSではないので,サーバ用途の人は積極的にインストールする必要はないと思いますが・・・.というわけで,VMwareにDesktop版を入れてみました.

10.10の主な変更点はこちら.

  • Linux kernel 2.6.35
  • GNOME 2.32, KDE 4.5.1, Xfce4 4.6.2
  • インストーラの改良
  • 写真管理ソフト F-Spot が Shotwell に置き換えに
  • Netbook Edition では Unity インタフェースの採用
  • ソフトウェアセンタの改良(履歴機能、注目ソフト、新着ソフト、商用ソフトの購入)
  • Ubuntu フォント (ラテン・キリル・ギリシャ文字などを含む)
  • Ubuntu One の改良
  • iBus 用の tegaki, Mozc パッケージの追加

Ubuntu 10.10 リリース - スラッシュドット・ジャパン

この中で特に目に付いたのが,インストーラの改良である.インストールしてみればすぐに気がつくだろうが,なんで今までこうなっていなかったのかとさえ思う.

101011_ubuntu1010_01.jpg

Ubuntuは以前より,ほとんどの設定を自動で行ってくれるので,せいぜい言語と地域とユーザ情報程度を入れるだけなのだが,その入力中に裏側で,ファイルコピーが進行します!そうです.ユーザの入力待ちの時間は無駄なので,裏でインストールが勝手に進行しています!素晴らしい!これで,インストールに要する時間は大幅に短縮されます.

101011_ubuntu1010_02.jpg

どうでもいい話ですが,MuseのResistance押しです.

101011_ubuntu1010_03.jpg

Mozcはibus-mozcでインストールできます.簡単ちん!辞書はGoogleIMEバリの変態辞書ではないようです.Mozcはあの変態辞書は使えないってどっかで聞いたような気がするし・・・.

まとめ:
「はじめてLinuxに挑戦するよ!」って人や「Ubuntuはデスクトップとして使ってます!」って人は積極的に導入してみても良いんじゃないでしょうか.特に,使ってみたいって人は,CDからのLiveブートで手軽に試すことができるので,お試しあれ.サーバ用途の人はLTSじゃないので,その辺は考慮の上でゴニョゴニョ.

PECL/oauthはPHPでOAuthなプログラムを書く場合に重宝します.Twitterのbotを書くときにも役立ちます.そのため,比較的頻繁に使っているのですが,ちょっと別の環境でPECL/oauthを使おうと思ったら入っていなくて,入れりゃいいやと思って,pecl install oauthしたらビルドでエラーがでたので,その対処法のメモです.

解決方法はlibpcre3-devを入れる。

sudo apt-get install libpcre3-dev

マキノ式ブログ » Extentionビルドしててpcre.hが存在しないと怒られた。

簡単ね!

ずっと前から書こう書こうと思っていたものをヴァァァーーーーに任せて書こうと思う.「お金が無くてオフィスが買えない!」という人や「金を払うのがばからしいから不正コピーでチーッス」っていうバカのための,ソフトウェアは全部無料でありながらも,まともに研究や勉強ができる環境を準備するお話です.不正イクナイ!

前提:とりあえずパソコンはある(XP時代のもので十分です)

さて,早速ですが,無料のOSから手に入れてみたいと思います.MicrosoftのWindowsはパソコンを買うとついてきますが,基本的に有料です.パソコン代にOS代が含まれているんですよ!Macのことはよく知りませんが,間違いなく有料だと思います.というわけで,それ以外の選択肢となると,思いつくのがLinuxです.というわけで,オレご贔屓のUbuntuを使いたいと思います.また,今回は調子をぶっこいて最新版すぎるDaily BuildなLiveCDを使いたいと思います.i386かamd64のどちらか適切なisoファイルをダウンロードしてください.わからなければ,i386を選んでください.なお,isoのダウンロードは後述のUNebootinでも可能ですが,速度が出にくいので,先にダウンロードしておく方法をオススメしました.どちらでも結構です.

さて,ダウンロードができたらインストールの準備を始めます.isoイメージなので,CDに焼いてしまえば良いと思いますが,最近の流行はUSBメモリブートです.ということで,UNetbootinというツールを利用します.1GB以上あるUSBメモリをPCに差し込んで,ソフトを起動します.なお,ここでisoイメージをダウンロードして自動でゴー!ってしたい方は1番上のDisribuionからUbuntuを選んでDaily_Liveを選びましょう.

100420_ubuntu01.jpg

こんな感じで,さっきダウンロードしたisoファイルを指定して,USBメモリが指定されていることを確認して,okを押します.あとはメッセージに従ってください.なお,USBメモリの中身は消えちゃいますので,その辺だけは注意してください.完成したら,USBメモリからブートさせてください.Ubuntuが起動するはずです.

なお,これ以降の説明は実機ではなくVMware上で行っていますが,基本的に同じですので,気にしないでください.仮想環境を作りたかったんだよー.だからついでに書いているんだよー.ちなみに,VMwareにインストールしたら,簡易インストールがなんたらですごく簡単にインストールできた旨をお知らせしておきます.いや,普通にやっても簡単だけどさ.

100420_ubuntu02.jpg

さて,それはさておき,作成したUSBからブートしたUbuntuはこのような感じだと思います.

100420_ubuntu03.jpg

このまま利用しても良いのですが,常用するのでハードディスクにインストールします!赤枠で括ったアイコンをクリックしてインストールします.手順は割愛しますが,ガイド通りに進めば良いと思います.インストールが終わったらUSBメモリを抜いて,再起動させます.もう終わりに近いです(ぇ.

100420_ubuntu04.jpg

インストール完了後にはもちろんアップデートです!と行きたいところですが,daily buildを使っているので,何もありませんでした.これはこれでつまらない・・・.さて,それでは利用環境を準備していきましょう.

なにはなくともインターネット!とにかくブラウジング!
クラウド時代においてインターネットは重要です.デフォでFirefoxが入っていますので,これを使っても良いと思います.でも,今日はGoogle chromeを入れてみたいと思います!chromeをダウンロードするためだけに,Firefoxを使いましょう(ひどい・・・)!それっぽいのをポチポチ押していって,最後は自動実行に任せてえいや!です(伝わってるかなぁ・・・).パッケージインストーラが起動すると思うので,そのままインストールをポチッとな!

100420_ubuntu05.jpg

こんな感じでパネルに追加すると便利です.これでokです.サクサクです.楽ちんです.

いやいや!オレyoutubeとかニコニコとかみたいねん!
パッケージマネージャを利用して「ubuntu-restricted-extras」をインストールだ!「依存により要求された変更を追加しますか?」と聞かれるので,迷わずにマークを選択でFA.最後に適用ボタンを押しておk.

100420_ubuntu06.jpg

簡単ねっ!

論文読みたいな!PDF!PDF!
Adobe Readerを入れるでもいいんですが,入れなくても普通に開けちゃいます.この辺がWindowsと違うところです.良い感じ♪Adobe Readerを入れる場合はこの辺からインストール

Microsoft Officeが使いたい!
Microsoftのオフィスはないけど,類似品のOpenOffice.orgはあるんです.

100420_ubuntu09.jpg

↑これがワードのかわりのWriterさん.

100420_ubuntu08.jpg

↑エクセルのかわりのCalcさん.

100420_ubuntu07.jpg

↑パワーポイントのかわりのImpressさん.

ちなみに,Googleドキュメントを使うという手もあると思います.悪くないですよ?OOoもGoogleドキュメントも,すごいんだぜ?保存する時にPDFで保存できるんだぜ.優しいね.優しさがにじみ出てるね.

C言語でプログラミングの勉強をしたい!
すればいいじゃん(え.標準でインストールされているはずです.安全のために,パッケージマネージャからbuild-essenialを入れておきましょう.あとは普通にプログラムを書いて,コンパイルして,実行です.コンパイルなどの手順は以下の通り.

$ vim foo.c
$ gcc foo.c
$ ./a.out

簡単だねっ!え?VisualStudioみたいな統合環境が良いだって??そしたら,パッケージマネージャでgeanyってのを入れると良いと思うよ!

100421_ubuntu01.jpg

まぁ,eclipseを入れても良いとは思いますが,依存パッケージが多いので,インストールに時間がかかりますよ?仰々しいプログラムを書くなら,eclipseもよろしいかと.インストールは同じくパッケージマネージャからeclipseを.日本語化とかC言語用の環境準備とか面倒くさいですよ?英語の勉強を兼ねて,英語のままで使うってのも良いかもしれません.

さてそろそろ論文書くか
TeXの出番ですね?わかります.でも,今日は疲れたよ.また今度にしよう!そうしよう!

参考:
軽量アプリを厳選し、Ubuntu 10.04 β2を入れた4GBのUSBメモリでブートした古いノートPCで仕事してみた | Viva! Ubuntu!!
Ubuntuで C言語を使おう | 不定期ソフトウェア開発

たぶん,まだ誰も書いていなさそうだから,勢いで書いてみる.今日公開になったような気がするGoogleの新しいプログラミング言語であるGoをUbuntu9.04(x86_64)で動かしてみる.てか,最初は失敗したんだ.なのに,ここの説明通りにやったら成功したんだ.何も違わないのに・・・.なので,手順はそのままです.

$ cd ~
$ mkdir bin
$ export GOROOT=$HOME/go
$ export GOOS=linux
$ export GOARCH=amd64
$ export PATH=$PATH:$HOME/bin
$ source .bashrc
$ sudo apt-get install python-setuptools
$ sudo easy_install mercurial
$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT
$ sudo apt-get install bison gcc libc6-dev ed
$ cd $GOROOT/src
$ ./all.bash
$ cat >hello.go <<EOF
package main
import "fmt"
func main() {
  fmt.Printf("Hello, Go!\n")
}
EOF
$ 6g hello.go
$ 6l hello.6
$ ./6.out
Hello, Go!
$

動いた.そんだけ.

関連:
The Go Programming Language
新プログラミング言語「Go」をCentOSにインストールしてみた « zaru blog

ちょっと息抜き.今日はMuninで温度やファン回転数を記録することに注力してみたいと思います.ちょっと難しいです.環境はHPのML115 G5です.

前回のlm-sensorsが失敗したので、
別のマシンですが、ml115にOpenIPMIを導入してみました。

vinelinuxで行いたかったのですが、
どうもapt-getしてもないようなので、素直にdebianにしました。

debianで、
apt-get install OpenIPMI
apt-get install ipmitool

とすると必要なソフトウェアがインストールされます。

その後、必要なモジュールをロードします。

modprobe ipmi_si
modprobe ipmi_devintf

grep ipmi /proc/devices
=>254 ipmidev

この数字を覚えておいて、デバイスファイルを作成します。

mknod –mode=644 ipmi0 c 254 0

以上で、上手く行けば、
ipmitool sdr
で温度等が表示されます。

また、起動時にモジュールをロードしたい場合は、
/etc/modulesに、
ipmi_si
ipmi_devintf
と追加記述することで可能なようです。
(ここの記述方法がよくわからない。alias指定をする場合とかが何故必要?)

hp prolliant ml115 debianでのOpenIPMI

この通りでok.日本語でok.英語で情報を探してもいいんだけど,日本語の方が嬉しいです!最高です!そんで,そんで,これだけじゃ不十分なので,/etc/default/ipmievd を変更します.

ENABLED=true

そんでもって,ipmievdが起動するようにおまじない.

# /etc/init.d/ipmievd start
# sysv-rc-conf ipmievd on

うは,おk把握.これでセンサー関連は上出来.あとはmuninと連携する.ここを参考にしました.一部追記します.

# wget http://muninexchange.projects.linpro.no/download.php?phid=579 -O ipmitool_sensor_
# cp ipmitool_sensor_ /usr/share/munin/plugins
# chmod +x /usr/share/munin/plugins/ipmitool_sensor_
# ln -s /usr/share/munin/plugins/ipmitool_sensor_ /etc/munin/plugins/ipmitool_sensor_fan
# ln -s /usr/share/munin/plugins/ipmitool_sensor_ /etc/munin/plugins/ipmitool_sensor_temp

/etc/munin/plugin-conf.d/munin-nodeへ以下を加える。

[ipmitool_sensor*]
user root
timeout 20
env.ipmitool_options sdr

tool/ipmiでの温度・ファン速度監視 - Linux Tipsより一部改変

超余裕って感じ?あとはいつも通りに,service munin-node restartで余裕系.こうして,サーバ監視の楽しみが増えたのであった.

この話はフィクションです.事実が知りたければ,手を動かせばいいと思う.

某所のサーバが2週間以上も停止しているのです.理由は簡単で,Macminiだから救援するにも救援できなかった.普通のサーバなら,HDDを交換するなり,マザーを交換するなり,電源を交換するなり,なんなりとやりようがあるのだが,Macminiはマザー交換も電源交換も簡単にできるものではない.というわけで,データサルベージだけして,入院させたわけです.結局は直らず(直さず)に帰ってきたわけですが.常識的に考えて,フェールセーフできるようなバックアップとまではいかなくても,すぐに復旧できるような素材は必要だと思うのだが,そんなものは全くないので,トラブルが起きたら,トラブル直撃間違いなし.

で.サーバが止まっているのは事実なわけですが,「修理に出した」「直ったら教えてくれ」とやり取りしているのに,「まだなおらんか」「まだか」「いつだ」と問われるわけです.要するに,直ったにもかかわらず報告しないような悪意を持った存在だと思われているようです.信頼と信用がないのはセキュリティ研究室の悪いところですね.誰もが信じられない.机の上のものに触るなといっても,何ら変わらないしね.不正なソフトウェアを使うなといっても,何ら変わらないしね.ここはもうダメだと思った.あ.フィクションですよ?リアリティに溢れてますが.

というわけで,自分の精神衛生を守るために,HPのProLiant G5を買ってみた.個人的には,HPのサーバ製品には信頼があると思っている.現に,過去5年間で3台使ってるけど,どれもがトラブルフリー(ハード的な意味で)です.もうね.サーバいじりなんて,情報系なんだから,誰もが当たり前のようにできて欲しいと思うわけですよ.誰も勉強する気ないみたいだし.いや,する時間がないんだと思うけど.もちろん,フィクションです.

さて,MacminiにはUbuntuの8.10が入っていました.復旧が目的なら同じ8.10を入れて丸っと上書きという手もありますが,それじゃぁ面白くないので,最新の9.04 amd64を入れてみました.今回のサーバの方針.サーバを設置したい箇所には情報コンセントがないのだが,ケーブルを取り回すことは美観を損なうから許可されないので,ハッキリ言ってやりたくない(というか現にダメだった)のだが,無線LANで飛ばすことにする.回線は根元にブロードバンドルータ(笑)を入れて,ポートフォワードでhttpとhttpsとsshのみ引き込む作戦.頑張れブロードバンドルータ(笑).バッファローのルータだから,信用が全く足りません.YAMAHAじゃないとダメだよね.

で.インストールします.今回はUNetbootinというUSBメモリからインストールできるようにするツールを使いました.いやー.これ,めちゃめちゃ便利ですわ.速いUSBメモリを使えば,読込みも速いし,五月蠅いDVDドライブともおさらば!サックサックで,Liveブートから40分くらいで初期ブート完了です.

まずはネットワークが繋がらないので,有線を繋ぎながら,コンソールで作業です.やるべきは,無線LANの有効化とSSHの設定です.トラブルにあいたくないので,情報を参考に,Ubuntuでの動作実績があるPlanex GW-USMicroNを採用しました.でだ.ハッキリと言わせてもらうと,参考情報の通りにやればドライバをインストールできて,無線LANが使えた.そこまでは良かった.だが,wpa_supplicantを使って自動接続設定を作ったところ,何故かドライバを読み込まなくなった.読み込まないってのは嘘で,起動後にinsmodしてやると動き出す.modprobeしても,/etc/moduleに書いてもダメ.意味不.ここで1時間は無駄にした.ここで無線LANは諦めて,有線で組むことにする.

基本的に,ここからは8.10のやり方をトレースするのみ.

トラブったこともいくつか.1番でかいのはBIND9.構成が特殊なので,内向きと外向きで同名ホストでも別のIPアドレスを返すという変態的な動作をさせている.これもあれも,自由に生IPを使えないからであって,自由に使えないこと自体は運用上は正しいと思うんだけど,そもそも情報コンセントの位置がアレだから,どんな高安全性運用してもムダ.焼け石に水.閑話休題.BIND9がいうことを聞いてくれない.自分以外のマシンからの問い合わせに全く答えないのだ.可能性はいくつかある.

  1. named.confの設定が悪い
  2. iptablesの設定が悪い
  3. 問い合わせているクライアントが悪い
  4. オレが全部悪い

4を選択するのが潔くて楽なのだが,問題の解決にならない.まず3.オレマシンは今日から7になってるので,今ひとつ挙動を掴みきれていないので,Vista君から試したのだが,結果は同じ.次に,どうせルータの内側にいるからという馬鹿げた理由で,iptablesを切ってみる.でもダメ.残るはnamed.confの設定の悪さだが,そんなはずはない.なぜなら,今までは動いていた設定ファイルをそのまま持ってきたんだ.動かないわけはない!原因は別にあるな.と,いろいろと悩むこと数時間.本当に数時間使った.ムダ.全く以てムダ.結果.resolvconfを削除したら,直りました.いみわからん.前の環境でもresolvconf使ってたんだが・・・.特に困らないから,削除の方向で.追試は面倒だ.

後々分かったことだが,9.04では/etc/network/interfaceで設定をしないらしい.GUIからやれって.なんだか,便利なような便利じゃないような?

ちなみに,ルータの内側だからiptablesをフル開放にしてみたんだが,どうにもルータの内側でも信用ならない.敵は内側にいるような気がする.なので,今回はiptablesのラッパであるufwを使ってみた.テラ簡単でワロスワロス.説明するまでもない使い勝手の良さ.難しいことをしないなら,ufwで十分ですね.

まとめ:
Ubuntu9.04でサーバを立てました.トータルでは7時間程度かかっていますが,結構はまったので,そこを除くと4,5時間程度でしょうか.ノウハウを最大限に利用しているとはいえ,本職じゃないのにこの程度で準備が整うのはかなり速いんじゃないかなーって思うんですがね.Windowsのインストールじゃないんだから,入れたらポンじゃないんだし.設定を確認したり,動作を見たり,色々としないといけないし,入れたらポンじゃないんだし.サーバを立てたことがない人(セキュリティに配慮しない人は除く)にはわからんのですよ.日頃から素サーバ立てをして訓練しているわけでも,砂場で遊んでいるわけでもないので,片手間にしては昼飯1回分と耳なり悪化程度で終わらせられるわけですから,快適な部類かと思います.情報系なのに,サーバ立てて遊べない,というか研究以外に学ぶことができないなんて,不幸の塊にしか見えません.あ.フィクションです.

「Macmini完全に沈黙!」状態だった.あぁ,サーバが止まった.設置場所から考えて,誰かが間違えてコンセント引っこ抜いた(正しくはプラグを引っこ抜いた)のかなぁと思いながら,電源をポチッとしたのですが,全く持って沈黙.肝臓のようだ(沈黙の臓器的な意味で).これはい肝臓(ダジャレ的な意味で).ふふーん.etcとvarは定期的にバックアップ取ってるもんねー.ふふーんだ.と思っていたら,比較的重要なデータがhomeにあるという事実に気がついた.Macminiの電源は入らない.これは困った.というわけで,データサルベージをするために,Macminiを分解してやりましたよ!このクソ忙しい中.こんちくしょう.夜はビアガーデンだから,愚痴ってやる!

で.分解.Macminiの分解に際しては,以下の記事を参考にしました.

ご存知のように,Macminiにはネジ穴が見あたりません.これはつまり,なんですか,分解が困難であることを示しています.ということで,分解するために必要なヘラを探します.まず,生協にいってこう言いました.「もんじゃ焼きに使いそうなヘラないですか?もしくはデザインナイフ」質問の順番を間違えているというツッコミはテンパっていたんでと言い訳します.生協には売ってなかったので,渋々100均に行って,ヘラを探します.あったんですが,ヘラは厚みがありすぎてダメでした.代わりにこんなものを買ってきました.

IMG_0334.jpg

これ,領収書にはこんな書かれてる・・・.

IMG_0335.jpg

ぜってー会計通らないよ・・・.自腹だよ・・・.お財布いたいよ.

さて,買ってしまったので,後戻りは出来ませんので,えいや!と気合い一発分解します.手順は他の方々とは違います.多くの人は片側ずつ開けているようですが,それだと上手くいきません.片側が開くと,もう片側にヘラが入らないのです.そのため,両側に1本ずつ差し込んで,広島風お好み焼きを反す要領でほいな!とやります.実際にはゴリゴリですが.

IMG_0329.jpg

開きました.この後は他のサイトの手順通りに,アンテナを外して,ネジを取って,ユニットを取り外し,ケーブル類を除去して,HDDにアクセスしやすいようにします.

IMG_0330.jpg

続いて,こやつからデータをサルベージするべく,他のPCにつなぎます.いやー.良い時代です.SATAなんで,2.5inchだろうが,3.5inchだろうが同じように繋がるので楽ちんです.というわけで,本体直付けです.

IMG_0332.jpg

続いて,Windowsじゃファイルシステムにアクセスできないのは目に見えているので,試しもせずに,トラブルのレスキュー隊ことKnoppixで救出を試みました.結果からいえば,失敗しました.mountできませんでした.EFI GPTっていう謎のファイルシステムに・・・.ext3じゃない時点でパニクりです.HFS+を試すも失敗.この時点で半べそ.いろいろ検索してみる.この時点でおなか空き始める.

IMG_0333.jpg

で.ふと思い出しました.あー入ってるのはUbuntuじゃん.ということで,UbuntuのLiveCDでアクセスしてみたところ,ばっちりマウントされました!わっしょーい!ということで,サルベージは完了したのでした.

オレ,おつかれ.どーせ誰も労ってくれないさ.ふーんだふーんだ.

Linuxでやれば簡単なのに!(挨拶)

  1. おもむろに,VMware Playerをダウンロードして,インストールする.
  2. 適当なUbuntuのVMware用仮想マシンを入手する.
  3. 仮想マシンのUbuntuを起動させる.
  4. 適当に,apt-get updateやら,apt-get upgradeやらをやる.
  5. GMPを入れるために,以下のコマンドを打つ.
    $ sudo apt-get install libgmp3-dev
  6. PBC Libraryをダウンロードする.
    $ wget http://crypto.stanford.edu/pbc/files/pbc-0.4.18.tar.gz
  7. 余裕で解凍する.
    $ tar zxvf pbc-0.4.18.tar.gz
  8. ディレクトリに潜って,例のコマンドを放つ
    $ ./cofigure
    $ make
    $ sudo make install
  9. prefixを付けないと/usr/localに入れられるので,コンパイルは以下のように.
    $ gcc -o foo foo.c -I /usr/local/include/pbc -L /usr/local/lib
    -Wl,-rpath /usr/local/lib -l pbc

ね.簡単でしょ?

関連:
Visual Studio 2008でGMPを使う方法 - 4403 is written

ISOイメージをマウントしちゃう方法

$sudo mount -o loop -t iso9660 image.iso /media/dvd/

HandBrakeをかける方法

$HandBrakeCLI -i /media/dvd -o ~/dvd.m4v -f mp4 -X 480 -e x264 -q 0.59 -2 -T
-a 1 -E faac -B 128 -R 48 -6 dpl2 -D 1 -C 2 -v -x
level=30:cabac=0:ref=2:mixed-refs=1:analyse=all:me=umh:no-fast-pskip=1

実際は改行しちゃダメですよ.実時間の2倍くらいかな?

余裕でアンマウントしちゃう方法

$sudo umount /media/dvd/

某所で運用しているサーバの話なんですが、割と"SSH Brute Force Attack"がヒドく、対策を行わないといけないんですが、せっかくなので、攻撃者がどんなユーザ名でログインを試みているかの統計を取ってみました。

SSH総当り攻撃(Brute Force Attack)の傾向から利用を避けたいユーザ名 - RX-7乗りの適当な日々

おもしろそうなので,便乗してみる.某所のサーバからです.

# cat /var/log/secure* | grep 'Invalid' | awk '{print $8}' |
sort | uniq -c | sort -nr | head -n 100
1306 test
723 admin
666 a
376 guest
363 user
332 oracle
255 tester
207 postgres
171 testing
169 webmaster
163 testuser
157 123456
155 ftpuser
151 student
138 info
132 test1
129 temp
126 alex
117 123
115 12345
108 web
106 administrator
104 qwerty
98 test2
98 test123
97 sales
97 john
95 tomcat
94 dan
94 1234
93 testftp
90 adam
89 paul
88 zxcvb
88 sarah
86 richard
85 tests
85 nagios
84 robert
83 webadmin
82 matt
80 master
80 fax
80 demo
78 user1
78 patrick
78 frank
78 eric
76 toor
76 david
76 backup
75 abc
71 www
71 support
71 kevin
70 amanda
69 mike
68 michael
67 adrian
66 stephen
65 office
64 steven
63 james
62 wwwrun
61 irc
61 andy
61 abcde
61 abcd
60 victor
60 jack
59 lisa
59 larry
58 public
58 max
57 service
57 martin
56 peter
56 dave
55 jacob
55 carol
54 test3
54 scott
54 sandy
53 upload
53 tony
53 louise
53 linda
52 shell
52 maria
52 library
52 jessica
51 ben
50 brian
49 students
49 linux
49 client
49 bill
48 victoria
48 mailtest
48 cyrus

なるほどなるほど.こういうユーザ名をログイン可能にしておいてはいけないんですね.わかりました.ちなみに,現所属サーバだとsshに制限をかけているので,情報が少ない・・・.

# cat auth* |grep 'Invalid' |awk '{print $8}' |sort |uniq -c |sort -nr
1 toor
1 test
1 staff
1 spd
1 oracle1
1 master
1 admin

効果はあるようだ.

まとめ:
sshは公開鍵認証で.

酔って帰ったら閃いた.正に神の一手(って程ではない).解決方法は単純で,内部用DNSにGoogle Apps用のMXレコードを書き加えただけ.シュークリーム分またはシガール分が足りなかったのかなぁ.日中は全然気が付かなかった.こんな簡単なことで3時間も無駄にしてしまった.どうしようもない仕事してる振りだな.

最近,研究室内外というか学科全体でウィルス(トロイ系)が流行っている.一応,セキュリティの研究室なので,過剰防衛してみる.過剰ってこともないか.それにしても,「アンチウィルスソフトを入れておけば安心」っていう都市伝説はかなり有効のようだ.ちゃんと定義ファイルの更新はしましょうね.

Ubuntu8.10に限らず,ほとんどのディストリで,apt-get install clamavっぽいことをすれば入ると思います.今回の導入目的はファイルサーバ(≠Ubuntu君)のウィルススキャン.これはsmbfsを利用した自動マウント/アンマウントと組み合わせてやれば簡単.cronにはこう書いた.一部抜粋.

# crontab -l
5 5 * * 0 freshclam || clamscan -i --remove -r /smb/samarium/share
> /var/log/clamav/clamav.log 2>&1

改行されてますが,実際は1行です.ログは積極的に出すようにしたけど,指定しなくてもいいのかな?どうなんだろう・・・.これで,毎週日曜日の5時5分にガリガリ動きます.

あー.サーバがあるって楽しい!楽しみつつテクを磨けるなんて,こんな面白いオモチャはないよね.

FTPが禁止なのだ.SFTPは使えるし,SCPでもいいんだが,CMSを利用し始めると,あらゆることをブラウザで完結させられる楽さに流れてしまう.そんなこんなで,MTを使うほどではないけど,手軽にブラウザで書き換え可能な領域を作りたかったので,例によって例の如くPukiwiki Plus!を導入した.オレの中では導入実績の多さと手軽さでお気に入りです.何かの情報を多人数で編集しつつ,集約させようとすると,この手のwikiツールが便利でならない.wiki文法の複雑さは目を瞑ることにしよう.WYSIWYGなwikiだったら,初心者でも使いやすいんだろうけどね.

さて,導入は簡単で,tar zxvfあたりをやればいいんじゃないですかね.chmodも適切に.通常はこの手順でいいんじゃないでしょうか.オレは手抜き王なんで,もっとヒドイやり方ですが.

残念なことに,今回はこれで終わりといきませんでした.どうやらdebian系特有の問題のようです.遭遇したトラブルはi18nを利用しているのに,日本語環境を認識せず,英語表示のままになる件.公式の質問箱に解決策がありました.良かった.

いけましたーー (^_-  locale.aliasのja_JPがja_JP.eucJPになってたんですが、ja_JP.utf8にすると日本語に (T-T ←感涙。 upk様長々とお付き合いくださりありがとうございました。。。おかげで少しスキルアップできました<(_ _)> -- alen 2007-06-19 (火) 21:49:55

質問箱/247 - PukiWiki Plus!

なるほどねぇ.一生懸命pukiwiki.ini.phpやらphp.dやらapache.dあたりを睨めっこしていたのだが,よもやlocaleとは.確かに,ja_JPがeucJPになっていたので,UTF-8にしてやった.要するに,こういうこと.一部抜粋.

# cat /etc/locale.alias
japanese        ja_JP.eucJP
japanese.euc    ja_JP.eucJP
ja_JP           ja_JP.UTF-8
ja_JP.ujis      ja_JP.eucJP
japanese.sjis   ja_JP.SJIS

rootで作業するなというツッコミは相変わらず無視の方向で.sudo suが使えるなんてオレに教えちゃダメだよね.

それから,やっちゃいけない系のバッドノウハウ.JVNを読んだ上で,リスクを理解すること.添付ファイルが圧縮されるので,それを解除する方法.rev1726の場合,plugin/attach.inc.phpの47行目を1から0に.

いよいよファイナルと言って良いのではないだろうか.DNSの設定が全て完了した.お忙しい中,ご協力頂きまして,ありがとうございました.

そして,即行でGoogle Appsの止まっていた手続きを進行させ,無事に設定完了.ただし,スタートページのカスタマイズは,特にコンテンツの変更は未ログイン者にしか適用されないので,準備してからやるべきだった.もうしらん.

それから,メーリングリストは簡単に作れるのだが,作ったメーリングリストが連絡先一覧に自動で登録されない.さらに,メーリングリストのメンバにメーリングリストを含めることはできない.要するに,エイリアスを束ねるような機能はない.ちょいと不便だ.細かいグループをいくつか作ろうと思ったのだが・・・.

後はSSL証明書か・・・.FlySSLの手続き進行中なのだが,クレジットの信用が足りないらしい.なんだそれ?まぁ,信用が足りないなら,取り消しで結構なのだが・・・.なんか,FlySSLはシングルルートではないらしい.中間証明書を入れなくちゃいけなくて,面倒くさい.やっぱRapidSSLが良かったかな.

続いて,今日やったこと!

sambaで自動マウント/アンマウント
autofsっていう機能を利用すると,自動でマウントし,不要になったらアンマウントするらしい.smbclientコマンドを覚えていなくても,安心だねっ!参考にしたのはこちら.注意したいのはコメント欄.

debianでやるとなんかずっと同じフォルダを参照する不具合になりますね。
# apt-get install smbfs
をしてから、
auto.smbの
opts=”-fstype=cifs”

opts=”-fstype=cifs,iocharset=utf8″
にするとうまくいきました。

autofsを使ってsambaを自動マウント | ブーログ

確かに,同じディレクトリを参照しまくってました./etc/auto.smbを以下のように書き換えて,ok.

mountopts="-fstype=cifs,iocharset=utf8"

これで,自宅等からSFTPしても,ファイルサーバにアクセスできるねっ!

今日も適度にチューニング.残る調整は,上位管轄DNSの設定とGoogle Appsへの丸投げとSquidの確認かな.最大の難関はサイトのデザインがテンプレそのままなのをなんかすることか.デザインセンスがないから,どうにもできないが.

BINDがエラー吐きまくり
BINDが以下のようなエラーを吐きまくっている.以下,ログ.長すぎるので,適宜改行.

Nov 19 11:20:49 neodymium named[5139]: too many timeouts resolving
'195.206.188.210.in-addr.arpa/PTR' (in '206.188.210.in-addr.arpa'?): disabling EDNS
Nov 19 11:20:50 neodymium named[5139]: too many timeouts resolving
'178.68.125.75.in-addr.arpa/PTR' (in '125.75.in-addr.arpa'?): disabling EDNS

そうそう.前にサーバ名はhydrogenとか言いましたけど,hydrogenは無線LANルータが陣取っているので,無難なneodymiumを割り当てました.IPアドレスを推測しないでね><.

閑話休題.エラーが起きた時は,too many timeouts resolving disabling EDNSって,そのままググればいいと思うよ.だって,そのためにエラーをそのまま貼り付けているわけだし.で,色々な情報に出会うわけだが,serverでedns noするのも,optionsでempty-zones-enable noするのも,両方ともに効果がなかったので,仕方がないので,以下の方法で対処した.根本的な解決ではないなぁ・・・.

とりあえずnamed.confに、

logging {
  category edns-disabled { null;};
};

と書いておけば、以降は記録されなくなるらしい。

BIND9.5で謎のログ: さかなでブログ

対処療法的だなぁ.ついでだから,category lame-servers { null; };も合わせて書いておく.

SSLサーバ証明書をゲットしよう!
安さ爆発はどの程度なのかを確認するため,以前にまとめたように,最安と思われるFlySSLを買ってみる.$9.99/年なので,$38/年でルートがmd5RSA-1024のヤツよりはいいと思います.値段的な意味で.

まず,ご存じのように,CSR(Corporate Social Responsibility; 企業の社会的責任)を作成します.っておい!違う違う.意味的にはあってるような,あってないような・・・.正しくはCSR(Certificate Signing Request; 証明書署名要求)です.作り方は,この辺この辺を参考にするといいと思います.一応,手順としては,

/etc/ssl/private# openssl genrsa -des3 -out FQDN.key 1024
Generating RSA private key, 1024 bit long modulus
.....++++++
................................................++++++
e is 65537 (0x10001)
Enter pass phrase for FQDN.key:
Verifying - Enter pass phrase for FQDN.key:

/etc/ssl/private# openssl req -new -key FQDN.key -out FQDN.csr
Enter pass phrase for FQDN.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:fuga
Locality Name (eg, city) []:hoge
Organization Name (eg, company) [Internet Widgits Pty Ltd]:fuga
Organizational Unit Name (eg, section) []:hoge
Common Name (eg, YOUR name) []:FQDN
Email Address []:webmaster@FQDN

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

/etc/ssl/private# openssl rsa -in FQDN.key -out nopass_FQDN.key
Enter pass phrase for FQDN.key:
writing RSA key

/etc/ssl/private# cat FQDN.csr
-----BEGIN CERTIFICATE REQUEST-----
なんやかんや
-----END CERTIFICATE REQUEST-----

rootで作業するなとかいうツッコミは華麗にスルーします.一応,鍵のパスフレーズを外しておきましたけど,外さない方がセキュリティ的にはいいと思います.

あとはFlySSLの方にCSRを投げつければ良いのだが,ドメイン所有者を確認するために,指定のメールアドレスに確認メールを送るから,どこに送ればいいか,選べと言われる.選択肢が,admin@とかroot@とかwebmaster@とかなっている.つまり,なんだ.メルサバを建てないと申請が進まない・・・.今日もsnakeoilで頑張る!

そろそろファイナルにしたいっす.回線が開通したので,接続テストやらなんやらやってたら,起動しなくなりました(ぇ.いや,まぁ,事なきを得たんですが,ヒヤリでした.

で.予想通りトラブルに見舞われています.全く理解できません.

svn+sshできない
できないというのは嘘で,できるんだけど,できない.できる状況は以下の通り.

  • サーバ内から,svn+ssh://ループバック/
  • サーバ内から,svn+ssh://外部IPアドレス/
  • サーバ内から,svn+ssh://FQDN/
  • 研究室内回線から,svn+ssh://内部IPアドレス/

ダメな状況は以下の通り.

  • 研究室内回線から,svn+ssh://FQDN/
  • 研究室内回線から,svn+ssh://外部IPアドレス/
  • 研究室外回線から,あらゆるsvn+ssh

FQDNは内部DNSで内部IPアドレスに変換しているはずです.少なくとも,nslookupではそう返事が返ってくる.外からFQDNへのアクセスは管轄上位のDNSによって外部IPアドレスが返されます.だからこそ,FQDNでアクセスしたいのだが・・・.

svn単体は許可していないので,sshポートフォワードが必要になるのだが,どうも外部線から入ろうとするとダメなようだ.何故だ.sshはどこからでも繋がるのに・・・.事実,svn+sshではなく,ssh単体はどこからでも繋がる.誰か・・・助けて><.

で.自宅に帰ってきてからVPNを使わずに外部線でsvn+sshしたら,普通に繋がった件について.ぇー.もうこうなったら,研究室内部のネットワーク構成がおかしいってことじゃないですかー.もしくは,オレのPCがおかしいってことじゃないですかー.明日もトラブルシュートか.

Satisfy Anyできない
研究室構成員だけが見られるようにしたいディレクトリがある.そこにパスワード認証をかけて,研究室外からはパスワード認証で,研究室内からはIP制限で通したいのだ.だから,.htaccessでsatisfy anyだ.だから,こう書いた.

AuthUserFile /etc/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter username and password"
AuthType Basic
require valid-user

Satisfy Any
order deny,allow
allow from 127.0.0.1
allow from 192.168.11.0/24
deny from all

なんがー!なにがダメがー!わからんちん.誰か・・・ボスケテ.

200811191047追記:
今日になったら両方とも絶好調稼働中な件について.なんじゃそら.きっと無茶苦茶な設定を繰り返す内に,オレPCのDNSやらなんやらがおかしかったんだろうなぁ・・・.再起動してテストしてたつもりだったんだけどなぁ・・・.

別にアグレッシブにやることではないけど,ルータ化を行ってみた.なお,テストはしていない.参考にしたのはここ

それから,別件というか,関連というか,MTのカスタマイズを再度やってます.奥が深いなぁ.目処は付いたけど.

そろそろやることがなくなってきた.今日はSquidとvimの設定(ぇ.

Squidの設定
設定の参考はこことかここ.設定してみたは良いけど,どうにも上手く動いていない気がする.気がするだけで,ちゃんとチェックはしてない.Squidなんて立てないで,OpenVPNを立てる方が健全だろうか.むしろ,iptablesを調整して,ルーター化するのがいいかもしれない.何がしたいんだろう・・・.

vimの設定
vimって打てば使えるから入っているのかと思ったら,入っていなかった.なんてこったい.というわけで,vimのインストールから.

$ sudo apt-get install vim
$ cat ~/.vimrc
set nocompatible
set fileformats=unix,dos,mac
set vb t_vb=
set backspace=indent,eol,start
set nobackup
set writebackup
set history=100
set ignorecase
set smartcase
set wrapscan
set noincsearch
set title
set ruler
set showcmd
set laststatus=2
set showmatch
set matchtime=2
set hlsearch
highlight Comment ctermfg=DarkCyan
set wildmenu
set textwidth=0
set wrap
set statusline=%F%m%r%h%w\%=[TYPE=%Y]\[FORMAT=%{&ff}]\[LOW=%l/%L]
set tabstop=4
set softtabstop=4
set shiftwidth=4
set noexpandtab
set encoding=utf-8
set termencoding=utf-8
set fileencoding=utf-8
set fileencodings=ucs-bom,euc-jp,cp932,iso-2022-jp
set fileencodings+=,ucs-2le,ucs-2,utf-8
set hidden

適当!適当!参考にしたのはここ

関連:
viキー操作メモ(Hishidama's vi Memo)
Vim 基本操作まとめ - Archiva
vimで効率的にコードを書くための小技 - bonar note

そろそろやることもなくなってきた.今日はDNS(BIND9)の設定と命名規則.

BIND9
って書いたけど,まだドメインが決まってないので,フィーリングで作ってる.ということは,本番で作り直しになる可能性があるということ.大したことではないか.参考にしたのはここ.といっても,環境によって違うので,なんともかんとも.

命名規則
BIND9の話と関連して,ホスト名をどうしようかっていう話.前所属では台風の名前を付けていた.命名規則を決める上で重要なのは,

  • 通し番号がついていて,
  • 英字(もしくはローマ字)表記できて,
  • そこそこの数がある

こと.星座の名前や都市の名前を付ける人も多いが,個人的には通し番号が振られている方が管理しやすい.だって,IPアドレスに対応させちゃうもん!

で.また台風の名前でも良いのだが,それでは芸がないので,調べてみた.色々とあるものだ.これらの中から,今回は元素名を付けることにした.理由は上記3条件を満たしているから.ポケモンでもいいんだけどね(ぇ.

というわけで,サーバのホスト名はhydrogenとなりました.次はheliumか.

って,今更だけど,こんなことを独断で行っているけど,学生に勉強させなくて良かったんだろうか.教育的な配慮を考えれば,サーバを建ててみるなんて,滅多にできない上に,貴重な経験だと思うのだが・・・.といっても,時期的に今は忙しくて無理か.といっても,そんなこといったら,いつでも忙しいか.

関連:
「萌えの領域がまさかの元素!w」 - アキバBlog

プロフィール

e-m@il @ddress