Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟件,由服務器及客戶端程序構成。SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通訊協議,它爲局域網內的不一樣計算機之間提供文件及打印機等資源的共享服務。SMB協議是客戶機/服務器型協議,客戶機經過該協議能夠訪問服務器上的共享文件系統、打印機及其餘資源。經過設置"NetBIOS over TCP/IP"使得Samba不但能與局域網絡主機分享資源,還能與全世界的電腦分享資源。vim
簡單來講,Samba是實現Windows和Linux跨平臺文件共享的;Samba有兩個守護進程,分別是smbd和nmbd;安全
smb:監聽tcp 139 445端口,實現檔案共享、用戶驗證等;服務器
nmb:監聽udp137和138端口,實現netBIOS解析,處理瀏覽共享等網絡
Linux上要實現Samba須要如下套件dom
Samba 實現服務tcp
samba-client Linux客戶端ide
cifs-utils 實現跨平臺訪問工具
環境中是否已安裝Samba及相關套件spa
[root@SAMBA ~]# rpm -qa samba samba-client cifs-utilsunix
samba-client-3.6.23-12.el6.x86_64
cifs-utils-4.8.1-19.el6.x86_64
2) 安裝samba
通過檢查,samba-client和cifs-utils已經默認安裝(若是沒有安裝,安裝便可),因此安裝samba主服務便可;
[root@SAMBA ~]# yum -y install samba
採用yum安裝,自動解決依賴關係;
主配置文件:
/etc/samb/smb.conf
默認配置:
[root@SAMBA ~]# grep -vE "^#|^$|^;" /etc/samba/smb.conf
[global]
workgroup = MYGROUP //samba全局設置
server string = Samba Server Version %v
# logs split per machine
log file = /var/log/samba/log.%m
# max 50KB per log file, then rotate
max log size = 50
security = user
passdb backend = tdbsam
# the login script name depends on the machine name
# the login script name depends on the unix user used
# disables profiles support by specifing an empty path
load printers = yes
cups options = raw
#obtain list of printers automatically on SystemV
[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
另外該配置文件還提供了共享設置案例,只不過用;註釋掉了
[root@SAMBA ~]# grep -n "^;" /etc/samba/smb.conf |tail -n 20
243:; store dos attributes = yes
252:; valid users = %S//指定受權訪問用戶或用戶組
253:; valid users = MYDOMAIN\%S
264:; [netlogon]//指定共享的自定義標識
265:; comment = Network Logon Service//指定共享目錄的說明文字
266:; path = /var/lib/samba/netlogon//指定共享的實際路徑
267:; guest ok = yes//至關於public = yes ,全部人可用
268:; writable = no//與read only相反,是否可寫
269:; share modes = no
274:; [Profiles]
275:; path = /var/lib/samba/profiles
276:; browseable = no//設置爲隱藏
277:; guest ok = yes
282:; [public]
283:; comment = Public Stuff
284:; path = /home/samba
285:; public = yes
286:; writable = yes
287:; printable = no
288:; write list = +staff
常見配置語句解析
workgroup: 工做組名稱
server string:服務器描述
security: 安全級別,user爲要求用戶驗證
comment: 對此共享目錄的說明文字
path: 共享目錄的實際位置
browseable: 是否可見,no爲隱藏
public: 是否全部人可見
writable: 是否可寫,與read only相反
除了以上說明以外,還能夠採用 man 5 smb.conf來幫助
SAMBA使用能夠採用匿名使用,可認證使用,具體採用方式由主配置文件中security決定;
samba一共有5種,分別是share、user、server、domain、ads。
1.share:全部人均可以訪問這臺samba服務器(不須要輸入用戶名和密碼)。
2.user:須要輸入有效的用戶名和密碼才能訪問samba服務器(身份驗證由samba服務器負責)。
3.server:與user相同,只是將身份驗證交由指定的另外一臺samba服務器負責。
4.domain:將身份驗證交由域控制器負責。
5.ads:將身份驗證交由域控制器負責(比domain更爲安全一點)。
Windows訪問
Linux訪問
smbclient訪問
smbclient L 服務器地址
smbclient //服務器地址/共享名
smbclient U 用戶名 //服務器地址/共享名
帳號設置
帳號名稱必須存在於系統中,但採用獨立的密碼,帳號文件存在於/var/lib/samba/private/passwd.tdb;訪問共享時,採用用戶和密碼登錄,權限取決於對應的系統帳號的權限;
帳號管理工具
pdbedit 工具
-a 指定系統帳戶爲samba帳戶,並設置密碼;
-L 查看共享帳號信息
-x 刪除共享帳號
案例解析
根目錄下/samba爲共享目錄,目錄內有music、carton、MV目錄,其中分別對應各種檔案,供上傳和下載;其中vip帳戶woon能夠寫;
1)設置環境
[root@SAMBA samba]# ls
carton music MV
2)配置共享
[root@SAMBA samba]# vim /etc/samba/smb.conf
[music]
path = /samba
public = yes
read only = yes
write list = woon
3) 添加共享帳戶
[root@SAMBA samba]# pdbedit -a woon
[root@SAMBA samba]# useradd samba
[root@SAMBA samba]# pdbedit -a samba
[root@woon samba]# setfacl -d -m u:woon:rwx /samba/
4)重啓samba服務;
service smb restart
service nmb estart
woon用戶驗證
[root@woon ~]# ls -al /etc/ >> /samba/ls.log
[root@woon ~]# rm -rf /samba/install.log
[root@woon ~]# smbclient -U woon //192.168.239.128/music
Enter woon's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-12.el6]
smb: \> ls
. D 0 Tue Mar 3 17:48:13 2015
.. DR 0 Tue Mar 3 17:32:03 2015
MV D 0 Tue Mar 3 17:38:00 2015
music D 0 Tue Mar 3 17:38:59 2015
ls.log 15220 Tue Mar 3 17:48:03 2015
acl D 0 Tue Mar 3 17:34:37 2015
carton D 0 Tue Mar 3 17:33:47 2015
33788 blocks of size 262144. 14918 blocks available
smb: \> put install.log
putting file install.log as \install.log (8637.9 kb/s) (average 8638.1 kb/s)
smb: \> ls
. D 0 Tue Mar 3 17:48:39 2015
.. DR 0 Tue Mar 3 17:32:03 2015
MV D 0 Tue Mar 3 17:38:00 2015
music D 0 Tue Mar 3 17:38:59 2015
ls.log 15220 Tue Mar 3 17:48:03 2015
Linux訪問Windows共享文件夾
mount -t smbfs -o username=user,iocharset=GB2312 -l //192.168.1.100/test /mnt/test