四、配置文件的結構
1、主配置文件smb.conf。
在配置參數昌有以下幾個共性。
(1)參數配置基本採用“參數” = “值”的方式,如果參數有多個值時,多個參數之間用空格分隔。
(2)當使用用戶和組作爲參數時,值爲組時需在組名前加@字符。
(3)以“;”或“#”開始的是註釋行。
(4)方括號標識表示爲標誌,比如[global]爲全局配置標識。
(5)一般當全局配置與某個共享資源配置發生衝突時,共享資源配置優先。
(6)關鍵字對大小寫不敏感。
配置文件/usr/local/samba/etc/smb.conf或/etc/samba/smb.conf內容結構
==================== Global Settings ====================
#以[global]開始,該部分主要涉及Samba服務的全局配置。
[global]
-----------Network Related Options----------
workgroup = MYGROUP 設置Samba服務所在工作組或域的名稱,默認爲MYGROUP。
server string = Samba Server Version %v 設置Samba服務器的描述信息,默認爲Samba Server Version %v。可以使用Samba設定的變量。
netbios name = Samba Server 設置Samba服務器NetBIOS名稱,默認使用該服務器的DNS名稱的第一部分。
interfaces = lo eth0 192.168.10.1/24 設置服務器監聽本地網絡接口(網卡),使用該參數時,推薦保留lo(本地迴環地址),參數設置:網絡接口名(eth0/1);IP地址。
hosts allow = 127. 192.168.10. 192.168.10.1 except 192.168.10.100 允許連接到Samba服務器的客戶端;對應是hosts deny參數。
use sendfile = no 當設置爲yes時,將直接由 kernel 讀取數據後發給客戶端,大大提高效率;默認no。
getwd cache =yes 是否啓用cache功能。默認yes。
max connectons = 0 允許連接到服務器的最大連接數,0表示無限制
max open files = 16404 同一個客戶端最多能打開的文件數目。
deadtime = 0 設置斷開一個沒有打開任何文件的鏈接的時間,單位是分鐘,0表示無限制
keepalive = 60 服務器每隔多少秒向客戶端發送keepalive包用於確認客戶端是否工作正常。
time server = yes/no 設置讓nmbd成爲windows客戶端的時間服務器
guest account = nobody
fstype = Samba FileSystem 定義Windows客戶端顯示的文件系統。
username map = </usr/local/samba/etc/smbusers或/etc/smaba/smbusers> 定義用戶映射關係的文件
config file = </usr/local/samba/etc/smb.conf.%m> 使用另外的配置文件來覆蓋缺省的配置文件
說明:
host allow = value設置
Example 1: allow all IPs in 150.203.*.*; except one
hosts allow = 150.203. EXCEPT 150.203.6.66
Example 2: allow hosts that match the given network/netmask
hosts allow = 150.203.15.0/255.255.255.0
Example 3: allow a couple of hosts
hosts allow = lapland, arvidsjaur
Example 4: allow only hosts in NIS netgroup "foonet", but deny access from one particular host
hosts allow = @foonet
hosts deny = pirate
Samba設定的變量:
變量名 |
作 用 |
變量名 |
作 用 |
%S |
當前服務名(如果存在) |
%L |
Samba服務器的NetBIOS名 |
%P |
當前服務的根目錄(如果存在) |
%N |
NIS服務器主機名 |
%u |
當前服務的用戶名(如果存在) |
%p |
NIS服務器家目錄 |
%g |
當前用戶的初始組 |
%R |
採用協議等級 |
%U |
當前連接的用戶名 |
%d |
Samba服務的進程ID |
%G |
當前連接用戶的初始組 |
%a |
訪問Samba服務器的客戶端系統 |
%D |
當前用戶所屬域或工作組名稱 |
%I |
訪問Samba服務器的客戶端IP地址 |
%H |
當前服務用戶的家目錄 |
%M |
訪問Samba服務器的客戶端主機名 |
%v |
Samba服務器的版本 |
%m |
訪問Samba服務器的客戶端NetBIOS名 |
%h |
Samba服務器的主機名 |
%T |
Samba服務器日期及時間 |
-----------Logging Options----------
log level = 8 設置日誌記錄等級。值越大越詳細。參數設置:0~10。
log file = /var/log/samba/log.%m 定義Samba日誌文件的位置及名稱。默認爲每一個與服務器連接的客戶端定義一個單獨的日誌文件。
max log size =50 設置最大的日誌文件大小,單位爲KB。
-----------Standalone Server Options----------
#使用獨立服務器作爲Samba服務器認證用戶來源,也就是當訪問Samba服務器時輸入的用戶名和密碼的驗證工作由Samba服務器本機系統內賬戶完成。
security = user 設置安全級別,即客戶端訪問Samba服務器的驗證方式。此部分中只能設置以下三種參數,參數設置:share(不推薦)、user、server(不推薦)。
passdb backend = tdbsam 參數設置:smbpasswd、tdbsam、ldapsam、mysql。默認爲tdbsam,一般不用修改,除非想使用老版本Samba服務器的smbpasswd文件方式或其它方式。
encrypt passwords = yes/no 認證密碼在傳輸過程中是否加密。
參數說明:
security = share/user/server/domain/ads
以下三種安全級別用在Standalone Server Options部分,其中user級別也用於Domain Controller Options部分。
(1)share:訪問Samba服務器共享資源時不需要輸入用戶名和密碼,屬於匿名訪問。
(2)user:訪問Samba服務器共享資源時需要輸入用戶名和密碼,認證用戶來源爲Samba服務器本機。
(3)server:訪問Samba服務器共享資源時需要輸入用戶名和密碼,認證用戶來源爲另一臺Samba服務器或Windows服務器。
以下兩種安全級別用在Domain Members Options部分:
(4)domain:Samba服務器在一個基於Windows NT平臺的Windows域中,訪問共享資源需要輸入用戶名和密碼,認證用戶來源爲Windows域。
(5)ads:Samba服務器在一個基於Windows 200X平臺的Windows活動目錄中,訪問共享資源需要輸入用戶名和密碼,認證用戶來源爲Windows活動目錄。
passdb backend = tdbsam/smbpasswd/ldapsam/mysql
(1)tdbsam:該方式使用一個數據庫文件來建立用戶數據庫,數據庫文件名爲passdb.tdb。可以使用#smbpasswd -a [用戶名]來建立Samba用戶。也可以使用pdbedit命令來建立用戶。
(2)smbpasswd:該方式使用Samba提供的工具smbpasswd來給系統用戶設置一個用於訪問Samba服務的密碼,客戶端就用這個密碼訪問Samba共享資源。此方式還要使用一個 smb passwd file = /usr/local/samba/etc/smbpasswd(或/etc/samba/smbpasswd) 參數來指定保存用戶名和密碼的文件,該文件需要手動建立。不推薦使用此方法。
(3)ldapsam:該方式基於LADP的賬戶管理方式來驗證用戶,先要建立LDAP服務。
(4)mysql:該方式是將Samba服務器的用戶名和密碼存儲到MySQL數據庫中。
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用戶的賬號。
注意:
Standalone Server Options、Domain Members Options、Domain Controller Options三部分均與Samba的認證方式及工作角色有關,三部分均需要配置合適的security(安全級別,用於配置Samba的認證方式),此三部分爲服務器的三種角色。
-----------Domain Members Options----------
#該部分將Samba服務器加入Windows NT平臺域或Windows 2000 Server/2003/2008活動目錄中。也就是當訪問Samba服務器時輸入的用戶名和密碼的驗證工作由域控制器完成。
security = domain 在此部分中該參數只能設置爲domain、ads。
passdb backend = tdbsam 默認爲tdbsam,不用修改。
realm = MY_REALM
password server = <NT-Server-Name> 指定進行身份驗證的域控制器IP地址或主機名。
參數說明:
-----------Domain Controller Options----------
#該部分將Samba服務器配置爲一臺域控制器。
security = user 在此部分中該參數只能設置爲user。
passdb backend = tdbsam 默認爲tdbsam,一般不用修改。
domain master = yes 讓Samba成爲主域控制器(PDC),在此部分中此參數必須爲yes。
domain logons = yes 允許舊的Windows客戶端提交驗證信息。
logon script = %m.bat/%u.bat 當用戶登錄到域時執行的啓動腳本,依據機器名或用戶名加載腳本(相當於Windows組策略中用戶開機腳本)。
logon path = \\%L\Profiles\%u 當用戶登錄到域後的配置文件存放的位置,用來初始化工作環境(相當於Windows中的漫遊配置文件)。
add user script = /usr/sbin/useradd "%u" -n -g users 指定Windows與Linux中用戶信息同步腳本,當Windows域中新建用戶後指定腳本會將該用戶的信息複製到Linux中。
add group script = /usr/sbin/groupadd "%g" 指定Windows與Linux中組信息同步腳本,當Windows域中新建組後指定腳本會將該組信息複製到Linux中。
add machine script = /usr/sbin/useradd -n -c "Workstation (%u)" -M -d /nohome -s /bin/false "%u" 指定Windows與Linux中計算機信息同步腳本,當Windows域中加入新的計算機後指定腳本會將計算機信息複製到Linux中。
delete user script = /usr/sbin/userdel "%u" 指定Windows與Linux中用戶信息同步腳本,當Windows域中刪除用戶後指定腳本會將該用戶信息複製到Linux中。
delete user from group script = /usr/sbin/userdel "%u" "%g" 指定Windows與Linux中用戶信息同步腳本,當Windows域中將用戶從組中刪除後指定腳本會將信息複製到Linux中。
delete group script = /usr/sbin/groupdel "%g" 指定Windows與Linux中組信息同步腳本,當Windows域中刪除組後指定腳本會將該組的信息複製到Linux中。
-----------Browser Control Options----------
#配置瀏覽服務器
local master = yes/no 是否允許Samba服務器作爲主瀏覽服務器。
os level = 33 該數字越大被選舉爲主瀏覽服務器的可能性越高。
preferred master = yes 當爲yes時被選爲主瀏覽服務器的可能性越高。
注:
主瀏覽服務器的功能主要是實現Windows中的網上鄰居。計算機瀏覽服務是一系分部式的含有可用的網絡資源列表,這些列表分佈在一些計算機上,提出瀏覽請求的計算機充當瀏覽工作站,面提供瀏覽列表的計算機充當瀏覽服務器。該操作通過計算機從同一個子網中的主瀏覽服務器獲得瀏覽列表副本完成。
瀏覽服務器有域主瀏覽服務器、主瀏覽服務器、備份瀏覽服務器、潛在瀏覽服務器,非瀏覽服務器之分。
-----------Name Resolution----------
#該部分包括Samba服務器名稱解析方法相關配置。
wins support = yes 設置nmbd進程支持WINS服務器。
wins server = w.x.y.z 設置WINS服務器IP地址。
wins proxy = yes 設置Samba服務器是否可作爲WINS代理。
dns proxy = yes 設置Samba服務器是否在無法聯繫WINS服務器時通過DNS去解析主機的NetBIOS名。
name cache timeout = 660 設置Samba服務器解析主機名緩存的保存時間,單位是秒;默認660。
name resolve order = lmhosts host wins bcast 設置Samba服務器名稱解析的方法及順序。可指定一個或多個值。
參數說明:
name resolve order = lmhosts host wins bcast
(1)lmhosts:使用 /etc/samba/lmhosts文件對NetBIOS名稱與IP地址對應關係進行解析,此方式用於解析NetBIOS名。
(2)host:使用主機名方式解析IP地址,該方式可以使用NIS、DNS及/etc/hosts文件三種方法完成解析,這三種方式的使用順序是在/etc/nsswitch.conf文件中hosts參數定義的。
(3)wins:使用WINS服務器進行名稱解析,使用此方式時wins server參數必須指明WINS服務器的IP地址。
(4)bcast:使用廣播的方式進行名稱解析。
注:
WINS代理:是爲了解決跨網段的非WINS客戶端與WINS客戶端的NetBIOS名稱解析的問題。
-----------Printing Options----------
#該部分包括Samba服務器打印機相關設置。
load printers = yes 是否自動共享打印機,而不根據[printer]標籤內的配置。
cups options = raw
printcap name = /etc/printcap 設置獲取打印機描述信息的文件位置。默認爲/etc/printcap。
printing = cups 定義打印機的系統類型,可選項有:bsd、sysv、plp、lprng、aix、hpux、qnx、cups
-----------Filesystem Options----------
#該部分包括Samba服務器如何保留從Windows客戶端複製或移動到Samba服務器共享目錄文件的Windows文件屬性的相關配置。
map archive = no 當Windows客戶端將文件複製或移動到Samba服務器共享目錄時,是否保留文件在Windows中的存檔屬性。默認yes。
map hidden = no 當Windows客戶端將文件複製或移動到Samba服務器共享目錄時,是否保留文件在Windows中的隱藏文件屬性。默認yes。
map read only = no 當Windows客戶端將文件複製或移動到Samba服務器共享目錄時,是否保留文件在Windows中的只讀屬性。默認爲yes。
map system = no 當Windows客戶端將文件複製或移動到Samba服務器共享目錄時,是否保留文件在Windows中的系統文件屬性。默認爲no。
store dos attributes = yes 當Windows客戶端將文件複製或移動到Samba服務器共享目錄時,是否保留文件在Windows中的相關屬性(只讀、系統、隱藏、存檔屬性)。默認爲no。
unix charset = utf8
display charset = utf8
dos charset = utf8
注意:
設置與系統所使用的字符集相同。
-----------Performance Options----------
#服務器性能調優
read raw = yes
write raw = yes
aio read size = 16384
aio write size = 16384
write cache size = 262144
max xmit = 65536
getwd cache = yes
strict locking = no
此部分本人加入,待繼續整理……
==================== Share Definitions ====================
#該部分主要涉及Samba服務器需要共享的資源。默認已設置用戶家目錄(從[home]標識開始)、打印機共享(從[printers]標識開始)、登錄腳本及登錄域中有關用戶家目錄的配置,用戶自定義配置信息也在此處定義。
[homes]
comment = Home Directories
browseable = no
writable = yes
; valid users = %S
; valid users = MYDOMAIN\%S
[printers] 共享名,即客戶端訪問Samba服務器時瀏覽到的目錄名,該名稱不要求與本地目錄名相同,但在當前Samba服務器必須唯一。
comment = All Printers 共享目錄的描述信息,該參數不是必須的。
path = /var/spool/samba 需要共享的本地目錄路徑,必須使用絕對路徑。
browseable = no
guest ok = no
writable = no
printable = yes
[print$] 打印機驅動
comment = Printer drivers
path = /etc/samba/drivers
browseable = yes
readonly = yes
write list = gongxiaoli
[cdrom] 共享光驅
commnet = this is cdrom
path = /mnt/cdrom
root preexec = /bin/mount -t iso9660 /dev/cdrom /mnt/cdrom 連接時用root用戶運行mount命令。
root postexec = /bin/umount /mnt/cdrom 斷開時用root用戶運行umount命令。
……
在編輯Samba主配置文件時,smb.conf文件中並不要求參數縮進。但推薦在編寫時對參數進行縮進,以便以後閱讀。對用戶自定義的共享資源配置內容放在smb.conf文件的末尾,也是爲了便於以後閱讀。