[Namazu-users-ja 981] Re: samba上のインデックス作成時の権限エラー
Tadamasa Teranishi
yw3t-trns @ asahi-net.or.jp
2007年 6月 25日 (月) 18:26:20 JST
寺西です。
Syuta Yanagita wrote:
>
> > 問題のファイルのみを対象にして、--debug オプション付きで実行した
> > 結果を見せてください。
>
> 添付いたします。
添付ファイルの漢字コードが Shift_JIS なのは何故でしょうか?
添付ファイルの中身を解析すると、やはり -r が通過するけれども、
load_document の util::readfile 内の open でエラーが発生して
終了となっているようでした。
> 該当のファイルになると作成が停止され、NMZ.errファイルのみ残して
> インデックスファイルが削除されています。
誤解がないようにあえて再び書いておきますが、通常は
> > mknmzは対象ファイルのリストを作るときに perl の -r演算子
> >
> > -r File is readable by effective uid/gid.
> >
> > を用いてファイルが読み込み可能か確認します。もし読み込み不可
> > ならば、そのファイルを除外します。よって、インデックス作成の
> > 途中で permission deniedで停止してしまうことはまずありません。
ということです。
ですので、-r は通過するけど実際に open するときに、 permission denied
が起きてしまうということは、異常事態です。
異常事態が起こった場合には、インデックスを残しません。(そのイン
デックスに問題が含まれる可能性があるためです。)
また、smbmount したディスクのファイルに対するインデックスの作成
に関しては特にサポートしていません。
> > Windows 側でファイルを作成しているユーザーとファイルの権限設定、
> > smbmount で指定したユーザー、smbmount のオプション、
> > mknmz を実行しているユーザーはどのようになっていますか。
>
> mknmz は root で実行しておりました。
root 以外で実行すると大丈夫ということはありませんか?
> smbmount で使用したユーザーは、Windowsサーバーの一般ユーザーです。
> (Admin権限でマウントすることは諸事情で不可能です)
もちろん Admin 権限でマウントするべきではないでしょう。
> # たぶん、util::canopen を改良すればスキップできるようになるとは
> # 思いますけど。
ということで pl/util.pl の canopen を次のように修正すると良いで
しょう。
つまり、次の行をコメントアウトします。
return (-r $file) if ($English::OSNAME ne "MSWin32");
これで、-r ではなく、実際にファイルを open して確認するようになり
ます。そのため、エラー終了することはなくなりますが、パフォーマンス
は落ちます。
ローカルディスクのファイルのみインデックスする場合は、ここをコメント
アウトする必要はありません。(念のため)
sub canopen($)
{
my ($file) = @_;
my $fh;
# return (-r $file) if ($English::OSNAME ne "MSWin32");
$fh = new IO::File $file, "r";
return 0 if (!defined $fh);
$fh->close();
return 1;
}
--
=====================================================================
寺西 忠勝(TADAMASA TERANISHI) yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint = 474E 4D93 8E97 11F6 662D 8A42 17F5 52F4 10E7 D14E
Namazu-users-ja メーリングリストの案内