Permissions

Samba 預設文件創建遮罩計算

  • January 19, 2022

嗨,我有一個問題,我似乎沒有找到相關的答案。情況是我設置了 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 機器的權限執行邏輯與。通過使用創建遮罩和強制創建模式(以及用於 dirs 的其他設置),此行為或多或少會產生影響 - 按預期工作,完全沒有問題。

我發現失去 0011 的問題仍然存在,無論使用創建遮罩 755 - x 位仍然從文件中刪除。唯一的選擇是使用強制創建模式 755。在那之後,位會保持不變,或者向它們添加廣告。

我測試了其他創建遮罩選項,似乎每次都從文件中刪除 0011。755、777、333 …所以看起來它可能是某種保護機制,從組中刪除 x 和其他阻止腳本執行 bo 沒有人但所有者????

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

非常感謝任何提示。

失去 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 行為有所幫助。

引用自:https://serverfault.com/questions/562875