SAMBA:Send Message Block,整合了SMB協議及Netbios協議,使其運作在TCP/IP上。可以讓Unix based的機器與windows互動。
SAMBA服務有兩個進程:
smbd:SMB服務器 。 smbd爲SMB客戶機,諸如Windows 9x/NT等提供Windows NT和Lan Manager風格的文件和打印服務。
nmbd:netbios名字服務器。nmbd提供瀏覽支持,使採用Linux操做系統的計算機用戶能夠融入使用netbios協議的windows網絡。
使用端口:137,138,139
默認狀況下,Red Hat Enterprise Linux 5安裝程序沒有安裝Samba服務
RPM安裝包名:samba-3.0.23c-2.i386.rpm(默認未裝) (第二張光盤); ---提供samba服務
samba-common-3.0.23c-2.i386.rpm(默認已裝) ; ----提供服務器和客戶機都必須使用的公共文件
samba-client-3.0.23c-2.i386.rpm(默認已裝); ----提供客戶端工具支持
system-config-samba-1.2.21-1.i386.rpm(默認未裝);(第二張光盤)---提供圖形界面管理
samba-swat-3.0.23c-2.i386.rpm (默認未裝); (第三張光盤) ----提供web界面管理
下載地址:http://www.samba.org
源代碼最新版本:
安裝rpm程序包:#rpm –ivh samba-3.0.23c-2.i386.rpm;# rpm –ivh system-config-samba-1.2.21-1.i386.rpm
#service smb start =/etc/init.d/smb start 啓動vsftpd服務
#service smb stop =/etc/init.d/smb stop 中止vsftpd服務
#service smb restart =/etc/init.d/smb restart 重啓vsftpd服務
#service smb status =/etc/init.d/smb status 檢查vsftpd服務狀態
# ntsysv 或 #chkconfig –level 35 smb on 更改服務自動加載
samba的配置文件:
(samba的用戶認證主要經過/e/tc/samba/smbpasswd和/etc/samba/smbusers兩個文件實現,其中smbpasswd文件用於存放用smbpasswd -a命令將linux本地賬戶生成samba賬戶和密碼的地方,而smhbusers文件用於存放和設置windows用戶和linux本地賬戶的映射,便於windows賬戶直接訪問samba服務器)
/etc/samba/smb.conf
|
samba的主配置文件,由全局設置和共享定義兩部分組成
|
/etc/samba/lmhosts
|
提供了局域網內主機的NetBIOS(Network Basic Input Output System,網絡基本輸入輸出系統)名與IP地址的對應。
此文件中每一行對應一個主機記錄,前面是主機的IP地址,後面用空格隔開記錄了這個IP地址對應主機的NetBIOS名,而NetBIOS則是則windows系統用來在局域網中進行通訊鏈接的一種協議,主機間經過NetBIOS名來進行識別,爲了能識別這種主機名,須要用戶將局域網中的windows主機名(NetBIOS名稱)與IP地址的對應關係列入此文件中,並必定要包括做爲samba服務器的linux主機自己,如:127.0.0.1 localhost (請勿刪除此條記錄)
192.168.0.1 sambaserver
192.168.0.6 xpserver
一般一啓動samba時就能自動捕捉到網絡中相關IP對應的NetBIO名,因此此檔案一般能夠不用設定了
|
/etc/samba/smbpasswd
|
又稱密碼文件。此文件在samba服務安裝後是不存在的,須要使用smbpasswd命令建立該文件(因爲samba服務和linux操做系統使用不一樣的密碼文件,所以linux操做系統中的用戶帳號不能直接登陸samba服務器,須要爲linux用戶建立新的samba用戶賬號密碼)。用戶第一次使用smbpasswd命令建立samba服務的帳號時,自動建立smbpasswd文件。命令格式#smbpasswd -a Linux用戶名。例:#smbpasswd –a teacher(teacher用戶已在linux系統中創建),-a後是linux用戶名,須要輸入密碼。命令執行後,一個名爲teacher用戶的samba帳號密碼建立成功,與此同時,在/etc/samba/目錄下,將會建立smbpasswd文件,內容相似於:teacher:500:23B3EAA559DD0DBAAD3B:[U ]:LCT-46ED7EEAF:能夠看出samba服務器目前的用戶是teacher,而該用戶對應的密碼是通過加密的密文密碼。(smbpasswd –d/smbpasswd –e命令可停用/啓用samba賬戶,更多用法:#smbpasswd -? 查詢)
|
/etc/samba/smbusers
|
又稱用戶文件。此文件提供了外部登陸名與本地用戶名的映射關係,所謂用戶映射是指用戶在windows和linux系統中的不一樣帳號,映射爲一個用戶帳號.作了映射後的windows帳號,在鏈接samba服務器時,就能夠直接使用windows帳號進行訪問了.設置用戶映射須要在samba主配置文件smb.conf中進行修改,全局參數「username map」控制用戶映射。經過該參數指定一個映射文件,默認狀況下,這個映射文件就是/etc/samba/smbusers.所以,須要在smb.conf文件中作以下設置:username map = /etc/samb/smbusers,即將該語句前的註釋符號#去掉,以後編輯/etc/samba/smbusers文件,將須要進行映射的用戶添加到文件中,參數格式爲:獨立linux帳號 = 需映射的windows帳號列表(帳號列表中的用戶名需用空格分隔,該參數格式代表,多個windows用戶帳戶能夠映射爲同一個samba帳號.例如:#Unix_name = SMB_name1 SMB_name2 …)
root = administrator admin
nobody = guest pcguest smbguest
teacher = teacher
在該文件中,可修改以下語句,例如,爲windows用戶kelly和teacher與linux用戶teacher創建映射: teacher = teacher kelly
|
/etc/samba/secrets.tdb
|
|
Samba的主配置文件/etc/samba/smb.conf說明(修改前先備份):
注意:在配置Samba服務器以前,須要查看/etc/services文件中(第123行)以「netbios-」開頭的記錄,正確的記錄文件應以下所示,若是這些記錄前有#號或者沒有這些記錄,則用戶沒法訪問linux服務器上的共享資源。
#cat /etc/services | grep netbios
netbios-ns 137/tcp #NETBIOS Name Service
netbios-ns 137/udp
netbios-dgm 138/tcp #NETBIOS Datagram Service
netbios-dgm 138/udp
netbios-ssn 139/tcp #NETBIOS session Service
netbios-ssn 139/udp
smb.conf主配置文件由兩個部分組成,分別是全局設置(Global Settings)和共享定義(Share Definitions):全局設置設置關於samba服務總體運行環境的選項,針對全部共享資源;共享定義設置共享目錄。設置完基本參數後使用「#testparm」命令檢查語法錯誤,若看到「Loaded services file OK」則代表配置文件加載正常,不然系統會提示出錯的地方,配置內容以下:
# This is the main Samba configuration file. You should read the
# smb.conf(5) manual page in order to understand the options listed
# here. Samba has a huge number of configurable options (perhaps too
# many!) most of which are not shown in this example
# For a step to step guide on installing, configuring and using samba,
# read the Samba-HOWTO-Collection. This may be obtained from:
# http://www.samba.org/samba/docs/Samba-HOWTO-Collection.pdf
# Many working examples of smb.conf files can be found in the
# Samba-Guide which is generated daily and can be downloaded from:
# http://www.samba.org/samba/docs/Samba-Guide.pdf
# Any line which starts with a ; (semi-colon) or a # (hash)
# is a comment and is ignored. In this example we will use a #
# for commentry and a ; for parts of the config file that you
# may wish to enable
# NOTE: Whenever you modify this file you should run the command "testparm"
# to check that you have not made any basic syntactic errors.
#======================= Global Settings(全局變量設置) ===============================
[global]
client code page = 950 (這一行請自行輸入,能夠看見中文!)
# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH
workgroup = MYGROUP (workgroup:此參數設置域名或工做組名稱,用來指定samba所要加入的工做組,若是要在windows主機的網上鄰居看到samba服務器就須將此workgroup參數值和windows主機所加入的工做組名稱保持一致,另外,若是設置了security=domain,則workgroup能夠指定域名。該名稱會出如今windows的網上鄰居和linux的網絡服務器中)
# server string is the equivalent of the NT Description field
server string = Samba Server(server string:此參數用於設置對samba服務器的簡要說明,方便訪問用戶的識別)
# Security mode. Defines in which mode Samba will operate. Possible
# values are share, user, server, domain and ads. Most people will want
# user level security. See the Samba-HOWTO-Collection for details.
# username map = /etc/samb/smbusers (此文件中提供了外部登陸名與本地samba用戶名的映射關係,若要在windows主機中直接用windows賬戶訪問共享目錄就須將其在/etc/samb/smbusers文件中映射爲一個samba賬戶,而後就能直接使用該windows賬戶訪問samba服務器了)
security = user (定義samba服務器的安全級)
(security:這是個重要的安全配置參數,有5個值,分別是:share,user,server,domain,ads.定義了samba的基本安全級。一般是user,這是samba的缺省配置,這種狀況下,要求用戶在訪問共享資源以前,必須先提供用戶名和密碼進行驗證,因此須要用smbpasswd命令先對linux系統用戶建立samba帳號密碼,並重啓samba服務。設置user安全級時須要對smb.conf文件作以下修改:
security = user (設置安全級別爲user)
guest account = teacher (添加語句,設置guest賬號)
encrypt passwords = yes (添加語句,設置口令爲加密發送)
smb passwd file = /etc/samba/smbpasswd (添加語句,設置密碼文件名和路徑)
share:這是幾乎沒有安全性的級別,任何用戶均可以不需用戶名和密碼訪問服務器上的資源,設置share安全級只需修改smb.conf:
security = share
server:與user安全級相似,但用戶名和密碼是遞交到另一個SMB服務器去驗證,也就是須要啓用密碼驗證服務器,好比遞交給一臺windows服務器。若是遞交失敗,就退到user安全級,從用戶端來看,server和user這兩個級別是沒什麼分別的.設置server安全級需對smb.conf文件作以下修改(其中參數值「pwdserver」是密碼驗證服務器名。若是驗證失敗,服務器使用user安全級訪問,但此時若是採用了加密口令,則samba 服務器沒法反向檢查原有密碼文件,所以必須使用另外一個smbpasswd密碼文件,此例中爲/etc/samba/smbpasswd-1):
security = server (設置安全級別爲user)
guest account = teacher (添加語句,設置guest賬號)
password server = pwdserver (添加語句,指定口令服務器)
encrypt passwords = yes (添加語句,設置口令爲加密發送)
smb passwd file = /etc/samba/smbpasswd-1 (添加語句,設置密碼文件名和路徑)
domain:使用domain安全級的samba服務器可以加入到windowsNT域中,這種安全級別要求網絡上存在一臺windowns PDC (primary domain controller主域控制器),samba把用戶名和密碼遞交給windowns PDC去驗證,所以設置domain安全級時,也必須指定口令服務器。從用戶端看來,user級以上的安全級實際上是沒什麼分別的,只是服務器驗證的方式不一樣,但這3種安全級都要求用戶在本地linux機器上也是系統帳戶,不然是不能訪問的。)
ads:若samba服務器須要加入到windows活動目錄中,則應使用ads安全級,ads安全級設置也必須指定口令服務器。
關於加密口令:設置主配置文件中的encrypt password參數實現加密口令,也就是用戶密碼以加密的方式發送到samba服務器。默認狀況下啓用該參數:encrypt passwords = yes 。windows操做系統也採用加密方式發送密碼,而若是該參數設置爲」no」,則須要修改windows註冊表,爲簡化用戶操做,samba在/usr/share/doc/samba-3.0.23c/registry/目錄下提供了多種windows操 做系統的註冊表文件,用戶能夠選擇客戶端操做系統相應的註冊表文件。#cd /usr/share/doc/samba-3.0.23c/registry/ ,#ls
# This option is important for security. It allows you to restrict
# connections to machines which are on your local network. The
# following example restricts access to two C class networks and
# the "loopback" interface. For more examples of the syntax see
# the smb.conf man page
; hosts allow = 192.168.1. 192.168.2. 127.(hosts allow:此參數設置可訪問samba服務器的IP範圍或域名,是一個與服務器安全相關的重要參數。默認狀況下,此參數被禁用,即代表全部主機均可以訪問samba服務器。若進行設置,應將語句前的分號去掉,當參數值超過一個時,應使用空格或逗號進行分隔。例,若要容許主機名爲new的主機,域名爲master.website.com的域以及192.168.10.*中除192.168.10.149外的全部主機訪問,能夠將些參數設置爲:hosts allow = new , master.website.com , 192.168.10. EXCEPT 192.168.10.149)
# If you want to automatically load your printer list rather
# than setting them up individually then you'll need this
load printers = yes (此參數指定在samba啓動時是否自動加載/etc/printcap文件裏的全部打印機,從而能夠在瀏覽清單裏看到全部的打印機,缺省爲yes)
# you may wish to override the location of the printcap file
; printcap name = /etc/printcap (設置加載的打印機配置文件和路徑)
# on SystemV system setting printcap name to lpstat should allow
# you to automatically obtain a printer list from the SystemV spool
# system
; printcap name = lpstat (設置打印機名)
# It should not be necessary to specify the print system type unless
# it is non-standard. Currently supported print systems include:
# bsd, cups, sysv, plp, lprng, aix, hpux, qnx
; printing = cups (此參數設置打印機類型,若使用的打印機是linux的標準型,則無需更改打印機類型。標準打印機類型包括:bsd , cups ,sysv ,plp ,lprng ,aix ,hpux ,qnx等)
# This option tells cups that the data has already been rasterized
cups options = raw
# Uncomment this if you want a guest account, you must add this to /etc/passwd
# otherwise the user "nobody" is used
; guest account = pcguest (此參數設置guest級別的來賓用戶名(能夠是nobody,ftp賬號),guest級別的用戶能夠不要密碼就訪問給定的gues服務。在此設置的賬號名都必須在/etc/passwd文件中。若是沒有指定,服務器會當成「nobody」賬號進行處理。默認狀況下不啓用guest賬號)
例:有一個自定義的共享資源爲:
[public] (自定義了一個共享目錄,共享名爲public)
path = /home/testpublic (設置共享目錄對應的linux系統目錄爲/home/testpublic目錄,須設置屬主和屬組爲nobody)
public = yes (設置此共享目錄爲對全部samba用戶是可見的)
only guest = yes(表示全部用戶在使用該共享目錄時的用戶身份都是guest,即linux的系統用戶nobody)
writable = yes (表示該共享目錄對於用戶可寫)
說明[public]共享目錄對全部訪問的用戶均可見,對於samba服務器中的全部用戶都以一樣的權限進行共享目錄中的文件讀寫
# this tells Samba to use a separate log file for each machine
# that connects
log file = /var/log/samba/ log.%m (此參數指定日誌文件名和存放路徑,文件名加個宏%m,表示samba服務器爲每一個登陸的用戶創建不一樣的日誌文件,存放在/var/log/samba文件夾下)
# Put a capping on the size of the log files (in Kb).
max log size = 50 (指定最大日誌文件大小,單位爲kb)
# Use password server option only with security = server
# The argument list may include:
# password server = My_PDC_Name [My_BDC_Name] [My_Next_BDC_Name](說明設置口令服務器的格式)
# or to auto-locate the domain controller/s
# password server = * (此參數設置口令服務器,參數值能夠是域控制器名,「*」表示自動查找域控制器。)
關於口令服務器:當用戶在windows環境下經過samba服務器訪問 linux的共享資源時,會自動傳送登陸windows的用戶名和密碼給samba,若指定了口令服務器,則samba向口令服務器驗證用戶名和密碼信息是否正確,口令服務器能夠是域控制器或是另外一個samba服務器
; password server = <NT-Server-Name>
# Use the realm option only with security = ads
# Specifies the Active Directory realm the host is part of
; realm = MY_REALM
# Backend to store user information in. New installations should
# use either tdbsam or ldapsam. smbpasswd is available for backwards
# compatibility. tdbsam requires no further configuration.
; passdb backend = tdbsam
# Using the following line enables you to customise your configuration
# on a per machine basis. The %m gets replaced with the netbios name
# of the machine that is connecting.
# Note: Consider carefully the location in the configuration file of
# this line. The included file is read at that point.
; include = /usr/local/samba/lib/smb.conf.%m
# Configure Samba to use multiple interfaces
# If you have multiple network interfaces then you must list them
# here. See the man page for details.
; interfaces = 192.168.12.2/24 192.168.13.2/24 (此參數爲多網卡的samba服務器使用,用以設置samba服務器須要監聽的網卡。能夠經過IP地址或網絡接口進行設置,如:interfaces = eth0)
# Browser Control Options:
# set local master to no if you don't want Samba to become a master
# browser on your network. Otherwise the normal election rules apply
; local master = no (此參數指定nmdb是否試圖成爲本地主瀏覽器,缺省值是yes,若是設爲no,則samba服務器永遠都不會成爲本地主瀏覽器。但即便設置爲yes,也不等於samba服務器就會成爲本地主瀏覽器,只是參與本地主瀏覽器選擇)
# OS Level determines the precedence of this server in master browser
# elections. The default value should be reasonable
; os level = 33 (os level的值是整數,表示競爭主瀏覽器時對自身的評價,這決定了nmbd是否有機會成爲本地廣播區域工做組裏的本地主瀏覽器,缺省值是零。這意味着nmbd失去瀏覽選擇,若是要nmbd更有機會成爲本地主瀏覽器的話,能夠設爲65)
# Domain Master specifies Samba to be the Domain Master Browser. This
# allows Samba to collate browse lists between subnets. Don't use this
# if you already have a Windows NT domain controller doing this job
; domain master = yes (此參數讓nmdb成爲一個域瀏覽器,取得各本地瀏覽器的瀏覽列表,並將整個域的瀏覽列表遞交給各本地主瀏覽器。缺省值是no .若是網絡上已經有一臺windows PDC 主域控制器,就不要把這個參數設爲yes)
# Preferred Master causes Samba to force a local browser election on startup
# and gives it a slightly higher chance of winning the election
; preferred master = yes (此參數指定nmbd是不是工做組裏的首要主瀏覽器,若是指定爲yes,nmbd在啓動時就強制一個瀏覽選擇。指定該參數爲yes時,最好把domain master也指定爲yes.用這個參數時要注意,在samba服務器所在的子網上,若是有其餘機器(無論是windows服務器,仍是另外一個samba服務器)也指定爲首要的主瀏覽器時,這些機器都會由於爭奪主瀏覽器而在網絡上廣播,引發沒必要要的網絡性能降低)
# Enable this if you want Samba to be a domain logon server for
# Windows95 workstations.
; domain logons = yes (表示這部samba主機能夠提供 windows登入的服務-PDC)
# if you enable domain logons then you may want a per-machine or
# per user logon script
# run a specific logon batch file per workstation (machine)
; logon script = %m.bat
# run a specific logon batch file per username
; logon script = %U.bat
# Where to store roving profiles (only for Win95 and WinNT)
# %L substitutes for this servers netbios name, %U is username
# You must uncomment the [Profiles] share below
; logon path = \\%L\Profiles\%U
# Windows Internet Name Serving Support Section:
# WINS Support - Tells the NMBD component of Samba to enable it's WINS Server
; wins support = yes (此參數設置samba服務器是否做爲WINS服務器,會要求Samba的nmbd進程激活WINS服務, WINS服務器的主要做用是將NetBIOS名稱轉換爲對應的IP地址。默認狀況下不啓用WINS支持)
# WINS Server - Tells the NMBD components of Samba to be a WINS Client
# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
; wins server = w.x.y.z (此參數設置WINS服務地址。一臺samba服務器不能同時做爲WINS服務器和客戶端,就是說在上面的參數中若是設置成WINS服務器,在此處就不能再指定其它WINS服務器了。但當一臺samba服務器不是WINS服務器,僅須要WINS服務時,可設置此參數指定WINS服務器,要求Samba的nmbd進程成爲一個WINS客戶。該WINS服務器須要在DNS服務器中進行登記。)
# WINS Proxy - Tells Samba to answer name resolution queries on
# behalf of a non WINS capable client, for this to work there must be
# at least one WINS Server on the network. The default is NO.
; wins proxy = yes (此參數設置是否啓用WINS代理)
# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names
# via DNS nslookups. The default is NO.
dns proxy = no (此參數設置是否啓用DNS代理)
# These scripts are used on a domain controller or stand-alone
# machine to add or delete corresponding unix accounts
; add user script = /usr/sbin/useradd %u
; add group script = /usr/sbin/groupadd %g
; add machine script = /usr/sbin/adduser -n -g machines -c Machine -d /dev/null -s /bin/false %u
; delete user script = /usr/sbin/userdel %u
; delete user from group script = /usr/sbin/deluser %u %g
; delete group script = /usr/sbin/groupdel %g
#============================ Share Definitions(共享資源定義)============================
[homes] (此爲特殊字段,[homes]共享目錄並不特指某個目錄,而是表示samba用戶的宿主目錄,即samba用戶登陸後能夠訪問同名系統用戶的宿主目錄中的內容)
comment = Home Directories (comment參數設置共享的說明信息)
browseable = no (設置爲no,表示全部samba用戶的宿主目錄都不能被看到,只有登陸用戶才能看到本身的宿主目錄,這樣設置可增強samba服務器的安全性)
writable = yes (設置用戶對本身的宿主目錄具備寫權限可寫入)
關於[homes]段:當用戶請求一個共享時,服務器將在存在的共享資源段中去尋找。若是找到匹配的共享資源段,就使用這個共享資源段,若是找不到,就將請求的共享名當作是用戶的用戶名,並在本地的password文件裏查找這個用戶,若是用戶存在,且用戶提供的密碼是正確的,則以這個[homes]段克隆出一個共享提供給用戶。這個新的共享名稱是用戶的用戶名,而不是homes,若是[homes]段裏沒有指定共享路徑,就把該用戶的主目錄(home directory)做爲共享路徑。
用戶主目錄設置方法:用戶主目錄是samba爲每一個samba用戶提供的共享目錄,這個共享目錄只有用戶自己可使用。默認狀況下,用戶主目錄位於/home目錄下,每一個linux用戶有一個以用戶名命名的子目錄,/home目錄的權限由[homes]字段設置爲不容許瀏覽,容許寫入用戶本身的主目錄。對於用戶「teacher」,用戶主目錄爲」/home/teacher」,能夠增長以下設置:
[teacher]
path = /home/teacher
writeable = yes
;browseable = yes
guest ok = yes
# Un-comment the following and create the netlogon directory for Domain Logons
; [netlogon]
; comment = Network Logon Service
; path = /usr/local/samba/lib/netlogon
; guest ok = yes
; writable = no
; share modes = no
# Un-comment the following to provide a specific roving profile share
# the default is to use the user's home directory
;[Profiles]
; path = /usr/local/samba/profiles
; browseable = no
; guest ok = yes
# NOTE: If you have a BSD-style print system there is no need to
# specifically define each individual printer
[printers] (此特殊字段設置共享打印機)
comment = All Printers (描述信息)
path = /usr/spool/samba (path指定的目錄必須事先建立,不然不能使用)
browseable = no (設置瀏覽權限爲否)
# Set public = yes to allow user 'guest account' to print
guest ok = no (設置guest帳號不容許使用共享打印,若是容許「guest」來賓帳號用戶使用共享打印機,需增長一個設置「public = yes」)
writable = no (設置目錄不準寫入)
printable = yes (設置爲容許打印)
關於[printers]段:該段用於提供打印服務,若是定義了[printers]這個段,用戶就能夠鏈接在printcap文件裏指定的打印機。當一個鏈接請求到來時。smbd去查看配置文件裏已有的段,若是和請求匹配就用那個段,若是找不到匹配的段,但[homes]段存在,就用[homes]段。不然,請求的共享名就看成是打印機共享名,而後去尋找適合的printcap文件,看看請求的共享名是否爲有效的打印共享名。如匹配,那麼就克隆出一個新的打印機共享提供給客戶。注意,[printers]服務必須設置printable爲yes,若是指定爲其餘,服務器將拒絕加載配置文件。一般指定的路徑應該任何人都有寫入權限。
# This one is useful for people to share files
;[tmp] (此字段用來設置網絡用戶共享文件的臨時區域,每一個人能夠在這裏存放文件供別人使用)
; comment = Temporary file space
; path = /tmp
; read only = no (表示能夠存取)
; public = yes (表示能夠查詢)
# A publicly accessible directory, but read only, except for people in
# the "staff" group
;[public] (一個共享的目錄,普通的訪問者只讀,屬於staff組的用戶能夠讀寫)
; comment = Public Stuff
; path = /home/samba
; public = yes
; writable = yes
; printable = no
; write list = @staff
# Other examples.
# A private printer, usable only by fred. Spool data will be placed in fred's
# home directory. Note that fred must have write access to the spool directory,
# wherever it is.
;[fredsprn] (一個私有的打印機,只供fred使用,打印緩存存放在fred的主目錄裏# home directory. # 注意fred必須對打印緩存的目錄有寫權限)
; comment = Fred's Printer
; valid users = fred
; path = /homes/fred
; printer = freds_printer
; public = no
; writable = no
; printable = yes
# A private directory, usable only by fred. Note that fred requires write
# access to the directory.
;[fredsdir] (私有的目錄,只供用戶fred使用,fred須要對該目錄有寫權限)
; comment = Fred's Service
; path = /usr/somewhere/private
; valid users = fred
; public = no
; writable = yes
; printable = no
# a service which has a different directory for each machine that connects
# this allows you to tailor configurations to incoming machines. You could
# also use the %U option to tailor it by user name.
# The %m gets replaced with the machine name that is connecting.
#
下面的配置,使得每一個不一樣的計算機都有不一樣的鏈接
# 在path參數值後面加上%m,表明機器名,也就是說,主機lidf會鏈接到
# SMB服務器的/usr/pc/lidf目錄上
;[pchome]
; comment = PC Directories
; path = /usr/pc/%m
; public = no
; writable = yes
# A publicly accessible directory, read/write to all users. Note that all files
# created in the directory by users will be owned by the default user, so
# any user with access can delete any other user's files. Obviously this
# directory must be writable by the default user. Another user could of course
# be specified, in which case all files would be owned by that user instead.
#
一個共享目錄,對於全部用戶均可讀可寫。注意目錄中建立的文件屬於缺省的用戶,
# 因此全部用戶均可以在該目錄中修改、刪除其餘用戶的文件
;[public]
; path = /usr/somewhere/else/public
; public = yes
; only guest = yes
; writable = yes
; printable = no
# The following two entries demonstrate how to share a directory so that two
# users can place files there that will be owned by the specific users. In this
# setup, the directory should be writable by both users and should have the
# sticky bit set on it to prevent abuse. Obviously this could be extended to
# as many users as required.
#
下面的例子解釋瞭如何共享一個目錄,從而兩個用戶能夠在裏面放置文件。
# 在下面的配置中,目錄應該是對兩個用戶可寫的,而且有setuid,
# 固然,也能夠設置更多的用戶共享這一個目錄
;[myshare]
; comment = Mary's and Fred's stuff
; path = /usr/somewhere/shared
; valid users = mary fred
; public = no
; writable = yes
; printable = no
; create mask = 0765
關於變量值:在samba中,爲了便於使用者的設定,因此會有許多的變量值提供給系統管理員使用,主要有如下幾個:
%S ---取代目前的設定項目值,所謂[設定項目值]就是在[]裏面的內容,舉例來講:
[homes]
valid users = %S
……
由於valid users是容許的登入者,設定爲%S表示任何可登入的使用者都可以登入的意思,今天若是test這個使用者登入以後,那個[homes]就會自動的變成了[test],%S的用意就是在替換掉目前[]裏面的內容。
%m------表明client端的NetBIOS主機名稱
%M------表明client端的Internet主機名稱,就是HOSTNAME
%L------表明SAMBA主機的NetBIOS主機名稱
%H-------表明使用者的家目錄
%U------表明目前登入的使用者的使用者名稱
%g------表明登入的使用者的羣組名稱
%h------表明目前這部samba主機的hostname,注意是hostname,而不是NetBIOS name.
%I------表明client的IP
%T-------表明目前的日期與時間
一.Samba客戶端工具:
samba還提供了一系列的工具程序,能夠進行服務器端測試,驗證服務器的配置,還能夠用來在客戶端訪問samba提供的文件服務及遠程配置,管理samba服務器。
1.smbclient
利用此工具能夠鏈接其餘linux機器上的sambaserver或鏈接windows機器,以得到文件共享服務,語法:
#smbclient //server/service <password> [option]
參數說明:
server 是遠程服務器的IP地址或NetBIOS名字,對於windows服務器而言就是出如今網上鄰居中的名字;
service 是各服務器所提供的資源的名字,具體就是某個被共享的目錄;
password是存取該資源所需的密碼;
option 是各類命令選項,包括: -L :用於列出遠程服務器提供的全部資源。
-U :指定訪問的用戶名
-I destIP:指定遠程服務器的IP地址。此時,server中的NetBIOS名部分將被忽略。
-p port :鏈接到指定端口。
-P :鏈接到打印機。
-W workgroup:指定工做組的名字。
例如:
查看samba服務器共享資源列表:#smbclient –L //IP地址或主機名 –U用戶名
使用samba服務器上的共享資源:#smbclient //IP地址或主機名或共享目錄名 –U用戶名
執行smbclient命令成功後,進入到smbclient環境,出現提示符:smb:\> ,與FTP客戶端類似,可使用如cd ,lcd,get,mget,put,mput等命令,訪問遠程主機的資源。
2.smbmount
smbmount相似於系統的mount命令,用於裝載遠程主機提供的共享資源,語法:
#smbmount //server/service mount-point [-o options,
…]
即:#smbmount 共享資源地址 加載點 -o 參數
參數說明:
server 是遠程服務器的IP地址或NetBIOS名字,對於windows服務器而言就是出如今網上鄰居中的名字;
service 是各服務器所提供的資源的名字,具體就是某個被共享的目錄;
mount-point 是遠程資源在本地的裝載點
option 選項包括: username=< arg> :samba用戶名
password=<arg> :samba用戶密碼
guest :不提示密碼
ro : 只讀裝載
rw : 讀寫裝載
例:把名字爲server的計算機上的共享資源tmp的內容裝載到本地的/mnt目錄下,使用命令
$smbmount //」\\server/ \tmp」 /mnt
3.smbumount
用於卸載一個已經裝載的SMB文件系統,使用smbumount命令時,需同時指定要卸載的裝載點,如:
#smbumount /mnt
4.其餘工具:
testparm :測試smb.conf配置文件的定義是否正確。
testprns : 測試在smb.conf文件中定義的打印機是否有效。
smbstatus : 顯示目前客戶端鏈接到samba server的聯機情況。
nmblookup : 經過NetBIOS主機名來查找windows網絡中主機對應的IP地址。
smbpasswd : 可用來創建,變動登陸到samba server的密碼。
swat :(Samba Web Admin Tool)提供web界面對samba server進行配置管理(1.需安裝第三張光盤中的samba-swat-3.0.23c-2.i386.rpm 和第二張光盤中的xinetd-2.3.14-10.e15.i386.rpm.由於swat受xinetd超級服務器管理的服務程序,用chkconfig –list | grep xinetd查看時,RHEL 5中默認已沒有xinetd服務程序了,因此需安裝並重啓swat服務和xinetd服務:#chkconfig swat on ;#service xinetd restart 2.swat服務的配置文件位於「/etc/xinetd.d/」目錄中,文件名是swat,在該配置文件中默認設置了only_from的值爲127.0.0.1,即只有在samba服務器主機中能夠訪問該配置界面,用戶若是需在其餘主機中訪問swat服務,須要將only_from設置爲容許訪問主機的IP地址,例如:only_from = 192.168.1.122,修改後須要從新啓動xinetd服務,使設置生效:#service xinetd restart.3.swat服務運行在901端口,只有管理終端機能夠訪問swat服務,即swat服務配置中設置的IP爲192.168.1.122的管理終端機,服務協議爲http,端口號爲901,利用IE瀏覽器輸入:http://samba服務器的IP:901/鏈接成功後輸入管理員root用戶名和密碼)
二.添加samba用戶(2種方法):
在訪問samba服務器時,必須以samba的用戶身份登陸,因爲samba用戶須要訪問系統文件,於是,samba用戶又必須是系統用戶。添加samba用戶有兩種方法,一種是單獨添加,另外一種是批量加入。
1. 單獨添加:samba可使用smbpasswd命令單獨添加一個用戶到samba的用戶數據庫中,用法:
#smbpasswd -a Linux用戶名
(-a選項不可少,不然添加失敗,其它選頂用法,可查詢:#smbpasswd -?)
2. 批量添加:使用/usr/bin/mksmbpasswd.sh腳本程序,能夠從/etc/passwd文件裏生成samba帳戶文件,用法:
#cat /etc/passwd | mksmbpasswd.sh>/etc/samba/smbpaswd
(可把系統帳戶都加入到samba帳戶中,爲安全起見,smbpasswd這個文件的存取權限請設爲600,即#chmod 600 /etc/samba/smbpasswd)
測試samba服務
用戶能夠利用testparm指令來檢查smb.conf文件的語法。
只能檢查關鍵字段的拼寫錯誤。對於配置值錯誤須要結合日誌文件來判斷。
用戶能夠用service smb status判斷samba服務的開啓情況
用戶能夠用nmblookup來檢查本機上的samba服務是否正確開啓
Testparm
[root @stationxx root] # testparm /etc/samba/smb.conf 192.168.0.254
nmblookup也能夠用來向wins服務器查詢記錄
管理smb用戶
samba服務支持用戶級別的共享限制
使用smbadduser添加可使用smb服務的用戶。
語法:smbadduser linux賬號:windows賬號
使用smbpasswd改變用戶的密碼。
用戶密碼存放在/etc/samba/smbpasswd文件中
用戶映射存放在/etc/samba/smbuser文件中
Smbpasswd
[root @stationxx root]# smbadduser kevinzlin:kevinzwin