1. 程式人生 > >第十一章 網絡文件共享服務之samba

第十一章 網絡文件共享服務之samba

windows 計算機 免費軟件 信息服務 全世界

Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟件,由服務器及客戶端程序構成。

在此之前我們已經了解了NFS和FTP,NFS與samba一樣,也是在網絡中實現文件共享的一種實現,但不幸的是,其不支持windows平臺,而本章要提到的samba是能夠在任何支持SMB協議的主機之間共享文件的一種實現,當然也包括windows。


SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通信協議,它為局域網內的不同計算機之間提供文件及打印機等資源的共享服務。

SMB協議是C/S型協議,客戶機通過該協議可以訪問服務器上的共享文件系統、打印機及其他資源。

通過設置“NetBIOS over TCP/IP”使得Samba不但能與局域網主機分享資源,還能與全世界的電腦分享資源。


Samba監聽端口有:

tcp的139,445號端口

udp的137,138號端口


tcp端口相對應的服務是smbd服務,其作用是提供對服務器中文件、打印資源的共享訪問

udp端口相對應的服務是nmbd服務,其作用是提供基於NetBIOS主機名稱的解析


Samba服務腳本:

/etc/rc.d/init.d/nmb

/etc/rc.d/init.d/smb


Samba進程:

nmbd:對應netbios

smbd:對應cifs協議

winbindd + ldap:對應Windows AD活動目錄


Samba用戶:

帳號:都是系統用戶,/etc/passwd

密碼:Samba服務自有密碼文件,通過smbpasswd -a USERNAME命令設置


Samba安全級別:

Samba服務器的安全級別有四個,分別是share,user,server,domain

share:表示匿名訪問

user:表示基於本地的驗證

server:表示由另一臺指定的服務器對用戶身份進行認證

domain:表示由域控進行身份驗證


Samba配置文件:/etc/samba/smb.conf

Samba主配置文件的配置內容默認包含三個部分,分別是[global]全局配置、[homes]宿主目錄共享設置、[printers]打印機共享設置

[global]全局配置的設置項對整個samba服務器都有效

[homes]則用來設置Linux用戶的默認共享,對應用戶的宿主目錄。當用戶訪問服務器中與自己用戶名同名的共享目錄時,通過驗證後將會自動映射到該用戶的宿主目錄中


具體配置參數:

workgroup    #表示設置工作組名稱;
server string  #表示描述samba服務器;
security     #表示設置安全級別,其值可為share、user、server、domain;
passdb backend #表示設置共享帳戶文件的類型,其值可為tdbsam(tdb數據庫文件)、ldapsam(LDAP目錄認證)、smbpasswd(兼容舊版本samba密碼文件);
comment      #表示設置對應共享目錄的註釋,說明信息,即文件共享名;
browseable    #表示設置共享是否可見;
writable     #表示設置目錄是否可寫
path         #表示共享目錄的路徑;
guest ok    #表示設置是否所有人均可訪問共享目錄;
printable    #表示設置是否為打印機

測試配置文件是否有語法錯誤,以及顯示最終生效的配置:使用testparm命令

testparm


web界面配置samba:

samba-swat包提供了在web界面上配置samba的功能,其自帶web服務,默認端口為901,通過xinetd來管理


Samba訪問方式:作為客戶端

交互式數據訪問:

smbclient -L HOST -U USERNAME
smbclient //SERVER/shared_name -U USERNAME

基於掛載的方式訪問:

mount -t cifs //SERVER/shared_name -o username=USERNAME,password=PASSWORD


smbpasswd命令:

-a Sys_User:添加系統用戶為samba用戶並為其設置密碼

-d:禁用用戶帳號

-e:啟用用戶帳號

-x:刪除用戶帳號


Samba示例:

#使用yum命令安裝samba服務器:
yum -y install samba-*

#配置selinux安全機制(去除26行與29行的#號):
sed -i ‘26d‘ /etc/samba/smb.conf
sed -i ‘25 a setsebool -P samba_domain_controller on‘ /etc/samba/smb.conf
sed -i ‘29d‘ /etc/samba/smb.conf
sed -i ‘28 a setsebool -P samba_enable_home_dirs on‘ /etc/samba/smb.conf
#這兩行生效後,自己的home目錄就可以正常讀寫了。

#如果想將/test目錄設置成完全的共享就要改變文件目錄的selunux:
#chcon -t samba_share_t /test

#設置共享類型,有匿名訪問,有本地用戶驗證,默認為user用戶驗證:
#設置為匿名共享:
#sed -i ‘101d‘ /etc/samba/smb.conf
#sed -i ‘100 a security = share‘ /etc/samba/smb.conf
#設置為本地用戶驗證:
#sed -i ‘101d‘ /etc/samba/smb.conf
#sed -i ‘100 a security = user‘ /etc/samba/smb.conf
#設置為另一臺服務器進行遠程驗證:
#sed -i ‘101d‘ /etc/samba/smb.conf
#sed -i ‘100 a security = server‘ /etc/samba/smb.conf
#設置為域控驗證:
#sed -i ‘101d‘ /etc/samba/smb.conf
#sed -i ‘100 a security = domain‘ /etc/samba/smb.conf

#假設現在有一個文件夾為test,那麽就像下面這樣來設置共享:
#設置共享的標識:
echo ‘[test]‘ >> /etc/samba/smb.conf

#設置共享的顯示名,即在訪問時看到的共享名,假設這裏共享名為test:
echo ‘comment = test‘ >> /etc/samba/smb.conf

#設置共享路徑:
echo ‘path = /test‘ >> /etc/samba/smb.conf

#設置共享是否可見:
echo ‘browseable = yes‘ >> /etc/samba/smb.conf

#設置是否所有人均可訪問:
echo ‘guest ok = yes‘ >> /etc/samba/smb.conf

#設置目錄是否可寫:
echo ‘writable = yes‘ >> /etc/samba/smb.conf

#設置是否允許匿名用戶訪問:
echo ‘public = yes‘ >> /etc/samba/smb.conf

#設置可以寫的用戶或組:
echo ‘write list = root,@root‘ >> /etc/samba/smb.conf

#限制訪問端:
#設置可以訪問的用戶或組:
echo ‘valid users = root,@root‘ >> /etc/samba/smb.conf

#設置拒絕來自192.168.72.1的用戶訪問:
echo ‘hosts deny = 192.168.72.1‘ >> /etc/samba/smb.conf

#設置允許來自192.168.72.2的用戶訪問:
echo ‘hosts allow = 192.168.72.2‘ >> /etc/samba/smb.conf

#映射共享目錄:
#創建用戶one:
#useradd one
#為one用戶創建smb共享密碼:
#smbpasswd -a one

#假設這裏映射one用戶為aaa用戶,那麽就要在/etc/samba/smbusers文件中添加如下內容:
#echo ‘one = aaa‘ >> /etc/samba/smbusers

#在全局配置中添加如下內容:
sed -i ‘244 a username map = /etc/samba/smbusers‘ /etc/samba/smb.conf

#啟動smb服務:
#service smb start

#重啟smb服務:
service smb restart

#重新加載smb服務:
#service smb reload

#設置smb服務隨系統啟動而啟動:
chkconfig smb on

#建立共享文件夾:
mkdir /test


本文出自 “忘情居” 博客,請務必保留此出處http://itchentao.blog.51cto.com/5168625/1929471

第十一章 網絡文件共享服務之samba