2009-08-21 87 views
-1

所以我得位於服務器A上Samba共享我已經安裝到兩個其他服務器的份額,B和C的想法是,B和C需要臨時文件寫入一個單個位置,以便多個後臺處理作業(也在B和C上運行)可以訪問同一個文件池。桑巴,CIFS和刪除文件

當後臺進程完成時,他們刪除他們正在處理的文件。當我這樣做共享的目錄列表後,文件已被刪除原始文件名稱現在是沿着cifs79線,cifs78等,他們佔用的空間與原始文件相同的量,所以我以爲他們是原件,只是改名。

問題是這些文件不會消失,除非我重新啓動桑巴(我從來沒有打算這麼做)。我錯過了一個簡單的配置參數,會立即刪除文件嗎?

我創造了我的股票用這個命令:

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

的文件進入佔有率-rw-------和保持這種方式後,他們更改名稱。

下面是完整的smb.conf文件:http://gist.github.com/172474和運行smbstatus結果:http://gist.github.com/172478


更多信息:

如果我手動創建從盒子的文件已安裝份額,我可以創建,編輯,刪除沒有問題。如果我啓動一個IRB(交互式ruby)會話,我可以使用Ruby創建/刪除文件沒有問題。它似乎是應用程序本身創建具有奇怪權限的文件。儘管應用程序和我的IRB會話是以同一用戶身份運行的,因此他們應該擁有相同的權限來執行任何操作。

感謝您的幫助!

+0

這屬於serverfault,我已經投票移動它在那裏,但檢查smbstatus。我敢打賭你的程序無法關閉文件。 – derobert 2009-08-21 22:17:47

+0

下面是smbstatus的輸出:http://gist.github.com/172478 R/W列確實表示RDONLY,但在我的配置中,我只有'只讀=否',並且連接(鑄造)的用戶擁有在samba服務器上共享目錄... – 2009-08-21 22:37:35

回答

0

您是否可以訪問samba服務器的完整配置?我知道一個常見的習慣用法是將samba配置爲執行某些操作,而不是從服務器上刪除命令上的文件以刪除,以便在網絡中實現「垃圾桶/回收站」樣式功能。重命名原始目錄中的文件有點不尋常,但它仍然是一種可能性。

+0

是的,當然可以。這是:http://gist.github.com/172474 – 2009-08-21 22:32:56

0

的R/W列不說RDONLY但在我的配置我只讀過=無

這並不意味着客戶不得給fopen(文件,「R」),即打開文件只讀,即使它們被允許寫入它們。

看起來像Samba必須保留B刪除的文件,因爲A仍然有一個oplock。在不太長的時間之後,oplock應該過期,之後samba可能會刪除重命名的文件。

這非常類似於NFS做落實 FD =打開/創建臨時文件刪除 文件 使用臨時文件的語義(因爲你沒有關閉它尚未) 接近FD

你在您的目錄中獲取.nfs ...文件。

0

Basicaly我認爲這是一個權限問題,配置文件似乎很好。 您是否試過查看/ var/log/samba/*日誌?

關於您的smb.conf文件:

[global] 
force create mode = 0644 
force directory mode = 0744 

0744不是「強制目錄模式」的共同模式,可能是一個錯字,通常如果你給讀取權限文件夾,你想給標誌執行位,使用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/