Samba起源: 早期網路想要在不同主機之間共用文件大多要用FTP協議來傳輸,但FTP協議僅能做到傳輸文件卻不能直接修改對方主機的資料數據,這樣確實不太方便,於是便出現了NFS開源文件共用程式:NFS(NetworkFile System)是一個能夠將多台Linux的遠程主機數據掛載到本地目錄的服務 ...
Samba起源:
早期網路想要在不同主機之間共用文件大多要用FTP協議來傳輸,但FTP協議僅能做到傳輸文件卻不能直接修改對方主機的資料數據,這樣確實不太方便,於是便出現了NFS開源文件共用程式:NFS(NetworkFile System)是一個能夠將多台Linux的遠程主機數據掛載到本地目錄的服務,屬於輕量級的文件共用服務,不支持Linux與 Windows系統間的文件共用。
隨後在1991年時大學生Tridgwell為瞭解決Linux與Windows系統之間共用文件的問題,便開發出了SMB協議與Samba服務程式。
SMB(Server Messages Block)協議:實現區域網內文件或印表機等資源共用服務的協議。
當時Tridgwell想要註冊SMBServer這個商標,但卻被因為SMB是沒有意義的字元被拒絕了,經過Tridgwell不斷翻看詞典,終於找到了一個拉丁舞蹈的名字——SAMBA,而這個熱情舞蹈的名字中又恰好包含了SMB(SAMBA),於是這便是Samba程式名字的由來。
Samba服務程式是一款基於SMB協議並由服務端和客戶端組成的開源文件共用軟體,實現了Linux與Windows系統間的文件共用。
所需主機配置:
主機名稱 |
操作系統 |
IP地址 |
Samba共用伺服器 |
紅帽RHEL6操作系統 |
192.168.0.141 |
客戶端 |
紅帽RHEL6操作系統 |
192.168.0.142 |
客戶端 |
Windows7操作系統 |
192.168.0.110 |
[root@host1 ~]## yum -y install samba
[root@host1 ~]# service smb restart
[root@host1 ~]# chkconfig smb --list
smb 0:關閉1:關閉2:啟用3:啟用4:啟用5:啟用6:關閉
[root@host1 ~]## cat /etc/samba/smb.conf | grep -v "#" | grep -v ";" | grep -v "^$"
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
[homes]
comment = Home Directories
browseable = no
writable = yes
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
過濾後的配置文件:
[global] |
#全局參數。 |
|
workgroup = MYGROUP |
#工作組名稱。 |
|
server string = Samba Server Version %v |
#伺服器介紹信息,參數%v為顯示SMB版本號。 |
|
log file = /var/log/samba/log.%m |
#定義日誌文件存放位置與名稱,參數%m為來訪的主機名。 |
|
max log size = 50 |
#定義日誌文件最大容量為50Kb。 |
|
security = user |
#安全驗證的方式,總共有4種。 |
|
#share:來訪主機無需驗證口令,更加方便,但安全性很差。 |
||
#user:需由SMB服務驗證來訪主機提供的口令後才可建立訪問,更加的安全。 |
||
#server:使用獨立的遠程主機驗證來訪主機提供的口令(集中管理帳號)。 |
||
#domain:使用PDC來完成驗證 |
||
passdb backend = tdbsam |
#定義用戶後臺的類型,共有3種。 |
|
#smbpasswd:使用SMB服務的smbpasswd命令給系統用戶設置SMB密碼。 |
||
#tdbsam:創建資料庫文件並使用pdbedit建立SMB獨立的用戶。 |
||
#ldapsam:基於LDAP服務進行帳戶驗證。 |
||
load printers = yes |
#設置是否當Samba服務啟動時共用印表機設備。 |
|
cups options = raw |
#印表機的選項 |
|
[homes] |
#共用參數 |
|
comment = Home Directories |
#描述信息 |
|
browseable = no |
#指定共用是否在“網上鄰居”中可見。 |
|
writable = yes |
#定義是否可寫入操作,與"read only"相反。 |
|
[printers] |
#印表機共用參數 |
|
comment = All Printers |
||
path = /var/spool/samba |
#共用文件的實際路徑(重要)。 |
|
browseable = no |
||
guest ok = no |
#是否所有人可見,等同於"public"參數。 |
|
writable = no |
||
printable = yes |
標準的Samba共用參數是這樣的:
參數 |
作用 |
[linuxprobe] |
共用名稱為linuxprobe |
comment = Do not arbitrarily modify the database file |
警告用戶不要隨意修改資料庫 |
path = /home/database |
共用文件夾在/home/database |
public = no |
關閉所有人可見 |
writable = yes |
允許寫入操作 |
使用Samba服務口令驗證方式可以讓共用文件更加的安全,做到僅讓信任的用戶訪問,而且驗證過程也很簡單,要想使用口令驗證模式,我們需要先需要創建Samba服務獨立的資料庫。
第1步:檢查當前是否為user驗證模式
[root@host1 ~]# cat /etc/samba/smb.conf
……
security = user
passdb backend = tdbsam
……
第2步:創建共用文件夾:
[root@host1 ~]# mkdir /database
第3步:描述共用文件夾信息。
在SMB服務主配置文件的最下麵追加共用文件夾的配置參數:
[database]
comment = Do not arbitrarily modify the database file
path = /database
public = no
writable = yes
保存smb.conf文件後重啟啟動SMB服務:
[root@host1 ~]# service smb restart
第4步:使用Windows主機嘗試訪問
在Windows主機的運行框中輸入遠程主機的信息
此時訪問Samba服務報錯
這時我們需要關閉防火牆(或清空防火牆規則)和修改SElinux規則
第5步:清空防火牆規則鏈:
[root@host1 ~]# /etc/init.d/iptables stop
或者:
[root@host1 ~]# iptables -F
[root@host1 ~]# service iptables save
第6步:創建SMB服務獨立的帳號。
現在Windows系統要求先驗證後才能訪問共用,而SMB服務配置文件中密碼資料庫後臺類型為”tdbsam“,所以這個帳戶和口令是Samba服務的獨立帳號信息,我們需要使用pdbedit命令來創建SMB服務的用戶資料庫。
pdbedit命令用於管理SMB服務的帳戶信息資料庫,格式為:“pdbedit [選項] 帳戶”。
參數 |
作用 |
-a 用戶名 |
建立Samba用戶 |
-x 用戶名 |
刪除Samba用戶 |
-L |
列出用戶列表 |
-Lv |
列出用戶詳細信息的列表 |
創建系統用戶:
[root@host1 ~]# useradd smbuser
將此系統用戶提升為SMB用戶:
[root@host1 ~]# pdbedit -a -u smbuser
new password: //設置SMB服務獨立密碼
retype new password:
Unix username: smbuser
NT username:
……
第7步:允許SELinux規則
設置共用目錄的ACL許可權添加smbuser用戶:
[root@host1 ~]# setfacl -m u:smbuser:rwx /database
允許SELinux對於SMB用戶共用家目錄的布爾值:
[root@host1 ~]# setsebool -P samba_enable_home_dirs on
將共用目錄的SELinux安全上下文設置妥當:
[root@host1 ~]# chcon -t samba_share_t -R /database
重啟服務:
[root@host1 ~]# service smb restart
第8步:使用Windows主機驗證共用結果
使用SMB服務並創建文件
實現Linux系統之間數據共用
客戶端安裝cifs-utils軟體包:
[root@host2 ~]# yum -y install cifs-utils
[root@host2 ~]# smbclient -L 192.168.0.141 //查看141伺服器提供了哪些共用
Enter root's password:
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-20.el6]
Sharename Type Comment
--------- ---- -------
database Disk Do not arbitrarily modify the database file
IPC$ IPC IPC Service (Samba Server Version 3.6.23-20.el6)
……
[root@host2 ~]# mkdir /mntsmb
[root@host2 ~]# vim /etc/fstab
//192.168.0.141/database /mntsmb cifs username=smbuser,password=123456,domain=MYGROUP,_netdev 0 0
[root@host2 ~]# mount -a
[root@host2 ~]# mount | grep /mntsmb
//192.168.0.141/database on /mntsmb type cifs (rw)
[root@host2 ~]# cat /mntsmb/smb.txt
hello
PS:寫的內容比較多,但是實際配置起來,步驟很少的,也比較簡單的!