Samba預設檔案建立遮罩計算

Samba預設檔案建立遮罩計算

您好,我有一個問題,我似乎找不到相關答案。情況是我設定了 samba 伺服器並嘗試從 Windows 電腦建立檔案和資料夾。一切都按預期進行,但有一個小問題,即 samba 從檔案中的群組和其他檔案中刪除了 x 位元。一個簡單的範例程式碼:

drwx--x--x.   4 root root  4096 Dec 13 20:01 smb
drwxrwx--x. 2 root amikon 4096 Dec 15 22:17 pokus

[pokus]
path = /smb/pokus
public = no
writable = yes
valid users = @amikon

[root@wserver pokus]# ls -l
drwxr-xr-x. 2 vanek amikon 4096 Dec 21 10:14 dir
-rwxr--r--. 1 vanek amikon    0 Dec 21 10:14 file.txt

從我所做的許多實驗中,我了解到,在從 Windows samba 建立條目(檔案或目錄)時,會根據來自 Windows 電腦的預設遮罩和權限執行邏輯 AND。透過使用創建遮罩和強制創建模式(以及目錄的其他設定),此行為或多或少會產生影響 - 按預期工作,完全沒有問題。

我發現丟失 0011 的問題仍然存在,無論使用建立遮罩 755 - x 位元仍然從檔案中刪除。唯一的選擇是使用強制創建模式 755。

我測試了其他建立遮罩選項,似乎每次都會刪除檔案中的 0011。 755、777、333 ... 所以看起來可能是某種保護機制從群組中刪除 x 以及其他阻止腳本執行的機制,除了所有者之外沒有人?

但我的問題是關於上面的例子。為什麼結果是 d755 但-744?失去0011的魔力到底發生在哪裡?

非常感謝任何提示。

答案1

失去 0011 的魔力之所以會發生,是因為它是預設的 Samba 行為。

從文件中摘錄:

建立遮罩:此參數的預設值從 UNIX 模式中刪除群組和其他寫入和執行位

預設值:建立遮罩 = 0744

連結在這裡 :http://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html

搜尋create mask (S)

在本文檔中,Samba 團隊沒有解釋為什麼他們選擇實現這種預設行為,但對我來說,很容易想到安全機制(正如您所提到的)。

您可以使用該inherit permissions = yes指令使新檔案繼承其父資料夾權限,但這不會影響 x 位元。所以,在你的情況下,這將呈現:

-rwxrw-r--. 1 vanek amikon    0 Dec 21 10:14 file.txt

另外,正如您所說,要改變這種行為,您必須明確定義自己的遮罩。現在,「創建」和「強制創建」之間的主要區別在於:

  • create mask取消權限(AND 遮罩)
  • force create mode之後添加它們(OR 掩碼)

create mask無法處理團體和其他人的x位。

因此,您可能需要處理這兩個指令才能實現某些目標。


讓我們嘗試一些範例:

1)如果您只想要組和其他組的x位,則必須組合:

create mask = 0700 #Remove r bit from group and others 
force create mode = 0711 #Add x bit only to group and others

結果 : -rwx--x--x 1 kris kris 0 Dec 21 14:20 file.txt


2) 如果您想要群組和其他群組的 r 和 x 位,請刪除create mask指令(因為預設值已經是 0744)並新增:

    ;create mask = 0700 #remove r bit from group and others (commented)
    force create mode = 0711 #Add x bit only to group and others

結果 : -rwxr-xr-x 1 kris kris 0 Dec 21 14:17 file.txt


等等...

希望它對您了解 Samba 行為有所幫助。

相關內容