[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00056] Re: Debian パッケージ作成中
- Subject: [FDclone-users:00056] Re: Debian パッケージ作成中
- From: Takashi SHIRAI <shirai@unixusers.net>
- Date: Fri, 03 Jan 2003 17:54:28 +0900
しらいです。
In Message-Id <20021231.233022.74750481.sano@danyasun.standalone.local.test>
Taketoshi Sano <sano@debian.org>さんwrites:
> お世話になります。佐野@浜松 (%正月休みで愛知県に帰省中) です。
> 最初に、1ヶ月ほど前に木下さんからメール(私信)で指摘のあった、
> 一時ファイル/ディレクトリの扱いについてですが、やはり fdclone を
> 利用中のユーザが閲覧中のアーカイブ中のファイルの中身を、
> 無関係な他のローカルユーザに読まれてしまうのは避けたいと考えて、
> とりあえず system.c と file.c に以下のような変更を加えてみました。
んー、その辺りは Bourne shell の実装がそうなので、既定値は
それに合わせてあります。
.fd2rc 辺りに「umask 077」とか「TMPDIR=~/.ssh/tmp」とか書
けば回避することは可能なので、既定値を 0700 にする必要は必ず
しもないのではないかと。
逆に既定値を 0700 にしてしまうと、設定によりこれを 0777 に
戻すことは出来ませんよね。一時ファイルを扱うアプリが何である
かは全く想定出来ませんから、このことによる弊害が出ない保証は
ありません。
> @@ -449,7 +449,7 @@
> if (!isdotdir(cp)) {
> if (stat2(dir, &st) < 0) {
> if (errno != ENOENT) return(-1);
> - if (Xmkdir(dir, 0777) < 0) {
> + if (Xmkdir(dir, 0700) < 0) {
> #if MSDOS
> if (errno != EEXIST) return(-1);
> if (cp[0] != _SC_ || cp[1]) {
この patch を適用すると、コピー先のディレクトリを指定した
際にそのディレクトリが存在しないと 0700 なディレクトリを作っ
てそこにコピーする仕様になってしまいます。
少なくとも一時ファイルとは関係ないと思いますよ。一時ファイ
ル関連の permission は全て 0644/0755 にしてありますから、一
時ファイル関連をいじりたければ 0666/0777 の箇所はいじっては
いけません。
> @@ -1155,7 +1155,7 @@
> }
> }
> else {
> - if (_Xmkdir(fname, 0777, 1, 0) >= 0) return(fname);
> + if (_Xmkdir(fname, 0700, 1, 0) >= 0) return(fname);
> if (errno != EEXIST) break;
> }
> }
これも関係ないところですね。この一時ファイルは、ディレクト
リ内のファイルの並びを書換える際に作成されるものですから、一
般の一時ファイルの用途とは異なります。
元々カレントディレクトリ直下にあったファイル群をその下に一
時ディレクトリを作ってそのディレクトリ以下に移すだけなので、
security 的には 0700 にしても特に効果はありません。
カレントディレクトリが元々 0700 ならばその下の一時ディレク
トリは見えませんし、そうでないなら元々見えていた筈ですから。
但し、この箇所は rename() で移動可能な permission でさえあ
れば特に支障はない筈なので、0777 -> 0700 にしても特に弊害は
ないんじゃないかとは思います。
> で、最初にお尋ねしたいのは、上記の変更だけで「アーカイブ中の
> ファイルを自分が閲覧する際に他のユーザにもその内容を読まれて
> しまう」可能性を排除できているかどうか、という点です。
実際に一時ファイルを作成するのは FDclone ではなくて各アー
カイバですからね。そのアーカイバの仕様によっては、勝手にカレ
ントディレクトリを 0700 -> 0777 に書換えてしまわない保証はな
いと思います。まぁ普通はしないでしょうけど。
あとは、そのアーカイブが fullpath で格納されていた場合は、
カレントディレクトリとは関係なくその fullpath に展開されてし
まうでしょうから、その場合も一時ディレクトリの permission は
無意味になるでしょう。
そういった特殊なケースを除けば、多分これで大丈夫なんじゃな
いかとは思います。「アーカイブ内のファイル」以外の一時ファイ
ルに関してもこのルールが適用されてしまいますけどね。
> あと、TECHKNOW に説明のある USEDATADIR を使いたい場合は
> config.hin に
>
> --- fdclone-2.02a.orig/config.hin
> +++ fdclone-2.02a/config.hin
> @@ -4,3 +4,4 @@
> * Definition file for each OS
> */
>
> +#define USEDATADIR
>
> と書いておけば反映されるのですよね ? こちらも、動作を
> 確認した限りではこれで良さそうに思いますが、念のために。
TECKNOW には「config.h に書け」と書いてありますけど、別に
config.hin に書いても問題はないと思います。他に、#define 行
を追加した config.h を作って同梱しておくという手もあると思い
ます。
どっちにするかは policy 次第でしょうね。package としての配
布物に一切手をつけずに build する分にはどちらも同じでしょう
けど、config.h の追加だと config.hin に touch されてしまうと
効果がなくなるでしょうね。
> (これ、以前から要望していた unicode table の場所指定の
> ための機能ですね。ありがとうございます _o_)
FHS みたいな標準が出て来ていますからね。カスタマイズの余地
くらいはあっていいんじゃないかと。
しらい たかし