2009-08-21 13 views
-1

私はサーバーAにあるSamba共有を持っています。その共有は2つの他のサーバーBとCにマウントされています。BとCは一時ファイルを複数のバックグラウンド処理ジョブ(BとCでも実行されている)が同じファイルプールにアクセスできるようにします。Samba、CIFS、およびファイルの削除

バックグラウンドプロセスが完了すると、処理中のファイルが削除されます。ファイルが削除された後に共有のディレクトリリストを作成すると、元のファイル名はcifs79cifs78などの行に表示されます。元のファイルと同じ容量の領域を占めるので、ですオリジナル、ちょうど改名。

問題は、私がこれまでやっていなかったSambaを再起動しないと消えないということです。すぐにファイルを削除する単純な設定パラメータがないのですか?

私は、このコマンドを使用して、私の株式を作成:

mount -t cifs //10.251.251.251/uploads ./uploads -o username=samba_user,noexec 

ファイルが-rw-------として共有に入ると、彼らは名前を変更した後、そのように残っています。 http://gist.github.com/172474smbstatusの実行結果::

はここでフルsmb.confファイルですhttp://gist.github.com/172478


さらに詳しい情報:

私は手動でシェアを搭載したボックスからファイルを作成する場合は、私ができます作成、編集、削除は問題ありません。 IRB(インタラクティブルビー)セッションを開始すると、Rubyを使ってファイルを作成/削除することができます。それは奇妙なアクセス許可を持つファイルを作成するアプリケーション自体のようだ。アプリと私のIRBセッションは同じユーザーとして実行されているので、何でもできるように同じ権限を持っている必要があります。

ありがとうございました!

+0

これはserverfaultに属していますが、そこに移動することに投票しましたが、smbstatusを確認してください。あなたのプログラムがファイルを閉じるのに失敗したと思います。 – derobert

+0

smbstatusの出力は次のとおりです:http://gist.github.com/172478 R/W列はRDONLYと言っていますが、私の設定では 'read only = no'と接続している(キャスティング)ユーザがsambaサーバー上の共有ディレクトリ... –

答えて

0

あなたはsambaサーバーの完全な設定にアクセスできますか?私は一般的なイディオムが、ネットワーク経由で 'ごみ箱/ごみ箱'スタイルの機能を実装するために、削除するサーバーからのコマンドでファイルを削除する以外のことを行うようにsambaを構成することです。元のディレクトリにあるファイルの名前を変更するのは少し珍しいことですが、それでも可能です。

+0

もちろん、そうです。ここにあります:http://gist.github.com/172474 –

0

R/Wの欄には、RDONLYが、私の設定では、私が読んだだけでクライアントが(ファイルを、「R」)はfopenを許可されていないという意味ではありません何の

を=しないと言うんつまり、ファイルを書き込むことが許可されていても、読み取り専用ファイルを開きます。

Aがまだoplockを持っているので、Bが削除するファイルにSambaが保持しているように見えます。 oplockはあまり長くしてから期限切れになるはずです。その後、sambaはおそらく名前を変更したファイルを削除します。

これはNFSが FD =一時ファイル ファイル削除 使用の一時ファイルを作成/オープンのセマンティクスを実装するために何をするかと非常によく似ている(あなたはまだそれを閉じていないので) 近いFD

ますディレクトリ内の.nfs ...ファイルを取得します。

0

基本的に私はそれがアクセス権の問題だと思う、設定ファイルはうまくいくようだ。 /var/log/samba/*のログを調べてみましたか?

[global] 
force create mode = 0644 
force directory mode = 0744 
は「力のディレクトリモード」のための共通のモードではありません、おそらくタイプミス、あなたがフラグ与えたいフォルダへの読み取り権限を与える通常場合:smb.confファイルについて

実行ビットも、755または750、または700を使用します。このオプションでは、すべてのフォルダに少なくともこれらのビットが設定されます。 "強制的にモードを作成する"その罰金。

[uploads] 
create mask = 0655 
directory mask = 755 

あなたはNOEXECでそれをマウント、私はあなたの「マスクを作成」の正しい値が666または644と「ディレクトリマスク」のためであろうと推測しているのでは755

だろう、私はへのSSHうサーバも同じように実行してください:

find /tmp/uploads -type f -print0 | xargs -0 chmod 644 
find /tmp/uploads -type d -print0 | xargs -0 chmod 755 
chown "$SMBUSER:$SMBUSER_GROUP" -r /tmp/uploads/ 
関連する問題