1.Samba協議基礎
在NetBIOS出現之後,Microsoft就使用NetBIOS實現了一個網絡文件/打印服務系統,這個系統基於NetBIOS設定了一套文件共享協議,Microsoft稱之爲SMB(Server Message Block)協議。這個協議被Microsoft用於它們Lan Manager和Windows NT服務器系統中,實現不同計算機之間共享打印機、串行口和通訊抽象(如命名管道、郵件插槽等)。
隨着Internet的流行,Microsoft希望將這個協議擴展到Internet上去,成爲Internet上計算機之間相互共享數據的一種標準。因此它將原有的幾乎沒有多少技術文檔的SMB協議進行整理,重新命名爲 CIFS(Common Internet File System),並打算將它與NetBIOS相脫離,試圖使它成爲Internet上的一個標準協議。
2.安裝
採用redhat5.4安裝,使用yum工具
yum install -y samba
3.配置信息
netbios name = MYSERVER 定義自己的共享主機名。
interfaces = lo eth0 192.168.50.11/24
如果有多個網絡接口,就必須在這裏指定。如interfaces = 192.168.50.10/24 192.168.50.11/24
hosts allow = 127. 192.168.12. 192.168.13. //允許那個網斷的計算機可以訪問共享資源
log file = /var/log/samba/%m.log 日誌文件,可以修改爲log file = /var/log/samba/samba.log,重啓服務後登陸信息和操作信息就會記錄在日誌文件內。
security = user
定義Samba的安全級別,按從低到高分爲四級:share,user,server,domain。它們對應的驗證方式如下:
share:沒有安全性的級別,任何用戶都可以不要用戶名和口令訪問服務器上的資源。
user:samba的默認配置,要求用戶在訪問共享資源之前資源必須先提供用戶名和密碼進行驗證。
server:和user安全級別類似,但用戶名和密碼是遞交到另外一個服務器去驗證,比如遞交給一臺NT服務器。如果遞交失敗,就退到user安全級。
domain:這個安全級別要求網絡上存在一臺Windows的主域控制器,samba把用戶名和密碼遞交給它去驗證。
後面三種安全級都要求用戶在本Linux機器上也要系統帳戶。否則是不能訪問的。
域成員參數,域控制參數,Brows控制參數,打印參數和文件系統參數本文沒有介紹。因爲需要domain域級別才能試驗。
4.共享設置:
每個SMB服務器能對外提供文件或打印服務,每個共享資源需要被給予一個共享名,這個名字將顯示在這個服務器的資源列表中。如果一個資源的名字的最後一個字母爲$,則這個共享名就爲隱藏共享,不能直接表現在瀏覽列表中,而只能通過直接訪問這個名字來進行訪問。在SMB協議中,爲了獲得服務器提供的資源列表,必須使用一個隱藏的資源名字IPC$來訪問服務器,否則客戶無法獲得系統資源的列表
默認共享設置有兩個段:
[homes] 家目錄
comment = Home Directories
browseable = no
writable = yes
; valid users = %S
; valid users = MYDOMAIN\%S
[printers] 打印機共享
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
writeable指定了這個目錄缺省是否可寫,也可以用readonly = no來設置可寫。
user設置所有可能使用該共享資源的用戶,也可以用@group代表group這個組的所有成員,不同的項目之間用空格或者逗號隔開。
valid users指定能夠使用該共享資源的用戶和組。
invalid users指定不能夠使用該共享資源的用戶和組。
read list 指定只能讀取該共享資源的用戶和組。
write list指定能讀取和寫該共享資源的用戶和組。
admin list指定能管理該共享資源(包括讀寫和權限賦予等)的用戶和組。
public指明該共享資源是否能給遊客帳號訪問,這個開關有時候也叫guest ok,所以有的配置文件中出現guest ok = yes其實和public = yes是一樣的。
hide dot files指明是不是像unix那樣隱藏以“.”號開頭的文件。
create mode指明新建立的文件的屬性,一般是0755。
directory mode指明新建立的目錄的屬性,一般是0755。
sync always指明對該共享資源進行寫操作後是否進行同步操作。
short preserve case指明不管文件名大小寫。
preserve case指明保持大小寫。
case sensitive指明是否對大小寫敏感,一般選no,不然可能引起錯誤。
mangle case指明混合大小寫。
default case指明缺省的文件名是全部大寫還是小寫。
force user強制把建立文件的屬主是誰。如果我有一個目錄,讓guest可以寫,那麼guest就可以刪除,如果我用force user= zhangsan強制建立文件的屬主是zhangsan,同時限制create mask = 0755,這樣guest就不能刪除了。
wide links指明是否允許共享外符號連接,比如共享資源裏面有個連接指向非共享資源裏面的文件或者目錄,如果設置wide links = no將使該連接不可用。
max connections = n設定同時連接數是n。
delete readonly指明能否刪除共享資源裏面已經被定義爲只讀的文件。
有兩類特殊的共享,分別是光驅和打印機。
5.創建smb帳號庫:
首先訪問帳號需是本地帳號,然後賦予本地帳戶的smb口令
smbpasswd -a 賬號 (取自本地賬號)
-a必須加,爲了生成密碼文件smbpasswd,該密碼是windows登陸Linux的smbuser用戶密碼
Smbpasswd -a zhangsan,然後就可以用zhangsan登陸smb服務器
6.相關用法:
先創建兩個用戶,user1和user2.
[root@localhost ~]# useradd user1
[root@localhost ~]# smbpasswd -a user1
密碼隨便輸。
[root@localhost ~]# useradd user2
[root@localhost ~]# smbpasswd -a user2
密碼隨便輸。
(1)安全級別的設置:
當我們把完全級別設置爲share時,可以不用輸入任何驗證信息直接登錄samba服務器。
[root@localhost ~]# vim /etc/samba/smb.conf
[root@localhost ~]# service smb restart #重新啓動samba服務
直接可以訪問。
當我們把安全級別設置爲user時,這個時候得需要身份驗證。
[root@localhost ~]# service smb restart
(2)指定特定地址訪問samba服務器:
讓192.168.5.102的用戶和本地用戶訪問samba服務器.
[root@localhost ~]# vim /etc/samba/smb.conf
說明可以進行身份驗證。
當將用戶端地址給爲其它,比如192.168.5.101時,看看結果:
將不再被允許訪問。
(3)基於接口控制的samba服務器的訪問:
在增加一個地址:192.168.5.110,默認情況下,用戶訪問這個兩個地址都可以訪問到。爲了讓用戶只能訪問192.168.5.100,而不能訪192.168.5.110,我們做如下操作:
先測試192.168.5.100
再測試192.168.5.110
訪問失敗。
7.小案例:
在/tmp目錄下,建立三個文件夾:/tmp/abc,/tmp/user1,/tmp/user2.
user1的共享名爲smbuser1,只有user1一個人能訪問,可讀可寫;user2的共享名爲smbuser2,只有user2一個人能訪問,可讀可寫;abc的共享名爲public,任何人都可以訪問,但是是隻讀文件。
[root@localhost ~]# mkdir /tmp/abc /tmp/user1 /tmp/user2
[root@localhost ~]# ll -d /tmp/abc /tmp/user1 /tmp/user2
[root@localhost ~]# chown user1.user1 /tmp/user1
[root@localhost ~]# chown user2.user2 /tmp/user2 #修改用戶和組的權限
[root@localhost ~]# vim /etc/samba/smb.conf
[root@localhost ~]# cd /tmp/abc
[root@localhost abc]# touch p1
[root@localhost abc]# cd ../user1
[root@localhost user1]# touch f1.user1
[root@localhost user1]# cd ../user2
[root@localhost user2]# touch f2.user2 #創建各個文件作爲標誌
[root@localhost ~]# vim /etc/samba/smb.conf
[root@localhost ~]# testparm #檢測samba配置文件中語法是否正確
[root@localhost ~]# service smb restart
檢測結果:
首先是user1的檢測:
進入smbuser1,可以刪除和新建文件
但是進入public中不能新建,刪除和上傳文件,能下載文件。
user2跟user1的情況一樣,在這裏就不再截圖。