======Samba伺服器====== -簡介 -相關套件檔案 -設定(/etc/samba/smb.conf) -參考資料 ======簡介====== Linux要與windows做網芳式分享檔案,以smb(Server Message Block, Session Message Block)協定為主。Linux界的高手用逆向工程把微軟的NetBIOS解析出來變成SMB協定。 =====SMB 與 NetBIOS===== * SMB(Server Message Block) Protocal 一開始由IBM所開發的。之後,Microsoft 再將此協定加以改良發展來變成自己的東西。主要用於檔案及printer 能在區域網路分享。 * NetBIOS(Network Base Input OUT Service)主要用於 NetBIOS_Name與IP 對應的名稱解析服務。 * SMB 是架構於NetBIOS基礎上發展起來的。 * **早期NetBIOS是無法跨越路由**,只能利用辨識不同NetBIOS名稱在單一的廣播網域下互相分享檔案。 * 為了解決NetBIOS無法跨越路由的問題,才發展出**NetBIOS Over TCP/IP** 以下是SMB,NetBIOS及TCP/IP協定堆疊圖。 {{:linux:smb_netbios_架構.png|}} ======相關套件檔案====== 1.先查看自己的電腦中是否有Samba相關套件。 [root@andy ~]#rpm -qa | grep samba system-config-samba-1.2.41-5.el5 samba-3.0.33-3.15.el5_4.1 --->Samba SMB伺服器 samba-client-3.0.33-3.15.el5_4.1 ---->Samba用戶端程式 samba-common-3.0.33-3.15.el5_4.1 --->Samba 伺服器與用戶端都需要的程式 在針對每個套件看看有哪機個檔案 [root@andy ~]#rpm -ql samba-3.0.33-3.15.el5_4.1 |tac /usr/bin/tdbtool /usr/bin/tdbdump /usr/bin/tdbbackup /usr/bin/smbstatus /usr/bin/smbcontrol /usr/bin/mksmbpasswd.sh /etc/sysconfig/samba /etc/samba/smbusers /etc/rc.d/init.d/smb --->啟動服務的程式 /etc/pam.d/samba /etc/logrotate.d/samba /usr/sbin/smbd /usr/sbin/nmbd ~略~ [root@andy ~]#rpm -ql samba-client /sbin/mount.cifs /sbin/umount.cifs /usr/bin/eventlogadm /usr/bin/findsmb /usr/bin/nmblookup /usr/bin/rpcclient /usr/bin/smbcacls /usr/bin/smbclient /usr/bin/smbget /usr/bin/smbprint /usr/bin/smbspool /usr/bin/smbtar /usr/bin/smbtree [root@andy ~]#rpm -ql samba-common /etc/rc.d/init.d/winbind /etc/samba /etc/samba/lmhosts /etc/samba/smb.conf --->主要設定檔 ======Smb.conf設定檔====== **Share : 提供一般分享模式** [root@andy ~]# vi /etc/samba/smb.conf ----------------- Network Related Options ------------ workgroup = SUPERMAN (設定群組名稱) server string = Samba Server Version %v(主機簡易說明) netbios name = SUPER(netbios 主機名稱) security=share(不需要密碼即可分享資料) ---------通常此設定選項都寫到最後一列------------- [super] ---->分享的名稱 path = /tmp/Ghost11/ --->分享的目錄位置 public = yes ---->是否讓所有可以登入的使用者看到這個項目 writable = yes ---->寫入權限 browseable = yes ---->是否要瀏覽分享的資料夾 ---------啟動服務Samba服務----------------------- [root@andy ~]# /etc/init.d/smb start 正在啟動 SMB 服務: [ 確定 ] 正在啟動 NMB 服務: [ 確定 ] -----測試 分享的模式--- {{:samba_share.png|samba_share}} **user一般使用者模式(需要帳號及密碼登入)** [root@andy ~]# vi /etc/samba/smb.conf ----------------- Network Related Options ------------ workgroup = SUPERMAN (設定群組名稱) ----同上 server string = Samba Server Version %v(主機簡易說明) ---同上 netbios name = SUPER(netbios 主機名稱) -----同上 security=user(需要帳號及密碼即可分享資料) encrypt passwords = yes ---->需要密碼驗證 smb passwd file = /etc/samba/smbpasswd --->驗證的密碼寫入到這個檔 ---------分享的資料同上一個分享模式的設定------------- ---------登入帳號及密碼的設定------------- 1.帳號為Linux主機的/etc/passwd的檔案中。 2.先檢查是否有這個檔案 /etc/samba/smbpasswd i.若沒有此檔(/etc/samba/smbpasswd) 執行[root@andy ~]#cat /etc/passwd |mksmbpasswd.sh > /etc/samba/smbpasswd [root@andy ~]#pdbedit -i smbpasswd:/etc/samba/smbpasswd ii.若有此檔案,就直接鍵入密碼 (實際實驗當中:若沒有/etc/samba/smbpasswd直接執行ii此步也是可以,只不過會有一些訊息) [root@andy ~]# smbpasswd -a ali New SMB password: Retype new SMB password: 3.重新啟動服務 [root@andy ~]# /etc/init.d/smb restart 4.測試 {{:samba_user1.png|samba_user1.png}} {{:samba_user2.png|samba_user2.png}}