歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Samba文件共享-實現異構通信

Samba文件共享-實現異構通信

日期:2017/3/3 16:37:15   编辑:關於Linux

Samba是Linux、Unix與Windows之間進行交互操作的軟件組件,Samba是基於GPL協議的自由開源軟件。自從1992年以來,Samba開始通過SMB/CIFS協議為Windows、OS/2、Linux以及眾多其他支持該協議的操作系統提供安全、穩定、快速的文件與打印服務,在使用winbind將Linux/Unix無縫整合到活動目錄環境時Samba也是一個重要組件。

所需軟件:samba

Samba由smbd和nmbd兩個個守護進程組成,兩個進程的啟動腳本是獨立的,下面分別介紹每個守護進程的作用。

smbd服務進程為客戶端提供文件共享與打印機服務。另外,該進程還負責用戶權限驗證以及鎖功能,smbd默認監聽的端口是TCP協議的139與445,Samba通過smb服務啟動smbd進程,使用netstat -nutlp查看進程端口信息。

nmbd進程提供NetBIOS名稱服務,以滿足基於Common Internet File System(CIFS)協議的共享訪問環境。Samba通過nmb服務啟動nmbd進程,該進程默認使用是UDP 137端口。

由於iptables與SELinux默認策略會組織遠程用戶對Samba的訪問,目前我們采用關閉這些服務,關於如果設置防火牆與SELinux策略會在後續文章中詳細介紹。

快速配置Samba服務器:

1. 關閉防火牆與SELinux

[root@centos6 ~]# setenforce 0                       #臨時關閉SELinux    
[root@centos6 ~]# sed -i "/SELINUX=/c SELINUX=disable" \
> /etc/sysconfig/selinux #永久關閉SELinux [root@centos6 ~]# service iptables stop #臨時關閉防火牆 [root@centos6 ~]# chkconfig iptables off #永久關閉防火牆

2. 安裝Samba軟件

[root@centos6 ~]# yum -y install samba

3. 創建共享目錄

[root@centos6 ~]# mkdir /common 
[root@centos6 ~]# chmod 755 /common
[root@centos6 ~]# echo “hello the world” > /common/smb.txt #創建測試文件

4. 修改配置文件

Samba默認配置文件為/etc/samba/smb.conf,默認Samba已經配置為允許用戶通過遠程共享訪問自己的家目錄。下面通過在該配置文件末尾追加common目錄的共享設置,實現快速自定義共享。

[root@centos6 ~]# vim /etc/samba/smb.conf    
[common]                                    #共享名稱為common    
    comment = Common share                  #共享注釋    
    path = /common                          #重要,指定共享路徑    
    browseable = yes                        #所有人可見    
    guest ok = no                           #拒絕匿名訪問    
    writable = yes                          #支持寫入數據

5. 創建訪問帳號

成功訪問Samba服務器還需要使用smbpasswd將系統賬戶添加到Samba並設置相應的密碼,在CentOS 6.3系統自動的Samba軟件默認會將賬戶與密碼文件存放在/var/lib/samba/private目錄下。

[root@centos6 ~]# useradd -s /sbin/nologin smbuser    
[root@centos6 ~]# smbpasswd -a smbuser    
New SMB password:                                #提示輸入賬戶密碼    
Retype new SMB password:                         #確認一次密碼    
Added user smbuser.                              #成功添加帳號與密碼
smbpasswd命令
描述: 修改賬戶samba密碼
用法: smbpasswd [選項] 賬戶名稱
選項: -a 添加賬戶並設置密碼
-x 刪除SMB賬戶
-d 禁用SMB賬戶
-e 啟用SMB賬戶
6. 啟動服務

[root@centos6 ~]# service smb start

[root@centos6 ~]# chkconfig smb on

訪問Samba共享:

1. Windows客戶端訪問

在Windows環境中通過開始-運行菜單或直接輸入Win+R快捷鍵開啟運行,在打開框中輸入\\IP,IP為Samba服務器的IP地址,點擊確定按鈕訪問Samba共享,如果是基於用戶名密碼的訪問,系統會提示輸入賬戶與密碼,如圖4-2。登錄成功後可以看到Samba共享了兩個目錄一個是common目錄,另一個是smbuser賬戶的家目錄共享。

圖4-2

2. Linux客戶端訪問

Linux客戶端使用smbclient命令可以查看訪問服務器上的共享資源,如果安裝有圖形的話也可以通過Linux圖形界面連接服務器,下面為具體的方法。

[root@centos6 ~]# smbclient -L //192.168.0.101         #查看192.168.0.101主機共享信息    
Enter root's password:                                 #查看不需要密碼,直接回車    
Anonymous login successful    
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.10-125.el6] #服務器基本信息    
        
    Sharename       Type      Comment    
    ---------           ----       -------    
    common         Disk      Common share                #共享與注釋    
    IPC$            IPC       IPC Service (Samba Server Version 3.5.10-125.el6)    
