介紹:
samba是在linux/unix上實現SMB協議的免費軟體,通俗來說就是讓linux/unix支援與windows間互相共享檔案。
安裝軟體包:
yum install -y samba
samba配置檔案介紹
samba配置檔案的存放路徑為
/etc/samba/
該目錄下有以下三個檔案:
lmhosts檔案中記錄著區域網中NetBIOS與IP地址的對應關係
smb.conf是samba的主配置檔案,其內容由全域性配置部分和共享配置部分組成。
smbusers檔案記錄著windowns中使用者與linux中使用者的對應關係,例如windows中的administrator管理員賬戶對應linux下的root使用者。
samba的配置:
在開始配置前,首先明確下需求:
1、user11和user12使用者可以透過samba共享來訪問自己的家目錄,且此共享僅本人可見。
2、建立三個共享,分別為share1、share2、share3,其共享的本地資料夾分別為/tmp/a1、/tmp/a2、/tmp/a3。
3、group1組的使用者user1對share1共享有全部許可權,group2組的使用者user2對share2有全部許可權,group3組的使用者user3對share1和share2共享都有全部許可權;對於share1和share2共享其他人有隻讀許可權;share3為公共儲存,所有人都有存取權。
4、所用使用者新建的檔案都是本人擁有全部許可權,其他人只有只讀許可權。
知道了需求,那麼現在就來根據需求來做具體配置吧:
vim /etc/samba/smb.conf //使用vim文字編輯器開啟配置檔案
轉到第248行,可以看到如下內容,看開頭一行,[homes],home是家的意思,加s呢,變成複數了,可以理解成所有使用者的家,哈哈,感覺我像是在講英語。總之,透過配置此部分就可以滿足需求1了。
comment選項是用來新增一個文字描述的。
browseable選項定義他人是否可以看到此共享,yes為可以,no為不可以(僅自己可見)。
writable選項用來定義共享是否可寫。
valid users選項定義該共享規則對哪些使用者啟用。
看顯而易見,我們只要設定valid users選項,讓此共享配置僅對user11和user12使用者生效即可滿足需求1。
再來看需求2,新建三個共享,這個怎麼破?其實很簡單啦,配置檔案裡已經寫好了現成的,我們只需要複製成三份就好。
轉到配置檔案的末尾,可以看到以[public]關鍵字開頭的配置部分,這就是配置共享的模板。
複製前需要注意,這部分配置檔案預設被註釋掉了,如果你不想在複製完去一點點的刪除三份註釋符號的話那最好在複製之前把這一份註釋符號刪掉,如下圖:
三個共享有了,但他們的配置檔案是一摸一樣的,那共享名和共享的資料夾一定也是一樣的,要如何為每一個共享做定製呢?
先看這部分配置檔案的簡單介紹:
開頭的[public]是共享名,可任意起,與實際的共享資料夾可以不同名。
comment是沒用的文字介紹。
path是指定要共享的本地資料夾的路徑。
public是用來指定是否共享的,有yes和no兩個選項,至於這兩個選項分別是啥意思我就不囉嗦了。
writable用於配置此共享是否支援寫入。
printable指定是否支援列印,沒有特殊需求的話這裡都保持註釋狀態。
write list此選項用於決定哪些使用者或組對此共享擁有寫入許可權,此處一般保持註釋就好,因為linux的許可權管理可比samba的好用多了。
以下是按照需求2修改過的配置檔案,修改部分已經用紅筆標出來了,對照上方配置選項的解釋就可以輕鬆理解下圖的配置內容了。
許可權配置部分:
下面來看需求3,很明顯這裡是需要做許可權控制了。但我不得不嘮叨一下,samba自帶的許可權管理配置起來那是相當的蛋疼,而且功能弱爆了。所以這裡我們使用linux系統許可權管理加ACL來做許可權控制。
關於ACL的介紹可以參考:
linux下acl許可權詳解
在配置許可權前,我們先把所需要的使用者與組都建立完,並把他們加入到samba使用者資料庫中,再把要共享的資料夾都建立出來。
新建使用者:
useradd user11
useradd user12
useradd user1
useradd user2
useradd user3
新建組:
groupadd group1
groupadd group2
groupadd group3
將使用者加入組:
usermod -G group1 user1
usermod -G group2 user2
usermod -G group3 user3
將系統使用者加入到samba使用者資料庫中。
pdbedit -a user11
pdbedit -a user11
pdbedit -a user1
pdbedit -a user2
pdbedit -a user3
使用pebedit命令將系統使用者加入samba使用者資料庫中時會提示輸入兩次密碼,此密碼可以與linux系統使用者密碼不相同,加入成功後會出現類似如下提示:
建立共享的資料夾:
mkdir /tmp/a1
mkdir /tmp/a2
mkdir /tmp/a3
接下來就進入到了最重要的資料夾許可權配置階段了。
先來看/tmp/a1目錄的許可權配置。
將目錄所屬組改為group1
chown :group1 /tmp/a1
此時目錄/tmp/a1的許可權為:
此時group1組的成員對目錄是沒有寫許可權的,下面就賦予其讀寫執行的許可權:
chmod 775 /tmp/a1
此時group1組已經擁有了應有的許可權,但需求3裡面要求grou3組對該共享目錄也擁有全部許可權,這個就需要ACL來完成了。
執行如下命令:
setfacl -m g:group3:rwx /tmp/a1 //配置ACL許可權使group3組的成員對/tmp/a1目錄擁有全部許可權
此時檢視許可權:
注意許可權的最後多了一個+號,這證明ACL許可權已經生效了,再執行。
getfacl /tmp/a1 //檢視目錄的ACL許可權
只要有如上圖畫紅線的部分即是配置成功。
至此/tmp/a1這個目錄的全部許可權已經配置完成,而/tmp/a2目錄的許可權與/tmp/a1的許可權的配置方法雷同,這裡不再贅述。
再來看下/tmp/a3目錄的許可權,很簡單,給他777的許可權即可。
chmod 777 /tmp/a3
最後的最後,來看看需求4吧,就差這一個了。
這裡依然使用ACL許可權來完成需求,而不透過修改samba的配置檔案。
那要如何配置ACL呢?沒錯,只需要配置兩條預設ACL許可權即可。
setfacl -m d:u::rwx /tmp/a? //這裡使用萬用字元為所有以a開頭而第二個字元為任意字元的資料夾配置許可權
setfacl -m d:g::rx /tmp/a?
以/tmp/a1資料夾的acl許可權為例:
getfacl /tmp/a1
可以看到如上圖中紅色標註的部分即為配置成功。
好啦,4個需求已經全部滿足了,盡情測試吧。