快速架設apache/vsftpd/samba/sendmail伺服器(1)

火星人 @ 2014-03-12 , reply:0


  快速架設apache/vsftpd/samba/sendmail伺服器

daweicheng
leo@nj165.com

1 序言
2 參考文檔
3 動態域名實現
4 apache
5 vsftpd
6 samba
7 sendmail
8 附錄
a) httpd.conf的詳細設定
b) vsftpd.conf的詳細設定
c) smb.conf的詳細設定
d) sendmail.mc的詳細設定
e) tcp埠對照表(0~1457)

1 序言

現在寬頻網路越來越普及,這為個人架設伺服器提供了良好的基礎.
本文講述了如何實現動態域名,並快速設置好apache/vsftpd/samba/sendmail伺服器.本文參閱了不少優秀文檔,並接合了自己的一些心得.在這裡,感謝這些無私的作者和為linux做出貢獻的人們.

環境:redhat linux 9

2 參考文檔

Red Hat Linux 9.0伺服器架設全程實錄
http://www.douzhe.com/linuxtips/1701.html

簡易www伺服器設定
http://linux.vbird.org/linux_server/0360apache.php

簡易vsftpd伺服器設定
http://linux.vbird.org/linux_server/0410vsftpd.php

簡易samba伺服器設定
http://linux.vbird.org/linux_server/0370samba.php

簡易Mail Server架設 -- Sendmail設定
http://linux.vbird.org/linux_server/0380sendmail.php

RHCE_Linux_Study_Guide
此文檔在許多linux站點都可以找到

3 動態域名實現

考慮虛擬撥號的用戶ip地址是動態分配的,這裡我們申請動態域名.假設我們擁有公網ip.
在http://www.comexe.cn/ddns/ddns_trying.php上申請一個二級域名,然後下載linux的動態域名客戶端linux_i.tar.gz,放在/tmp下

cd /tmp
tar zxvf linux_i.tar.gz

解壓后的文件pipclient我們放在/usr/local/comexe/下

mkdir /usr/local/comexe/
mv pipclient /usr/local/comexe/
cd /usr/local/comexe/

下面配置客戶端,在以下網址有說明:
http://www.comexe.cn/ddns/ddns_assistant_use.php#a4

./pipclient
依此輸入在科邁註冊的用戶名,密碼,域名
在Input Offline URL or Offline IP(Enter for none):此處我們直接回車(離線域名對我們註冊的二級域名無效)
Has another domain?(Y/N):多個域名按"Y"
配置完按Ctrl+C結束.
修改配置用-c參數:
./pipclient -c

運行:
pipclient要在系統啟動時以後台進程運行。請修改系統啟動腳本(/etc/rc.d/rc.local),加入如下命令:
nohup /usr/local/comexe/pipclient -w /usr/local/comexe &
其中「-w」參數指定工作目錄

因為我個人更喜歡用ntsysv(setup->system service),所以沒有在rc.local中加命令
於是自己寫了個簡陋的腳本,用chkconfig加入系統服務,以後可以用service comexe start和service comexe stop啟用和停止動態域名:
cd /etc/init.d/
vi comexe
然後寫入下面的內容:
#! /bin/sh
#chkconfig:2345 90 90
#description:comexe


. /etc/rc.d/init.d/functions

case "$1" in

start)
echo -n "start ddns: "
/usr/local/comexe/pipclient -w /usr/local/comexe > /dev/null &
echo
;;

stop)
echo -n "stop ddns: "
killproc pipclient
echo
;;

*)
exit 1
;;
esac

exit 0
好了,wq保存退出
chmod 755 comexe
chkconfig --add comexe
chkconfig --level 35 comexe on
這樣,把comexe這個腳本加到了啟動服務中,以後每次開機后自動載入(運行級3,5)
service comexe start和service comexe stop可手動載入和停止該服務.

4 apache

apache是被廣泛應用的web伺服器軟體,有多個平台的版本.關於apache名稱的由來,大家有興趣可以看看參考文檔中的解釋:)
首先是安裝工作.
我們需要安裝如下的軟體包(可以在redhat linux 9 光碟中找到)
httpd
httpd-devel
redhat-config-httpd
httpd-manual
autoconf
automake
libtool
mod_perl
mod_ssl
mod_python
用rpm -Uvh將這些軟體包裝好,然後:
/sbin/chkconfig --level 35 httpd on 將httpd服務在運行級3,5自動載入
/sbin/service httpd start 啟動httpd服務
在web瀏覽器中輸入http://localhost,如果安裝無誤,你會看見apache的測試頁面

在apache 2中主配置文件是/etc/httpd/conf/httpd.conf
該文件的修改可以手動編輯或用redhat-config-httpd這樣的圖形化程式來完成
下面簡單介紹一下該配置文件的主要配置參數:

KeepAlive On
是否允許持續性連線,即一個連線有多個請求

MaxKeepAliveRequests 100
在持續性連線中,最大允許的連接數目,設定為0,表示沒有限制

MinSpareServers與MaxSpareServers是設定httpd進程數量的範圍
StartServers可以設定在這兩者之間(用ps -guax|grep httpd可以看到httpd進程數)

MaxClients 150
同一時間的連接數目.如果設得太大會很耗資源,設得太小則無法讓很多人連上來

MaxRequestsPerChild
一個服務進程允許的最大請求數,設為0表示無限制

Listen 80
設定監聽埠,默認80,表示監聽所有ip的80埠,可以根據情況設成其他埠
也可以設為監聽某一ip的埠,如xxx.xxx.xxx.xxx:80
這要在系統啟動時激活網路(僅限固定ip),否則httpd服務啟動失敗

DocumentRoot "/var/www/html"
DocumentRoot設定apache的根目錄


Options FollowSymLinks
AllowOverride None

設定apache根目錄的屬性,Options後面的值表示:
ExecCGI 使該目錄下CGI可執行
FollowSymLinks 允許鏈接至其他目錄
Includes 允許使用SSI
Indexes 如果該目錄下找不到index.html,則顯示該目錄下文件名稱
MultiViews 根據特定條件自動選擇並返回一個合適的文件(很少用到)
All 使用上面所有參數,除了MultiViews

AddDefaultCharset ISO-8859-1
apache預設的顯示語言編碼,將ISO-8859-1改為GB2312,以顯示簡體中文

NameVirtualHost *
虛擬主機設定.所謂虛擬機指一個主機有多個域名對應,
該設定可以讓不同的域名對應不同的頁面,就好像存在多個主機一樣
apache有兩種方式的虛擬機:基於ip的虛擬機和基於名字的機
基於IP的虛擬主機要求使用不同的IP地址來區別不同的虛擬主機
基於名字的虛擬主機使用相同的IP地址來配置不同的虛擬主機
*可以用ip地址或internet上的主機名稱來替代


ServerName www.myvirtualhost.com
DocumentRoot /var/www/html/myvirtualhost
ServerAdmin root@myvirtualhost.com
ErrorLog logs/www.myvirtualhost.com-error_log
CustomLog logs/www.myvirtualhost.com-access_log common

上面是一個虛擬機的例子,即www.myvirtualhost.com
ServerAdmin 管理員電郵地址
ErrorLog 錯誤日誌
CustomLog 訪問日誌
設定一個虛擬機至少需要ServerName和DocumentRoot兩項,即伺服器名和虛擬機網頁的根目錄.
可根據情況設定多個虛擬主機

