ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする
![SourceForge.jp: Project Info - GalateaTalk - 日本語テキスト音声合成ソフトウエア](https://cdn-ak-scissors.b.st-hatena.com/image/square/882204600c60d0adc883b3c81bacb9339aa714d2/height=288;version=1;width=512/https%3A%2F%2Fstatic-cdn.osdn.net%2Fdefault-photo.png)
中村 雄一 日本SELinuxユーザ会 2007/10/31 “insane”とは「正気でない」「狂った」「非常識な」という意味があります。その言葉があのLinusから、セキュリティを考える人たちに投げられました。はたしてその真意とは? Linuxフォーラムで人気の連載「Linux Kernel Watch」番外編として、メーリングリストから気になる発言をピックアップしてみました。本家Linuxフォーラムの記事「10月版 あんなコアいいな、吐けたらいいな」も同時公開しておりますので、あわせてお読みください(編集部) きっかけはLinusの発言 いつもはLinuxフォーラムで連載されている「Linux Kernel Watch」ですが、今回はその番外編として、セキュアOSに注目したKernel Watchをお届けしたいと思います。 まずきっかけとして取り上げたいのは、あのLinus Torv
linux を強制的に遠隔から再起動する方法。 # echo b > /proc/sysrq-trigger これだけ。 デバイスドライバのバグなどで # /sbin/shutdown -hf now とか # /sbin/reboot のようなコマンドが動作しない緊急事態でも確実にリブートできます。 ただし、sync や umount さえも行わないので、最悪ファイルシステムが壊れる点に注意。
http://utopia.knoware.nl/~hlub/rlwrap/ 今の今まで知らなかったんですが、rlwrap という readline ラッパーがかなり便利ちっくです。 これを使うと Readline によるコマンドライン入力に対応してないようなプログラムでも対応させてしまうことが可能です。 例えば ruby インタプリタを引数無しで起動して、カーソルキーの↑や←や ^H を押すと $ ruby ^[[A^[[D^Hなことになってしまうのですが、この rlwrap でラップして起動すると $ rlwrap rubyカーソルキーや ^H はもちろん、↑や C-p によるヒストリーバック、C-r による入力履歴のインクリメンタルサーチまでできてしまいます。すげー。入力した履歴はデフォルトだと ~/.プログラム名_history, ruby なら ~/.ruby_history に
2002年頃、とある雑誌でPlan 9の記事を6ページほど作ったことがある。冷静に考えると、とても流行するようには思えなかったのだが、私にはPlan 9はまぶしく輝いて見えた。それは紛れもなく未来のUNIXだったし、日々コンピュータやネットワークを利用する環境として、ぜひとも使いたいと思えるような機能が多くあった。 「Plan 9」(プラン・ナイン)はUNIXが生まれたベル研究所で、次世代UNIXとして開発されていた分散OSだ。UNIXやC言語を生み出したケン・トンプソン、デニス・リッチー、ロブ・パイクらのチームが、当時UNIXが抱えていた限界を打ち破るために、ネットワークやGUIを最初からUNIXの設計思想に基づいて取り入れた先進的なOSだった。それは、未来のUNIXとなるはずだった。 UNIXの大きな特徴として、デバイスをファイルにマッピングして抽象化するというものがある。各I/Oポー
でかいソフトウェアの、大量のソースコードを短時間で読む必要が生じたので、その補助ツールとしてptrace(2)ベースのLinux用関数トレーサを自作しました。こういうツール上でまずソフトウェアを実行してみて、どのファイルのどの関数がどういう順で呼ばれるか把握おけば、いきなりソースコードの山と格闘を始めるより楽かなーと思いまして。せっかく作ったので公開します。 http://binary.nahi.to/hogetrace/ straceはシステムコールだけ、ltraceは共有ライブラリ(DSO)の関数呼び出しだけ*1をトレースしますが、このツールは、実行バイナリ中の自作関数の呼び出しもトレースします。例えば再帰で1から10まで足し算するソースコードを用意して % cat recursion.c #include <stdio.h> int sum(int n) { return n ==
IT業界って怖いですね~(棒読み) 何でそうなった? そもそもの発端は、私が現在執筆中のLinuxネットワークプログラミング書に書いているコラムのための質問でした。 Wiresharkやtcpdumpを利用したパケットキャプチャによる通信プログラムのデバッグを解説する際にプロミスキャスモードとは何かという話を書いていたのですが、その最後にちょっとしたコラムを書くためのブレストとしてTwitterで質問をしました。 で、結局出来上がった原稿は以下のような感じです。 Twitterでコラムの内容を見たいと発言されている方がいらしたので、出版前ですが晒してしまいます。 コラム:ぁゃιぃ UNIX用語 (☆ 「あやしい」の部分は、xa xya イオタ xi です。) プロミスキャスモードを「無差別モード」と訳す場合が多いのですが、この「Promiscuos」という単語は性的な意味を含む英単語なので
I have been modifying Sebek to get it to work in more recent 2.6 series (~2.6.18) kernels and ran into some snags. Most notably, I could not intercept/redirect/wrap any system calls. As it turns out, Sebek couldn't find the system call table. The code Sebek was using to find the system call table is 100% identical to the code found in this article on KernelTrap. Unfortunately, that code is outdate
最近、とあるクローズドソースなデバイス管理ツールの挙動が気になり、その動作について解析してみることにしました。 プログラムをデバッグしたり解析したい時、どんなシステムコールが呼ばれ、どのような引数が渡されているかを、調べることができる strace は非常に有用です。 しかし、strace では ioctl で渡される複雑なデータ構造を表示することはできないため、システムコールをフックして引数を表示するという手段を取ることにしました。 そんな訳で linux でシステムコールをフックする方法について調べて見たところ、意外といろいろな方法が有ることを知りましたので、試してみた方法を幾つか紹介したいと思います。 注)今回の実験に使用した linux kernel のバージョンは 2.6.25.11 です。異なるバージョンではこの実験通りにはならない場合があります。 LD_PRELOAD を使っ
普通のやつらの下を行け: ptrace で実行中のプロセスにちょっかいを出す Linux などの多くの Unix 的なOS には ptrace というシステムコールがあります。 ptrace を使うと実行中のプロセスに対して、レジスタの書き換えやメモリ上のデータの書き換えといったさまざまな操作を行うことができます。 普通のやつらの下を行けの第6回として、今回は ptrace を使って実行中のプロセスにちょっかいを出す方法を取り上げたいと思います。 ptrace とは デバッガの理論と実装 に次のような記述があります。 Unix の ptrace() は本物のデバッガ API (アプリケーションプログラムインターフェイス) の一例であり、商品に相応しい品質を持ったデバッガをサポートするために設計された、最初の専用 API の1つである。 ptrace はデバッガ用に作られた API のようで
http://d.hatena.ne.jp/kanbayashi/20081005/p1 とかやってみたついでに遊んでみる。 #include void hoge(){ printf("hoge\n"); } void bar(){ printf("bar\n"); } void main(){ bar(); } こうすると当然 barと出力されるわけだけど、ここでbar関数にhoge関数の中身をコピーして、出力される文字列を入れ替えちゃおう。 下調べ とりあえず、hoge関数とbar関数の中身をobdumpで調べる objdump -d hoge_bar.out 08048414 : 8048414: 55 push %ebp 8048415: 89 e5 mov %esp,%ebp 8048417: 83 ec 08 sub $0x8,%esp ====================
しかし、ブレークポイントという機能はデバッガの手助けなしでは実現できません。 ブレークポイントとはプログラムの強制一時停止を行うポイントで、実行中のプログラムがブレークポイントに遭遇するとプログラムは一時停止され、デバッガによるプログラムへの介入を行えるようになります。 ブレークポイントは次のような場所に設定できます。 指定した行番号のプログラムを実行しようとする瞬間 関数を呼び出した瞬間 その他、C++などでは「例外が発生した瞬間」などにもブレークポイントを設定することができます。 行番号ブレーク ブレークポイントとしてよく使用されるのは、「プログラムの特定の位置」です。 例として、bubblesort.cプログラムのsort関数内で、隣り合う二つの要素を比較している箇所にブレークポイントを設定してみます。 25|/* bubble sort */ 26|void sort(int *a
このドキュメントの内容は、以下の通りです。 C言語で共有ライブラリを動的ロードする方法 共有ライブラリのサンプル 共有ライブラリのコンパイル 共有ライブラリをロードするプログラム 共有ライブラリをロードするプログラムのビルド 実行 C言語で共有ライブラリを動的ロードする方法 FreeBSDやLinuxなどのUNIXで共有ライブラリを動的にロードするには、 dlopen()を利用します。 共有ライブラリのサンプル #include <stdio.h> int hello (int i) { printf ("Hello, %d\n", i); return (i + 1); } 共有ライブラリのコンパイル gcc -shared hello.c -o hello.so 共有ライブラリをロードするプログラム 1. dlopen()で共有ライブラリ hello.so をロードします。 2. dl
概要 ディレクトリにインデックスを持たずエントリをリニアサーチする種類のファイルシステム(BSDのFFSやLinuxのext3)では1つのディレクトリに大量のファイルやディレクトリを入れるのは得策ではない。しかし、そうなってしまうこともある。最近そういう状況になったの際にどのようなことが観察され、どう対処したか、更に観察内容の理由付けを以下に記す。 環境 ウェブ・アプリケーションがRedHat Linux上のApache 1.3+mod_perlで動いていて、データがNetApp社のNAS(Network Attached Storage)上に置かれている。 観察 1000個のサブディレクトリがあるディレクトリAがあるとしよう。そして100個のサブディレクトリがあるディレクトリBがあるとしよう。 $ ls -F1 A a0001/ a0002/ a0003/ ... ... a1000/
安くて手軽に使えるVPSサーバないかなーと探していたら、見つけましたよ。お名前.comのVPSサーバです。 初期費用は5250円かかりますが、月額2940円でグローバルIPアドレスもらえてroot権限つきなら悪くないですね。 ざっくりとしたスペックは下記の通り。この価格ではなかなかのスペックだと思います。 OS CentOS 5.3 仮想化ソフトウェア Virtuozzo ディスク容量 50GB メモリ(最大) 1GB 詳細は下記から。 VPS|ドメイン取るならお名前.com というわけでさっそく申し込みました。しかしながら、yumが使えない状態になっているのでいろいろとセットアップしました。 ちょこっとそのセットアップ手順をメモがてら載せておきたいと思います。 ファイアーウォールの設定 標準では、sshで使用される22番ポートは閉じられています。まずはセキュリティの設定からポートを解放し
Linux創始者であるリーナス・トーバルズ氏が「Japan Linux Symposium」の開催に合わせて10月21日に来日、「Windows 7が明日発売されるということも知りませんでした(笑)」と各社のインタビュー(その1、その2、その3)にて受け答えしていますが、なんとヨドバシAkibaに出向き、わざわざ「Windows 7」の前でナイス笑顔を振りまいていたようです。 詳細は以下から。 Picasa ウェブ アルバム - Chris - Japan Linux Symposium(1枚目) 2枚目ではリーナスの全身が写っており、いかにもラフな感じです。そして、いい笑顔です。 Picasa ウェブ アルバム - Chris - Japan Linux Symposium(2枚目) 写真のコメントには「マイクロソフトはJapan Linux Symposiumを撃破するためにWindo
こんにちは。kyagi です。先日データセンタ内のサーバ群のうち、なぜか特定の1台だけネットワークの速度が極端に遅いという問題がありました。今回はサーバマシンのネットワーク速度の測定方法と原因についてお話しします。同様のトラブルが発生している方のお役に立てば幸いです。問題解決までの手順としては以下になります。 1. 現在の状態を調べる 2. ハード/ソフト含めて考えられる原因をいくつか挙げる 3. 原因について改善されるまでひとつひとつ検証していく まず現在の NIC の HW 情報とドライバを lspci で調査します。ここでは Broadcom の NetXtreme BCM5722 という NIC を使用していることがわかります。 # lspci -vvv | grep Ether 01:00.0 Ethernet controller: Broadcom Corporation
よく C10K 問題とかいって epoll(7) の話が出てきて select(2) 遅いね poll(2) 遅いねってなるんだけど、正直なところ、これらのシステムコールを実際に使ってコードを書いてみたひとはどのくらいいるのだろう。ましてや eventpoll が何やってるか知っている人はそんなに多くないんじゃないだろうか。もう O(n) だの O(1) だのって煙に巻かれるのもうんざりだ。 というわけで、2.6.26 の fs/eventpoll.c のコードを読んでみた。正直 Linux カーネルにすごく詳しいわけでもないので、誤りがあったら適宜突っ込んでもらえると幸いです。 前提知識として VFS モジュールがどうなってるかとかは LinuxのFSモジュールを書いてみる LinuxのFSモジュールを書いてみる (その2) のソース中のコメントを追ってもらえればと。 登場する構造体 e
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く