[Armadillo:04320] Re: a220- ファイルのパーミッションが変わってしまう

Hiroshi Ito email@hidden
2009年 6月 5日 (金) 17:21:55 JST


#a220で、以下が当てはまるかどうかはしりません。

> たしかに、chmod コマンドで権限を変更した後に lsで見ると、権限が変った
> ように見えました。ただし mountしなおすと、ファイルシステムに権限情報
> が無いため、元のデフォルト値(0755) に戻ります。

 ファイルシステム自体が権限情報保存出来ないのに、
 それを使おうというのがそもそも無理な話ですね。
  現象自体は、カーネルのバグだと思いますが、修正するなら、chmodを失敗させる
 (変えられなくする)方向だと思いますよ。

 chmodで、一時的に変えられたかの様に見えるのは、
 inode キャッシュをLinux カーネルが内部に持っているからであって、
 メモリが足りなくなった時には、キャッシュは捨てられます。
 捨てられた後に、その情報が必要になったら、ディスクから読み込みますので、
 その時点でデフォルトの値にリセットされます。

 キャッシュは基本的に古いものから消すので、時間がたったら
 なくなったかの様に見えただけで、find / とかやれば、
 すぐに消えたりすると思います。
#試していません。

 同じ事は、時刻だとか、オーナ等にも当てはまります。
 Linux はいろいろなファイルシステムをサポートしているので、
 最大公約数的な情報をカーネル内部に持っています。
 キャッシュに乗っている間は、一時的にはかえられたりしますが(これはバグだと
 私は思う)、保存出来ない情報はいつか捨てられます。

 サポート出来ない情報は、即座にリセットして欲しいですね。
 実際、Linuxがファイルの修正時刻に秒未満の情報のサポートが入ってきたときに、
 make コマンドの configure が、秒未満の情報のサポートがカーネルにあるという
 理由で、秒未満まで比べちゃうものになってしまって、でも、ext2 では秒未満は
 保存できないのが原因で、依存関係を時々間違えて、余計なビルドに行ってしまう
 問題で悩んだ事ありますが、最近では、秒未満はすぐに捨てられます。
 具体的には、
 touch a
 ls --full-time a
 したら、昔は、しばらく秒未満が残ってたのに、最近は保存出来ない所は即座に
 ゼロになってくれます。


> > 皆様にお教えいただいたことを総合すると、対処としてはUSBメモリをマウント
> > する際にパーミッション
> > を644でマウントするということで解決できるのではと考えておりますが、いか
> > がでしょうか?
> 
> それが良いようです。
 私も賛成

 もしくは、素直にファイルシステム変えればいいと思いますが、
 fat を使いたい理由が別途あるんでしょうね。

--------
メディアラボ株式会社 伊藤 博
URL http://www.mlb.co.jp
TEL 03-5294-7255  FAX 03-5294-7256



armadillo メーリングリストの案内