設置無誤后,用httpd -t測試有無語法錯誤
service httpd reload裝載修改過的設定

現在可以用瀏覽器測試一下

最後,開放iptables中的80埠(取決於httpd.conf中的埠設定)
vi /etc/sysconfig/iptables
由於iptables是至上而下讀取配置文件規則的,所以在
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 0:1023 --syn -j REJECT
這一行之上加入允許的規則就可以了.加入:
#httpd(apache)
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 80 --syn -j ACCEPT
然後service iptables restart
重啟iptables服務
這樣,可以從internet上訪問這台主機的www服務了.

5 vsftpd

vsftpd是linux上常用的幾種ftp伺服器軟體之一,vsftpd是very secure FTP daemon的縮寫.

首先,將redhat linux 9 cd #3上的vsftpd-1.1.3-8.i386.rpm裝好

chkconfig --level 35 vsftpd on
運行級3,5下,vsftpd服務開機自動載入

service vsftpd start
啟動vsftpd服務
參數restart,stop可重啟/停止服務

配置文件:
/etc/vsftpd/vsftpd.conf
是vsftpd的主要設定文件

/etc/vsftpd.ftpusers
不能訪問ftp伺服器的用戶列表,默認root不可訪問vsftpd伺服器

/etc/vsftpd.user_list
這個文件中也是一些用戶的列表
在/etc/vsftpd/vsftpd.conf中:
1)當userlist_enable=YES(默認)時,啟用配置文件/etc/vsftpd.user_list
a)此時若沒有userlist_deny=NO,則/etc/vsftpd.user_list中的用戶也不可訪問vsftpd伺服器
b)此時若存在userlist_deny=NO,則僅接受/etc/vsftpd.user_list中存在的用戶的登錄請求(同時這些用戶不存在於/etc/vsftpd.ftpusers中)
2)當userlist_enable=NO時,則不會啟用配置文件/etc/vsftpd.user_list

下面簡單說明一下/etc/vsftpd/vsftpd.conf的參數設定:

anonymous_enable=YES
允許匿名用戶登錄

local_enable=YES
允許本地用戶登錄(linux系統下實在的帳戶)

write_enable=YES
允許上傳

local_umask=022
本地用戶上傳文件的umask設為022

xferlog_enable=YES
啟用記錄上傳/下載活動日誌

connect_from_port_20=YES
tcp埠20作為ftp-data傳送埠(一般21為ftp-control埠)

userlist_enable=YES
(請參看上面/etc/vsftpd.user_list配置文件的簡單說明)

listen=YES
使用standalone模式

local_root=/var/ftp
本地用戶登錄后的目錄為/var/ftp
如果沒有這項設定,本地用戶登錄后的目錄為自己的家目錄

chroot_list_enable=YES
讓下面配置文件中的本地用戶不能到達家目錄之外的地方
chroot_list_file=/etc/vsftpd.chroot_list

pasv_enable=YES
啟用被動模式
#port_enable=YES
啟用主動模式
注意,這兩個參數只能出現一個,另一個必需用#註釋掉(設為NO也不可以)

以上是vsftpd.conf的一些基本設定,更詳悉的設定,請參看附錄

修改好配置文件,重啟一下服務service vsftpd restart

下面開放tcp 20,21埠
在/etc/sysconfig/iptables中加入:

#vsftpd(vsftp)
-A RH-Lokkit-0-50-INPUT -p tcp -m multiport --dport 20,21 --syn -j ACCEPT

(加入的位置在REJECT規則之前)
然後service iptables restart
重啟iptables服務

這樣,vsftpd伺服器就架好了,可以用客戶端測試一下

6 samba

samba的作用是提供Unix/Linux與Windows之間的通訊,並使她們之間實現文件/印表機/設備共享.在Windows網路中,設置好samba的Linux機器可以做伺服器也可以做客戶端.

安裝以下幾個rpm包:
samba
samba-common
samba-client
samba-swat
redhat-config-samba
其中samba-swat是以web頁面方式配置samba的前端,redhat-config-samba是Xwindow下的圖形化配置程式,她們的作用都是設定/etc/samba/smb.conf這個配置文件,此文件也可以手動編輯.

chkconfig --level 35 smb on
運行級3,5下,samba服務開機自動載入

service smb start
開啟samba服務.參數包括start/restart/stop/reload等

samba的一些重要組成文件:
/usr/sbin/smbd SMB服務守護程式
/usr/sbin/nmbd NetBIOS服務守護程式
/etc/samba/smb.conf samba主配置文件
/usr/bin/smbclient 連接到SMB共享的客戶端程式
/usr/bin/testparm 檢驗smb.conf有效性的腳本
/usr/bin/smbprint 此腳本可以將列印任務送至SMB主機的印表機
/usr/bin/smbstatus 列出本地主機的SMB連接
smbfs smbfs文件系統,可以將共享文件夾用mount命令掛載至本地

samba主配置文件/etc/samba/smb.conf中的主要參數設定:
該文件中#為信息註釋符 ;為參數註釋符

#======================= Global Settings =====================================
[global]

workgroup = MYGROUP
工作組名稱

server string = Samba Server
主機說明

netbios name = SMBServer
在網路中的netbios名稱,如果沒有設定,預設值為HOSTNAME

hosts allow = 192.168.1. 192.168.2. 127.
設定哪些ip地址可訪問主機

security = user
samba的安全級別,從低到高有四級:share/user/server/domain
share: 任何用戶都可以訪問伺服器上的資源,無須帳號
user: 需要用戶名和密碼進行驗證
server: 帳號驗證交給另外一個伺服器,如交給另一台NT伺服器.
如果遞交失敗,就退到user安全級.
domain: 這個安全級別要求網路上存在一台Windows的主域控制器,samba將帳號遞交
給該伺服器驗證.
    user/server/domain要求用戶在本地linux機器上也有系統帳戶,否則不能訪問.
這裡只簡單介紹一下share/user的用法,詳悉設定請參看附錄

encrypt passwords = yes
使用加密密碼

smb passwd file = /etc/samba/smbpasswd
存放samba帳戶密碼的文件

local master = yes
samba伺服器可以成為本地主瀏覽器

os level = 33
samba伺服器的管理等級

domain master = yes
該伺服器成為域瀏覽器

preferred master = yes
該伺服器成為工作組中的首要主瀏覽器

#============================ Share Definitions ==============================
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
create mode = 0664
directory mode = 0775
上面是用戶家目錄的設置

