Mitsukiの魔法実験室

Mitsuki's Magic Laboratory
Since 2002.09.14

GnuPG

Posted at 2007/07/02 12:59 in Software|Unix

 情報流出とか何とか物騒な世の中なので、そろそろファイルの暗号化を考えてみようと、とりあえずメジャーそうな GnuPG を導入(cygwin バイナリで)。


# ~/.gnupg に鍵ペアを作る
# 鍵の識別は途中で入力するメールアドレスがキーになる模様
> gpg --gen-key

# 既存ファイルを暗号化(original.ext.gpg ができる)
> gpg -r mitsuki@engawa.org -e /path/to/original.ext

# 復号化(original.ext ができる)
> gpg /path/to/original.ext.gpg

# カレントの全ファイルまとめて暗号化&平文ファイルを削除
> gpg --multifile -r mitsuki@engawa.org -e *
> find . ! -name '*.gpg' -delete
# ↑ちょっと危ないので、なんかいいコマンドないかな。

# カレントのファイルをまとめて復号化&暗号化ファイルを削除
> gpg --multifile -d *
> rm *.gpg

# 標準入力から入れたり出したり
> cat /path/to/original.in | gpg -r mitsuki@engawa.org -e | gpg -d > /path/to/original.out

 案外簡単やね。

参考:
@IT:ファイル暗号化用の公開鍵を作成するには
@IT:ファイルを暗号化/復号するには(公開鍵暗号方式編)
@IT:ファイルを暗号化/復号するには(共通鍵暗号方式編)

2007/04/24

Posted at 2007/04/24 21:11 in Diary|Unix|Cygwin|Sekaiju

* 20:55 Linux と Cygwin と BSD

Cygwin使っている人いますか? その17
791 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2007/04/24(火) 02:16:45
Linux : 山田ルパン→栗貫ルパン
Cygwin : のぶよドラ→わさびドラ
BSD : かないみか→こおろぎさとみ

これくらい違う

 激しくワラタ。

* 21:10 世界樹の迷宮、その15くらい
 えーなんか大分間があいたけど、B18Fあたりをうろついたり(Lv47くらい)、2ndパーティ育てたり(今Lv25くらい)してた。
 ちなみに 2nd PT は「闇侍/医詩呪」という余り物編成なのだけど、

 といった具合で、王道の 1st(騎剣/医狩錬) に比べて癖がありすぎてどうにも。早めに Lv 上げてシャフルしようかなー。

dlopen(3) した共有ライブラリファイルに書き込みしたら SEGV するらしい

Posted at 2007/04/01 16:15 in Unix

DSAS開発者の部屋:なぜ apache module を更新すると Segmentation fault するのか
を読んで最初に思ったのは、なんで .so の上書きそのもので "Text file busy" にならないんだろーという点。
 というのは最近の(*1) unix 系だと、exec(2) した実行ファイルを書き込み可能な形で open(2)等 しようとすると "Text file busy" なエラーになるので、そこからの推測で dlopen(3) でもそうなるんじゃないかなーと(*2)。exec(2) も dlopen(3) も実行可能バイナリをプロセス空間にマップするという意味では実質似たようなものだし。

*1)昔の商用 UNIX は exec(2) しててもそのまんま書き込めたので、実行中の(.soではない)実行ファイルを上書き cp して SEGV なんてイベントがそれなりにあったらしい。
*2)Windows は EXE も DLL も実行中は書き込みロックされるので、そちらからの連想もある。

 というわけで、実行環境が手元になかったので、何故か手元にあった FreeBSD のソースを眺めてみた。
 FreeBSD6 の場合、exec(2) した際に実行バイナリファイルを指す vnode に VV_TEXT フラグが付くので(src/sys/kern/kern_exec.c)、open(2) などファイルを変更する可能性のあるシステムコールではこれの有無をチェックして、VV_TEXT付きなら ETXTBSY を返す模様(src/sys/kern/vfs_vnops.c)。その結果 "Text file busy" のエラーになる。
 じゃあ dlopen(3) はというと、実行バイナリを O_RDONLY で open(2) して mmap(2) してるものの(libexec/rtld-elf/rtld.c)、VV_TEXT をセットしている様子はない。って、RTLD はユーザーコードなので付けようがないと思い直して、なら mmap(2) が PROT_EXEC のときに付けたりしてないかなーと思ったけど、特にそういう処理はしてないぽい。そもそも VV_TEXT の付加処理自体 exec(2) と LKM 関連でしか使ってなさげ。
 帰宅して実際の環境で動作中の .so を適当なファイルで上書きしてやると、見事撃墜成功。うーん……。

 Linux の場合はこんな事例があった。ってそういえば livepatch とか調べた時に読んだような気がする。

 exec(2) 中に上書きできなくなったのはセキュリティ的な理由(実行中にパッチ当てられても困る)と認識してたんだけど、.so が上書きできるんじゃ意味ないような気がする……なんか理由でもあるのかなあ。

 というようなことを金曜にやってた。

2007/03/14

Posted at 2007/03/14 12:12 in Diary|Unix

* 12:15 fsck you
 せずさんにお勧め、かもしれない(何が?)。

2007/02/19

Posted at 2007/02/19 11:26 in Diary|Unix

* 11:25 一度 tty から起動したプロセス

一度 tty から起動したプロセスをバックグラウンドで動かしてシェルから抜けた後も動かし続けるにはどうしたらいいんだろ。

 あれ、うち(FreeBSD)だと、バックグランドで動かしたままシェル終了しても普通にそのまま動いてるけどなあ(tiarra はそうやって常駐してる)……と気になって man してみると、bash ではデフォルトでシェル終了時に子プロセスに SIGHUP 送りまくるのに対して、(t)cshではデフォルトではシェル終了時に子プロセスに SIGHUP しないらしい。そういうことか……。
 この動作を制御するには、hup/nohup付きで起動するか((t)csh)、disown で joblist からジョブを削除すればいいらしい(bash)。

* 23:20
 ↑の話、bash 関係は微妙に勘違いしてるぽいので修正というか削除。

Page 1/2: 1 2 [>]