以前我們在windows上共享文件的話,只需右擊要共享的文件夾然后選擇共享相關的選項設置即可。然而如何實現windows和linux的文件共享呢?這就涉及到了samba服務了,這個軟件配置起來也不難,使用也非常簡單。
【samba配置文件smb.conf】
一般你裝系統的時候會默認安裝samba,如果沒有安裝,只需要運行這個命令安裝(CentOS):
“yum install -y samba samba-client”
Samba的配置文件為/etc/samba/smb.conf,通過修改這個配置文件來完成我們的各種需求。打開這個配置文件,你會發現很多內容都用”#”或者”;”注視掉了。先看一下未被注釋掉的部分:
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
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], [homes], [printers]。
[global]定義全局的配置,”workgroup”用來定義工作組,相信如果你安裝過windows的系統,你會對這個workgroup不陌生。一般情況下,需要我們把這里的”MYGROUP”改成”WORKGROUP”(windows默認的工作組名字)。
security = user #這里指定samba的安全等級。關於安全等級有四種:
share:用戶不需要賬戶及密碼即可登錄samba服務器
user:由提供服務的samba服務器負責檢查賬戶及密碼(默認)
server:檢查賬戶及密碼的工作由另一台windows或samba服務器負責
domain:指定windows域控制服務器來驗證用戶的賬戶及密碼。
passdb backend = tdbsam # passdb backend (用戶后台),samba有三種用戶后台:smbpasswd, tdbsam和ldapsam.
smbpasswd:該方式是使用smb工具smbpasswd給系統用戶(真實用戶或者虛擬用戶)設置一個Samba 密碼,客戶端就用此密碼訪問Samba資源。smbpasswd在/etc/samba中,有時需要手工創建該文件。
tdbsam:使用數據庫文件創建用戶數據庫。數據庫文件叫passdb.tdb,在/etc/samba中。passdb.tdb用戶數據庫可使用smbpasswd –a創建Samba用戶,要創建的Samba用戶必須先是系統用戶。也可使用pdbedit創建Samba賬戶。pdbedit參數很多,列出幾個主要的:
pdbedit –a username:新建Samba賬戶。
pdbedit –x username:刪除Samba賬戶。
pdbedit –L:列出Samba用戶列表,讀取passdb.tdb數據庫文件。
pdbedit –Lv:列出Samba用戶列表詳細信息。
pdbedit –c “[D]”–u username:暫停該Samba用戶賬號。
pdbedit –c “[]”–u username:恢復該Samba用戶賬號。
ldapsam:基於LDAP賬戶管理方式驗證用戶。首先要建立LDAP服務,設置“passdb backend = ldapsam:ldap://LDAP Server”
load printers 和 cups options 兩個參數用來設置打印機相關。
除了這些參數外,還有幾個參數需要你了解:
netbios name = MYSERVER # 設置出現在“網上鄰居”中的主機名
hosts allow = 127. 192.168.12. 192.168.13. # 用來設置允許的主機,如果在前面加”;”則表示允許所有主機
log file = /var/log/samba/%m.log #定義samba的日志,這里的%m是上面的netbios name
max log size = 50 # 指定日志的最大容量,單位是K
[homes]該部分內容共享用戶自己的家目錄,也就是說,當用戶登錄到samba服務器上時實際上是進入到了該用戶的家目錄,用戶登陸后,共享名不是homes而是用戶自己的標識符,對於單純的文件共享的環境來說,這部分可以注視掉。
[printers]該部分內容設置打印機共享。
【samba實踐】
注意:在試驗之前,請先檢測selinux是否關閉,否則可能會試驗不成功。關於如何關閉selinux請查看第十五章 linux系統日常管理的“linux的防火牆”部分
- 共享一個目錄,任何人都可以訪問,即不用輸入密碼即可訪問,要求只讀。
打開samba的配置文件/etc/samba/smb.conf
[global]部分
把”MY GROUP”改成”WORKGROUP”
把”security = user” 修改為“security = share”
然后在文件的最末尾處加入以下內容:
[share]
comment = share all
path = /tmp/samba
browseable = yes
public = yes
writable = no
mkdir /tmp/samba
chmod 777 /tmp/samba
啟動samba服務
/etc/init.d/smb start
測試:
首先測試你配置的smb.conf是否正確,用下面的命令
testparm
如果沒有錯誤,則在你的windows機器上的瀏覽器中輸入file://IP/share 看是否能訪問
- 共享一個目錄,使用用戶名和密碼登錄后才可以訪問,要求可以讀寫
打開samba的配置文件/etc/samba/smb.conf
[global] 部分內容如下:
[global]
workgroup = WORKGROUP
server string = Samba Server Version %v
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
然后加入以下內容:
[myshare]
comment = share for users
path = /samba
browseable = yes
writable = yes
public = no
保存配置文件,創建目錄:
mkdir /samba
chmod 777 /samba
然后添加用戶。因為在[globa]中” passdb backend = tdbsam”,所以要使用” pdbedit” 來增加用戶,注意添加的用戶必須在系統中存在。
useradd user1 user2
pdbedit -a user1 # 添加user1賬號,並定義其密碼
pdbedit -a user2
pdbedit -L # 列出所有的賬號
測試:
打開IE瀏覽器輸入file://IP/myshare/ 然后輸入用戶名和密碼
- 使用linux訪問samba服務器
Samba服務在linux下同樣可以訪問。前提是你的linux安裝了samba-client軟件包。安裝完后就可以使用smbclient命令了。
smbclient //IP/共享名 -U 用戶名
如:[root@localhost]# smbclient //10.0.4.67/myshare/ -U user1
Password:
Domain=[LOCALHOST] OS=[Unix] Server=[Samba 3.0.33-3.29.el5_6.2]
smb: >
出現如上所示的界面。可以打一個”?”列出所有可以使用的命令。常用的有cd, ls, rm, pwd, tar, mkdir, chown, get, put等等,使用help + 命令可以打印該命令如何使用,其中get是下載,put是上傳。
另外的方式就是通過mount掛載了:
如:
mount -t cifs //10.0.4.67/myshare /mnt -o username=user1,password=123456
格式就是這樣,要指定-t cifs //IP/共享名本地掛載點 -o后面跟username 和 password
掛載完后就可以像使用本地的目錄一樣使用共享的目錄了。