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