從 Windows 編輯器將檔案儲存到 Samba 分割區時出現奇怪的權限變化

從 Windows 編輯器將檔案儲存到 Samba 分割區時出現奇怪的權限變化

我試圖弄清楚為什麼當從 Windows 編輯器保存在 SAMBA 安裝的 Unix 分割區上的檔案的權限發生變更時,會出現特定行為。

情況:

  • 我們在 Unix 上有一個文件,權限為 777:

    -rwxrwxrwx 1 testuser users 4859 Jan 23 15:09 fbparser.pl*

  • 該檔案所在的目錄是透過 Samba 從 Windows 7 PC 掛載的。

  • 我們打開檔案以在“Notepad++”或“Sublime”編輯器中進行編輯。

  • 當檔案被變更並儲存時,在 UNIX 端,權限變更為:

    -rw-rwxrwx 1 testuser users 4859 Jan 23 15:09 fbparser.pl*

現在,我懷疑這可能不是由於Samba掛載造成的,因為同樣的問題才不是在常規 Windows 記事本中開啟和儲存檔案時會發生這種情況!

因此,我最初的想法是,這是因為上面提到的程式編輯器可能被設定為 - 而不是簡單地儲存檔案 - 將原始檔案重新命名為,$orig_filename.bak然後使用原始檔案名稱將新內容儲存為新檔案。這是基於我自己之前使用 UltraEdit 編輯器解決相同問題的經驗。

然而,如果這是燙髮變化的原因,我無法解釋我觀察到的另外兩個症狀:

  • 首先,一開始就沒有建立備份檔案。

  • 其次,當在 Unix Shell 中的同一目錄中建立新檔案(使用touch)時,新檔案的權限-rw-rwxrwx根本不存在。

  • 第三,如果重要的話,文件的 inode # 在編輯後保持不變。

還有什麼問題可能存在?

當我告訴 UE 不要透過重命名來備份檔案時,我自己的 UltraEdit 問題就消失了;但是Notepad++沒有這樣的選項。

答案1

我在嘗試解決一個非常相似的問題時發現了這個問題。我的解決方案是添加map archive = no到 smb.conf 的全域部分。


根本問題是 Samba 將權限從 Dos 對應到 Linux 的方式。

看來,當notepad++儲存檔案時,它正在設定/重置dos檔案的「存檔」屬性。預設情況下,Samba 使用它來管理檔案上使用者權限的執行屬性。

因此,如果您設定 Samba 參數:

map archive = no

此屬性未映射,使用者執行權限將按照先前的設定保留。

答案2

我也有同樣的情況。對我來說幫助更改 smb.conf 檔案中的建立遮罩參數。

create mask = 0600 ->  create mask = 0700

相關內容