[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
印表機設定

[document]
comment = daweicheng's document
path = /tmp/document
read only = yes
public = yes

[samba user guest]
comment = guest
path = /tmp/samba
read only = no
guest account = guest


簡單介紹一下這裡的幾個參數:

comment=xxx
共享註釋,即共享時對方主機能夠看到的文件夾名稱

path=/xxx/.../xxx/
共享的目錄

read only= yes
只讀屬性設定

public = yes
公開屬性,任何人可以看見該資源,無須帳號

guest account = xxx
訪問者的帳戶名

這裡的參數很容易理解,所以不一一列舉了,詳細請看附錄

如果你希望任何人都可訪問共享資源,需要將Global Settings的安全級設定為:
security = share
共享目錄參數需要:
public = yes
如果希望某些目錄只有特定的用戶訪問,則要將Global Settings的安全級應設定為:
security = user
共享目錄參數需要:
guest account = xxx
這個xxx用戶(下例中是NewUser)是用useradd和smbpasswd創建的:

添加samba用戶:
useradd NewUser
設定NewUser的samba密碼:
smbpasswd -a NewUser
使NewUser可以使用samba服務:
smbpasswd -e NewUser

testparm可以驗證/etc/samba/smb.conf的有效性,回車後會顯示samba的參數設定

設定無誤后,重啟smb服務,並打開iptables中的tcp 139埠:
在/etc/sysconfig/iptables中加入:

#smb(samba)
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 139 --syn -j ACCEPT

(加入的位置在REJECT規則之前)
然後service iptables restart
重啟iptables服務

查看其他主機的共享資源:
smbclient -L WindowsHostName
此處WindowsHostName就是對方的windows主機名

smbclient //WindowsHostName/ShareName
可以訪問對方主機上的ShareName共享文件夾
也可以是:
smbclient //xxx.xxx.xxx.xxx/D$
xxx.xxx.xxx.xxx表示對方的ip,D$是對方主機D盤的默認共享名稱
如果訪問的資源需要用戶名和密碼,可以加入-U參數,如:
smbclient //xxx.xxx.xxx.xxx/D$ -U UserName
然後按提示輸入密碼,登錄後會得到一個提示符,有些類似於命令行方式的ftp登錄.

掛載共享驅動器:
可以用smbmount或者mount命令
smbmount的例子:
smbmount //WindowsHostName/ShareName /mnt
這樣就將ShareName下的內容掛載在/mnt下了
也可以用mount命令,例子:
mount -t smbfs -o username=xxx //xxx.xxx.xxx.xxx/D$ /mnt/
如果不正確顯示中文,可以在-o參數后加入codepage=936,iocharset=cp936
即:
mount -t smbfs -o username=xxx,codepage=936,iocharset=cp936 //xxx.xxx.xxx.xxx/D$ /mnt/
卸載共享目錄的命令是umount

在windows中訪問samba伺服器,可以用網上鄰居
或者在"運行"中直接輸入\\xxx.xxx.xxx.xxx即可

配置samba也可用redhat-config-samba或SWAT
使用SWAT需要先設置一下:
將/etc/xinetd.d/swat中的disable = yes設定為disable = no
service xinetd restart
重啟xinetd服務
/sbin/chkconfig swat --level 35 on
在運行級3,5下讓swat服務開機自動載入
最後,執行chkconfig --list | grep swat
swat : on表示swat服務已經開啟了
在web瀏覽器中輸入http://localhost:901
以root身份進入配置界面,就可以對smb.conf進行設置了.

7 sendmail

將下面的軟體包安裝上:
sendmail
sendmail-cf
sendmail-doc
imap

chkconfig --level 35 sendmail on
運行級3,5下讓sendmail服務開機自動載入

查看/etc/services文件,確定下面幾行的內容沒有被#號註釋掉:
pop3 110/tcp pop-3 # POP version 3
pop3 110/udp pop-3
imap 143/tcp imap2 # Interim Mail Access Proto v2
imap 143/udp imap2

編輯/etc/xinetd.d/ipop3和/etc/xinetd.d/imap
將disable = yes改為disable = no

service xinetd reload
重新裝載配置文件

sendmail的主配置文件是/etc/mail/sendmail.cf
但由於該文件較大,並且語法非常深奧,所以官方文檔中不建議直接手動編輯
通常我們用m4工具和sendmail.mc模板來生成可用的sendmail.cf

/etc/mail/sendmail.mc中的註釋符為dnl,並且每個定義段結束也用dnl來標誌

編輯/etc/mail/sendmail.mc,將下面幾行註釋掉(在行首加入dnl):
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
FEATURE(`accept_unresolvable_domains')dnl
第一行的意思是只接受本機郵件
第二行的意思是接受不可解析的域名relay郵件

去掉下面兩行的註釋符(去掉行首的dnl):
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
打開SMTP認證
任何郵件試圖通過本伺服器轉發郵件必須通過SMTP認證

用m4生成sendmail.cf文件
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

編輯/etc/mail/local-host-names
加入本機的域名

service sendmail restart
重啟sendmail服務

這裡說一下/etc/mail/access檔
這個文件中可以設定哪些主機/域名/ip可以通過本郵件伺服器轉發
內容格式:
ip地址或ip段/域名/主機 RELAY/DISCARD/REJECT
RELAY: 允許轉發
DISCARD: 丟棄
REJECT: 拒絕轉發
例子:
211 RELAY
允許211地址段的郵件RELAY

makemap hash /etc/mail/access < /etc/mail/access
將access文件內容轉化為/etc/mail/access.db資料庫
這裡也可以寫:
makemap hash /etc/mail/access.db < /etc/mail/access
結果是一樣的

當然,也可以不寫access檔,SMTP認證會擋掉通不過認證的郵件轉發請求

最後設置一下iptables,打開sendmail(tcp 25),imap(tcp/udp 143),pop3(tcp/udp 110)埠:
在/etc/sysconfig/iptables中加入:
#smtp(sendmail)
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 25 --syn -j ACCEPT
#imap,pop3
-A RH-Lokkit-0-50-INPUT -p tcp -m multiport --dport 143,110 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p udp -m multiport --dport 143,110 -j ACCEPT

(加入的位置在REJECT規則之前)
然後service iptables restart
重啟iptables服務

到此,一個簡單的郵件伺服器架好了.
可以用一個系統帳號測試一下.
比如本機存在系統用戶dexter,機器的域名為dexter.testsendmail.com
那麼dexter@dexter.testsendmail.com就是一個郵件帳號
帳戶名為dexter,密碼是dexter的系統密碼
pop3/imap/stmp伺服器地址填寫本機的域名dexter.testsendmail.com
在郵件客戶端下打開SMTP認證,就可以收發郵件了

8 附錄

a) httpd.conf的詳細設定

原文地址:
https://dream4ever.org/archive/t-33200.html

作者:pc51ceo

內容:

APACHE中 httpd.conf 的中文詳解

ServerRoot /Apache
#可以用絕對路徑 e:webapache
#ServerRoot用於指定守護進程httpd的運行目錄,httpd在啟動之後將自動將進程的當前目錄改變為這個目錄,因此如果設置文件中指定的文件或目錄是相對路徑,那麼真實路徑就位於這個ServerRoot定義的路徑之下。
PidFile logs/httpd.pid
#PidFile指定的文件將記錄httpd守護進程的進程號,由於httpd能自動複製其自身,因此系統中有多個httpd進程,但只有一個進程為最初啟動的進程,它為其他進程的父進程,對這個進程發送信號將影響所有的httpd進程。PidFILE定義的文件中就記錄httpd父進程的進程號
Timeout 300
#Timeout定義客戶程序和伺服器連接的超時間隔,超過這個時間間隔(秒)后伺服器將斷開與客戶機的連接.
KeepAlive On
#在HTTP 1.0中,一次連接只能作傳輸一次HTTP請求,而KeepAlive參數用於支持HTTP 1.1版本的一次連接、多次傳輸功能,這樣就可以在一次連接中傳遞多個HTTP請求。雖然只有較新的瀏覽器才支持這個功能,但還是打開使用這個選項
MaxKeepAliveRequests 100
#MaxKeepAliveRequests為一次連接可以進行的HTTP請求的最大請求次數。將其值設為0將支持在一次連接內進行無限次的傳輸請求。事實上沒有客戶程序在一次連接中請求太多的頁面,通常達不到這個上限就完成連接了。
KeepAliveTimeout 15
#KeepAliveTimeout測試一次連接中的多次請求傳輸之間的時間,如果伺服器已經完成了一次請求,但一直沒有接收到客戶程序的下一次請求,在間隔超過了這個參數設置的值之後,伺服器就斷開連接。

ThreadsPerChild 250
MaxRequestsPerChild 0

Listen 80
#埠,啟動模塊.下面許多模塊只有在LINUX下才有用
LoadModule access_module modules/mod_access.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_module modules/mod_auth.so
LoadModule dir_module modules/mod_dir.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule mime_module modules/mod_mime.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule setenvif_module modules/mod_setenvif.so
#LoadModule cern_meta_module modules/mod_cern_meta.so
#LoadModule env_module modules/mod_env.so
#LoadModule expires_module modules/mod_expires.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule headers_module modules/mod_headers.so
#LoadModule imap_module modules/mod_imap.so
#LoadModule auth_anon_module modules/mod_auth_anon.so
#LoadModule auth_dbm_module modules/mod_auth_dbm.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule include_module modules/mod_include.so
#LoadModule info_module modules/mod_info.so
#LoadModule isapi_module modules/mod_isapi.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule status_module modules/mod_status.so
#LoadModule unique_id_module modules/mod_unique_id.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule ssl_module modules/mod_ssl.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule userdir_module modules/mod_userdir.so
LoadModule rewrite_module modules/mod_rewrite.so
#ExtendedStatus On
ServerAdmin abc@123.com
#伺服器管理員郵箱,在出錯,探針中顯示
ServerName localhost.domain.com
UseCanonicalName Off
#是否允許對每個訪問者的 DNS 域名的反向查詢
DocumentRoot /Apache
#放網頁的目錄.這個很重要.
#你設置了,e:web是目錄 而虛擬主機設置了e:webtwo
#雖然程序還是能運行,但是不在documentroot內的話,程序會有錯誤

Options FollowSymLinks MultiViews ExecCGI
AllowOverride None


Options FollowSymLinks MultiViews ExecCGI
AllowOverride None
Order allow,deny
php_admin_value open_basedir /apache/
Allow from all

#以下是關於用戶目錄配置部分,即用戶可以用http://www.xxxx.com/~username的方式來訪問自已的網站!
#UserDir /apache/webroot/aaausersfreehost/*/public_html
#
# AllowOverride None
# Options MultiViews SymLinksIfOwnerMatch IncludesNoExec ExecCGI
#下面這條指令定義php只能對public_html此目錄及其子目錄下的文件進行操作.
# php_flag engine off #表示此目錄下的PHP文件不被解釋執行,限沒有PHP許可權。
# php_admin_value open_basedir ./
# Order allow,deny
# Allow from all
#

#下面這條指令可以把虛擬目錄freehost映射到實際路徑/apache/webroot/users/下!
#AliasMatch ^/class/([0-9]).html$ /article.php?articleid=$1
#AliasMatch ^/class/([0-9] ).([0-9a-zA-Z] ).html$ /article.php?articleid=$1&amp;pagenum=$2
DirectoryIndex index.html index.htm index.php index.cgi bbs.pl index.pl admin.php login.htm login.html login.php
#默然主機頭
AccessFileName .htaccess

Order allow,deny
Deny from all

TypesConfig conf/mime.types
DefaultType text/plain

MIMEMagicFile conf/magic

#以下是限制主機同時併發連接數
#
#ServerLimit 2000
#StartServers 15
#MinSpareServers 15
#MaxSpareServers 20
#MaxClients 850 #最大客戶端
#MaxRequestsPerChild 10000 #最大請求數
#

#以下是對單個文件進行訪問控制
#
#Order allow,deny
#Allow from 允許IP
#Deny from all
#

HostnameLookups Off
#EnableMMAP off
#EnableSendfile off
ErrorLog logs/error.log
LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog logs/access.log common
#CustomLog logs/referer.log referer
#CustomLog logs/agent.log agent
#CustomLog logs/access.log combined
ServerTokens Full
ServerSignature Off
#當客戶請求的網頁並不存在時,伺服器將產生錯誤文檔,預設情況下由於打開了 ServerSignature選項,錯誤文檔的最後一行將包含伺服器的名字、Apache的版本等信息。
#Alias /class/ /apache/webroot/phpa #虛擬目錄啦
# #對虛擬目錄進行許可權配置
# Options FollowSymLinks # MultiViews ExecCGI為有CGI執行許可權
# php_admin_value safe_mode 1 #表示此目錄下的PHP腳本只能有php_safe下許可權
# php_admin_value open_basedir /apache/phpsafe/
# 此句是限制PHP的文件操作只能限於/apache/phpsafe及其子目錄下,不能對此目錄外的文進行操作
# php_flag engine off
#表示此目錄下的PHP腳本不會被解釋執行,此選項要求PHP必須以模塊方式安裝的!
# AllowOverride None
# Order allow,deny
# Allow from all #表示允許任何人從任何地方訪問
#

#ScriptAlias /cgi-bin/ E:/Apache2/cgi-bin/
#
# AllowOverride None
# Options None
# Order allow,deny
# Allow from all
#

IndexOptions FancyIndexing VersionSort
#AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
#AddIconByType (TXT,/icons/text.gif) text/*
#AddIconByType (IMG,/icons/image2.gif) image/*
#AddIconByType (SND,/icons/sound2.gif) audio/*
#AddIconByType (VID,/icons/movie.gif) video/*
#AddIcon /icons/binary.gif .bin .exe
#AddIcon /icons/binhex.gif .hqx
#AddIcon /icons/tar.gif .tar
#AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
#AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
#AddIcon /icons/a.gif .ps .ai .eps
#AddIcon /icons/layout.gif .html .shtml .htm .pdf
#AddIcon /icons/text.gif .txt
#AddIcon /icons/c.gif .c
#AddIcon /icons/p.gif .pl .py
#AddIcon /icons/f.gif .for
#AddIcon /icons/dvi.gif .dvi
#AddIcon /icons/uuencoded.gif .uu
#AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
#AddIcon /icons/tex.gif .tex
#AddIcon /icons/bomb.gif core
#AddIcon /icons/back.gif ..
#AddIcon /icons/hand.right.gif README
#AddIcon /icons/folder.gif ^^DIRECTORY^^
#AddIcon /icons/blank.gif ^^BLANKICON^^
#DefaultIcon /icons/unknown.gif
AddDescription GZIP compressed document .gz
AddDescription tar archive .tar
AddDescription GZIP compressed tar archive .tgz
ReadmeName README.html
HeaderName HEADER.html
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
AddEncoding x-compress Z
AddEncoding x-gzip gz tgz
AddLanguage ca .ca
AddLanguage cs .cz .cs
AddLanguage da .dk
AddLanguage de .de
AddLanguage el .el
AddLanguage en .en
AddLanguage eo .eo
AddLanguage es .es
AddLanguage et .et
AddLanguage fr .fr
AddLanguage he .he
AddLanguage hr .hr
AddLanguage it .it
AddLanguage ja .ja
AddLanguage ko .ko
AddLanguage ltz .ltz
AddLanguage nl .nl
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pl .po
AddLanguage pt .pt
AddLanguage pt-BR .pt-br
AddLanguage ru .ru
AddLanguage sv .sv
AddLanguage zh-CN .zh-cn
AddLanguage zh-TW .zh-tw
LanguagePriority zh-CN en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-TW
ForceLanguagePriority Prefer Fallback
#AddDefaultCharset ISO-8859-1
AddDefaultCharset GB2312
AddCharset ISO-8859-1 .iso8859-1 .latin1
AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
AddCharset ISO-8859-3 .iso8859-3 .latin3
AddCharset ISO-8859-4 .iso8859-4 .latin4
AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr .iso-ru
AddCharset ISO-8859-6 .iso8859-6 .latin6 .arb
AddCharset ISO-8859-7 .iso8859-7 .latin7 .grk
AddCharset ISO-8859-8 .iso8859-8 .latin8 .heb
AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-2022-KR .iso2022-kr .kis
AddCharset ISO-2022-CN .iso2022-cn .cis
AddCharset Big5 .Big5 .big5
# For russian, more than one charset is used (depends on client, mostly):
AddCharset WINDOWS-1251 .cp-1251 .win-1251
AddCharset CP866 .cp866
AddCharset KOI8-r .koi8-r .koi8-ru
AddCharset KOI8-ru .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-8 .utf8
AddCharset GB2312 .gb2312 .gb
AddCharset utf-7 .utf7
AddCharset utf-8 .utf8
AddCharset big5 .big5 .b5
AddCharset EUC-TW .euc-tw
AddCharset EUC-JP .euc-jp
AddCharset EUC-KR .euc-kr
AddCharset shift_jis .sjis
#以CGI方式安裝PHP
#ScriptAlias /__php_dir__/ /apache/cgiphp5/
#AddType application/x-httpd-php .php4 .php .htm .php3 .inc .fire
#Action application/x-httpd-php /__php_dir__/php.exe
#以apache的模塊方式運行php
LoadModule php4_module /apache/php/sapi/php4apache.dll
PHPINIDir /apache/php/php.ini
AddType application/x-httpd-php .php .htm .php3
AddType application/x-httpd-php-source .phps
#支持fcgi
#LoadModule fastcgi_module modules/mod_fastcgi.dll
#AddHandler fastcgi-script .fcgi .fpl
AddType application/x-tar .tgz
#AddEncoding x-compress .Z
#AddEncoding x-gzip .gz .tgz
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddHandler cgi-script .cgi .pl
#AddHandler send-as-is asis
#AddHandler imap-file map
AddHandler type-map var
#AddType text/html .shtml
#AddOutputFilter INCLUDES .shtml
#ErrorDocument 500 The server made a boo boo.
#ErrorDocument 404 /apache/yyfzx/soft
#ErrorDocument 404 /apache/yyfzx/soft
#ErrorDocument 402 http://www.example.com/subscription_info.html
BrowserMatch Mozilla/2 nokeepalive
BrowserMatch MSIE 4.0b2; nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch RealPlayer 4.0 force-response-1.0
BrowserMatch Java/1.0 force-response-1.0
BrowserMatch JDK/1.0 force-response-1.0
BrowserMatch Microsoft Data Access Internet Publishing Provider redirect-carefully
BrowserMatch ^WebDrive redirect-carefully
BrowserMatch ^WebDAVFS/1.[012] redirect-carefully
BrowserMatch ^gnome-vfs redirect-carefully
#
# SetHandler server-status
# Order deny,allow
# Deny from all
# Allow from .51web.net
#

#
# SetHandler server-info
# Order deny,allow
# Deny from all
# Allow from .51web.net
#


Include conf/ssl.conf

#以下是關於虛擬機的配置
NameVirtualHost 218.87.169.209:80

RewriteEngine On
RewriteRule ^/index.htm$ /index.php
RewriteRule ^/soft/([0-9] ).htm$ /download.php?soft=$1
RewriteRule ^/sort/([0-9-_] ).htm$ /list.php?list=$1
RewriteRule ^/sort/index.htm$ /type.php
RewriteRule ^/a-z/([0-9] ).htm$ /az.php?id=$1
DocumentRoot /apache/mayidown
ServerName mayidown.3322.org

//以 #開頭的就是解釋用.啟動的時候不載入的.我提供了一個虛擬主機給大家參考重寫URL功能
(http://www.fanqiang.com)

b) vsftpd.conf的詳細設定

原文地址:
http://www.uplinux.com/www/net/02/117.shtml

作者:施文建

內容:

vsftpd 配置手冊

......

5、VSFTPD的設置選項

  VSFTPD的配置文件/etc/vsftpd/vsftpd.conf是個文本文件。以「#」字元開始的行是註釋行。每個選項設置為一行,格式為「option=value」,注意「=」號兩邊不能留空白符。除了這個主配置文件外,還可以給特定用戶設定個人配置文件,具體介紹見后。
  VSFTPD包中所帶的vsftpd.conf文件配置比較簡單,而且非常偏執狂的(文檔自稱:-))。我們可以根據實際情況對其進行一些設置,以使得VSFTPD更加可用。

5.1、連接選項

  本部分主要是一些與建立FTP鏈接相關的選項。

5.1.1、監聽地址與控制埠

  listen_address=ip address
  此參數在VSFTPD使用單獨(standalone)模式下有效。此參數定義了在主機的哪個IP地址上監聽FTP請求,即在哪個IP地址上提供FTP服務。對於只有一個IP地址的主機,不需要使用此參數。對於多址主機,不設置此參數,則監聽所有IP地址。默認值為無。

  listen_port=port_value
  指定FTP伺服器監聽的埠號(控制埠),默認值為21。此選項在standalone模式下生效。

5.1.2、FTP模式與數據埠

  FTP 分為兩類,PORT FTP和PASV FTP,PORT FTP是一般形式的FTP。這兩種FTP在建立控制連接時操作是一樣的,都是由客戶端首先和FTP伺服器的控制埠(默認值為21)建立控制鏈接,並通過此鏈接進行傳輸操作指令。它們的區別在於使用數據傳輸埠(ftp-data)的方式。PORT FTP由FTP伺服器指定數據傳輸所使用的埠,默認值為20。PASV FTP由FTP客戶端決定數據傳輸的埠。PASV FTP這種做法,主要是考慮到存在防火牆的環境下,由客戶端與伺服器進行溝通(客戶端向伺服器發出數據傳輸請求中包含了數據傳輸埠),決定兩者之間的數據傳輸埠更為方便一些。

  port_enable=YES|NO
  如果你要在數據連接時取消PORT模式時,設此選項為NO。默認值為YES。

  connetc_from_port_20=YES|NO
  控制以PORT模式進行數據傳輸時是否使用20埠(ftp-data)。YES使用,NO不使用。默認值為NO,但RHL自帶的vsftpd.conf文件中此參數設為YES。

  ftp_data_port=port number
  設定ftp數據傳輸埠(ftp-data)值。默認值為20。此參數用於PORT FTP模式。

  port_promiscuous=YES|NO
  默認值為NO。為YES時,取消PORT安全檢查。該檢查確保外出的數據只能連接到客戶端上。小心打開此選項。

  pasv_enable=YES|NO
  YES,允許數據傳輸時使用PASV模式。NO,不允許使用PASV模式。默認值為YES。

  pasv_min_port=port number
  pasv_max_port=port number
  設定在PASV模式下,建立數據傳輸所可以使用port範圍的下界和上界,0 表示任意。默認值為0。把埠範圍設在比較高的一段範圍內,比如50000-60000,將有助於安全性的提高。

  pasv_promiscuous=YES|NO
  此選項激活時,將關閉PASV模式的安全檢查。該檢查確保數據連接和控制連接是來自同一個IP地址。小心打開此選項。此選項唯一合理的用法是存在於由安全隧道方案構成的組織中。默認值為NO。

  pasv_address=
  此選項為一個數字IP地址,作為PASV命令的響應。默認值為none,即地址是從呼入的連接套接字(incoming connectd socket)中獲取。

5.1.3 ASCII模式

  默認情況下,VSFTPD是禁止使用ASCII傳輸模式。即使FTP客戶端使用asc命令,指明要使用ASCII模式,但是,VSFTPD表面上接受了asc命令,而在實際傳輸文件時,還是使用二進位方式。下面選項控制VSFTPD是否使用ASCII傳輸模式。

  ascii_upload_enable=YES|NO
  控制是否允許使用ascii模式上傳文件,YES允許,NO不允許,默認為NO。

  ascii_download_enable=YES|NO
  控制是否允許使用ascii模式下載文件,YES允許,NO不允許,默認為NO。

5.2、性能與負載控制

5.2.1、超時選項

  idle_session_timeout=
  空閑(發獃)用戶會話的超時時間,若是超出這時間沒有數據的傳送或是指令的輸入,則會強迫斷線。單位為秒,默認值為300。

  data_connection_timeout=
  空閑的數據連接的超時時間。默認值為300 秒。

  accept_timeout=numerical value
  接受建立聯機的超時設定,單位為秒。默認值為60。

  connect_timeout=numerical value
  響應PORT方式的數據聯機的超時設定,單位為秒。默認值為60。以上兩個選項針對客戶端的,將使客戶端空閑1分鐘后自動中斷連接,並在中斷1分鐘后自動激活連接。

5.2.2 負載控制

  max_clients=numerical value
  此參數在VSFTPD使用單獨(standalone)模式下有效。此參數定義了FTP伺服器最大的併發連接數,當超過此連接數時,伺服器拒絕客戶端連接。默認值為0,表示不限最大連接數。

  max_per_ip=numerical value
  此參數在VSFTPD使用單獨(standalone)模式下有效。此參數定義每個IP地址最大的併發連接數目。超過這個數目將會拒絕連接。此選項的設置將影響到象網際快車這類的多進程下載軟體。默認值為0,表示不限制。

  anon_max_rate=value
  設定匿名用戶的最大數據傳輸速度value,以Bytes/s為單位。默認無。

  local_max_rate=value
  設定用戶的最大數據傳輸速度value,以Bytes/s為單位。默認無。此選項對所有的用戶都生效。此外,也可以在用戶個人配置文件中使用此選項,以指定特定用戶可獲得的最大數據傳輸速率。
  步驟如下:
  ①在vsftpd.conf中指定用戶個人配置文件所在的目錄,如:
  user_config_dir=/etc/vsftpd/userconf
  ②生成/etc/vsftpd/userconf目錄。
  ③用戶個人配置文件是在該目錄下,與特定用戶同名的文件,如:
  /etc/vsftpd/userconf/xiaowang
  ④在用戶的個人配置文件中設置local_max_rate參數,如:
  local_max_rate=80000
  以上步驟設定FTP用戶xiaowang的最大數據傳輸速度為80KBytes/s。

  VSFTPD 對於速度控制的變化範圍大概在80%到120%之間。比如我們限制最高速度為100KBytes/s, 但實際的速度可能在80KBytes/s 到120KBytes/s 之間。當然,若是線路帶寬不足時,速率自然會低於此限制。

5.3 用戶選項

  VSFTPD的用戶分為三類:匿名用戶、本地用戶(local user)以及虛擬用戶(guest)。

5.3.1、匿名用戶

  anonymous_enable=YES|NO
  控制是否允許匿名用戶登錄,YES允許,NO不允許,默認值為YES。

  ftp_username=
  匿名用戶所使用的系統用戶名。默認下,此參數在配置文件中不出現,值為ftp。

  no_anon_password=YES|NO
  控制匿名用戶登入時是否需要密碼,YES不需要,NO需要。默認值為NO。
  
  deny_email_enable=YES|NO
  此參數默認值為NO。當值為YES時,拒絕使用banned_email_file參數指定文件中所列出的e-mail地址進行登錄的匿名用戶。即,當匿名用戶使用banned_email_file文件中所列出的e-mail進行登錄時,被拒絕。顯然,這對於阻擊某些Dos攻擊有效。當此參數生效時,需追加banned_email_file參數

  banned_email_file=/etc/vsftpd.banned_emails
  指定包含被拒絕的e-mail地址的文件,默認文件為/etc/vsftpd.banned_emails。

  anon_root=
  設定匿名用戶的根目錄,即匿名用戶登入后,被定位到此目錄下。主配置文件中默認無此項,默認值為/var/ftp/。

  anon_world_readable_only=YES|NO
  控制是否只允許匿名用戶下載可閱讀文檔。YES,只允許匿名用戶下載可閱讀的文件。NO,允許匿名用戶瀏覽整個伺服器的文件系統。默認值為YES。

  anon_upload_enable=YES|NO
  控制是否允許匿名用戶上傳文件,YES允許,NO不允許,默認是不設值,即為NO。除了這個參數外,匿名用戶要能上傳文件,還需要兩個條件:一,write_enable參數為YES;二,在文件系統上,FTP匿名用戶對某個目錄有寫許可權。

  anon_mkdir_write_enable=YES|NO
  控制是否允許匿名用戶創建新目錄,YES允許,NO不允許,默認是不設值,即為NO。當然在文件系統上,FTP匿名用戶必需對新目錄的上層目錄擁有寫許可權。

  anon_other_write_enable=YES|NO
  控制匿名用戶是否擁有除了上傳和新建目錄之外的其他許可權,如刪除、更名等。YES擁有,NO不擁有,默認值為NO。

  chown_uploads=YES|NO
  是否修改匿名用戶所上傳文件的所有權。YES,匿名用戶所上傳的文件的所有權將改為另外一個不同的用戶所有,用戶由chown_username參數指定。此選項默認值為NO。

  chown_username=whoever
  指定擁有匿名用戶上傳文件所有權的用戶。此參數與chown_uploads聯用。不推薦使用root用戶。

5.3.2、本地用戶

  在使用FTP服務的用戶中,除了匿名用戶外,還有一類在FTP伺服器所屬主機上擁有賬號的用戶。VSFTPD中稱此類用戶為本地用戶(local users),等同於其他FTP伺服器中的real用戶。

  local_enable=YES|NO
  控制vsftpd所在的系統的用戶是否可以登錄vsftpd。默認值為YES。

  local_root=
  定義所有本地用戶的根目錄。當本地用戶登入時,將被更換到此目錄下。默認值為無。

  user_config_dir=
  定義用戶個人配置文件所在的目錄。用戶的個人配置文件為該目錄下的同名文件。個人配置文件的格式與vsftpd.conf格式相同。例如定義user_config_dir=/etc/vsftpd/userconf,並且主機上有用戶xiaowang,lisi,那我們可以在user_config_dir的目錄新增名為xiaowang、lisi的兩個文件。當用戶lisi 登入時,VSFTPD則會讀取user_config_dir下lisi這個文件中的設定值,應用於用戶lisi。默認值為無。

5.3.3、虛擬用戶

  guest_enable=YES|NO
  若是啟動這項功能,所有的非匿名登入者都視為guest。默認值為關閉。

  guest_username=
  定義VSFTPD的guest用戶在系統中的用戶名。默認值為ftp。

c) smb.conf的詳細設定

原文地址:
http://www.douzhe.com/linuxtips/1550.html
http://www.douzhe.com/linuxtips/1561.html

作者:王波(http://www.douzhe.com/linuxtips/1550.html)

內容(節選自http://www.douzhe.com/linuxtips/1550.html):

配置samba

......

#======================= Global Settings =====================================
[global]
  [global]部分定義了伺服器本身使用的配置參數,以及其他共享資源部分使用的預設配置參數,因此相當重要。
# workgroup = NT-Domain-Name or Workgroup-Name, eg: REDHAT4
workgroup = MYGROUP
  工作組設置本地網路使用工作組名字(或者是NT域名字),這對於將正確進行瀏覽數據中非常重要。 否則,Windows客戶就不能從其網路鄰居中發現這個Samba伺服器。
# server string is the equivalent of the NT Description field
server string = Samba Server
  server string是對於本地伺服器的簡單描述,這些信息將作為這台伺服器的屬性,返回給Browser, 顯示在Windows客戶中作為對這個伺服器的描述。
# 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地址範圍,通過指定一系列網路地址,使得只有這些網路中的電腦才能訪問這台伺服器提供的資源,以提供安全限制。預設情況下,這行配置被註釋了,使得所有的客戶都可以訪問這台電腦,這樣就存在一定的安全問題。
# If you want to automatically load your printer list rather
# than setting them up individually then you'll need this
load printers = 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, sysv, plp, lprng, aix, hpux, qnx
; printing = bsd
  這些設置是用於設置samba伺服器的印表機資源,load printer=yes就允許samba伺服器對外共享伺服器的印表機。由於不同的Unix系統中會使用不同的列印系統和不同的列印設置檔案,因此需要設置正確的 printcap和printing類型,對於使用BSD列印系統的FreeBSD來講,列印系統為BSD,使用的設置檔案為 printcap,這些是預設設置,不需要改動。對於使用Unix System V列印系統的Samba,則需要重新進行 設置。
# Uncomment this if you want a guest account, you must add this to /etc/passwd
# otherwise the user "nobody" is used
; guest account = pcguest
  由於Mircrosoft客戶沒有用戶的概念,因此有時會用沒有用戶和密碼的請求訪問伺服器,就需要將這個沒有用戶的請求映射為系統中的某個用戶,Samba伺服器才能安全的訪問系統。guest account 就定義這樣的請求在Unix下對應的用戶許可權。為了安全的原因,不能讓這個帳戶在系統中有可寫的許可權,通常可以增加一個專用帳戶,如pcguest。如果這個設置被註釋的情況下,系統預設使用nobody執行 Windows客戶的請求。一些使用者建議不要使用nobody用戶,因為系統中的很多程序預設都使用它,因 此就會有安全問題。
# this tells Samba to use a separate log file for each machine
# that connects
log file = /var/log/log.%m

# Put a capping on the size of the log files (in Kb).
max log size = 50
  這裡定義samba的日誌檔案為/var/log目錄下的以log為前綴的檔案,%m用於代表從訪問的NetBIOS 電腦名,如果使用的用戶級認證,還可以使用%U表示不同的登錄用戶。例如從一台名字為win95c的計算機訪問samba伺服器的日誌,將記錄在/var/log/log.win95c檔案中。max log size定義每個日誌檔案的存 儲限制。
# Security mode. Most people will want user level security. See
# security_level.txt for details.
security = user
# Use password server option only with security = server
; password server =

# You may wish to use password encryption. Please read
# ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba documentation.
# Do not enable this option unless you have read those documents
; encrypt passwords = yes
  在SMB協議中,有多個不同的認證方式,包括簡單的共享級認證和用戶級認證。Unix為多用戶操作系統,預設就使用用戶級認證方式。當使用用戶級認證的時候,Samba伺服器使用Unix操作系統的用戶和密碼(來自/etc/passwd )對用戶進行認證,這是一種獨立的認證方式。而有時候希望所有的伺服器使用同一個認證資料庫進行統一認證,因此就導致出現了基於域的統一認證模式。在一個域中,用戶只需要通過域控制器進行認證即可,域中其他SMB伺服器就 將認可域控制器的認證。
  為了使Samba伺服器支持域認證方式,可以有兩種不同的設置方式,一種為真正的域認證,另一種為伺服器認證方式,將Samba伺服器配置為通過伺服器驗證用戶,這需要指定security=server,以及指定password server的名字為NT的域控制器。認證伺服器的方式不能事先域認證方式提供的一些特徵,但它的適用範圍並不僅限於域,使用工作組的網路也能通過統一的認證伺服器來使用統一認證模式。設置域認證方式在後面進行詳細解釋。
  在Windows NT 4及Windows 98之後,客戶和伺服器之間進行認證時,密碼不再以明文的方式 在網路中傳輸了。為了支持加密密碼傳輸,需要設置encrypt passwords選項。同樣,這也需要其他複雜的 設置。
# 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
; include = /usr/local/etc/smb.conf.%m
  系統管理員可以為每個特定的電腦定製一個特定的配置檔案,那裡的設置將覆蓋smb.conf中的缺 省設置。這樣就可以針對不同的電腦提供不同的配置。
# Most people will find that this option gives better performance.
# See speed.txt and the manual pages for details
socket options = TCP_NODELAY
  socket參數用於配置對TCP的處理方式,以適合Microsoft客戶的特徵。Microsoft習慣為每個很短的會話都建立單獨的連接,而不是使用一個連接進行多次傳輸,這樣在傳輸中就需要進行多次連接會話設定過程,對性能有一定影響。為了改善性能,需要設置TCP_NODELAY或IPTOS_LOWDELAY選項。
# 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向多個界面廣播b-node廣播包,以及為這些 界面提供資源服務,否則samba就會只向某一個界面提供網路服務。當然也可以設置這個參數,使得samba 只服務於某個指定的網路,而不是伺服器連接所有的網路。
# 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

# OS Level determines the precedence of this server in master browser
# elections. The default value should be reasonable
; os level = 33

# 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

# 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
# Use only if you have an NT server on your network that has been
# configured at install time to be a primary domain controller.
; domain controller =
  這些設置選項主要用於SMB網路中進行瀏覽時,設置samba伺服器的行為。預設情況不讓samba伺服器參加broswser的推舉過程,為了使得samba伺服器能成為browser,就需要設定local master =yes。然後samba服務就可以根據os level設置的權重進行推舉,預設的os level為0,這個權重不會贏得推舉。但可以取消註釋,將os level設置為33,這將在與所有Windows電腦(包括Windows NT)的推舉競賽中獲得勝利,因為NT server的權重為32。設置比33更高的權重,只是在不同的samba 伺服器之間進行選擇時才有意義。
  由於Unix及Samba伺服器在同樣硬體配置下具有更高的網路性能,因此一般情況下,使用Samba伺服器作Browser更佳。當然可能在Samba伺服器啟動之前,網路中都已經存在了Browser了,一般情況下不必重新進行推舉過程,讓網路中的現有Browser繼續發揮作用。如果希望Samba伺服器總是成為Browser,可以設置當Samba伺服器啟動時,迫使網路中重新進行推舉過程,這需要設定perfered master參數。
  通常Samba能夠勝任master Browser的角色,然而在多個子網的情況時,網路上就會存在Local master Browser和Domain master Browser。以上的設置只能使Samba成為 Local master Browser,預設Samba並不參加Domain master Brower的推舉 。設置Samba伺服器成為Domain master Browser就必須使用domain master參數進 行設置,這對於使用工作組方式進行跨子網瀏覽意義重大。
  但是如果網路使用的是NT的域方式,就要使用NT的域控制器作為Domain master Browser ,不要設置與NT域控制器同一個子網中的Samba伺服器的domain brower與browser功能,以免它和域控制器競爭。不讓Samba伺服器和NT域控制器競爭的原因是由於Windows NT中域控制器還涉及域認證(不是認證域用戶,而是認證域上的合法成員電腦),SMB協議中各種複雜功能交錯混合,瀏覽和認證兩種不同的功能竟也混合在一起。由於域控制器完成的域認證任務,Samba伺服器不能夠完成,因此為了避免與NT域控制器相互衝突,最好 使用域控制器作Domain master Browser。
  讓Samba伺服器了解目前域中存在的域控制器的方法是指定在設置檔案中指定域基本控制器PDC(primary Domain Controller)的NetBIOS名字,這需要使用domain controller參 數進行設置。
# Enable this if you want Samba to be a domain logon server for
# Windows95 workstations.
; domain logons = yes

# 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 = \%LProfiles\%U
  當用戶通過一台Windows 9x客戶機使用用戶級認證訪問網路時,他可以選擇登錄進網路中的域。這意味著他不但要在SMB伺服器中進行驗證,而且會執行伺服器中相應目錄中的登錄腳本,以自動執行一些相關設置。通常這種登錄 功能是由Windows NT伺服器來執行的,然而Samba伺服器也能完成這個任務,但必須設定domain logons 參數。此後就可以對不同的客戶電腦或不同用戶指定相應的登錄腳本。這個功能還必須要求在本配置檔案後面設置 netlogon共享選項,以便客戶機能訪問相應的登錄腳本。
  除了登錄腳本之外,Windows NT中為了支持移動用戶在不同地點進行漫遊,也提供了針對每個用戶的描述其使用環境的Profile檔案,Samba伺服器也可以通過logon path來支持對windows客戶機這種漫遊能力的支持。這樣當Windows客戶機使用漫遊功能的時候,客戶機會自動將用戶的配置檔案保存到伺服器上,此後每次登錄進域的時候都重新下載這個配置檔案,設置Windows桌面環境。
# Windows Internet Name Serving Support Section:
# WINS Support - Tells the NMBD component of Samba to enable it's WINS Server
; wins support = yes
# 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 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

# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names
# via DNS nslookups. The built-in default for versions 1.9.17 is yes,
# this has been changed in version 1.9.18 to no.
dns proxy = no
  上面的這些選項是用於設置NetBIOS名字解析方式,wins support選項使得nmdb能對外表現 為一個NBNS伺服器。wins server用於指定一個外部名字伺服器的地址(可以為NT上的wins伺服器或另一個Samba伺服器),使得nmbd能用做NBNS客戶端,通過訪問該wins名字伺服器解析NetBIOS名字。
  此外,還有一些不使用名字伺服器進行解析的NetBIOS客戶,如果名字伺服器位於另一個子網上,那麼它們就無法正確解析名字,而Samba可以使用wins proxy幫助它們使用名字伺服器解析地址。例如一個WINS伺服器在另一個子網上,本地子網內的Samba伺服器配置了wins server的地址,其他Windows客戶沒有設置wins伺服器地址,它們使用b-node廣播方式查詢名字,在這台Samba伺服器設置了wins proxy能力之後,它就能代替wins伺服器回應客戶請求。因此要用作wins代理,就必須本身能使用名字伺服器進行解析,就要 求先設置wins server參數。
  此外,NetBIOS名字解析也可以擴展到通過DNS查詢進行幫助,使用dns proxy設置就能讓Samba 伺服器通過dns進行查詢,回應NetBIOS名字查詢請求。
* [homes]個人目錄共享
#============================ Share Definitions ==============================
[homes]
comment = Home Directories
browseable = no
writable = yes
  [homes]部分使得每個Unix用戶通過SMB客戶登錄上來的時候,可以共享使用他自己的個人目錄。這個 共享資源具備特別屬性,當用戶登錄上之後,共享名就不是homes,而是被伺服器映射為用戶自己的標識符。
  設置這個特別的共享選項,就允許每個用戶訪問自己的個人目錄,而不必為每個用戶都配置一個共享資源部分。正由 於系統會自動映射,因此就不需要定義要共享的檔案目錄路徑,而在其它檔案資源共享選項中,都需要使用path參數進行 定義。
  由於Samba系統會自動將homes共享名改變為用戶的個人標識符,因此要設定browseable=no ,設置homes本身這個名字不出現在資源列表中。writable為用戶寫許可權設置,由於是在用戶的個人目錄下,用 戶可以具備寫許可權。
* [netlogon]與[Profiles]
# 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
  當允許Samba伺服器支持客戶的網路登錄功能之後(設置domain logon),就需要設置 [netlogon]部分(刪除註釋符號),為guest用戶打開登錄路徑的訪問許可權,以保證每個用戶都能訪問其自己的登錄腳本。由於需要使用guest對應的Unix帳戶訪問登錄腳本,這個登錄路徑及其下面的腳本檔案都要允許該Unix帳號可 以讀取。
  建立這個目錄之後,要設定正確的許可權,並且創建這個目錄下對應各個電腦或用戶的登錄腳本,以提供給客戶正確的登錄腳本。
# 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
  當支持Windows電腦漫遊能力時,可以設定[Profiles]部分,並為相應的路徑建立目錄,及分配許可權。 來為Window電腦用戶設置桌面環境。
* [Printers]印表機設置
# NOTE: If you have a BSD-style print system there is no need to
# specifically define each individual printer
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
# Set public = yes to allow user 'guest account' to print
guest ok = no
writable = no
printable = yes
  這個部分就用於設置將printcap中定義的所有印表機使用的相關設置,預設情況下允許所有的合法客戶使用 所有的印表機。BSD風格的列印系統,不需要任何設置就能正確共享所有的印表機,當然也可以使用printer參數指 定具體的印表機以提供共享。而path參數定義的是印表機緩衝區的位置。guest ok、writeable用於設 置正確的許可權,而 printable用於設置列印屬性。
  由於Windows的列印驅動已經將要列印的檔案轉化為印表機支持的那種描述語言,因此這些列印檔案不再需要 任何過濾器進行轉換。因此需要在printcap中定義一個不使用任何過濾器、直接將列印文檔輸出到印表機埠的列印 機選項。
* 其他專有共享目錄
# 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]
; 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]
; 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]
; 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.
;[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.
;[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




[火星人 via ] 快速架設apache/vsftpd/samba/sendmail伺服器(1)已經有186次圍觀

http://www.coctec.com/docs/net/show-post-68412.html