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 機器的權限執行邏輯與。通過使用創建遮罩和強制創建模式(以及用於 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 行為有所幫助。