calendar_viewer PC/NETのetcetra/
2007/12/9 (日)
またもやPHPでなんでか文字化け。
先月ぐらいまで問題なく使えてたはずのphpのmail関数がまた文字化けを発生するようになった。
ずいぶん以前(2005-11-30)に「php-4.1.1のmb_send_mail関数のバグ対処」をしようってことで、自分でmb_convert_encoding関数とか使ってシコシコ文字コード変換してmail関数に文字列を渡すようにしてた。
それを再びmb_send_mail関数を使って送るように書き直したら、文字化け直った。
問題の現象をもうちょっと正確に言うと、「どうやら相手先の割と新しめの携帯端末や通常PCのMUAでは文字化けしない」らしかった。
つまり、mail関数の出力内容が、俺の使ってるPHSのデコード能力を混乱させるような状態になってしまっていたもよう。
まぁ、PHS端末側で特に状態の変更はしてなかったのにいきなり文字化けが発生するようになったってことは、メール送出元Server上のPHPになんかパッチが当たったとかで変化があったか、中継するWillcomのMTA側にパッチかなんかでなんらかの仕様変更があったということであろう。
腑に落ちないけど、まぁよしとしよう。
コメントはありません。 コメント/PC/NETのetcetra/2007-12-09
2007/11/5 (月)
WindowsにMBRを書き換えられてLinuxが起動しなくなった時の対処
WindowsとLinuxをデュアルブートで使ったりなんかしてると、Windowsを再インストールした時にMBR(マスターブートレコード)を書き換えられてgrubで起動してくれなくなったりする。
そんな時はLinuxの最近のLiveCDで起動して、インストール済みの既存パーティションをマウントして既存パーティション上の/boot あたりの中身を使って grub-install し直せば良いわけだけど、ひと手間要るのでメモっておく。
参考(外国語):Ubuntu Forums:How to install Grub from a live Ubuntu cd.
LiveCDで起動した後の基本的なコマンド手順としては下記のような感じ。
# mkdir /mnt/root # mount -t ext3 /dev/sda5 /mnt/root # mount -t proc none /mnt/root/proc # mount -o bind /dev /mnt/root/dev # chroot /mnt/root /bin/bash # /sbin/grub-install /dev/sda
要は、chrootする先に予め /dev と /proc の現状を反映させておいて、インストール済み環境の grub-install をキックすればいいというわけ。
mountコマンドの -o で bind なんてオプションあったんだね。
それに -t proc では デバイスを none なんて指定できるんだ。へー。
Windows XP のUSBドライブ接続時の自動走査を止める
参考:パソコン設定 (パソコン便利ツール集)
参考:GIGAZINE - USBメモリもCD-ROMもあらゆるドライブの自動再生をオフにする方法
Windows XPで新しいUSBドライブが挿入されるたびに、内部を自動検索してアプリケーションを起動しようとするアレ。
うざいので止める。
マイコンピュータのドライブ一覧に出る該当ドライブのプロパティを開き、「自動再生」のタブを確認するべし。
viのキーボードマクロ
参考:vi・vim勉強中。 - vim キーボードマクロ
ついに使う機会が巡ってきた、viのキーボードマクロ。
「使いこなせたら便利なはずだけど、どうも使う機会が無い」って機能だった。
下の「ASCIIコード表」をブラウザからクリップボードにコピーしてvimに張り付けて、pukiwikiテーブル表示用に整形する時に使った。
「j J J J J J j」というキーストロークを127回繰り返すという気の遠くなる作業(笑)を、「a」というキーワードでキーボードマクロ登録してしまえば「127@a」という5ストロークを打つと完遂できるすばらしさ。
viにハマる気持ちがわかるねよねぇ。
ASCIIコード表
10進 | 16進 | 文字 |
0 | 0x00 | NUL(null文字) |
1 | 0x01 | SOH(ヘッダ開始) |
2 | 0x02 | STX(テキスト開始) |
3 | 0x03 | ETX(テキスト終了) |
4 | 0x04 | EOT(転送終了) |
5 | 0x05 | ENQ(照会) |
6 | 0x06 | ACK(受信OK) |
7 | 0x07 | BEL(警告) |
8 | 0x08 | BS(後退) |
9 | 0x09 | HT(水平タブ) |
10 | 0x0a | LF(改行) |
11 | 0x0b | VT(垂直タブ) |
12 | 0x0c | FF(改頁) |
13 | 0x0d | CR(復帰) |
14 | 0x0e | SO(シフトアウト) |
15 | 0x0f | SI(シフトイン) |
16 | 0x10 | DLE(データリンクエスケープ) |
17 | 0x11 | DC1(装置制御1) |
18 | 0x12 | DC2(装置制御2) |
19 | 0x13 | DC3(装置制御3) |
20 | 0x14 | DC4(装置制御4) |
21 | 0x15 | NAK(受信失敗) |
22 | 0x16 | SYN(同期) |
23 | 0x17 | ETB(転送ブロック終了) |
24 | 0x18 | CAN(とりけし) |
25 | 0x19 | EM(メディア終了) |
26 | 0x1a | SUB(置換) |
27 | 0x1b | ESC(エスケープ) |
28 | 0x1c | FS(フォーム区切り) |
29 | 0x1d | GS(グループ区切り) |
30 | 0x1e | RS(レコード区切り) |
31 | 0x1f | US(ユニット区切り) |
32 | 0x20 | (スペース) |
33 | 0x21 | ! |
34 | 0x22 | " |
35 | 0x23 | # |
36 | 0x24 | $ |
37 | 0x25 | % |
38 | 0x26 | & |
39 | 0x27 | ' |
40 | 0x28 | ( |
41 | 0x29 | ) |
42 | 0x2a | * |
43 | 0x2b | + |
44 | 0x2c | , |
45 | 0x2d | - |
46 | 0x2e | . |
47 | 0x2f | / |
48 | 0x30 | 0 |
49 | 0x31 | 1 |
50 | 0x32 | 2 |
51 | 0x33 | 3 |
52 | 0x34 | 4 |
53 | 0x35 | 5 |
54 | 0x36 | 6 |
55 | 0x37 | 7 |
56 | 0x38 | 8 |
57 | 0x39 | 9 |
58 | 0x3a | : |
59 | 0x3b | ; |
60 | 0x3c | < |
61 | 0x3d | = |
62 | 0x3e | > |
63 | 0x3f | ? |
64 | 0x40 | @ |
65 | 0x41 | A |
66 | 0x42 | B |
67 | 0x43 | C |
68 | 0x44 | D |
69 | 0x45 | E |
70 | 0x46 | F |
71 | 0x47 | G |
72 | 0x48 | H |
73 | 0x49 | I |
74 | 0x4a | J |
75 | 0x4b | K |
76 | 0x4c | L |
77 | 0x4d | M |
78 | 0x4e | N |
79 | 0x4f | O |
80 | 0x50 | P |
81 | 0x51 | Q |
82 | 0x52 | R |
83 | 0x53 | S |
84 | 0x54 | T |
85 | 0x55 | U |
86 | 0x56 | V |
87 | 0x57 | W |
88 | 0x58 | X |
89 | 0x59 | Y |
90 | 0x5a | Z |
91 | 0x5b | [ |
92 | 0x5c | \ |
93 | 0x5d | ] |
94 | 0x5e | ^ |
95 | 0x5f | _ |
96 | 0x60 | ` |
97 | 0x61 | a |
98 | 0x62 | b |
99 | 0x63 | c |
100 | 0x64 | d |
101 | 0x65 | e |
102 | 0x66 | f |
103 | 0x67 | g |
104 | 0x68 | h |
105 | 0x69 | i |
106 | 0x6a | j |
107 | 0x6b | k |
108 | 0x6c | l |
109 | 0x6d | m |
110 | 0x6e | n |
111 | 0x6f | o |
112 | 0x70 | p |
113 | 0x71 | q |
114 | 0x72 | r |
115 | 0x73 | s |
116 | 0x74 | t |
117 | 0x75 | u |
118 | 0x76 | v |
119 | 0x77 | w |
120 | 0x78 | x |
121 | 0x79 | y |
122 | 0x7a | z |
123 | 0x7b | { |
124 | 0x7c | ¦ |
125 | 0x7d | } |
126 | 0x7e | ~ |
127 | 0x7f | DEL(削除) |
この表、下記ページより拝借しました。
「初心者のためのポイント学習C言語」
このページ、確か俺6年ぐらい前にずいぶん世話になった。
まだコンピュータのコの字もよく分かってない駆け出しのころ、Cでファーム書いてる現場に放り込まれて1から勉強してた時だ。
むっちゃ懐かしい。そしてあの当時の近々の皆様にはむっちゃ迷惑をかけて、今でも申し訳ない気持ちでいっぱいだ。
近々の皆様は本当に暖かかった。当時に仕える相手を間違えてなければ、あんな迷惑をかけるつもりはなかったんだが。
みんなどうしてるだろう。
コメントはありません。 コメント/PC/NETのetcetra/2007-11-05
2007/11/3 (土)
カーネルソースの読み方参考
ITpro:はじめてのカーネル・ソース 第1回 どうしたら読めるようになるのか
こいつぁ続きに期待だ。
どうも日経Linuxの2006年代の連載のようなので、続きをすぐ手に入れたかったら問い合わせると良いみたいだが、そんなに急いじゃーいない。なにしろ俺がまだまだヘタレなので。
Stateless Linux
ITpro:Red Hat Enterprise Linux 5の全貌 Part 2(マシンの状態を一元管理する「Stateless Linux」)
こんな機能がついてたのねRHEL5。便利っぽーい。
現状では使いどころのチョイスが難しそうだけど。
コメントはありません。 コメント/PC/NETのetcetra/2007-11-03
2007/11/1 (木)
rndcの使用法
BIND9 の named を起動後に、特定のゾーン情報だけを再読み込みさせたい場合などに使用するコマンド。
Red Hat Enterprise Linux 4: リファレンスガイド:章 12章. BIND (Berkeley Internet Name Domain):12.4. rndcの使用法
/proc の使い方
レンタルVPSで kernel.sysrq のエラーが出ていたので検索してたらこんなページを見つけた。
@IT:/procによるLinuxチューニング [前編](2/2)
まだまだ扱いきらんけど。参考までにメモ。
svnクライアント
RapidSVN
Zefard's Labo:カテゴリー:Subversion
MOONGIFT:RapidSVN
オレオレCA局とその利用証明書の設定まとめ
参考:ozupon.com:CentOSでApache2 + mod_ssl鯖の構築!
参考:草原をわたるそよ風の音:opensslで暗号化
参考:CentOSで自宅サーバー構築:Webサーバー間通信内容暗号化(Apache+mod_SSL)
参考:ぬかるむ日々:バーチャルドメインでSSLサーバを運用する
参考:Mac OS XでSSL/TLSサーバ
参考:httpdの設定(ssl.conf) / 参考:SSL(サーバ認証)
参考:SSLによるSecureWWWサーバの構築(CentOS編) / 参考:SSL用証明書の作成(Linux編) / 参考:ブラウザのSSL用設定
参考:安全な RedHat Apache サーバの構築方法
参考:サーバ認証の実現 / 参考:CSRの作成 / 参考:CSRへの署名
参考:ありえるえりあ:opensslコマンドtips
- オレCA局の開設
- openssl付属の生成シェルを使う。
# cd /root # /usr/share/ssl/misc/CA -newca
/root/配下にdemoCA ディレクトリが作成される。
CA 証明書:/root/demoCA/cacert.pem
CA 秘密鍵:/root/demoCA/private/cakey.pem - 作成されたCAの内容確認方法
# openssl x509 -text -in /root/demoCA/cacert.pem # openssl rsa -text -in /root/demoCA/private/cakey.pem
- openssl付属の生成シェルを使う。
- Webサーバ管理者側でCSR(証明書要求)の作成
# openssl req -new -keyout ssl.key/key.pem -out ssl.csr/csr.pem
上記の一発操作で
サーバ側秘密鍵:ssl.key/key.pem
証明書要求:ssl.csr/csr.pem
の両方ができるらしい。
もう一段理解を深めたいと思ったので、俺は下記で生成したもので以降の作業を進めた。- サーバ側秘密鍵作成
# cd /etc/httpd/conf # openssl genrsa -des3 -out ssl.key/www.mydomain.net.key.pem 1024 # openssl rsa -in ssl.key/www.mydomain.net.key.pem -out ssl.key/www.mydomain.net.key
これでできた〜〜.keyは、パスフレーズ無しで使える。 - 秘密鍵を利用してCSRを作成する。
# openssl req -new -key ssl.key/www.mydomain.net.key -out ssl.csr/www.mydomain.net.csr
これでできる〜〜.csrの中には、公開鍵情報と証明したい情報との両方が含まれる。
- サーバ側秘密鍵作成
- CA局側でCSRに署名
openssl.cnf にCAの証明書発行ポリシーの通りにCA証明書やCA秘密鍵を配置してあれば、下記のみで証明書の発行ができるらしい。# openssl ca -out cert.pem -infiles ssl.csr/www.mydomain.net.csr
しかし俺はopenssl.cnfをいじりたくなかったので、最初にopenssl付属のシェルで作った/root/demoCA/private/cakey.pem を使って下記のようにして発行した。# openssl x509 -in ssl.csr/www.mydomain.net.csr -out ssl.crt/www.mydomain.net.crt -req -signkey /root/demoCA/private/cakey.pem y -days 365
そしたら、ssl.key/www.mydomain.net.crt の公開鍵と一致しない ssl.crt/www.mydomain.net.crt ができあがった(ノд`)なんでかー?
しゃーないので/usr/share/ssl/openssl.cnf の [ CA_default ] の項、「dir」の値を上述した /root/demoCAに直して openssl ca 〜ほにゃらら〜 を実行した。そしたら公開鍵一致した。なんか悔しい。x509でできると思ったのに。
んまぁ、openssl ca で作成する方が、失効リストとかのDBも同時に自動で更新してくれるみたいだし、このやり方をちゃんと身につけておくことの方が先決だね。 - Webサーバ側でCA署名済み証明書を適宜配置
httpd.conf に適宜記述する。俺の場合のミソは下記。ServerName www.mydomain.net:443 DocumentRoot /var/www/https SSLCertificateFile /etc/httpd/conf/ssl.crt/www.mydomain.net.crt SSLCertificateKeyFile /etc/httpd/conf/ssl.key/www.mydomain.net.key
httpdをリスタートして、正常に動いてればオッケイ。x509 certificate routines:X509_check_private_key:key values mismatch
とかメッセージが出たら、それは上述したパスにあるファイル同士の公開鍵情報に不一致があるということ。つまり証明書を作り直すべき。 - ブラウザでWebサーバにhttps接続して確認
「webサイトが未知の認証局によって認証されています」的なメッセージが出たら、とりあえず成功。 - オレCA証明書をブラウザに取り込み
CA局側で下記のコマンドを実行してCA証明書をブラウザでダウンロードできる形式に書き出す。# openssl x509 -inform pem -in /root/demoCA/cacert.pem -outform der -out /root/demoCA/ca.der
これをどうにかしてブラウザの動作する端末に取り込んで証明書のインストールする。
HTTPでダウンロードさせるなら、httpd.confに記述する内容としては下記。AddType application/x-x509-ca-cert .der
- ブラウザでWebサーバに接続して確認
上記で作成した ca.der をブラウザにインポートする。
その上でSSL対応サイトにアクセスして、「未知の認証局」とか「認証エラー」がでなければ成功。
- 【その他:openssl Tips】
- 秘密鍵から公開鍵の内容を確認する。
# openssl rsa -text -in private.key -pubout
その秘密鍵から公開鍵を生成する。# openssl rsa -text -in private.key -pubout -out public.key
- 証明書署名要求の内容を確認する。
# openssl asn1parse -in server.csr
- 証明書に埋め込まれている公開鍵の内容を確認する。
# openssl x509 -in site.crt -pubkey
- 秘密鍵から公開鍵の内容を確認する。
コメントはありません。 コメント/PC/NETのetcetra/2007-11-01
2007/10/28 (日)
postfix で queue を扱う手段
参考:postqueue - Postfix キュー制御
参考:postsuper - Postfix 監督プログラム
参考:qmgr - Postfix キューマネージャ
参考:postcat - Postfix キューファイルの中身の閲覧
参考:Kozupon.com:Postfixの導入!
参考:Secure MTA(Postfix-TLS) 〜 smtp-auth & SMTP over SSL
cron関連パッケージの種類
参考:Gentoo Linux Cronガイド
参考:ITmedia エンタープライズ : Linux Tips「anacronデーモンって何?」
vixie-cron
fcron
rootの作業ログを取る手段
参考:@IT:コマンドの実行履歴を残す
参考:サバカン日記:psacct
参考:Drk7jp:Linux/UNIX 上でコマンドの実行履歴を残す方法
参考:ずんWiki - acctでコマンド実行のログを取る
参考:ITmedia エンタープライズ : Linux Tips「アカウントの利用統計が知りたい」
acctやscriptという手があるらしい。
man accton man script
Redhat系だと下記でacctの機能を利用できるもよう。
# yum install psacct # chkconfig psacct on # service psacct start
でも、VPSサービスのCentOS4でrootでやってるのに /var/log/messages に
accton: accton: Operation not permitted
とか出るのは、これもしかしてkernelの process accounting が有効になってなかったりする?
参考:Linuxカーネルの設定パラメータ>General setup・・・一般的な設定
参考:ログの管理とセキュリティ> 2. システムセキュリティにおけるログ> 2.2 プロセスアカウンティングログ(そこの「注意」)
参考:Kernel Config / 主な設定1
現在のkernelパラメータの確認方法は、「ソースからkernelのconfigファイルを見る」以外に良い方法はあるか?
参考:kernelイメージから設定情報を取り出す
参考:CentOS/Linuxカーネルの再構築 〜CentOS4 全編〜
ssh と リモートログインの自動処理
sshd が起動時に /var/log/secure に「error: Bind to port」のログを吐いてる場合。
sshd_config で ListenAddress 0.0.0.0 のコメントアウトを解除してやろう。
参考:linux/openssh [OpenSSH;] - データシート (のくす牧場)
参考:secureのsshdのログ
sshd_config についての詳細は下記とかman sshd_config を参照のほど。
参考:FreeBSD 日本語マニュアル検索 (jman/japropos/jwhatis)
sshdはデフォルトで公開鍵認証方式を受け付ける設定になってるらしい。(要確認)
下記を参考に、公開鍵認証方式の挙動を把握。
参考:SSHの公開鍵(publickey)設定
参考:@IT:鍵交換方式のsshでアクセスするには
参考:ssh -i identity_file(manの邦訳っぽい)
パスフレーズの入力の省略方法について。(ssh-agent関連)
参考:SSH (Secure Shell) の使い方
参考:ssh-agentの注意
ssh-agent は一種のデーモン。
そいつに鍵情報を格納するコマンドが ssh-add
でもこいつはserviceコマンドで起動する対象じゃないから、システムリブート時などに困る。
これを使うなら自動で起動するようにそれ用のスクリプトを用意して /etc/init.d/local だったかそこら辺に仕込むような作業をしないといけない。
めんどいな(ノд`)
ssh-agent と cron との連系もシンプルではないみたい。
参考:ssh-agentでパスフレーズをキャッシュさせたい〜ノンパスワードの実現〜
最終的に、下記の文書が的を得た結論に至っていると思われる。
参考:Landscape - エンジニアのメモ 2004-11-17:ssh scp sftp の正しい自動実行方法
参考:正しいssh/scpの自動運転は ぴろ日記
そしてその実践が下記。
参考:rsync + cron + ssh (rsyncd を立てない編)
ミソは下記。
- sshd_config に書く「PermitRootLogin forced-commands-only」
- opensslで作る秘密鍵のパスフレーズを不要化すること。
- 公開鍵(サーバ側に置くauthorized_keys)に書く「command="〜〜"」
コメントはありません。 コメント/PC/NETのetcetra/2007-10-28