1

Samba でマウントされたディレクトリにある場合、Apache が XSendFile を介してファイルを提供するのに問題があります。

少し背景を説明すると、ASP.NETアプリケーションを徐々に置き換えているRuby on Railsアプリがあり、apache2とパッセンジャーを実行しているLinuxサーバーで実行しています。ASP.NET コードを実行している Windows マシンは、Samba 経由でマウントしたアップロード ディレクトリを共有しています。

X_SENDFILE ヘッダーを使用してファイルを送信しようとするたびに、Apache サーバー ログに次のメッセージが記録されます。

部分的な結果は有効ですが、処理は不完全です: xsendfile: ファイルを stat できません: /path/to/file

しかし、手動で入力すると、 stat /path/to/file と入力すると、ファイルの統計情報が表示されます。私はファイルがそこにあることを知っています。(ユーザーapacheが実行されているときにログインした後、これも試しました)私が知る限り、ファイルのアクセス許可は正しいです。

apache の XSendFile と SMB 共有上のファイルに何らかの問題がありますか?

4

3 に答える 3

1

Samba マウントには、実際には unix のようなファイル システムで取得するのと同じ権限がありません。samba は主に Unix システム -> Windows サーバーではなく Windows クライアント -> UNIX クライアント向けに設計されていることを思い出してください。chmod などのコマンドはうまく機能しません。

次の問題は、ruby がファイルシステムを非常に信頼していないことです。ファイルへのアクセスに少しでも不快感を覚えると、あきらめます。UNIXファイル権限ではなくaclsを使用するnfs共有から実行するいくつかのRailsアプリがありますが、戻ってtmp、ログなどでユーザーまたはグループを設定しない限り実行されません.Rubyは実際に見ようとさえしないからです。 acl があるため成功するにもかかわらず、ユーザー/グループのアクセス許可が表示されない場合にファイルにアクセスするには。

答えを得るには、レールアプリが実行されているボックスにファイルを複製してみてください。

于 2010-09-08T16:27:23.463 に答える
1

私はそれを追跡しました。時には、誰かが明白なことを指摘するだけでいいのです!

/mnt/winbox-uploads にマウントされた samba 共有があります: dir_mode=0777,file_mode=0777 (テスト用) でマウントされたので、パーミッションが広く開かれていると仮定しました。しかし、/mnt/winbox-uploads ディレクトリのパーミッションを確認したところ、drwxrwx--- であることがわかりました。つまり、私が所有者またはグループでなければ、ディレクトリに入ることさえできないということです。

これは解決されていません。以下の注を参照してください

于 2010-09-07T22:20:01.313 に答える
1

おそらくファイル/権限の問題です(ユーザーxとして、yにアクセスできません)。その上で chmod a+rwx を実行してみてください...

于 2010-09-01T23:23:30.953 に答える