設置Samba上寫入文件或目錄的用戶權限
Linux上開放Samba共享目錄時,可以通過/etc/samba/smb.conf配置文件的guest account、create mask和directory mask屬性,來設置寫入共享目錄中的文件或目錄的用戶權限。
Java代碼
[global]
workgroup = TUX-NET
interfaces = 127.0.0.1 eth0
bind interfaces only = true
printing = cups
printcap name = cups
load printers = yes
security = share
log file =/nbs/log/samba-log/samba.log
guest account = root
create mask = 666
directory mask = 777
#============================ Share Definitions ==============================
[BSP-DATA]
comment = BSP Data
path = /nbs/BSP-DATA
writable = yes
browseable = yes
guest ok = yes
如果samba中未設置guest account、create mask和directory mask,則samba服務會默認使用nobody用戶作為寫入共享目錄的屬主和屬組。這個類似vsftpd服務使用ftp用戶作為匿名用戶訪問的權限。
另一個問題,雖然設置了:
create mask = 666
directory mask = 777
但Linux客戶端訪問Samba共享目錄時,寫入的文件權限是rw-rw-r--,目錄權限是drwxrwxr-x,other用戶的權限位不充許寫,與設想的不同。而Windows客戶端訪問時,寫入的文件和目錄與設想的一致,即文件權限是rw-rw-rw-,目錄權限是drwxrwxrwx。
最後,在Linux客戶端上設置寫入samba共享目錄的用戶的umask為0000,可以實現預想的設置。具體Linux權限間什麼機制還沒搞白,先能使上。