smb文檔服務器的部署比較簡單,可以參考的文章很多,關鍵是如何結合自己的需求進行細粒度的權限管理,本文給出了一些常見問題的解決方案,並給出了一個真實場景示例。
一、權限管理。
SMB可以實現細粒度的權限控制,這裏有幾個權限管理的常見問題及解決辦法。
1、文檔的讀寫權限控制。
由如下兩個指令控制:
read only = yes
writeable = yes
通過控制read only和writeable的yes或no來控制。
但是在使用過程中,經常會遇到操作文件或文件夾時,權限控制內的人卻不能上傳和下載,明明已經放開了讀寫權限,也有問題,這是因爲新建文件或文件夾的權限不夠,配置文件放開了讀寫的權限,但是linux系統控制的文件權限其實還沒有放開。舉一個形象的例子,如果你家大門被鎖,即使屋子裏的門敞開着,外人還是進不去,這裏的大門就是linux系統的讀寫權限限制,屋門就是smb配置文件的讀寫權限限制;
以下四個指令可以幫助解決這個問題,至於是否是777權限,可以根據實際情況配置。
create mask = 0777 #創建文件
directory mask = 0777
force create mode = 0777 #創建文件夾
force directory mode = 0777
2、瀏覽權限控制。
由如下幾個命令控制:
browseable = yes #可以瀏覽,所有path路徑均需要加上此配置;
available = yes #可以訪問,所有path路徑均需要加上此配置;
3、人員權限控制。
由如下幾個命令控制:
public = yes #全部成員都可以訪問,無限制;
valid users = aaa,@bbb,ccc #允許某些成員可讀(查看),用逗號隔開,用戶組用@組名錶示;
write list = aaa,ccc #允許某些成員可寫(上傳、下載、修改等);
4、用戶的添加和用戶組的添加。
第一步,添加用戶,使用命令useradd -d /xxx/yyy -s /sbin/nologin aaa,其中/xxx/yyy爲指定用戶登入時的主目錄,替換系統默認值/home/<用戶名> ,aaa爲用戶名
第二步,創建用戶的密碼,使用命令pdbedit -a -u aaa
輸入兩次即可。
第三步,創建用戶組,使用groupadd命令,建議直接在如下路徑下添加用戶組和用戶
vi 編輯/etc/group
命令如下:
組名:x:組號:aaa,bbb,ccc
示例:
FtpDepart:x:1076:zhangxx,lixx,liuxx
5、文件路徑控制
path = XXX,其中xxx爲文件的真實路徑
不同的文件路徑只需要進行不同的控制即可。
二、真實場景示例
場景目標:
1、公共文檔,供所有人訪問和使用;
2、項目文檔,供項目組成員訪問和使用;
3、技術組文檔,供技術組成員訪問和使用;
配置文件如下:
[global]
workgroup = WORKGROUP
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[homes]
comment = Home Directories
browseable = no
valid users = %S,%D%w%S
writeable = yes
available = no
inherit acls = Yes
[01-公共共享]
comment = 公共共享
browseable = yes #可以瀏覽;
path = /var/ftp/01-公共共享 #文檔路徑
guest ok = yes
read only = yes #可讀
writeable = yes #可寫
create mask = 0777 #新建文件權限
directory mask = 0777 #新建文件夾權限
force create mode = 0777
force directory mode = 0777
public = yes #所有人開放;
available = yes #路徑可以訪問;
[02-項目組X]
comment = project-x
browseable = yes
path = /var/ftp/02-項目組X
guest ok = yes
read only = yes
writeable = yes
create mask = 0777
directory mask = 0777
force create mode = 0777
force directory mode = 0777
valid users = @aaa,@bbb #允許項目組aaa和bbb成員查看;
write list = @aaa,@bbb #允許項目組aaa和bbb成員查看;
available = yes
[03-技術組Y]
comment = te-y
browseable = yes
path = /var/ftp/03-技術組Y
guest ok = yes
read only = yes
writeable = yes
create mask = 0777
directory mask = 0777
force create mode = 0777
force directory mode = 0777
valid users = @ccc,@ddd #允許技術組ccc和ddd成員查看;
write list = @ccc,@ddd #允許技術組ccc和ddd成員查看;
available = yes
組配置文件如下:
cat /etc/group查看最後幾行。
aaa:x:1094:a1,a2,a3,a4,a5,a6
bbb:x:1095:b1,b2,b3,b4,b5,b6,b7,b8,b9,b10
ccc:x:1096:c1,c2,c3,c4,c5,c6,c7
ddd:x:1097:d1,d2,d3,d4,d5
這樣就實現了場景所要求的目標。