原文地址:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/06/3001863.htmlhtml
1、先惡狠狠地吐槽一下:linux
這篇隨筆真是讓我折騰了2天2夜纔敢下筆寫!!!爲何呢?以前是經過去Samba的官網下載的源碼包,也就是.tar.gz來進行安裝配置,不過 這個讓我折騰來折騰去就是沒折騰出結果,還花了我整整1天1夜的時間,最後實在是熬不住了,想經過yum來從新進行Samba服務器的安裝與配置,可是要 使用yum首先必須是CentOS要聯網,而我又沒有找到Samba的rpm包,而以前一直沒有搞定在虛擬機中的CentOS上網的問題,因此新的糾結又 開始了,首先得先想辦法讓虛擬機能上網,這段經歷已經記錄下來了,能夠查看上一篇隨筆--Linux學習之CentOS(十)--虛擬機下的CentOS如何上網 ios
在通過一番痛苦的搜索、嘗試以後,虛擬機上的CentOS終於可以上網了,當時個人那個熱淚盈眶啊。。。。。。在能上網以後,我火燒眉毛地準備使用yum來從新安裝個人Samba服務器。。。。。。至此,纔開始下筆記錄這段艱辛的歷程!!!!!web
2、Samba的簡介:數據庫
Samba是一個能讓Linux系統應用Microsoft網絡通信協議的軟件,而SMB是 Server Message Block的縮寫,即爲服務器消息塊 ,SMB主要是做爲Microsoft的網絡通信協議,後來Samba將SMB通訊協議應用到了Linux系統上,就造成了如今的Samba軟件。後來微 軟又把 SMB 更名爲 CIFS(Common Internet File System),即公共 Internet 文件系統,而且加入了許多新的功能,這樣一來,使得Samba具備了更強大的功能。windows
Samba最大的功能就是能夠用於Linux與windows系統直接的文件共享和打印共享,Samba既能夠用於windows與Linux 之間的文件共享,也能夠用於Linux與Linux之間的資源共享,因爲NFS(網絡文件系統)能夠很好的完成Linux與Linux之間的數據共享,因 而 Samba較多的用在了Linux與windows之間的數據共享上面。瀏覽器
SMB是基於客戶機/服務器型的協議,於是一臺Samba服務器既能夠充當文件共享服務器,也能夠充當一個Samba的客戶端,例如,一臺在 Linux 下已經架設好的Samba服務器,windows客戶端就能夠經過SMB協議共享Samba服務器上的資源文件,同時,Samba服務器也能夠訪問網絡中 其它windows系統或者Linux系統共享出來的文件。
Samba在windows下使用的是NetBIOS協議,若是你要使用Linux下共享出來的文件,請確認你的windows系統下是否安裝了NetBIOS協議。安全
組成Samba運行的有兩個服務,一個是SMB,另外一個是NMB;SMB是Samba 的核心啓動服務,主要負責創建 Linux Samba服務器與Samba客戶機之間的對話, 驗證用戶身份並提供對文件和打印系統的訪問,只有SMB服務啓動,才能實現文件的共享,監聽139 TCP端口;而NMB服務是負責解析用的,相似與DNS實現的功能,NMB能夠把Linux系統共享的工做組名稱與其IP對應起來,若是NMB服務沒有啓 動,就只能經過IP來訪問共享文件,監聽137和138 UDP端口。服務器
3、Samba服務器安裝(.tar.gz源碼安裝篇)網絡
1.獲取Samba的源碼包而且進行解壓縮
首先先記錄下本身折騰了一天一晚上的源碼安裝Samba服務器,雖然最後沒有成功,可是當中的辛酸苦辣本身但是吃了個透。。。。。
要下載Samba的源碼包,固然得去Samba的官方網站,http://www.samba.org/samba/ ,目前最新版本已是4.0.4了,我下載的是3.6.13版本的。
在下載好後經過ISO鏡像掛載到CentOS上,(由於我已經安裝了VMware-Tools,因此能夠直接將下載好的源碼包複製粘貼到虛擬機中的CentOS裏面)。
而後咱們將samba-3.6.13.tar.gz拷貝到了/home目錄下,然我咱們執行如下命令來進行解壓縮:
[root@xiaoluo home]# tar -zxvf samba-3.6.13.tar.gz
2.配置configure
咱們在對源碼包進行解壓縮後,會在/home下看到一個/samba-3.6.13的目錄,也就是剛纔解壓縮後的samba,咱們進入到該目錄的source3目錄下:
[root@xiaoluo home]# cd /samba-3.6.13/source3
而後執行如下命令,進行配置:
[root@xiaoluo home]# ./configure
3.生成和安裝make && make install
在對samba進行configure之後,咱們要對其源碼包進行編譯,在環境配置命令./configure成功執行後,能夠運行命令
[root@xiaoluo home]# make
來生成二進制可執行文件,這可能須要五分鐘。成功生成可執行文件後,能夠經過下面命令
[root@xiaoluo home]# make install
來進行安裝。系統默認的安裝路徑是/usr/local/samba。
4.配置動態連接庫路徑
安裝完成後,咱們須要配置動態連接庫路徑,由於運行samba的進行smbd和nmbd須要到目錄/usr/local/samba/lib下的動 態連接 庫文件。可是該目錄不是系統默認的動態連接庫文件搜索路徑,因而咱們須要將該目錄添加到文件ld.so.conf中。執行下面的命令
[root@xiaoluo home]# vi /etc/ld.so.conf
而後,打開ld.so.conf文件,並在該文件中加入下面這一行內容
/usr/local/samba/lib
而後執行命令
[root@xiaoluo home]# ldconfig
來更新動態連接庫緩衝。
5.samba配置文件smb.conf
samba在運行過程當中須要用到配置文件smb.conf。smb.conf配置文件是samba最重要的配置文件,該文件定義了samba的安全機制、文件共享和打印共享的目錄和參數以及其餘一些系統配置功能。
配置文件smb.conf的默認路徑是/usr/local/samba/lib/smb.conf,咱們能夠在運行smbd進程時,經過-s選項 來執行特定的smb.conf文件,通常不推薦使用-s選項,由於其配置工具,如smbclient、testparm等默認都是讀 取/usr/local/samba/lib/smb.conf文件。
由於咱們在samba的lib下還不存在smb.conf文件,咱們能夠經過以下命令從samba的安裝目錄裏面copy一份到lib目錄下:
[root@xiaoluo home]# cp /home/samba-3.6.13/examples/smb.conf.default /usr/local/samba/lib/smb.conf
此時咱們能夠看看這個文件,看看裏面都有什麼配置信息:
[root@xiaoluo home]# vi /usr/local/samba/lib/smb.conf
6.主配置文件smb.conf
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支持的配置參數。
7.啓動Samba服務器
samba有兩個主要的進程smbd和nmbd。smbd進程提供了文件和打印服務,而nmbd則提供了NetBIOS名稱服務和瀏覽支持,幫助SMB客戶定位服務器,處理全部基於UDP的協議。
配置smb.conf文件後,在開始運行samba的服務進程以前。咱們須要先作一些準備工做。運行smbpasswd命令(在目錄/usr/local/samba/bin下)
[root@xiaoluo bin]# ./smbpasswd –a root // 向smb.conf文件中指定的/etc/samba/smbpasswd文件中添加root用戶以及密碼信息。
而後運行命令
[root@xiaoluo bin]# service iptables stop // 關閉防火牆服務
下面是運行samba的服務進程smbd和nmbd
[root@xiaoluo bin]# /usr/local/samba/sbin/smbd –D
[root@xiaoluo bin]# /usr/local/samba/sbin/nmbd –D
此時咱們能夠經過以下命令來進行查看服務是否已經啓動:
[root@xiaoluo bin]# pgrep smbd
[root@xiaoluo bin]# pgrep nmbd
上面的-D選項指定smbd和nmbd以守護進程的方式啓動.以守護進程 方式啓動smbd和nmbd的優點是響應速度快,可是要關閉的話只能kill掉。
8.對Samba服務器進行測試檢查
在啓動samba以後,咱們能夠在本機使用smbclient(目錄/usr/local/samba/bin下)來進行測試。下面命令
[root@xiaoluo home]# cd /usr/local/samba/bin [root@xiaoluo bin]# ./smbclient –L //192.168.113.128
正常狀況下會列出以下的信息:
[root@localhost bin]# ./smbclient –L //127.0.0.1 Enter root’s password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.9] Sharename Type Comment --------- ------- ------- IPC$ IPC IPC Service (Samba Server 3.5.9) public Disk root Disk Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.9] Server Comment ----------- ------- LOCALHOST Samba Server 3.5.9 Workgroup Master ------------ ------- MYGROUP LOCALHOST
可是!!!我一直沒能出現這個,折騰了我很久都沒有搞定。。。。。因此在實在沒法忍受後換了yum來進行安裝。
咱們也能夠經過smbclient來訪問samba服務器提供的服務,其命令格式以下:
# ./smbclient 「//serverAdderss/aservice」 –U username
其中serverAddress是要訪問的samba服務器的IP地址,aservice指定samba服務器上提供的某個服務名稱,選項-U username指定要以哪一個用戶名來訪問samba服務器。例如:
[root@localhost bin]# ./smbclient 「//127.0.0.1/root」 –U root Enter root’s password: ; 這裏輸入samba用戶root的密碼 Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.9] smb: \> ; 訪問成功,輸入相關命令進行操做
上面個smb: \>代表了訪問成功,此時咱們能夠輸入一些命令來在samba服務器上進行操做,好比ls、mkdir等。q或quit命令執行退出,並斷開鏈接。
若是咱們須要在windows上來訪問CentOS上的共享文件夾,能夠在網上鄰居中經過新建網上鄰居來訪問,或者在【開始】——【運行】中輸入\\192.168.113.128\來訪問samba服務器192.168.113.128上面提供的服務。
/********************************************這是一條華麗的分界線************************************************/
4、Samba服務器安裝(經過yum來進行安裝)
在上面的源碼安裝失敗未果後,我果斷選擇了放棄,因而想着採用yum來進行安裝,直接經歷的艱辛過程就再也不多陳述了。。。。。。。。。
有關yum的各類命令詳解將會在後續的Linux學習中記錄出來,這裏只是簡單的經過使用yum來進行Samba的安裝。
1.經過yum來進行Samba服務器,注意,若是經過yum方式來下載軟件,格式都是rpm的格式(有關rpm的命令詳解也會在後續的Linux學習中記錄下來)
[root@localhost ~]# yum install samba samba-client samba-swat
在等待了一番時間後,咱們能夠看到以下界面(經過yum方式安裝時,有依賴關係的包samba-common、samba-winbind-clients、libsmbclient將自動安裝上去。):
安裝包的說明:
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的道路上時將會繼續記錄本身的學習心得!!!!!!