
Ubuntu日本語フォーラム

ログインしていません。
これはインストールに関する問題点を説明したものです。
「 Ubuntu 9.04 」 がリリースされました。
Ubuntu Tips / USBデバイスへのインストール / の
UbuntuをUSBメモリに全自動インストールするには ( 9.04 版 GUI )
を御覧下さい。
** **
「8.04 Ubuntu」をUSBフラッシュメモリにインストールして「C&P Ubuntu」を正常起動しデータを保存するのはなかなか大変です。
例によって、USBフラッシュに Fat16の「起動パーティション」と ext2の「データパーティション」 casper-rw を作成し、インストール
するのですが、これまでと異なる問題点を挙げ、その解決法を説明します。
1. 隠しディレクトリ「.disk」をC&Pする。
これまでは、インストールに際して隠しディレクトリをC&Pする必要はありませんでしたが、今回は必須です。
initrd.gzの中の幾つかの重要ファイル( init, /scripts/casper など )を調べても、それに関して特に今回変わったところは
見当たりませんが、どこかにこれまでと異なる記述があるのかもしれません。
2. 「データパーティション」にデータが保存されない。
syslinux.cfgに起動オプション「persistent」を付け加えてもデータが保存されません。
すでに、initrd.gzの中のファイル/scripts/casperには、
12〜14行に
root_persistence="casper-rw"
home_persistence="home-rw"
root_snapshot_label="casper-sn"
home_snapshot_label="home-sn"
そして、36〜39行に
persistent)
export PERSISTENT="Yes" ;;
nopersistent)
export PERSISTENT="" ;;
とありますから、How to make Ubuntu 7.04 Casper Persistent で提示された方法は役に立ちません。
原因を探るために「7.10 Ubuntu」の対応するファイル/scripts/casperで置換し、新たに作成したinitrd.gzで起動してみると、
「casper-rw」にデータが保存されます。幾つかのapplicationsの動きは悪いのですが、やはりこのファイルに問題がありそうです。
先程 Ubuntu 8.04 Hardy Heron Live USB How-to が現れ、そのファイルの412行目に単純な記載ミスが指摘されました。
mount ${cowdevice} -t ${cow_fstype} -o rw,noatime,mode=775 /cow || panic "Can not mount $cowdevice on /cow"
の中程にある「mode=775」は誤りです。実際、「7.10 Ubuntu」の対応するファイルでは405行目なのですが、その記載は
ありません。
新たに作成したinitrd.gzを使うと、問題なく起動でき「casper-rw」にデータが保存されます。
* *
上の記事に従ってインストールすれば、従来通り「Ubuntu on USB Flash Memory」が実現できます。
目下、「install_usb.sh」の代わりのシェルスクリプトを準備中です。いましばらくお待ち下さい。。
最後の編集者: moz (2009-04-25 15:22:19)
オフライン
moz による投稿:
先程 Ubuntu 8.04 Hardy Heron Live USB How-to が現れ、そのファイルの412行目に単純な記載ミスが指摘されました。
mount ${cowdevice} -t ${cow_fstype} -o rw,noatime,mode=775 /cow || panic "Can not mount $cowdevice on /cow"
の中程にある「mode=775」は誤りです。実際、「7.10 Ubuntu」の対応するファイルでは405行目なのですが、その記載は
ありません。
casperのchangelogを見たところ、これは誤りではなく以下のバグを修正するために加えられたようです。
https://bugs.launchpad.net/ubuntu/+bug/206030
mode=775を消すとセキュリティ上のリスクが発生する可能性があるので、その点はしっかり確認する必要があると思います。
もし、mode=775をつけずに上記のバグを回避する手段が見つかれば、Launchpadに報告すれば大きな貢献になるでしょう。
なお、casper-rwを使う方法は、セキュリティアップデートが難しいという部分も大きな問題です。
この問題が解消するまでは一時的な使用に留め、日常の環境としては使わないように注意を喚起する必要があると思います。
オフライン
casperのchangelog には
casper (1.128) hardy; urgency=low
[ Evan Dandrea ]
* Add mode=755 to the tmpfs mount that becomes / in the unionfs mount
so that / in the live filesystem does not end up with 777 permissions
(LP: #206030).
と書かれていますから、少なくとも 「mode=777」 とすれば今迄通り起動できるはずですが、実際には起動不可能です。
( Ubuntu 8.04 Hardy Heron Live USB How-to の mode=775 は転記ミスで mode=755 が正しいです。)
一方、当方の内蔵HDDにインストールした「Ubuntu 8.04」で次のように表示されますから、
「コマンドmount」 の 「tmpfs のマウントオプション mode=」 がbugなどの原因で働かない訳でもなさそうです。
moz@ubuntu:/media$ mount
・・・・・・・・・・・・・・・・・・・
varrun on /var/run type tmpfs (rw,noexec,nosuid,nodev,mode=0755)
varlock on /var/lock type tmpfs (rw,noexec,nosuid,nodev,mode=1777)
udev on /dev type tmpfs (rw,mode=0755)
devshm on /dev/shm type tmpfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
lrm on /lib/modules/2.6.24-16-generic/volatile type tmpfs (rw)
・・・・・・・・・・・・・・・・・・・
では何故 「オプション mode=」 は起動を不可能にするのでしょうか。
ご承知のように、「Bug #206030 in Ubuntu」 では Evan Dandrea が
「 Note that this is not a regression. Root has always been world writable on the CD
(having personally checked back as far as 6.10). 」
と述べており、これまでずっとworld-writableを気付かずに来て、この3月末にそのriskを指摘され、慌てて対策を施した
ために LiveCD でも 「Ubuntu on USB Memory」 でも casper-rw にデータが保存できない不具合を招いたようです。
「Ubuntu on USB Memory」 の高い利便性の一部はデータの自動的な保存にあり、急に 「危険だから使用を一時的
にせよ」 と言われても、利用者が 「はいそうですか、では止めます」 と素直に従うかどうかは大いに疑問です。
ご指摘のように注意を喚起することは必要ですが、できれば原因を早く究明し、対応するシェルスクリプトを編集して提供する
ことが第一と考えます。
最後の編集者: moz (2008-05-02 22:47:23)
オフライン
moz による投稿:
「Ubuntu on USB Memory」 の高い利便性の一部はデータの自動的な保存にあり、急に 「危険だから使用を一時的
にせよ」 と言われても、利用者が 「はいそうですか、では止めます」 と素直に従うかどうかは大いに疑問です。
ご指摘のように注意を喚起することは必要ですが、できれば原因を早く究明し、対応するシェルスクリプトを編集して提供する
ことが第一と考えます。
これは、私がセキュリティ上のリスクなどを説明することなく、install_usb.sh をCDイメージの中に入れつづけていたことに問題があったと考えています。
今思えば、最初からセキュリティや安定性に問題があることをしっかり書いておくべきでした。すみません。
利便性とセキュリティのどちらを優先すべきかについては、少なくともJapanese Teamの配布物としてはセキュリティを優先すべきだと考えています。
セキュリティが確保できなければ、いくら便利なものでも利用を中止するよう呼びかけるのがUbuntuコミュニティの一部であるJapanese Teamの役割だと考えています。
もちろん、すでに行われているように、スクリプトを改善して再配布されることに問題はありません。
そういった活動から、より良い解決策が生まれてくるのがオープンなコミュニティの良いところだと考えています。
オフライン
jkbys様、大変丁寧な御説明ありがとうございます。
早速、Ubuntu 8.04 on USB Memory : インストールと「ブートCD」 に次のような注意書きを加えました。
御了承頂けますでしょうか。
≪ 注意 ! ≫
これまでの全ての 「 Ubuntu on USB Memory 」 には、「データパーティション」 casper-rw にデータを保存する際に
セキュリティ上のリスクが発生する可能性があります。 「Ubuntu 8.04 on USB Memory」 のインストール を御覧になると
共に、充分ご注意下さい。 目下、対策を検討中ですが、御利用に関しては全て自己責任でお願いします。
なお、「Ubuntu 8.04」に限り Ubuntu-Japanese-Team にこのリスクに対する責任は一切ありません。御了承下さい。
最後の編集者: moz (2008-05-03 21:39:40)
オフライン
ご配慮ありがとうございます。
moz による投稿:
なお、「Ubuntu 8.04」に限り Ubuntu-Japanese-Team にこのリスクに対する責任は一切ありません。御了承下さい。
この部分は、記載して頂かないほうが良いと思います。
Ubuntu Japanese Teamとして、この件に関して責任を回避したいというわけではありません。
むしろUbuntuに関してセキュリティ上の問題がある場合に、今回のように注意をお願いするなどの対策を行うことはJapanese Teamの責任であると考えています。
個人的には、この件に限らず、一般のユーザに影響がある重大なセキュリティホールやバグが発見された場合は、日本語で情報を出すなどの活動もしていきたいと思っています。
日本で多くの人に安心してUbuntuを使ってもらうためには必要なことではないかと考えています。ご協力頂ければ幸いです。
オフライン
jkbys様、問題が解決しました。
そもそもの発端である Bug #206030 in Ubuntu は、そのTitleが 「 cannot activate ufw in live mode
(/ is world-writable) 」 なのですが、これはbeta版であって、正式版ではありません。
ファイルcasperの412行目の 「,mode=755」 を削除して新たに作成した initrd.gz を使って
「 Ubuntu on USB Memory 」 を起動し、「ufw」 を起動してみると、
ubuntu@ubuntu:~$ sudo ufw enable
Firewall started and enabled on system startup
と何の問題もなく立ち上がります。
念のため4回程、MachineとUSB-Flash-Memoryを変えて同じ操作を繰り返しましたが、いずれもすんなり立ち上がります。
「ufw」 が起動されていないdefaultの状態でworld-writableだったとしても、それが起動できれば問題はなくなります。
今や 「,mode=755」 の書き込まれていることが 「bug」 となりました。
「ufw」 の起動をもっと早く確認すべきでした。大変お騒がせしました。
最後の編集者: moz (2008-05-04 01:27:35)
オフライン
ありがとうございます。
可能ならば、問題を整理してcasperのバグとしてLaunchpadに登録してもらえますか?
そこでcasperの開発者に本当に問題ないと確認されれば、この件に関しては解決と言って良いと思います。
セキュリティアップデートが難しいという件もあったかと思いますが、回避する方法が分かれば教えて頂ければ助かります。
こちらも最終的には、casperの開発者に確認してもらう必要があるかもしれません。
この2点が解決するまでは、セキュリティリスクがあるという注意書きは必要だと考えています。
オフライン
jkbys様、すでにこの問題が解決済みであることがわかりました。
Bug #219192 in casper (Ubuntu) 「 [hardy] livecd: keyword "persistent" results in busybox and
(initramfs) 」 として、Dandrea 自身が4月28日に誤りを認めています。
彼は正式版で「ufw」 が起動可能かどうかには言及していませんが、ともかく「ufw」 を起動させればOKというわけです。
最後の編集者: moz (2008-05-06 08:38:32)
オフライン
情報ありがとうございます。私のほうではまったく追えていないので助かります。
リンク先を読んだところ、誤りを認めているというよりは、「ufwが起動できないバグに対処したところ、persistentがうまく動かないという不運な影響が出て残念だ」と言っているようなので、mode=755を削除するのが正しい対処法であるかどうかは、まだ議論の余地がありそうです。
mozさんと同じように mode=755 を削除した解決方法を示している方がおられるようですので、これが受け入れられれば解決といって良いでしょう。
mode=755を消してもufwが起動したとのことですが、「ufwが起動させればOK」だと考えるべきではないと思います。ufwは、すべてのセキュリティリスクをゼロにするわけではないからです。mode=755を削除して元の状態に戻すことにより、別のセキュリティホールが発生しないかを確認する必要があります。よって、casperの開発に携わる人たちがどのような結論を出すかまで、勝手にこの場で「解決だ」と断言することは避けるべきです。
バグだと思った場合は、自分だけで判断するのではなく、まず開発コミュニティに報告して確認した後で、情報を出すようにしてください。それが、フリーソフトウェアコミュニティでのルールだと言って良いでしょう。そうしなければ、バグでないものをバグと言う人や、バグをバグでないと言う人が出てきて、収集がつかなくなります。
なお、persistentを使っても各アプリケーションのアップデートが事実上できないという問題も、ufwで回避できるわけではありません。そのため、重要な情報を扱う場合に注意が必要である点についてもクリアはできていません。
これらの問題点があっても、小容量USBメモリへのインストール方法を提供することには意味があると思います。引き続き、ユーザに対してスクリプトなど提供して頂ければ、多くの方に喜んでもらえるでしょう。ただし、casperの仕組み上、persistentモードにはリスクがあることを常に書いておくべきだと思います。
オフライン
御指摘に従って、Ubuntu 8.04 on USB Memory : インストールと「ブートCD」 に次のような簡単な注意書きを加えました。
" 「データパーティション」へのデータ保存機能に関して、セキュリティに未解決の問題があります。ご注意下さい。 "
オフライン
上の「#1」で述べた、今回隠しディレクトリ「.disk」のC&Pが必須となった理由について、その後判明したことを書きます。
「Ubuntu 7.10」から、init-ramdisk (initrd.gz) の中のファイル/scripts/casperに、次のようなUUIDのmatchingに
関するシェル関数が加えられました。
matches_uuid() {
if [ "$IGNORE_UUID" ] || [ ! -e /conf/uuid.conf ]; then
return 0
fi
path="$1"
uuid="$(cat /conf/uuid.conf)"
for try_uuid_file in "$mountpoint/.disk/casper-uuid"*; do
[ -e "$try_uuid_file" ] || continue
try_uuid="$(cat "$try_uuid_file")"
if [ "$uuid" = "$try_uuid" ]; then
return 0
fi
done
return 1
}
ところが、「Ubuntu 7.10」では条件に書かれたinit-ramdisk (initrd.gz) の中のファイル/conf/uuid.confはありません。
従って、隠しディレクトリ「.disk」の中のファイルcasper-uuid-genericはあってもなくても良く、結局隠しディレクトリ「.disk」
をC&Pする必要はなかったわけです。
しかし、「Ubuntu 8.04」では、init-ramdisk (initrd.gz) の中にファイル/conf/uuid.confがあり、そこには
「2f177401-3155-445d-a79e-bc0f896a989a」 と記載されています。
勿論、この「UUID」は隠しディレクトリ「.disk」の中のファイルcasper-uuid-genericに書かれたUUIDと一致します。
その結果、隠しディレクトリ「.disk」のC&Pが必須となったのです。
.
最後の編集者: moz (2008-07-12 09:58:09)
オフライン
すでに多くの方がお気付きでしょうが、実は「隠しディレクトリ.diskのC&Pは必須」ではないのですね。
上の#12で提示したシェル関数 matches_uuid () から分かるように、起動オプション (kernelオプション)
「ignore_uuid」 を付け加えれば、隠しディレクトリ.diskは不要です。
UUIDを無視するのですから、当然ですね。
このオプションは、syslinux (isolinux) だけでなく、grubでも有効です。
些細なことですが、念のため。
.
最後の編集者: moz (2008-07-12 09:58:51)
オフライン