miyapiのひとりごと

blogこと始め。コンピュータと映画、そしてお酒の好きなmiyapiが気ままに書きつづる日記。。。

Linux:Youtue 動画のダウンロードとFLVファイル再生

2009-11-07 09:11:32 | Weblog
パソコンで音楽を聴きながら作業するときに、いつも聞いているCDは聞き飽きてしまった。

てなことで、Youtubeから好きな曲をダウンロードしてメディアプレーヤーでまとめて再生してみよう、
と思い立った。

どんな方法があるかなぁと、探してみたが、変換サイトにいちいちURLを打ち込むのも
これまた面倒。。

結局、FLVファイル(FLash Video:拡張子 .flv)を直接ダウンロードして再生することにした。
使うのは、以下の3つ。

- Dounload Helper
http://www.downloadhelper.net/

- Mplayer
http://www.mplayerhq.hu/design7/news.html

- Lame
http://lame.sourceforge.net/

Dounload Helper は Firefox のプラグインで、今観ているサイトの動画を直接指定して
ダウンロードができ、とても便利だ。
(*.mpg, *.wmv なんかにも変換できるらしい、、使ったことはないが)

Mplayer はオープンソースのメディアプレーヤーで、*.rm, *.mpg, *.wmv など、
ほぼ、なんでも再生できる。
当初バージョン(v1.0rc2)ではダメだった *.flv も現行バージョン(4.1.2)ではOKのようだ。

インストールの方法は、上記のURL で source snapshot をダウンロードし、
コンパイルする。コンパイル( make )する前に ./configure --enable-gui とやらないと、
GUI画面が表示されなくなってしまうので注意が必要だ。

コンパイルが終わると早速実行。
コマンドラインからmplayer と入力して、さあ起動するかと思いきや、

libmp3lame.so.0 が無い、

というエラーになってしまい起動しなかった。

名前からして、lame で使われているライブラリだろうか、、
Lame はオープンソースの mp3エンコーダである。

結局、Lameをダウンロード、コンパイルしてできた中に libmp3lame.so.0 を発見。
パスの通ったディレクトリにおいて無事解決したのだった。

めでたし、めでたし。

Linux: /proc ファイルシステムの怪

2009-11-03 10:32:03 | Weblog
/proc をご存じでしょうか?
ここにはカーネルのパラメータなど、その時のメモリの値が格納されるようになっています。

ところで、

/proc/self/fd/ はその時にオープンしているファイルディスクリプタが入る場所で、
これを使うと、タイミングによっては Read Only なファイルに書き込みができるようです。

これ、最近、bagtraq で長~いツリーになって議論されています。

小生は「chomod 666 なファイルに書けるのなんて、当たりまえじゃん」と思ったりもするのですが、
これはセキュリティホールと呼ぶのでしょうかねぇ。。

ま、ファイルのパーミッションには注意しましょう。。というお話ではあります。

おうちのLinux マシンでもやってみました。
確かに書き換えができてしまいます。

たとえば、、、

user1 が /tmp にディレクトリを作って、その中にファイルを作成し、
パーミッションを666 にしたとする。

[user1@linux tmp]$ mkdir user1_dir
[user1@linux tmp]$ echo written by user1 > user1_di
[user1@linux tmp]$ mkdir user1_dir
[user1@linux tmp]$ echo written by user1 > user1_dir/private_file
[user1@linux tmp]$ ls -dl user1_dir/
drwxrwxr-x 2 user1 user1 4096 11月 3 10:10 user1_dir/
[user1@linux tmp]$ chmod 666 user1_dir/private_file
r/private_file
[user1@linux tmp]$ ls -dl user1_dir/
drwxrwxr-x 2 user1 user1 4096 11月 3 10:10 user1_dir/
[user1@linux tmp]$ chmod 666 user1_dir/private_file

ここで、user2 が private_file を 適当なファイルディスクリプタに、
リダイレクトする。(ここでは、ファイルディスクリプタ3番にリダイレクト)

[user2@linux ~]$ bash 3</tmp/user1_dir/private_file この後、user1 が private_file を他のユーザーからアクセスさせないよう、
このファイルが入っているディレクトリのパーミッションを 700にする。

[user1@linux tmp]$ chmod 700 user1_dir/
[user1@linux tmp]$ ls -ld user1_dir/
drwx------ 2 user1 user1 4096 11月 3 10:10 user1_dir/

この場合、user2 は フツーにやってもアクセスはできないが、

[user2@linux ~]$ cat /tmp/user1_dir/privte_file
cat: /tmp/user1_dir/privte_file: Permission denied

user2 は/proc/self/fd/3 に書き込むことで、private_file の内容を書き換えることが
できてしまう。

[user2@linux ~]$ echo user2 changed. > /proc/self/fd/3

user1 は意図しないところで、ファイルを書き換えられたことになる。

[user1@linux tmp]$ cat user1_dir/private_file
user2 changed.