需求目標
- 所有認證用戶可訪問 Samba 共享目錄
/path/to/home
; - **僅特定用戶(如
developer
)**擁有寫權限; - 其他用戶僅允許讀取;
- 禁止匿名訪問。
配置步驟
1. 設置文件系統權限
將目錄 /home3/guest
的所有權設為 developer
用戶和所屬組,并設置權限:
sudo chown -R developer:developer /path/to/home
sudo chmod -R 755 /path/to/home
755
權限:- 所有者(
developer
)可讀寫執行; - 其他用戶僅可讀和執行。
- 所有者(
說明:此配置確保文件系統權限與 Samba 配置一致,避免權限沖突。
2. 配置 Samba 共享目錄
編輯 Samba 配置文件(通常位于 /etc/samba/smb.conf
),添加以下內容:
[public]
path = /path/to/home
public = no
browseable = yes
writable = no
write list = developer
create mask = 0644
directory mask = 0755
配置參數詳解
參數 | 作用 |
---|---|
path | 共享目錄的物理路徑 |
public = no | 禁止匿名訪問 |
browseable = yes | 允許用戶瀏覽目錄 |
writable = no | 默認所有用戶不可寫 |
write list = developer | 僅 developer 用戶可寫 |
create mask = 0644 | 新建文件的權限(所有者可讀寫,其他用戶只讀) |
directory mask = 0755 | 新建目錄的權限(所有者可讀寫執行,其他用戶只讀執行) |
3. 重啟 Samba 服務
應用配置更改:
sudo systemctl restart smbd
關鍵原理說明
1. Samba 的默認行為
- 未設置
valid users
:Samba 默認允許所有認證用戶訪問共享目錄; writable = no
+write list
:通過白名單控制寫權限,避免手動維護valid users
列表。
2. 權限優先級
- Samba 配置 > 文件系統權限:即使文件系統允許組寫入(如
755
),Samba 的writable = no
和write list
會覆蓋這一限制,確保僅白名單用戶可寫。
3. 安全性設計
- 禁止匿名訪問:通過
public = no
和全局默認配置map to guest = Bad User
實現; - 最小權限原則:默認只讀,通過白名單授予寫權限。
注意事項
1. 配置一致性
- 確保文件系統權限與 Samba 配置一致,避免權限沖突。
- 若發現權限異常,檢查 Samba 日志:
/var/log/samba/smbd.log
。
2. 擴展場景
- 限制特定用戶組訪問:
添加valid users = @group_name
限制僅某組用戶可訪問; - 更細粒度控制:
使用 ACL(setfacl
)實現更復雜的權限管理。
總結
通過上述配置,你可以實現:
- 所有認證用戶可讀共享目錄;
- 僅特定用戶(如
developer
) 可寫; - 無需頻繁維護用戶列表,適應用戶頻繁變動的場景;
- 安全可控,避免匿名訪問和權限泄露風險。
此方案適用于開發團隊協作、自動化構建目錄等場景,確保數據安全的同時提升協作效率。