[root@centos6 ~]# smbclient -U smbuser //192.168.0.101/common     #訪問samba共享目錄    
Enter smbuser's password:                                         #輸入賬戶密碼    
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.10-125.el6]    
smb: \> ls                                                        #通過ls查看共享目錄    
  .                                   D        0  Mon Mar 11 00:27:57 2013    
  ..                                 DR        0  Mon Mar 11 20:29:20 2013    
smb.txt                                          16  Mon Mar 11 23:09:29 2013    
        41355 blocks of size 524288. 27640 blocks available    
smb: \>help                                                #查看smblient可用指令    
smb: \>quit                                                #退出

有些時候掛載Samba共享目錄實現如本地文件系統一樣的使用體驗是很有意義的,使用root管理員身份運行mount命令可以掛載這樣的文件系統。

[root@centos6 ~]# mkdir /com

[root@centos6 ~]# mount -t cifs //192.168.0.101/common /com \

> -o username=smbuser,password=<password>

圖形訪問Samba共享,首先通過nautilus-connect-server命令開啟圖形配置界面,如圖4-3所示,輸入Samba服務器IP地址、共享目錄、賬戶名稱等信息,輸入正確的密碼成功登錄後將可以看到服務器同享的測試文件smb.txt,另外通過圖形訪問Samba後會在桌面掛載圖標,以後可以隨時通過雙擊該圖標打開共享目錄。

[root@centos6 ~]# nautilus-connect-server #圖形訪問共享

圖4-3

配置文件詳解

Samba配置文件非常簡介明了,所有的設置都在/etc/samba/smb.conf配置文件中進行,通過對該配置文件的修改我們可以將Samba配置為一台匿名文件服務器、基於賬戶的文件服務器或打印服務器,默認Samba會開啟本地帳號家目錄共享與打印機共享,配置文件中以#或;符號開頭的行為注釋行,配置文件分為若干段,除了global(全局配置段)之外的其余所有段用來描述共享資源,全局段中的配置代表全局有效,是全局的默認設置。但如果全局配置段中的設置項與共享段中的設置項有沖突,則共享設置段中的設置為實際有效值。下面我們具體說明各個配置選項的含義。

[global] #定義全局策略

workgroup = MYGROUP #定義工作組。

server string = Samba Server Version %v

#服務器提示字串,默認顯示samba版本,建議修改默認值以防止針對版本的網絡攻擊。

;interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24

#如果你的服務器有多個網絡接口,可以通過interfaces選項指定指定Samba監聽哪些網絡#接口。

;hosts allow = 127. 192.168.12. 192.168.13. EXCEPT 192.168.13.13

#指定僅允許哪些主機有權訪問Samba服務器資源(白名單),該參數可以放置在全局

#段也可以放置在共享段。與此相反的選項是hosts deny用來設置黑名單列表,這裡可

#以指定允許訪問的主機名、IP地址或網段,當指定網段時可以使用192.168.12或

#192.168.12.0/255.255.255.0格式,使用EXCEPT可以指定排除的IP地址。

log file = /var/log/samba/log.%m

#定義日志文件,因為使用了Samba變量%m,所以每個訪問共享的主機會產生獨立的

#日志文件,%m會之中替換為客戶端的主機名。

max log size = 50

#定義日志單個文件最大容量為50K。

security = user

#設置security選項將影響客戶端訪問samba的方式,是非常重要的設置選項之一。Security

#可以被設置為uesr,share,server或domain,user代表通過用戶名、密碼驗證訪#問者的身份,#賬戶需要是服務器本機系統賬戶;share代表匿名訪問;server代表基於驗證身份的訪問,#但賬戶信息保存在另一台SMB服務器上;domain同樣是基於驗證的#訪問,賬戶信息保存#在活動目錄中。

passdb backend = tdbsam

#賬戶與密碼存儲方式,smbpasswd代表使用老的明文格式存儲賬戶及密碼;tdbsam代

#表基於TDB的密文格式存儲;ldapsam代表使用LDAP存儲賬戶資料。

deadtime = 10

#客戶端10分鐘內沒有打開任何Samba資源,則自動停止服務,在大量的並發訪問環境中

#這樣的設置可以提供服務器性能。

display charset = UTF8 #設置顯示使用的字符集為UTF8

max connections = 0

#設置最大連接數,0代表無限制,超過此限制的連接請求服務器將拒絕連接。

guest account = nobody #設置匿名帳號為nobody

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

[common] #共享名稱為common

comment = Common share #注釋,共享描述信息

path = /common #重要,指定共享路徑

valid users =tom jerry #有效賬戶列表

create mask = 0750 #客戶端上傳文件的默認權限,默認為0744

directory mask = 0775 #客戶端創建目錄的默認權限,默認為0755

browseable = yes #是否允許所有人可見(yes或no)

writable = no

write list = tom #讀寫權限賬戶列表,這裡是tom可寫

admin users =tom #該共享的管理員,具有完全權限

invalid users = root bin #禁止root與bin訪問common共享

guest ok = no #是否允許匿名訪問,僅當全局設置security=share時有效(yes或no)。

本文出自<丁丁歷險>博客,請務必保留此出處http://manual.blog.51cto.com/3300438/1157571

Copyright © Linux教程網 All Rights Reserved