在上面的源碼安裝失敗未果後,我果斷選擇了放棄,因而想着採用yum來進行安裝,直接經歷的艱辛過程就再也不多陳述了。。。。。。。。。 linux
有關yum的各類命令詳解將會在後續的Linux學習中記錄出來,這裏只是簡單的經過使用yum來進行Samba的安裝。 ios
1.經過yum來進行Samba服務器,注意,若是經過yum方式來下載軟件,格式都是rpm的格式(有關rpm的命令詳解也會在後續的Linux學習中記錄下來) web
[root@localhost ~]# yum install samba samba-client samba-swat
在等待了一番時間後,咱們能夠看到以下界面(經過yum方式安裝時,有依賴關係的包samba-common、samba-winbind-clients、libsmbclient將自動安裝上去。): 數據庫
安裝包的說明: windows
samba-common-3.6.9-151.el6.x86_64 //主要提供samba服務器的設置文件與設置文件語法檢驗程序testparm samba-client-3.6.9-151.el6.x86_64 //客戶端軟件,主要提供linux主機做爲客戶端時,所須要的工具指令集 samba-swat-3.6.9-151.el6.x86_64 //基於https協議的samba服務器web配置界面 samba-3.6.9-151.el6.x86_64 //服務器端軟件,主要提供samba服務器的守護程序,共享文檔,日誌的輪替,開機默認選項
通過一番下載、安裝等待之後,若是出現如下界面,則表示Samba以及與Samba相關的包以及安裝成功了 瀏覽器
2.查看安裝結果 安全
咱們能夠經過以下命令來查看Samba的安裝結果 服務器
[root@localhost ~]# rpm -qa | grep samba
獲得的結果以下: 網絡
3.啓動Samba服務器 併發
啓動Samba服務器能夠經過 /etc/init.d/smb start/stop/restart 來啓動、關閉、重啓Samba服務,啓動SMB服務以下所示:
例如:
[root@localhost ~]# /etc/init.d/smb start // 啓動smb服務
[root@localhost ~]# /etc/init.d/nmb start // 啓動nmb服務
4.查看Samba服務的啓動狀況
咱們能夠經過 service smb status 命令來查看服務啓動狀況,如:
5.設置smb、nmb服務開機自啓動
經過 chkconfig --list | grep smb 命令咱們能夠查看smb服務在各個啓動級別的啓動狀況,經過 chkconfig --level 35 smb on 命令可使的smb服務在三、5啓動級別時隨着系統啓動而自動啓動,如:
6.關閉防火牆
若是不關閉防火牆,Samba服務器可能就訪問不了
5、配置Samba服務器
Samba的主配置文件爲/etc/samba/smb.conf
主配置文件由兩部分構成 Global Settings (55-245行) 該設置都是與Samba服務總體運行環境有關的選項,它的設置項目是針對全部共享資源的。 Share Definitions (246-尾行) 該設置針對的是共享目錄個別的設置,只對當前的共享資源起做用。 全局參數: #==================Global Settings =================== [global] config file = /usr/local/samba/lib/smb.conf.%m 說明:config file可讓你使用另外一個配置文件來覆蓋缺省的配置文件。若是文件不存在,則該項無效。這個參數頗有用,可使得samba配置更靈活,可讓一臺 samba服務器模擬多臺不一樣配置的服務器。好比,你想讓PC1(主機名)這臺電腦在訪問Samba Server時使用它本身的配置文件,那麼先在/etc/samba/host/下爲PC1配置一個名爲smb.conf.pc1的文件,而後在 smb.conf中加入:config file = /etc/samba/host/smb.conf.%m。這樣當PC1請求鏈接Samba Server時,smb.conf.%m就被替換成smb.conf.pc1。這樣,對於PC1來講,它所使用的Samba服務就是由 smb.conf.pc1定義的,而其餘機器訪問Samba Server則仍是應用smb.conf。 workgroup = WORKGROUP 說明:設定 Samba Server 所要加入的工做組或者域。 server string = Samba Server Version %v 說明:設定 Samba Server 的註釋,能夠是任何字符串,也能夠不填。宏%v表示顯示Samba的版本號。 netbios name = smbserver 說明:設置Samba Server的NetBIOS名稱。若是不填,則默認會使用該服務器的DNS名稱的第一部分。netbios name和workgroup名字不要設置成同樣了。 interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 說明:設置Samba Server監聽哪些網卡,能夠寫網卡名,也能夠寫該網卡的IP地址。 hosts allow = 127. 192.168.1. 192.168.10.1 說明:表示容許鏈接到Samba Server的客戶端,多個參數以空格隔開。能夠用一個IP表示,也能夠用一個網段表示。hosts deny 與hosts allow 恰好相反。 例如:hosts allow=172.17.2.EXCEPT172.17.2.50 表示允許來自172.17.2.*的主機鏈接,但排除172.17.2.50 hosts allow=172.17.2.0/255.255.0.0 表示允許來自172.17.2.0/255.255.0.0子網中的全部主機鏈接 hosts allow=M1,M2 表示允許來自M1和M2兩臺計算機鏈接 hosts allow=@pega 表示允許來自pega網域的全部計算機鏈接 max connections = 0 說明:max connections用來指定鏈接Samba Server的最大鏈接數目。若是超出鏈接數目,則新的鏈接請求將被拒絕。0表示不限制。 deadtime = 0 說明:deadtime用來設置斷掉一個沒有打開任何文件的鏈接的時間。單位是分鐘,0表明Samba Server不自動切斷任何鏈接。 time server = yes/no 說明:time server用來設置讓nmdb成爲windows客戶端的時間服務器。 log file = /var/log/samba/log.%m 說明:設置Samba Server日誌文件的存儲位置以及日誌文件名稱。在文件名後加個宏%m(主機名),表示對每臺訪問Samba Server的機器都單獨記錄一個日誌文件。若是pc一、pc2訪問過Samba Server,就會在/var/log/samba目錄下留下log.pc1和log.pc2兩個日誌文件。 max log size = 50 說明:設置Samba Server日誌文件的最大容量,單位爲kB,0表明不限制。 security = user 說明:設置用戶訪問Samba Server的驗證方式,一共有四種驗證方式。 1. share:用戶訪問Samba Server不須要提供用戶名和口令, 安全性能較低。 2. user:Samba Server共享目錄只能被受權的用戶訪問,由Samba Server負責檢查帳號和密碼的正確性。帳號和密碼要在本Samba Server中創建。 3. server:依靠其餘Windows NT/2000或Samba Server來驗證用戶的帳號和密碼,是一種代理驗證。此種安全模式下,系統管理員能夠把全部的Windows用戶和口令集中到一個NT系統上,使用 Windows NT進行Samba認證, 遠程服務器能夠自動認證所有用戶和口令,若是認證失敗,Samba將使用用戶級安全模式做爲替代的方式。 4. domain:域安全級別,使用主域控制器(PDC)來完成認證。 passdb backend = tdbsam 說明:passdb backend就是用戶後臺的意思。目前有三種後臺:smbpasswd、tdbsam和ldapsam。sam應該是security account manager(安全帳戶管理)的簡寫。 1.smbpasswd:該方式是使用smb本身的工具smbpasswd來給系統用戶(真實用戶或者虛擬用戶)設置一個Samba密碼,客戶端就用這個密碼來訪問Samba的資源。smbpasswd文件默認在/etc/samba目錄下,不過有時候要手工創建該文件。 2.tdbsam: 該方式則是使用一個數據庫文件來創建用戶數據庫。數據庫文件叫passdb.tdb,默認在/etc/samba目錄下。passdb.tdb用戶數據庫 可使用smbpasswd –a來創建Samba用戶,不過要創建的Samba用戶必須先是系統用戶。咱們也可使用pdbedit命令來創建Samba帳戶。pdbedit命令的 參數不少,咱們列出幾個主要的。 pdbedit –a username:新建Samba帳戶。 pdbedit –x username:刪除Samba帳戶。 pdbedit –L:列出Samba用戶列表,讀取passdb.tdb數據庫文件。 pdbedit –Lv:列出Samba用戶列表的詳細信息。 pdbedit –c 「[D]」 –u username:暫停該Samba用戶的帳號。 pdbedit –c 「[]」 –u username:恢復該Samba用戶的帳號。 3.ldapsam:該方式則是基於LDAP的帳戶管理方式來驗證用戶。首先要創建LDAP服務,而後設置「passdb backend = ldapsam:ldap://LDAP Server」 encrypt passwords = yes/no 說明:是否將認證密碼加密。由於如今windows操做系統都是使用加密密碼,因此通常要開啓此項。不過配置文件默認已開啓。 smb passwd file = /etc/samba/smbpasswd 說明:用來定義samba用戶的密碼文件。smbpasswd文件若是沒有那就要手工新建。 username map = /etc/samba/smbusers 說明:用來定義用戶名映射,好比能夠將root換成administrator、admin等。不過要事先在smbusers文件中定義好。好比:root = administrator admin,這樣就能夠用administrator或admin這兩個用戶來代替root登錄Samba Server,更貼近windows用戶的習慣。 guest account = nobody 說明:用來設置guest用戶名。 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 說明:用來設置服務器和客戶端之間會話的Socket選項,能夠優化傳輸速度。 domain master = yes/no 說明:設置Samba服務器是否要成爲網域主瀏覽器,網域主瀏覽器能夠管理跨子網域的瀏覽服務。 local master = yes/no 說明:local master用來指定Samba Server是否試圖成爲本地網域主瀏覽器。若是設爲no,則永遠不會成爲本地網域主瀏覽器。可是即便設置爲yes,也不等於該Samba Server就能成爲主瀏覽器,還須要參加選舉。 preferred master = yes/no 說明:設置Samba Server一開機就強迫進行主瀏覽器選舉,能夠提升Samba Server成爲本地網域主瀏覽器的機會。若是該參數指定爲yes時,最好把domain master也指定爲yes。使用該參數時要注意:若是在本Samba Server所在的子網有其餘的機器(不管是windows NT仍是其餘Samba Server)也指定爲首要主瀏覽器時,那麼這些機器將會由於爭奪主瀏覽器而在網絡上大發廣播,影響網絡性能。 若是同一個區域內有多臺Samba Server,將上面三個參數設定在一臺便可。 os level = 200 說明:設置samba服務器的os level。該參數決定Samba Server是否有機會成爲本地網域的主瀏覽器。os level從0到255,winNT的os level是32,win95/98的os level是1。Windows 2000的os level是64。若是設置爲0,則意味着Samba Server將失去瀏覽選擇。若是想讓Samba Server成爲PDC,那麼將它的os level值設大些。 domain logons = yes/no 說明:設置Samba Server是否要作爲本地域控制器。主域控制器和備份域控制器都須要開啓此項。 logon script = %u.bat 說明:當使用者用windows客戶端登錄,那麼Samba將提供一個登錄檔。若是設置成%u.bat,那麼就要爲每一個用戶提供一個登錄檔。若是人比較多, 那就比較麻煩。能夠設置成一個具體的文件名,好比start.bat,那麼用戶登錄後都會去執行start.bat,而不用爲每一個用戶設定一個登錄檔了。 這個文件要放置在[netlogon]的path設置的目錄路徑下。 wins support = yes/no 說明:設置samba服務器是否提供wins服務。 wins server = wins服務器IP地址 說明:設置Samba Server是否使用別的wins服務器提供wins服務。 wins proxy = yes/no 說明:設置Samba Server是否開啓wins代理服務。 dns proxy = yes/no 說明:設置Samba Server是否開啓dns代理服務。 load printers = yes/no 說明:設置是否在啓動Samba時就共享打印機。 printcap name = cups 說明:設置共享打印機的配置文件。 printing = cups 說明:設置Samba共享打印機的類型。如今支持的打印系統有:bsd, sysv, plp, lprng, aix, hpux, qnx 共享參數: #================== Share Definitions ================== [共享名] comment = 任意字符串 說明:comment是對該共享的描述,能夠是任意字符串。 path = 共享目錄路徑 說 明:path用來指定共享目錄的路徑。能夠用%u、%m這樣的宏來代替路徑裏的unix用戶和客戶機的Netbios名,用宏表示主要用於[homes] 共享域。例如:若是咱們不打算用home段作爲客戶的共享,而是在/home/share/下爲每一個Linux用戶以他的用戶名建個目錄,做爲他的共享目 錄,這樣path就能夠寫成:path = /home/share/%u; 。用戶在鏈接到這共享時具體的路徑會被他的用戶名代替,要注意這個用戶名路徑必定要存在,不然,客戶機在訪問時會找不到網絡路徑。一樣,若是咱們不是以用 戶來劃分目錄,而是以客戶機來劃分目錄,爲網絡上每臺能夠訪問samba的機器都各自建個以它的netbios名的路徑,做爲不一樣機器的共享資源,就能夠 這樣寫:path = /home/share/%m 。 browseable = yes/no 說明:browseable用來指定該共享是否能夠瀏覽。 writable = yes/no 說明:writable用來指定該共享路徑是否可寫。 available = yes/no 說明:available用來指定該共享資源是否可用。 admin users = 該共享的管理者 說明:admin users用來指定該共享的管理員(對該共享具備徹底控制權限)。在samba 3.0中,若是用戶驗證方式設置成「security=share」時,此項無效。 例如:admin users =david,sandy(多個用戶中間用逗號隔開)。 valid users = 容許訪問該共享的用戶 說明:valid users用來指定容許訪問該共享資源的用戶。 例如:valid users = david,@dave,@tech(多個用戶或者組中間用逗號隔開,若是要加入一個組就用「@組名」表示。) invalid users = 禁止訪問該共享的用戶 說明:invalid users用來指定不容許訪問該共享資源的用戶。 例如:invalid users = root,@bob(多個用戶或者組中間用逗號隔開。) write list = 容許寫入該共享的用戶 說明:write list用來指定能夠在該共享下寫入文件的用戶。 例如:write list = david,@dave public = yes/no 說明:public用來指定該共享是否容許guest帳戶訪問。 guest ok = yes/no 說明:意義同「public」。 幾個特殊共享: [homes] comment = Home Directories browseable = no writable = yes valid users = %S ; valid users = MYDOMAIN\%S [printers] comment = All Printers path = /var/spool/samba browseable = no guest ok = no writable = no printable = yes [netlogon] comment = Network Logon Service path = /var/lib/samba/netlogon guest ok = yes writable = no share modes = no [Profiles] path = /var/lib/samba/profiles browseable = no guest ok = yes Samba安裝好後,使用testparm命令能夠測試smb.conf配置是否正確。使用testparm –v命令能夠詳細的列出smb.conf支持的配置參數。
下面咱們經過兩個例子來驗證一下Samba服務器是否能夠正常訪問
實例一:現有一個工做組workgroup,須要添加samba服務器做爲文件服務器,併發布共享目錄/share,共享名爲public,此共享目錄容許全部員工訪問。
1.首先咱們要修改一下咱們的smb.conf文件,(咱們最好先將這個文件備份一下)
#======================= Global Settings ===================================== [global] //該設置與Samba服務總體運行環境有關,它的設置項目針對全部共享資源 # ----------------------- Network Related Options ------------------------- # # workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH # # server string is the equivalent of the NT Description field # # netbios name can be used to specify a server name not tied to the hostname workgroup = WORKGROUP //定義工做組,也就是windows中的工做組概念 server string = Samba Server Version %v //定義Samba服務器的簡要說明 netbios name = SambaSamba //定義windows中顯示出來的計算機名稱 # --------------------------- Logging Options ----------------------------- # # Log File let you specify where to put logs and how to split them up. log file = /var/log/samba/log.%m //定義Samba用戶的日誌文件,%m表明客戶端主機名 //Samba服務器會在指定的目錄中爲每一個登錄主機創建不一樣的日誌文件 # ----------------------- Standalone Server Options ------------------------ # # Scurity can be set to user, share(deprecated) or server(deprecated) security = share //共享級別,用戶不須要帳號和密碼便可訪問 #============================ Share Definitions ============================== [public] //設置針對的是共享目錄個別的設置,只對當前的共享資源起做用 comment = Public Stuff //對共享目錄的說明文件,本身能夠定義說明信息 path = /share //用來指定共享的目錄,必選項 public = yes //全部人可查看,等效於guest ok = yes
2.由於上面設置了共享目錄爲/share,下面就須要創建/share目錄:
[root@xiaoluo /]# mkdir share
而後在該目錄下建立兩個空文件:
[root@xiaoluo /]# touch samba.txt [root@xiaoluo /]# touch test.txt
因爲要設置匿名用戶(也就是全部的用戶)能夠下載或上傳共享文件,因此要給/share目錄受權爲nobody權限。
[root@xiaoluo /]# chown -R nobody:nobody share // 將share目錄受權爲nobody權限,任何用戶均可以對其進行訪問 [root@xiaoluo /]# ll /share/ 總用量 0 -rw-r--r--. 1 nobody nobody 0 4月 6 00:42 samba.txt -rw-r--r--. 1 nobody nobody 0 4月 6 00:42 test.txt
3.重啓smd、nmd服務:
4.測試smb.conf是否配置成功
咱們能夠經過testparm來驗證剛修改的smb.conf是否配置有錯
[root@xiaoluo /]# testparm Load smb config files from /etc/samba/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Processing section "[homes]" Processing section "[printers]" Processing section "[public]" Processing section "[hr]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions [global] workgroup = MYGROUP netbios name = MYSERVER server string = Samba Server Version %v log file = /var/log/samba/log.%m max log size = 50 idmap config * : backend = tdb cups options = raw [homes] comment = Home Directories read only = No browseable = No [printers] comment = All Printers path = /var/spool/samba printable = Yes print ok = Yes browseable = No [public] comment = Public Stuff path = /share guest ok = Yes
5.訪問Samba服務器的共享文件
a.在Linux下訪問Samba服務器的共享文件
[root@xiaoluo /]# smbclient //192.168.113.128/public Enter xiaoluo's password: Anonymous login successful Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-151.el6] smb: \> ls . D 0 Sat Apr 6 00:42:53 2013 .. DR 0 Sat Apr 6 00:42:43 2013 test.txt 0 Sat Apr 6 00:42:53 2013 samba.txt 0 Sat Apr 6 00:42:51 2013 35355 blocks of size 524288. 16458 blocks available smb: \>
【注意】若是在出現smb: \>時,則表示Samba服務器已經配置成功,咱們能夠經過 ls 命令來查看該分享文件夾下面的文件列表信息,若是是第一次訪問可能會在輸入ls 之後出現如下錯誤:
NT_STATUS_ACCESS_DENIED listing \*
[root@xiaoluo /]# smbclient //127.0.0.1/sambar -U sambar%sambar Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.10-114.el6] smb: \> ls NT_STATUS_ACCESS_DENIED listing \* 52265 blocks of size 1048576. 48406 blocks available
解決方法以下:關閉SELIUNX
[root@xiaoluo /]# getenforce ; // 查看當前狀態 Enforcing
SELINUX幾種狀態表示:
enforcing:強制模式,表明 SELinux 運行中,且已經正確的開始限制 domain/type 了; permissive:寬容模式:表明 SELinux 運行中,不過僅會有警告信息並不會實際限制 domain/type 的存取。這種模式能夠運來做爲 SELinux 的 debug 之用; disabled:關閉,SELinux 並無實際運行。
因此咱們經過如下命令將SELIUNX設置成disabled或者permissive就好了
[root@xiaoluo /]# setenforce 0 ; // 關閉 0表示permissive
這時咱們再在上面的smb: \> 輸入 ls命令時,就能夠看到咱們共享文件夾裏面的東西了
b.在windows系統中訪問Samba服務器的共享文件
經過【開始】——【運行】中輸入\\192.168.113.128\來訪問samba服務器192.168.113.128上面提供的服務。
實例二:一個公司現有多個部門,因工做須要,將hr部的資料存放在samba服務器的/hr 目錄中集中管理,以便hr人員瀏覽,而且該目錄只容許hr部員工訪問。
1.首先咱們須要添加hr組以及hr組的組員
創建用戶的同時加入到相應的組中的方式:useradd -g 組名 用戶名
2.在根目錄下創建/hr 文件夾
3.將剛纔創建的兩個賬戶添加到samba的帳戶中,經過 smbpasswd -a USER姓名 命令
4.修改主配置文件以下:
#======================= Global Settings ===================================== [global] # ----------------------- Network Related Options ------------------------- # # workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH # # server string is the equivalent of the NT Description field # # netbios name can be used to specify a server name not tied to the hostname workgroup = WORKGROUP server string = David Samba Server Version %v netbios name = DavidSamba # --------------------------- Logging Options ----------------------------- # # Log File let you specify where to put logs and how to split them up. log file = /var/log/samba/log.%m # ----------------------- Standalone Server Options ------------------------ # # Scurity can be set to user, share(deprecated) or server(deprecated) security = user //用戶級別,由提供服務的Samba服務器負責檢查帳戶和密碼 #============================ Share Definitions ============================== [homes] //設置用戶宿主目錄 comment = Home Directories browseable = no writable = yes ; valid users = %S ; valid users = MYDOMAIN\%S [public] comment = Public Stuff path = /share public = ye [hr] //hr 組目錄,只容許hr組成員訪問 comment = HR path = /hr valid users = @hr // 這個表示只有hr組的成員纔可以訪問hr目錄
5.從新加載主配置文件smb.conf,經過service smb reload 命令
6.到windows客戶端驗證,訪問\\192.168.113.128,提示輸入用戶名和密碼,在此輸入chris驗證,以下圖:
7.訪問成功,能夠看到公共的public目錄,用戶chris的宿主目錄,和其有權限訪問的hr目錄
6、Linux客戶端訪問操做
上面介紹了windows客戶端訪問Samba服務器的操做,那麼在Linux做爲客戶端時,查看其它Linux Samba服務器共享的文件時,咱們經過能夠對其服務器共享的文件進行操做,這時用到smbclient這個工具,系統默認自帶了這個命令,Smbclient常見用法介紹以下:
一、查看Samba服務器的共享資料
[root@xiaoluo /]# smbclient –L //Samba服務器的ip地址 -U Samba用戶名
"-L"即爲list的含義,"-U"是user的意思,若是Samba服務器是無密碼訪問的話,能夠省略"-U Samba用戶名"。
例如:samba須要密碼登錄時,查看共享方法以下:
[root@xiaoluo /]# smbclient -L //192.168.113.128/public –U chris
Samba無密碼訪問時,執行以下命令:
[root@xiaoluo /]# smbclient -L //192.168.113.128/public
password: 直接回車便可。
二、登錄Samba服務器
若是須要在Linux客戶端登錄Samba服務器,用法以下:
[root@xiaoluo /]# smbclient //Samba服務器的ip地址 -U Samba用戶名
例以下面執行的操做:
[root@xiaoluo /]# smbclient //192.168.113.128/public –U chris smb: \> ? //在這裏輸入?便可查看在smb命令行可用的全部命令。
操做過程與登錄FTP服務器很相似,登錄Samba服務器後,就能夠進行文件的上傳與下載,若是有足夠的權限,還能夠進行修改文件操做。
大概花了兩個小時的時間來整理寫出了這篇博文,直接也參考了許多其餘朋友寫的博文,給了我不少幫助,這裏只是Samba服務器的安裝配置第一篇,萬事開頭難,花了兩天兩夜終於過了第一個難關,在之後學習Linux的道路上時將會繼續記錄本身的學習心得!!!!!!