- 10月 07 週二 200823:10
[轉貼]htaccess使用指南
- 10月 07 週二 200823:10
[轉貼]Apache的httpd.conf中文說明
對看不懂英文的我來說~是很有用的資訊
這是 Apache 的 http.conf 的說明 (已翻譯成中文哦! )
#
# 基於 NCSA 服務的設定檔。
#
#這是Apache伺服器主要設定檔。
#它包含伺服器的影響伺服器運行的設定指令。
#參見<URL>以取得關於這些指令的詳細資訊
#
#不要只是簡單的閱讀這些指令資訊而不去理解它。
#這裡只是做了簡單的說明,如果你沒有參考線上檔,你就會被警告。
#
#這些設定指令被分為下面三個部分:
#1. 控制整個Apache伺服器行為的部分(即全局環境變數)
#2. 定義主要或者預設服務參數的指令,也為所有虛擬主機提供預設的設定參數
#3. 虛擬主機的設定參數
#
#設定和日誌檔案名:如果你指定的檔案名以「/」開始(win32下以「dirver:/」),
#伺服器將使用絕對路徑,如果檔案名不是以「/」開始的,那麼它將把ServerRoot
#的值附加在檔案名的前面,例如,對「logs/foo.log",如果ServerRoot的值
#為「/usr/local/apache2」,則該文件應為「/usr/local/apache2/logs/foo.log」
#
##第一區:全局環境參數
#
#這裡設定的參數將影響整個Apache伺服器的行為;
#例如Apache能夠處理的併發連線的數量等。
#
#ServerRoot:指出伺服器保存其設定、出錯和日誌檔等的根目錄。
#
#注意!如果你想要將它指定為NFS或其他網路上的位置,
#請一定要去閱讀與LockFile有關的文檔(可能在
#<URL>)。
#這將會使你自己也能解決很多問題。
#
#路徑的結尾不要添加斜線。
#
ServerRoot "/usr/loacl/apache2"
#
#串列訪問的鎖檔必須保存在本地磁片上
#
<IfModule>
<IfModule>
#LockFile logs/accept.lock
</IfModule>
</IfModule>
#ScoreBoardFile:用來保存內部服務進程資訊的檔。
#如果未指明(預設),記分板(scoreboard)將被保存在一個匿名的共用記憶體段中,
#並且它不能被第三方軟體所使用。
#如果指定了,要確保不能使用兩個Apache使用同一個記分板檔,
#這個記分板檔必須保存在本地磁片上。
#
<IfModule>
<IfModule>
#ScoreBoardFile logs/apache_runtime_status
<IfModule>
<IfModule>
#
#PidFile:記錄伺服器啟動進程號的檔。
#
<IfModule>
PidFile logs/httpd.pid
</IfModule>
#
#Timeout:接收和發送前超時秒數
#
Timeout 300
#
#KeepAlive:是否允許穩固的連接(每個連接有多個連線),
#設為"Off"則停用。
#
KeepAlive On
#
#MaxKeepAliveRequests:在穩固連接期間允許的最大連線數,
#設為0表示無限制接入。
#我們推薦你將其設為一個較大的值,以便提高性能
MaxKeepAliveRequests 100
#
#KeepAliveTimeout:在同一個連接上從同一台客戶上接收連線的秒數
#
KeepAliveTimeout 15
##
##Server-Pool大小設定(針對MPM的)
##
# prefork MPM
# StartServers:啟動時伺服器啟動的進程數
# MinSpareServers:保有的備用進程的最小數目
# MaxSpareServers:保有的備用進程的最大數目
# MaxClients:伺服器允許啟動的最大進程數
# MaxRequestsPerChild:一個服務進程允許的最大連線數
<IfModule>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestPerChild 0
</IfModule>
# worker MPM
# StartServers:伺服器啟動時的服務進程數目
# MaxClients:允許同時連接的最大用戶數目
# MinSpareThreads:保有的最小工作線程數目
# MaxSpareThreads:允許保有的最大工作線程數目
# ThreadsPerChild:每個服務進程中的工作線程常數
# MaxRequestsPerChild:服務進程中允許的最大連線數目
<IfModule>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
# perchild MPM
# NumServers:服務進程數量
# StartThreads:每個服務進程中的起始線程數量
# MinSpareThreads:保有的最小線程數量
# MaxSpareThreads:保有的最大線程數量
# MaxThreadsPerChild:每個服務進程允許的最大線程數
# MaxRequestsPerChild:每個服務進程允許連接的最大數量
<IfModule>
NumServers 5
StartThreads 5
MinSpareThreads 5
MaxSpareThreads 10
MaxThreadsPerChild 20
MaxRequestsPerChild 0
</IfModule>
# WinNT MPM
# ThreadsPerChild:服務進程中工作線程常數
# MaxRequestsPerChild:服務進程允許的最大連線數
<IfModule>
ThreadsPerChild 250
MaxRequestsPerChild 0
</IfModule>
# BeOS MPM
# StartThreads:伺服器啟動時啟動的線程數
# MaxClients:可以啟動的最大線程數(一個線程等於一個用戶)
# MaxRequestsPerThread:每個線程允許的最大連線數
<IfModule>
StartThreads 10
MaxClients 50
MaxRequestsPerThread 10000
</IfModule>
# NetWare MPM
# ThreadStachSize:為每個工作線程分配的堆疊尺寸
# StartThreads:伺服器啟動時啟動的線程數
# MinSpareThreads:用於處理實發連線的空閒線程數
# MaxSpareThreads:空閒線程的最大數量
# MaxThreads:在同一時間活動的最大線程數
# MaxRequestPerChild:一個線程服務連線的最大數量,
# 推薦將其設定為0,以實現無限制的接入
<IfModule>
ThreadStackSize 65536
StartThreads 250
MinSpareThreads 25
MaxSpareThreads 250
MaxThreads 1000
MaxRequestPerChild 0
</IfModule>
# OS/2 MPM
# StartServers:啟動的服務進程數量
# MinSpareThreads:每個進程允許的最小空閒線程
# MaxSpareThreads:每個進程允許的最大空閒線程
# MaxRequestsPerChild:每個服務進程允許的最大連接數
<IfModule>
StartServers 2
MinSpareThreads 5
MaxSpareThreads 10
MaxRequestsPerChild 0
</IfModule>
#
# Listen:允許你綁定Apache服務到指定的IP位址和埠上,以取代預設值
# 參見<VirtualHost>指令
# 使用如下命令使Apache只在指定的IP位址上監聽,
# 以防止它在IP地址0.0.0.0上監聽
#
# Listen 12.34.56.78:80
Listen 80
#
# 動態共用支援(DSO)
#
# 為了能夠使用那些以DSO模式編譯的模組中的函數,你必須有相應的「LoadModule」行,
# 因此,在這裡包含了這些指令,以便能在使用它之前啟動。
# 那些靜態編譯的模組不需要在這裡列出 (即以「httpd -l」列出的模組)
#
# 示例:
# LoadModule foo_module modules/mod_foo.so
#
#
# ExtendedStatus:當調用「server-status」時,控制Apache是產生「全」狀態
# 資訊(ExtendedStatus On),還是產生基本資訊(ExtendedStatus Off)。
# 預設為off
#
# ExtendedStatus On
### 第二區:「主」服務設定
#
# 這一區建立被 「主」 伺服器用的指令值,以回應那些不被 <VirtualHost>
# 定義處理的任何連線。
# 這些數值也提供預設值給後面定義的<VirtualHost>容器。
# 如果<VirtualHost>中有定義,那麼這裡定義的指令值將被
# <VirtualHost>中的定義所覆蓋。
#
<IfModule>
<IfModule>
#
# 如果你想使httpd以另外的用戶或組來運行,你必須在開始時以root方式啟動
# 然後再將它切換為你想要使用的用戶或組。
#
# User/Group:運行httpd的用戶和組
# 在SCO (ODT3)上使用「User nouser」和「Group nogroup」
# 在HPUX上,你可能不能以nobody身份使用共用記憶體,建議創建一個www用戶。
# 注意一些核心(kernel)在組ID大於60000時拒絕setgid(Group)或semctl(IPC_SET),
#節在這些系統上不要使用「Group #-1」。
#
User nobody
Group #-1
</IfModule>
</IfModule>
#
# ServerAdmin:你的郵件地址,當發生問題時Apache將向你發出郵件。
# 作為一個出錯文檔,這個位址顯示在server-generated頁上,
# 例如:admin@your-domain.com
#
ServerAdmin admin@your-domain.com
#
# ServerName指定Apache用於識別自身的名字和埠號。
# 通常這個值是自動指定的,但是我們推薦你顯式的指定它以防止啟動時出錯
#
# 如果你為你的主機指定了一個無效的DNS名,server-generated重定向將不能工作。
# 參見UseCanonicalName指令
#
# 如果你的主機沒有註冊DNS名,在這裡鍵入它的IP位址
# 無論如何,你必須使用它的IP位址來提供服務,
# 這裡使用一種容易理解的方式重定向服務
# 阿傑老師註解: 一 定要設,不然網址後一定要加 / 才能連結
ServerName jstudio.idv.tw
#
# UseCanonicalName:決定Apache如何構造URLS和 SERVER_NAME 和 SERVER_PORT 的指令。
# 當設定為 「Off」時,Apache會使用用戶端提供的主機名和埠號。
# 當設定為「On」,Apache會使用ServerName指令的值。
#
UseCanonicalName Off
#
# DocumentRoot:你的文檔的根目錄。預設情況下,所有的連線從這個目錄進行應答。
# 但是可以使用符號鏈結和別名來指向到其他的位置。
# 阿傑老師註解 : 這是網站檔案真正的位置
DocumentRoot "/home/redhat/public_html"
#
# Apache可以存取的每個目錄都可以設定存取許可權(包括它的子目錄)。
#
# 首先,我們設定一個高限制的特徵。
# 這將禁止訪問檔系統所在的目錄,並添加你希望允許訪問的目錄塊。
# 如下所示
<Directory>
Order Deny,Allow
Deny from all
</Directory>
#
# 注意從這裡開始你一定要明確地允許哪些特別的特徵能夠被使用。
# - 所以,如果Apache沒有像你所期待的那樣工作的話,
# 請檢查你是否在下面明確的指定它可用。
#
#
# 這將改變到你設定的DocumentRoot
#
<Directory>
#
# Options:這個指令的值可以是「None」,「All」,或者下列選項的任意組合:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# 注意,「MultiViews」必須被顯式的指定,「Options All」不能為你提供這個特性。
#
# 這個指令既複雜又重要,請參見
#「http://httpd.apache.org/docs-2.0/mod... 的資訊。
#
Options FollowSymLinks
#
# AllowOverride控制那些被放置在.htaccess檔中的指令。
# 它可以是「All」,「None」,或者下列指令的組合:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
#
# 控制誰可以獲得服務。
#
Order allow,deny
Allow from all
</Directory>
#
# UserDir:指定在得到一個~user連線時將會添加到用戶home目錄後的目錄名。
#
UserDir public_html
# 為防止在UserDir指令上的漏洞,對root用戶設定
# 象「./」這樣的UserDir是非常有用的。
# 如果你使用Apache 1.3或以上版本,我們強烈建議你
# 在你的伺服器設定檔中包含下麵的行
UserDir disabled root
#
# 下面是一個使用UserDir指令使一個站點的目錄具有唯讀屬性的示例:
#
# <Directory>
# AllowOverride FileInfo AuthConfig Limit Indexes
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludeNoExec
# <Limit>
# Order allow,deny
# Allow from all
# </Limit>
# <LimitExcept>
# Order deny,allow
# Deny from all
# </LimitExcept>
# </Directory>
#
# DirectoryIndex:定義連線是一個目錄時,Apache向用戶提供服務的檔案名
#
# index.html.var檔(一個類型映像檔)用於提供一個文檔處理列表,
# 出於同樣的目的,也可以使用MultiViews選項,但是它會非常慢。
#
DirectoryIndex index.php index.html index.html.var
#
# AccessFileName:在每個目錄中查詢為目錄提供附加設定指令的檔的檔案名。
# 參見AllowOverride指令。
#
AccessFileName .htaccess
#
# 下面的行防止.htaccess和.htpasswd檔被Web客戶查看。
#
<Files>
Order allow,deny
Deny from all
</Files>
#
# Typeconfig:定義在哪裡查詢mime.types文件。
#
TypeConfig conf/mime.types
#
# DefaultType:定義當不能確定MIME類型時伺服器提供的預設MIME類型。
# 如果你的服務主要包含text或HTML文檔,「text/plain」是一個好的選擇;
# 如果大多是二進位文檔,諸如軟體或圖像,你應使用
# 「application/octer-stream」來防止流覽器象顯示文本那樣顯示二進位檔。
#
DefaultType text/plain
#
# mod_mime_magic允許伺服器從自己定義自己類型的檔中使用不同的線索(hints),
# 這個MIMEMagicFile指令定義hints定義所在的檔。
#
<IfModule>
MIMEMagicFile conf/magic
</IfModule>
#
# HostnameLookups:指定記錄用戶端的名字還是IP位址,例如,本指令為on時
# 記錄主機名,如www.apache.org;為off時記錄IP位址,204.62.129.132。
# 預設值為off,這要比設為on好得多,因為如果設為on則每個用戶端連線都將會
# 至少造成對 nameserver 進行一次查詢。
#
HostnameLookups Off
#
# EnableMMAP:控制是否進行記憶體傾印(如果作業系統支援的話)。
# 預設為on,如果你的伺服器安裝在網路檔系統上(NFS),請關閉它。
# 在一些系統上,關閉它會提升系統性能(與檔系統類型無關);
# 具體情況請參閱http://httpd.apache.org/docs-2.0/mod...tml#enablemmap
#
# EnableMMAP off
#
# EnableSendfile:控制是否使用sendfile kernel支援發送檔
# (如果作業系統支援的話)。預設為on,如果你的伺服器安裝在網路檔系統
# (NFS)上,請你關閉它。
# 參見http://httpd.apache.org/docs-2.0/mod...enablesendfile
#
# EnableSendfile off
#
# ErrorLog:錯誤日誌檔定位。
# 如果你沒有在<VirtualHost>內定義ErrorLog指令,這個虛擬主機的錯誤資訊
# 將記錄在這裡。如果你在那兒定義了ErrorLog,這些錯誤資訊將記錄在你所
# 定義的檔裡,而不是這兒定義的檔。
#
ErrorLog logs/error_log
#
# LogLevel:控制記錄在錯誤日誌檔中的日誌資訊數量。
# 可能的值包括:debug,info,notice,warn,error,crit,alert,emerg。
#
LogLevel warn
#
# 下面的指令為CustomLog指令定義格式別名。
#
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
# 你需要安裝了mod_logio.c模組才能使用%I和%O。
# LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %I %O" combinedio
#
# 指定接入日誌檔的定位和格式(一般日誌格式)。
# 如果你沒有在<VirtualHost>內定義這個指令,傳輸資訊將記錄在這裡,
# 如果你定義了這個指令,則記錄在你指定的位置,而不是這兒定義的位置。
#
CustomLog logs/access_log common
#
# 如果你想要記錄agent和referer資訊,可以使用下面的指令
#
# CustomLog logs/referer_log referer
# CustomLog logs/agent_log agent
#
# 如果你想要使用一個檔記錄access,agent和referer資訊,
# 你可以如下定義這個指令:
#
# CustomLog logs/access_log combined
#
# ServerTokens
# 這個指令定義包含在HTTP回應頭中的資訊類型。預設為「Full」,
# 這表示在回應頭中將包含模組中的作業系統類型和編譯資訊。
# 可以設為列各值中的一個:
# Full | OS | Minor | Minimal | Major | Prod
# Full傳達的資訊最多,而Prod最少。
#
ServerTokens Full
#
# 隨意的添加包含伺服器版本和虛擬主機名字一行資訊到server-generated輸出頁中
# (內部錯誤文檔,FTP目錄列表,mod_status和mod_info輸出等等,除了CGI錯誤
# 或自定義的錯誤文檔以外)。
# 設為「EMail」將包含一個指向ServerAdmin的mailto:連接。
# 可以為如下值:On | Off | EMail
#
ServerSignature On
#
# Aliases:在這時添加你需要的別名,格式如下:
# Alias 別名 真實名
#
# 注意,如果你在別名的未尾包含了「/」,那麼在URL中也需要包含「/」。
# 因此,「/icons」不是這個示例中的別名。
# 如果別名中以「/」結尾,那麼真實名也必須以「/」結尾,
# 如果別名中省略了結尾的「/」,那麼真實名也必須省略。
#
# 我們使用別名「/icons/」來表示FancyIndexed目錄列表,如果你不使用、
# FancyIndexing,你可以註釋掉它。
#
# Alias /icons/ "/usr/local/apache2/icons/"
# <Directory>
# Options Indexes MultiViews
# AllowOverride None
# Order allow,deny
## Allow from all
# </Directory>
#
# 這將改變ServerRoot/manual。這個別名提供了手冊頁所在的位置,
# 即使你改變了你的DocumentRoot。如果你對有無手冊頁並不在意的話,
# 你可以註釋掉它。
#
Alias /manual "/usr/loacl/apache2/manual"
<Directory>
Options Indexes FollowSymLinks MultiViews IncludesNoExec
AddOutputFilter Includes html
Order allow,deny
Allow from all
</Directory>
#
# ScriptAlias:指定包含服務腳本的目錄。
# ScriptAliases 本質上與Aliases一樣,除了這裡的文檔在連線時做為程式處理處理以外。
# 尾部的「/」規則與Alias一樣
#
ScriptAlias /cgi-bin/ "/usr/loacl/apache2/cgi-bin/"
# 這裡是添加php 4支援的指令
AddType application/x-httpd-php .php
LoadModule php4_module modules/libphp4.so
<IfModule>
#
# 添加mod_cgid.c設定,mod_cgid提供使用cgid進行通訊的UNIX套接字的
# 腳本介面路徑。
#
# Scriptsock logs/cgisock
</IfModule>
#
# 將"/usr/local/apache2/cgi-bin"改為你的ScriptAliased指定的CGI目錄,
# 如果你設定了的話。
#
<Directory>
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
#
# Redirect允許你告訴用戶端使用存在於伺服器名字空間中的文檔,
# 而不是現在的,這幫助客戶定位那些改變了位置的文檔。
# 例如:
# Redirect permanent /foo http://www.example.com/bar
#
# 控制server-generated目錄列表顯示的指令
#
#
# IndexOptions:控制server-generated目錄列表顯示特徵。
#
IndexOptions FancyIndexing VersionSort
#
# AddIcon* 指令告訴伺服器不同副檔名的圖像檔如何顯示,
# 只適用於FancyIndexed指令
#
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 為那些沒有顯式定義圖示的檔提供處理
#
DefaultIcon /icons/unknown.gif
#
# AddDescription允許你在server-generated索引後放置一個簡短的說明。
# 只對FancyIndexed指令有效。
# 格式:AddDescription "說明" 檔案名
#
# AddDescription "GZIP compressed document" .gz
# AddDescription "tar archive" .tar
# AddDescription "GZIP compressed tar archive" .tgz
#
# ReadmeName指定伺服器預設查找的README檔的名字,並添加到目錄列表中
#
# HeaderName指定目錄列表首碼檔的檔案名
ReadmeName README.html
HeaderName HEADER.html
#
# IndexIgnore指定目錄索引忽略並且不包含在列表中的檔案名集合,
# 支援shell類型的通配符。
#
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
#
# AddEncoding允許你在資訊傳送中使用(Mosaic/X 2.1+)解壓縮資訊,
# 注意:不是所有的流覽器都支援這個選項。
# 儘管名字相似,但是下列的指令與上面的FancyIndexing定製指令不同。
#
AddEncoding x-compress Z
AddEncoding x-gzip gz tgz
#
# DefaultLanguage和AddLanguage允許你指定文檔的語言。
# 這使你可以讓用戶用容易理解的語言流覽文檔。
#
# 指定預設的語言,這意味著所有沒有指定語言的包都將使用該語言。
# 多數情況下,你也許並不想設定它,除非你確信這樣做是正確的。
# 通常,不使用確定的語言比使用錯誤的語言要好。
#
# DefaultLanguage nl
#
# 注意1:作為語言關鍵字的詞綴毫無疑問是不能一樣的--採用波蘭
# 文的文檔(網路標準語言代碼是pl)將希望使用「AddLanguage pl .po」
# 來避免與perl腳本的一般詞綴產生二義性。
#
# 注意2: 下面的例子舉例說明在一些範例中語言的二字元縮寫與它的國家
# 的二字元縮寫不相同,例如 「Danmark/dk」 和 「Danmark/da」 的比較.
#
# 注意3: 在 「ltz」 的情況下我們使用三字元詞綴,違犯了 RFC的規定,
# 運行中將修復它並使用RFC1766標準取得參考資料。
#
# Danish (da) - Dutch (nl) - English (en) - Estonian (et)
# French (fr) - German (de) - Greek-Modern (el)
# Italian (it) - Norwegian (no) - Norwegian Nynorsk (nn) - Korean (ko)
# Portugese (pt) - Luxembourgeois* (ltz)
# Spanish (es) - Swedish (sv) - Catalan (ca) - Czech(cz)
# Polish (pl) - Brazilian Portuguese (pt-br) - Japanese (ja)
# Russian (ru) - Croatian (hr)
#
AddLanguage da .dk
AddLanguage nl .nl
AddLanguage en .en
AddLanguage et .et
AddLanguage fr .fr
AddLanguage de .de
AddLanguage he .he
AddLanguage el .el
AddLanguage it .it
AddLanguage ja .ja
AddLanguage pl .po
AddLanguage ko .ko
AddLanguage pt .pt
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pt-br .pt-br
AddLanguage ltz .ltz
AddLanguage ca .ca
AddLanguage es .es
AddLanguage sv .sv
AddLanguage cz .cz
AddLanguage ru .ru
AddLanguage tw .tw
AddLanguage zh-tw .tw
AddLanguage hr .hr
# LanguagePriority允許你在會話過程中優先使用一些語言。
#
# 以優先次序遞減的方式列出它們。我們或多或少地採用按字母排列順序的方式
# 排列它們。也許你想要改變這個順序。
LanguagePriority en da nl et fr de el it ja ko no pl pt pt-br ltz ca es sv tw
#
# ForceLanguagePriority 允許你為MULTIPLE CHOICES(Prefer)[在通訊的情況下]
# 或NOT ACCEPTABLE(Fallback)[沒有可接受的語言匹配的情況]提供一個結果頁。
#
ForceLanguagePriority Prefer Fallback
#
# 為發送出的所有頁指定預設的字元集,這總是一個好主意,並且為你的
# web站點的國際化打開了大門,這不正是你曾經想要的嗎。同樣地,指定
# 預設字元集有一些小的損害,如一個使用iso-8859-1(latin1)標準命令
# 的頁面,除非以別的方式指定例如你僅僅以顯式方式聲明它。
# 也有一些與那些總是鼓勵你使用預設字元集的javascropt和URL語法有關
# 的流覽器安全原因。
#
#AddDefaultCharset ISO-8859-1
AddDefaultCharse GB2312
#
# 一般以檔副檔名的方式使用字元集。也許你想要避免與語言擴展發生
# 碰撞,除非你在每次改變後都做了很好的測試。
# 參見http://www.iana.org/assignments/character-sets以取得字元集
# 的名字列表和它們各自的RFCs。
#
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
# 對於俄語,使用了多個字元集(如何使用主要依靠用戶端):
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
# 下面的字元集沒有映射到一個特定的標準(iso)上,但是它們在流覽器
# 中被廣泛的支持。注意那些大寫字母。
# (它不應該,但是它是為相容一些流覽器而做)
#
# 參見http://www.iana.org/assianments/character-sets以取得
# 它們的列表。但是流覽器支持較少。
#
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
#
# AddType允許你為指定的檔類型添加或覆蓋mime.types檔中設定的MIME
#
AddType application/x-tar .tgz
AddType image/x-icon .ico
#
# AddHandler允許你映射確定的檔副檔名到「handlers」:
# 與文件類型無關的行為。這既能編譯到伺服器中也可以添加到Action指令
# 中(看下麵)。
# 為了在ScriptAliased指令指定的以外使用CGI腳本:
#(要使它可用,你還需要在Options中添加「ExecCGI」。
#
# AddHandler cgi-script .cgi
#
# 對於那些包含他們自己的HTTP頭的檔
#
# AddHandler send-as-is asis
#
# 對於server-parsed imagemap文件:
#
# AddHandler imap-file map
#
# agemap 文件:
#
#AddHandler imap- 檔映射
#
# 對於類型映射轉移資源)
#(這是預設的設定以允許Apache的「It Worked」頁能多種語言分發)。
#
AddHandler type-map var
#
# 篩檢程式允許你在將它發送到用戶端前進行處理。
#
# 為了在伺服器端分析包含(SSI)的.shtml文檔:
# (要執行這個指令,你還需要在Options指令中添加「Includes」。)
#
# AddType text/html .shtml
# AddOutputFilter INCLUDES .shtml
#
# Action讓你定義當調用匹配的媒體檔時將要執行的腳本。這將減少
# 那些經常使用的CGI腳本的URL路徑名的重複輸入。
# 格式:Action media/type /cgi-script/location
# 格式:Action handler-name /cgi-script/location
#
#
# 可設定的錯誤應答有三種風格:
# 1)plain text 2)local redirects 3) external redirects
#
# 一些示例:
# ErrorDocument 500 "The server made a boo boo."
# ErrorDocument 404 /missing.html
# ErrorDocument 404 "/cgi-bin/missing_handler.pl"
# ErrorDocument 402 http://www.example.com/subscription_info.html
#
#
# 綜合應用這些指令,我們可以創建一個國際化的出錯應答。
#
# 我們使用Alias來重定向任意/error/HTTP_<error>.html.var應答到
# 我們的多語言錯誤消息集合。使用正確的文本替代它。
#
# 通過加入下面的行,你就能夠改變這些消息的顯示,而不必改變
# HTTP_<error>.html.var文件。
#
# Alias /error/include/ "/your/include/path/"
#
# 以將/usr/local/apache2/error/include/下的檔拷貝到/your/inclue/path/下
# 開始,你可以創建你自己的檔集合,甚至是其於每個虛擬主機的。
# 不管你的ServerSignature如何設定,預設的包含檔將顯示你的
# Aapche版本號和你的ServerAdmin郵件地址
#
# 國際化的錯誤文檔需要mod_alias,mod_include和mod_negotiation三個
# 模組。要啟動它們,取消下面30行的註釋符號
# Alias /error/ "/usr/local/apache2/error/"
#
# <Directory>
# AllowOverride None
# Options IncludesNoExec
# AddOutputFilter Includes html
# AddHandler type-map var
# Order allow,deny
# Allow from all
# LanguagePriority en de es fr it nl sv
# ForceLanguagePriority Prefer Fallback
# </Directory>
#
# ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
# ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
ErrorDocument 403 /error.php
# ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
# ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
# ErrorDocument 408 /error/HTTP_REQUESIME_OUT.html.var
# ErrorDocument 410 /error/HTTP_GONE.html.var
# ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
# ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
# ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
# ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
# ErrorDocument 415 /error/HTTP_SERVICE_UNAVAILABLE.html.var
# ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
# ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
# ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
# ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
# ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var
#
# 下面的命令更改標準的HTTP應答行為以處理己知的流覽器問題。
#
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
#
# 下面命令關閉對那些沒有尾部「/」的目錄的非GET連線的重定向,
# 這些命令修復了微軟的採用DAV方法不能正確處理重定向的WEB檔夾的問題。
# Apple下的DAV檔系統和Gnome下的VFS對DAV的支援也是採用這樣的方法
# 進行處理的。
#
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
BrowserMatch "^gnome-vfs" redirect-carefully
#
# 允許你使用URL:http://servername/server-status來通過mod_status生
# 成並報告伺服器狀態資訊。改變.example.com為你自己的功能變數名稱。
#
# <Location>
# SetHandler server-status
# Order deny,allow
# Deny from all
# Allow from .example.com
# </Location>
#
# 允許使用URL:http://servername/server-info來遠端報告伺服器設定資訊
# (需要mod_info.c支持)。改變「.example.com」為你自己的功能變數名稱。
#
# <Location>
# SetHandler server-info
# Order deny,allow
# Deny from all
# Allow from .example.com
# </Location>
#
# 代理伺服器命令,去掉下面的行使代理服務可用。
#
# <IfModule>
# ProxyRequests On
# <Proxy>
# Order deny,allow
# Deny from all
# Allow from .example.com
# </Proxy>
#
# 安裝或關閉HTTP/1.1「通道」頭處理。
# (「Full」添加伺服器版本資訊,「Block」移掉所有輸出「通道」頭資訊。
# 可以設為下面各選項之一:Off | On | Full | Block
#
# ProxyVia On
# 最好為代理服務安裝高速緩衝,去掉下面幾行的註釋符號:
# (沒有CacheRoot則不緩衝)
#
# CacheRoot "/usr/local/apache2/proxy"
# CacheSize 5
# CacheGcInterval 4
# CacheMaxExpire 24
# CacheLastModifiedFactor 01
# CacheDefaultExpire 1
# NoCache a-domain.com another-domain.edu joes.garage-sale.com
# </IfModule>
# 代理命令結束。
#
# 附加的特定模組設定。
#
<IfModule>
Include conf/ssl.conf
</IfModule>
## 第三區:虛擬主機
#
# VirtualHost:你可以通過設定虛擬主機容器以實現在你的主機上保有多個
# 功能變數名稱/主機名。大多數設定資訊只使用基於名字的虛擬主機,因此伺服器
# 不必擔心IP位址的問題,下面的命令以*號代替虛擬主機名。
#
# 在你試著設定你的虛擬主機以前,請參見
# URL:http://httpd.apache.org/docs-2.0/vhosts/>以取得更多的資訊。
#
# 你可以使用命令行選項「-S」來檢驗你的虛擬主機設定。
#
# 使用基於名字的虛擬主機。
#
# NameVirtualHost *
#
# 虛擬主機示例:
# 幾乎所有的Apache命令都可以在虛擬主機容器中使用。
# 第一個虛擬主機區是用於向服務名未知的連線進行應答的設定。
#
# <VirtualHost>
# ServerAdmin webmaster@dummy-host.example.com
# DocumentRoot /www/docs/dummy-host.example.com
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log commom
# </virtualHost>
- 10月 07 週二 200823:08
[轉貼]Postfix設定檔中文說明
這篇是收藏在我的fireFox的ScrapBook裡面。
至於原始的出處~我真的已經忘了... ...
以下是該篇內容
=====================================
(下面是我使用的main.cf檔案,包含多數我會用到的設定,
有些進階的使用方式,會慢慢試著更新它...時間不明...)
# Postfix 主要的組態檔,刪除了多數說明文字,
# 並且嘗試依照最常用的郵件主機設定來依序設定與說明,
# 許多不常用的設定並未列出。
### 0. 幾個 Postfix 主要的設置參數,一般狀況下不需要更改。
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
##
# 一、設定郵件主機的識別身份(重要)
# myhostname 主機名稱:如果系統設置得當,應該不用設置,系統會以gethostname()取得
# mydomain 網域名稱:預設會以myhostname第一個點之後的作為domain名稱
# myorigin 補齊缺少的資訊:自動補齊資訊所用的,通常使用網域名稱
# mydestination 本地網域:指Postfix應該視為「本地網域」的所有網域名稱
# (本地網域的部份會後續在設定)
#myhostname = host.domain.tld
#mydomain = domain.tld
myorigin = $mydomain
##
# 二、設定 Postfix 能使用的網路介面(重要)
# (如果是對外服務的郵件主機,就必須要設定為all,預設為localhost)
inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost
##
# 三、先設定簡易的代轉(Relay)管控
# 3.1 mynetworks_style 提供三種簡易設定型態
# class =>與伺服器位於同一級IP網路的主機都可以使用代轉服務
# subnet =>所在網域的任一個IP都可以使用代轉服務
# host =>僅開放localhost為信任‧可代轉的主機
#mynetworks_style = class
#mynetworks_style = subnet
#mynetworks_style = host
# 3.2 mynetworks 明確設定可使用relay的主機範圍
# (優先於mynetworks_style,建議採用此種設定法)
mynetworks = 192.168.0.0/24, 192.168.1.0/24, 127.0.0.0/8
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
##
# 四、設定Postfix會收下信件的網域
# Postfix會收下四種特定網域的信件,除了main.cf中的設定外,
# 也應該被正確的設置在DNS中的MX紀錄中。
# (1)本地網域(local domain)=>由mydestination參數設定
# (2)代轉網域(relay domains)=>由relay_domains參數設定
# (3)虛擬網域(virtual domains)之虛擬別名(virtual aliases)
# =>由 virtual_alias_domains參數設定
# (4)虛擬網域之虛擬信箱(virtual mailboxes)
# =>由 virtual_mailbox_domains參數設定
# (上列四種設定不應重複,網域已設為本地網域,就不應該出現在代轉網域)
# 4.1 設定本地網域
#mydestination = $myhostname, localhost.$mydomain
mydestination = $myhostname, localhost.$mydomain, $mydomain
#mydestination = $myhostname, localhost.$mydomain, $mydomain,
# mail.$mydomain, www.$mydomain, ftp.$mydomain
# 4.2 設定代轉網域
# Postfix 預設會提供代轉服務的設置:
# (代轉服務=該網域並非由本Postfix MTA所管控,但可以代轉發)
# - 從信任的客戶端(指ip符合$mynetworks)寄出到任何目的地
# - 從非信任的客戶端寄出到符合$relay_domains或其下次網域的目的地
# 若信件終點站是relay_domains參數中的網址,被視為外地郵件,
# 由 relay MDA來執行投遞作業。
# relay_domains 預設值= $mydestination.(主機名稱)
#
# 4.3 設定虛擬別名‧網域
#
# 4.4 設定虛擬信箱‧網域
#
##
# 五、改寫位址格式
# 5.1 Postfix預設會以$myorigin或mydomain附加到不完整的電郵位址。
# 5.2 正式位址
# 另外提供了一種正式位址代換的機制 canonical map(正格表)
# (1)修改 /etc/postfix/canonical
# (2)再執行 postmap /etc/postfix/canonical
# (3)記得要重新載入 postfix reload
# 正格表的撰寫方式:
# eric@example.com eric.wu@example.com
# eric@example.com eric@oreilly.com
#
# canonical_maps = hash:/etc/postfix/canonical
#
# Postfix也提供額外的參數設置特定的位址
# sender_canonical_maps 僅修改發信者位址
# recipient_canonical_maps 僅修改收件者位址
# (適用順序為:sender->recipient->canonical)
#
# 5.3 偽裝主機名稱
# 用於隱藏內部主機名稱
# masquerade_domains = example.com
#
# 5.4 改變投遞位址
# 拒收某人或某網域信件,並回覆一封告知
# relocated_maps = hash:/etc/postfix/relocated
# relocated 撰寫範例:
# kdent@ora.com kdent@oreilly.com
# @example.com oreilly.com
#
# 5.5 不明使用者
# 拒絕不存在的本地帳戶/「不明使用者」(unknown user)
#unknown_local_recipient_reject_code = 550
unknown_local_recipient_reject_code = 450
# 如果收信地址的人名部份,在任何對照表、別名表、系統帳戶都查不出來,
# 這個人會被視為「不明使用者」(unknown user),系統會拒收。
# 如果希望蒐集這類信件,使用下列設定,並指定集中收集的信箱
# local_recipient_maps =
# luser_relay = someuser
# (上列第一個參數維持空白,第二個參數指定一個別名或實際帳戶)
# 5.6 chroot
# 最安全的設置方式是使用改變根目錄(chroot),但非常複雜;
# postfix安裝時預設並未使用 chroot,記得去檢查 master.cf檔案,
# 建議先取消 chroot,除非您真的很厲害。
##
# 六、一些針對郵件限制的特殊設定
# 限制一封信最多可以有幾位收信者,預設值是1000
# smtpd_recipient_limit = 1000
# 限制單封信件的體積上限,預設值為 10 MB(改為20MB)
message_size_limit = 20480000
##
# 七、別名檔資料庫設定(aliases)
# 使用default_database_type參數決定資料庫格式,預設為 hash
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases
# (安裝時隨附的別名檔範本,已經預設了一組慣例別名,最後都指向root,
# 僅需要設置 root 別名,指向一個平常會收取信件的帳戶信箱即可)
##
# 八、本地信件與信箱設置
# 預設使用的信箱格式是mbox,下列的參數設置,如果結尾沒有"/",
# 就表示是使用mbox;如果結尾跟著"/",就是使用 maildir格式。
# (建議還是使用最通用的mbox,與其他程式的相容性最高)
#
# 所有本地收件人的名稱,都必須列在local_recipient_maps參數所指的表,
# 預設值是指向Unix系統的密碼檔與別名表,通常不需要修改它。
# local_recipient_maps = proxy:unix:passwd.byname $aliase_maps
#
# 信箱投遞作業
#mail_spool_directory = /var/mail
#mail_spool_directory = /var/spool/mail
#
# 可以要求 Postfix 將信件放在使用者的主目錄下
home_mailbox = Mailbox
#home_mailbox = Maildir/
#
# 用於將郵件投遞到信箱的外部命令(通常用來過濾防堵郵件)
#mailbox_command = /usr/bin/procmail
#mailbox_command = /some/where/procmail -a "$EXTENSION"
# 用於執行信箱投遞作業的傳輸服務
#mailbox_transport = lmtp:unix:/file/name
#mailbox_transport = cyrus
#
##
# 八、啟用 SASL 驗證(服務於遠端、外部網域使用的認證機制)
# 決定 Postfix SMTP server 是否要支援 SASL 驗證
# smtpd_sasl_auth_enable = yes
# 設定信件收件的限制規則
# smtpd_recipient_restrictions = permit_mynetworks,
# permit_sasl_authenticated, reject_unauth_destination
# 確認已經通過認證的網域(這條有點疑問...)
# smtpd_sasl_local_domain =
# 限制某些登入的方式(拒絕匿名登入)
# smtpd_sasl_security_options = noanonymous
##
# 九、郵件代轉設定(交換站、入境、出境閘道)
# (下列程序示範如何設定 gw.abc.com,讓它將郵件交給正確的內部伺服器)
# (1)hr.abc.com, sales.abc.com的DNS MX均指向 gw.abc.com
# (2)編輯gw的main.cf檔,將子網域列入 relay_domains 參數
# relay_domains = hr.abc.com, sales.abc.com
# (3)設定正確的傳輸表(transport map)
# transport_maps = hash:/etc/postfix/transport
# (4)編輯傳輸表(編完記得postmap一下)
# hr.abc.com relay:[m1.abc.com]
# sales.abc.com relay:[m2.abc.com]
# (5)彙整m1,m2的合法信箱名單成一個受理名單,放在gw上
# relay_recipient_maps = hash:/etc/postfix/relay_recipients
# (怎麼收集、更新,是個大問題)
# (6)postfix reload
#
# 設定出境郵件閘道(將外地郵件交給閘道系統代為遞送)
# relayhost = $mydomain
# relayhost = gateway.my.domain
# relayhost = uucphost
# relayhost = [an.ip.add.ress]
#
# 拒絕不知名用戶的代轉 REJECTING UNKNOWN RELAY USERS
# (其實是將所有合法使用者放入一個名單中)
#relay_recipient_maps = hash:/etc/postfix/relay_recipients
##
# 十、設定 Open Relay Data Base
# smtpd_client_restrictions = hash:/etc/postfix/access,
# reject_rbl_client relays.ordb.org,
# reject_rhsbl_client dsn.rfc-ignorant.org
##
# 除錯管理
debug_peer_level = 2
#debug_peer_list = 127.0.0.1
#debug_peer_list = some.domain
# debugger_command =
# PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
# xxgdb $daemon_directory/$process_name $process_id & sleep 5
# 如果並未安裝X-windows可以改用下列:
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin; export PATH; (echo cont;
echo where) gdb $daemon_directory/$process_name $process_id2>&1
>$config_directory/$process_name.$process_id.log & sleep 5
##
# 其他、安裝時的一些設置資訊
#
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.0.16/samples
readme_directory = /usr/share/doc/postfix-2.0.16/README_FILES
##
- 10月 07 週二 200823:04
[轉貼] RoundCube Webmail
本篇出自於 自由軟體交流網
RoundCube 是從 Iloha 改寫而來,也承席Iloha 羽量級的靈巧速度,加上RoundCube 精美的介面、以及AJAX 級的設計表現,雖然目前只是0.1-beta2 版,卻讓人愛不釋手。唯一可惜的,是它必需使用MySQL資料庫,但比起Hola 之類使用資料庫的Webmail, RoundCube 更為簡單精巧。
以下簡單的介紹它的安裝及設定。
首先到www.roundcube.net 下載它的套件解開。目錄名稱請隨意,放到你apache 的目錄裡。
先設定資料庫:
SQL/ 目錄下有 mysql5.initial.sql 以及mysql.initial.sql ,其中前者為SQL v5版本所用,其他取用後者。
先建立一個roundcube 的資料庫:
# mysql -u root -p
( 然後輸入SQL root密碼)
SQL> create databases roundcubemail;
SQL> quit;
# mysql -u root -p roundcubemail < mysql5.initial.sql
(輸入mysql 密碼)
再來去改設定檔
在 config/ 把所有*.inc.php.dist 改成 *.inc.php
然後再分別設定這兩個設定檔。
第一個db.inc.php,有始有終,我們先設定資料庫。
只需要修改這一行:
$rcmail_config['db_dsnw'] = 'mysql://root:mysqlpasswd@localhost/roundcubemail';
注意填入你MySQL 帳號及密碼,上列以 root及密碼mysqlpasswd 為例。
第二個main.inc.php 就是你的mail server 設定內容。應該要設定兩行:
$rcmail_config['default_host'] = 'mail.abc.idv.tw';
$rcmail_config['smtp_server'] = 'mail.abc.idv.tw';
都填入你的mail server主機名稱。
最後,我們要中文化。
請到www.roundcube.net 的downloads,點選additional language packs 這串紅字,然後尋找 roundcube_chinese-big5-0.1-beta2.tar.gz
請下載放到 program/localization/ 之下解開。會解出一個 tw/ 的目錄。
再回到 config/main.inc.php 這個檔案設定,需要修改兩個東西,一為語言,二為顯示時間(GMT+8)。
$rcmail_config[』locale_string'] = 『tw';
$rcmail_config[』timezone'] = 8;
改完之後,中文RoundCube Webmail就大功告成了。
RoundCube 是從 Iloha 改寫而來,也承席Iloha 羽量級的靈巧速度,加上RoundCube 精美的介面、以及AJAX 級的設計表現,雖然目前只是0.1-beta2 版,卻讓人愛不釋手。唯一可惜的,是它必需使用MySQL資料庫,但比起Hola 之類使用資料庫的Webmail, RoundCube 更為簡單精巧。
以下簡單的介紹它的安裝及設定。
首先到www.roundcube.net 下載它的套件解開。目錄名稱請隨意,放到你apache 的目錄裡。
先設定資料庫:
SQL/ 目錄下有 mysql5.initial.sql 以及mysql.initial.sql ,其中前者為SQL v5版本所用,其他取用後者。
先建立一個roundcube 的資料庫:
# mysql -u root -p
( 然後輸入SQL root密碼)
SQL> create databases roundcubemail;
SQL> quit;
# mysql -u root -p roundcubemail < mysql5.initial.sql
(輸入mysql 密碼)
再來去改設定檔
在 config/ 把所有*.inc.php.dist 改成 *.inc.php
然後再分別設定這兩個設定檔。
第一個db.inc.php,有始有終,我們先設定資料庫。
只需要修改這一行:
$rcmail_config['db_dsnw'] = 'mysql://root:mysqlpasswd@localhost/roundcubemail';
注意填入你MySQL 帳號及密碼,上列以 root及密碼mysqlpasswd 為例。
第二個main.inc.php 就是你的mail server 設定內容。應該要設定兩行:
$rcmail_config['default_host'] = 'mail.abc.idv.tw';
$rcmail_config['smtp_server'] = 'mail.abc.idv.tw';
都填入你的mail server主機名稱。
最後,我們要中文化。
請到www.roundcube.net 的downloads,點選additional language packs 這串紅字,然後尋找 roundcube_chinese-big5-0.1-beta2.tar.gz
請下載放到 program/localization/ 之下解開。會解出一個 tw/ 的目錄。
再回到 config/main.inc.php 這個檔案設定,需要修改兩個東西,一為語言,二為顯示時間(GMT+8)。
$rcmail_config[』locale_string'] = 『tw';
$rcmail_config[』timezone'] = 8;
改完之後,中文RoundCube Webmail就大功告成了。
- 10月 07 週二 200823:01
[轉貼] QEMU-網路設定
本篇出自:虛擬機之家
qemu兩種上網方式:
user mode network :
這種方式實現虛擬機上網很簡單,類似vmware裡的nat,qemu啟動時加入-user-net參數,虛擬機裡使用dhcp方式,即可與互聯網通信,但是這種方式虛擬機與主機的通信不方便。
tap/tun network :
這種方式要比user mode複雜一些,但是設置好後 虛擬機<-->互聯網 虛擬機<-->主機 通信都很容易
這種方式設置上類似vmware的host-only,qemu使用tun/tap設備在主機上增加一塊虛擬網絡設備(tun0),然後就可以像真實網卡一樣配置它.
首先內核中支持tap/tuns設備:
Device Drivers --->
Networking support --->
[M] Universal TUN/TAP device driver support
如果當前內核沒有支持,可以重新只編譯相應模塊加入,方法很簡單:
將當前內核配置文件cp到內核源碼目錄下:
[root@LFS ~]#cp /boot/config-[kernel-version] /usr/src/linux
[root@LFS ~]#cd /usr/src/linux
配置內核,將TUN/TAP選擇模塊(M),如上所示:
[root@LFS ~]#make menuconfig
重新只編譯模塊(M),不編譯核心(*)支持的東東:
[root@LFS ~]#make modules
編譯好後在/usr/src/linux/drivers/net下可以找到tun.ko:
[root@LFS net]#ls -l /usr/src/linux/drivers/net/tun.ko
-rw-r--r-- 1 root root 11116 Mar 23 20:29 /usr/src/linux/drivers/net/tun.ko
[root@LFS net]#
將它cp到當前內核的模塊目錄的相應位置:
[root@LFS net]#cp /usr/src/linux/drivers/net/tun.ko /lib/modules/`uname -r`/kernel/drivers/net
重新建立模塊依賴關係:
[root@LFS net]#depmod
現在就可以加載它了 :
[root@LFS net]#modprobe tun
檢查一下:
[root@LFS net]#lsmod |grep tun
tun 8704 0
[root@LFS net]#
OK. 成功不重新編譯整個內核加入特殊模塊支持
如果你的xx卡不被內核支持,又可以編譯成模塊,自己怕重新編譯內核後出問題就可以用這個辦法只編譯自己需要的模塊,然後手動安裝到相應位置,再加載它。
這樣編譯速度要也比編譯整個內核快,不會對系統有任何損害,就可以使用上XX卡嘍。^_^
要注意三點:
1.內核源碼必須與當前內核版本完全一致,否則編譯出的模塊是不能用的。
2.注意只make modules(編譯模塊),沒有make modules_install(自動安裝模塊到/lib/modules下)
3.加載新編譯的模塊前必須先運行depmod,否則modprobe找不到它
其實使用當前內核配置文件(/boot/config-[kernel-version]),只加入自己需要的模塊,不做任何其他改,make modules_install應該也不會有問題的。
不過最穩妥的辦法還是手動安裝它,控制權在自己手裡更踏實嘛 :-)
OK,轉回qemu上網問題 :)
如果使用udev管理設備(通常2.6.x內核的發行版都已經使用udev),當modprobe tun後就會自動建立/dev/net目錄,並創建出tun設備,做好相關鏈接:
[root@LFS net]#ls -l /dev/net/tun
lrwxrwxrwx 1 root root 6 Mar 25 15:35 /dev/net/tun -> ../tun
[root@LFS net]#
如果很不幸,你沒看到它,就需要自己手動做這些工作了 :(
[root@LFS ~]#mkdir /dev/net
[root@LFS ~]#mknod /dev/net/tun c 10 200
OK,相關設備已經準備好了,還需要一個tun/tap的初始化腳本 :
/etc/qemu-ifup :
#!/bin/sh
/sbin/ifconfig $1 172.20.0.1
再給予qemu-ifup x執行權限放在/etc下就可以了。
這個腳本只能root用戶執行,如果需要普通用戶使用qemu,就需要改成sudo /sbin/ifconfig .....再設置sudo相關權限。
啟動qemu後,它會在主機上增加一塊虛擬網絡設備(tun0):
[root@LFS ~]#ifconfig tun0
tun0 Link encap:Ethernet HWaddr 0A:D3:8A:5D:97:CD
inet addr:172.20.0.1 Bcast:172.20.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
[root@LFS ~]#
現在就可以啟動qemu配置虛擬機網絡參數了,和vmware host-only一樣:
ip與tun0相同網段,gateway為tun0 ip 其餘參數與tun0相同,dns與主機相同:
tun0 : ip :172.20.0.1 broadcast:172.20.255.255 netmask :255.255.0.0
qemu : ip :172.20.0.100 broadcast:172.20.255.255 netmask :255.255.0.0 gateway:172.20.0.1
與host-only一樣,這樣只實現了虛擬機<---->主機間通信,還需要設置router,nat才可以連上互聯網
[root@LFS ~]#echo 1 > /proc/sys/net/ipv4/ip_forward
[root@LFS ~]#iptables -t nat -A POSTROUTING -o eth0 -s 172.20.0.0/24 -j MASQUERADE
[root@LFS ~]#
qemu兩種上網方式:
user mode network :
這種方式實現虛擬機上網很簡單,類似vmware裡的nat,qemu啟動時加入-user-net參數,虛擬機裡使用dhcp方式,即可與互聯網通信,但是這種方式虛擬機與主機的通信不方便。
tap/tun network :
這種方式要比user mode複雜一些,但是設置好後 虛擬機<-->互聯網 虛擬機<-->主機 通信都很容易
這種方式設置上類似vmware的host-only,qemu使用tun/tap設備在主機上增加一塊虛擬網絡設備(tun0),然後就可以像真實網卡一樣配置它.
首先內核中支持tap/tuns設備:
Device Drivers --->
Networking support --->
[M] Universal TUN/TAP device driver support
如果當前內核沒有支持,可以重新只編譯相應模塊加入,方法很簡單:
將當前內核配置文件cp到內核源碼目錄下:
[root@LFS ~]#cp /boot/config-[kernel-version] /usr/src/linux
[root@LFS ~]#cd /usr/src/linux
配置內核,將TUN/TAP選擇模塊(M),如上所示:
[root@LFS ~]#make menuconfig
重新只編譯模塊(M),不編譯核心(*)支持的東東:
[root@LFS ~]#make modules
編譯好後在/usr/src/linux/drivers/net下可以找到tun.ko:
[root@LFS net]#ls -l /usr/src/linux/drivers/net/tun.ko
-rw-r--r-- 1 root root 11116 Mar 23 20:29 /usr/src/linux/drivers/net/tun.ko
[root@LFS net]#
將它cp到當前內核的模塊目錄的相應位置:
[root@LFS net]#cp /usr/src/linux/drivers/net/tun.ko /lib/modules/`uname -r`/kernel/drivers/net
重新建立模塊依賴關係:
[root@LFS net]#depmod
現在就可以加載它了 :
[root@LFS net]#modprobe tun
檢查一下:
[root@LFS net]#lsmod |grep tun
tun 8704 0
[root@LFS net]#
OK. 成功不重新編譯整個內核加入特殊模塊支持
如果你的xx卡不被內核支持,又可以編譯成模塊,自己怕重新編譯內核後出問題就可以用這個辦法只編譯自己需要的模塊,然後手動安裝到相應位置,再加載它。
這樣編譯速度要也比編譯整個內核快,不會對系統有任何損害,就可以使用上XX卡嘍。^_^
要注意三點:
1.內核源碼必須與當前內核版本完全一致,否則編譯出的模塊是不能用的。
2.注意只make modules(編譯模塊),沒有make modules_install(自動安裝模塊到/lib/modules下)
3.加載新編譯的模塊前必須先運行depmod,否則modprobe找不到它
其實使用當前內核配置文件(/boot/config-[kernel-version]),只加入自己需要的模塊,不做任何其他改,make modules_install應該也不會有問題的。
不過最穩妥的辦法還是手動安裝它,控制權在自己手裡更踏實嘛 :-)
OK,轉回qemu上網問題 :)
如果使用udev管理設備(通常2.6.x內核的發行版都已經使用udev),當modprobe tun後就會自動建立/dev/net目錄,並創建出tun設備,做好相關鏈接:
[root@LFS net]#ls -l /dev/net/tun
lrwxrwxrwx 1 root root 6 Mar 25 15:35 /dev/net/tun -> ../tun
[root@LFS net]#
如果很不幸,你沒看到它,就需要自己手動做這些工作了 :(
[root@LFS ~]#mkdir /dev/net
[root@LFS ~]#mknod /dev/net/tun c 10 200
OK,相關設備已經準備好了,還需要一個tun/tap的初始化腳本 :
/etc/qemu-ifup :
#!/bin/sh
/sbin/ifconfig $1 172.20.0.1
再給予qemu-ifup x執行權限放在/etc下就可以了。
這個腳本只能root用戶執行,如果需要普通用戶使用qemu,就需要改成sudo /sbin/ifconfig .....再設置sudo相關權限。
啟動qemu後,它會在主機上增加一塊虛擬網絡設備(tun0):
[root@LFS ~]#ifconfig tun0
tun0 Link encap:Ethernet HWaddr 0A:D3:8A:5D:97:CD
inet addr:172.20.0.1 Bcast:172.20.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
[root@LFS ~]#
現在就可以啟動qemu配置虛擬機網絡參數了,和vmware host-only一樣:
ip與tun0相同網段,gateway為tun0 ip 其餘參數與tun0相同,dns與主機相同:
tun0 : ip :172.20.0.1 broadcast:172.20.255.255 netmask :255.255.0.0
qemu : ip :172.20.0.100 broadcast:172.20.255.255 netmask :255.255.0.0 gateway:172.20.0.1
與host-only一樣,這樣只實現了虛擬機<---->主機間通信,還需要設置router,nat才可以連上互聯網
[root@LFS ~]#echo 1 > /proc/sys/net/ipv4/ip_forward
[root@LFS ~]#iptables -t nat -A POSTROUTING -o eth0 -s 172.20.0.0/24 -j MASQUERADE
[root@LFS ~]#
- 10月 07 週二 200823:00
[轉貼] 虛擬機器-QEMU簡介
本篇出自:虛擬機之家
在 Free Software 的世界中, 除了 Bochs 之外,還有一個以速度號稱的 x86 模擬器 - QEMU。
QEMU 的模擬速度約為實機的 25%; 約為 Bochs 的 60 倍。
Plex86、User-Mode-Linux、VMware 和 Virtual PC 則比 QEMU 快一點,但 Bochs 需要特定的 Kernel Patch;User-Mode-Linux 的 Guest System 必須為 Linux;
VMware 和 Virtual PC 則需要在 Guest System 上安裝特定的 Driver,且它們是針對作業系統而進行模擬,並不能說是完整的模擬器。
所以 QEMU 仍不失為極優秀的 x86 模擬器。
QEMU 所模擬的硬體列表
* i440FX host PCI bridge and PIIX3 PCI to ISA bridge
* Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA extensions (hardware level, including all non standard modes).
* PS/2 mouse and keyboard
* 2 PCI IDE interfaces with hard disk and CD-ROM support
* Floppy disk
* NE2000 PCI network adapters
* Serial port
* Soundblaster 16 card
QEMU 所採用的 PC BIOS 乃取自 Bochs 及 Plex86/Bochs 的 LGPL VGA BIOS。
事前準備
和 Bochs 類似的,在 QEMU 裡,是利用 Image File 來模擬硬碟的;也就是 QEMU 是將一個大大的檔案模擬成一顆硬碟。
我們可以利用 qemu-mkcow 指令來製作這些 Image File,例:
代碼: qemu-mkcow Sarge.cow 2048
這時就會產生一個名為 Sarge.bin 的 COW 檔案。
qemu-mkcow 所產生出來的檔案為取自 User-Mode-Linux 的 Copy On Write (COW) 檔案。 這種檔案的特性是:它只儲存修改過的磁區,所以它是一種會 Growing 的檔案格式。
但它只能存放在 ext2、ext3 之類,有支援 holes 的檔案系統之中。
在使用 ls -l 來檢視 COW 檔案時,
您會發現它的檔案容量就是您所指定的大小;(在上例中,就是 2048 MB) 而只有在使用 ls -ls 來檢視時才會出現它真正所佔用的磁碟空間。
注意:在執行 qemu-mkcow 指令時, 若所指定的檔案已經存在了,或是發生任何問題, qemu-mkcow 幾乎並不會輸出任何的錯誤訊息。使用時請注意。
執行 QEMU
QEMU 並不使用任何的設定檔,它只能以命令列參數來執行; 但是把這些參數寫成一個小小的 script 是輕而易舉的事,所以並不會造成任何的不便。
例: 代碼:
qemu -fda Boot.img -hda Windows95.cow -hdb Source.cow -cdrom CWindows95.iso -boot a -m 64 -enable-audio -localtime -user-net
一般參數(節錄)
-fda file / -fdb file:
指定軟碟機。可在此指定 Image 檔案。
-hda file / -hdb file / -hdc file / -hdd file:
指定硬碟 Image 檔案。請勿指定為光碟 ISO 檔案。
-cdrom file: 指定光碟機。可在此指定 ISO 檔案。它將固定使用 hdc 這個位置,
所以 -hdc 不能和 -cdrom 同時使用。
-boot [a|c|d]:
指定開機磁碟。a 為 floppy,c 為硬碟,d 為 CD-ROM。
-m megs:
指定記憶體大小;單位為 MB。預設為 128 MB。
-enable-audio:
啟用音效卡。預設是關閉的。
-localtime:
使用真實時間。建議使用於 MS Windows / DOS 系統。預設上是使用 UTC 時間。
網路設定參數(節錄)
在 QEMU 裡,有三種網路模式可供選擇:
TUN/TAP 模式(預設模式)
在 Linux 系統中,使用 TUN/TAP 介面來模擬網路界面是很標準的做法。
若要使用 TUN/TAP 介面,請切換至 /dev 目錄中,執行 代碼:
MAKEDEV tun 來建立 tun 之裝置檔。之後,在執行 QEMU 時,QEMU 便會自行載入 tun 模組並產生一個名為 tun0 的網路介面;之後 Guest System 便能夠藉由這個 tun0 介面和外部連線了。
請參考以下這個 script 來設定 TUN/TAP 介面: (請將 192.168.1.254 替換成一個空的 IP 位址。這個位址將由 tun 介面所使用。) (請將 192.168.1.101 替換成一個空的 IP 位址。這個位址將由 Guest System 使用。)
代碼:
#!/bin/bash
/sbin/ifconfig ${1##/*/} 192.168.1.254
route add -host 192.168.1.101 dev ${1##/*/}
這樣子在 QEMU 啟動時,就會將 tun 裝置設定為 192.168.1.254 了。由於執行這個 Scrip 需要 root 之權限, 所以必須具有 root 身份才能正常啟用這個模式的。且 tun 裝置的 IP 位置和 Guest System 的 IP 位址是寫死在 script 裡的, 所以在使用上並不是很方便。
藉由 TUN/TAP 介面來和網路連線。必須採用固定 IP,但 IP 可以隨意指定;Guest System 可以連線出去,Host OS 也可以和 Guest System 連線, 但外部網路的其它電腦則完全無法連線進來。User-Nat 模式 使用 User Mode Network Stack 來模擬網路界面。Guest System 必須採用 DHCP,且一定會得到 10.0.2.x 的IP,同時,Gateway 會指向 10.0.2.2,DNS 則指向 10.0.2.2。
Guest System 可以連線出去,但 Host OS 和外部網路的其它電腦則完全無法連線進來。
由於 User Mode Network Stack 無法完全支援 ping 指令,所以 Guest System 只能 Ping 到 Host OS,無法 ping 到外部網路的其它電腦。
Dummy Net 模式
並不實地得進行任何網路連線。 網路介面的命令例參數(節錄)
-nics n:
模擬幾個網路介面。預設為 1 個,最多為 6 個。
-n script:
設定 TUN/TAP 網路連線的 script;預設為使用 /etc/qemu-ifup。
-user-net:
使用 User Mode Network Stack。
若未指定或找不到 TUN/TAP 的 script 時,則會採用這個模式。
-dummy-net:
使用虛擬的網路介面。這個網路介面將不會傳送接收任的網路連線。
除錯 / 進階選項(節錄)
-S:
在啟動時暫停 CPU 之運作。使用 c 來繼續執行。
-d item1,...
將 LOG 輸出至 /tmp/qemu.log 中。
使用 -d ? 來查看會產生 LOG 的項目之列表。
-isa:
模擬一個純 ISA 系統;預設上則是模擬成 PCI 系統。
-std-vga:
將顯示卡模擬成一個同時包含了 VESA Bochs 擴充的標準 VGA 卡。
預設則模擬為 CL-GD5446 PCI 顯示卡。
QEMU Monitor(節錄)
在執行 QEMU 後,會出現一個
代碼: (qemu) 的提示。在這個提示下可以輸入一些指令來操作 QEMU。例:
help 或 ? [cmd]
顯示說明文字
info 指令:
顯示系統狀態。例:
★ info network,顯示網路介面狀態
★ info block,顯示儲存裝置狀態
★ info registers,顯示 CPU 的暫存器狀態
★ info history,顯示歷史指令
q 或 quit:
關閉模擬器
eject [-f] device:
退出裝置。使用 -f 來強制退出
change device filename:
更換抽取式媒體。如:軟碟片或是光碟片。
screendump filename:
截取螢幕畫面,儲存成 PPM 影像。
log item1[,...]
將所指定的項目之 LOG 寫入 /tmp/qemu.log 中。
savevm filename:
將整個模擬器狀態儲存至檔案中
loadvm filename:
由檔案中載入模擬器狀態
stop
停止模擬
c 或 cont
繼續模擬
sendkey keys
傳送某個鍵擊給模擬器。使用 - 來連結複合鍵。例:
代碼:
sendkey ctrl-alt-f1
將會傳送 <Ctrl><Alt><F1> 給模擬器。
system_reset
重新啟動系統。
快捷鍵
在 QEMU 的系統裡,可以按下 <Ctrl><Shift> 來跳離 QEMU;
按下 <Ctrl><Shift><f> 來進入全螢幕的畫面。
網路介面解決方案
使用 sudo 來執行 QEMU
如果要使用 TUN/TAP 介面,必須以 root 身份來設定 TUN/TAP 介面才行。
所以建議採用 sudo 的方式執行 QEMU。
☆ 以 root 或是 SUID 或 sudo 來執行任何程式都是大風險,
尤其是使用者可以自行設定 QEMU 呼叫某一個 script 來設定網路, 若 QEMU 以 SUID/sudo 來執行的話,將可能引起極嚴重之安全問題。
* 安裝 sudo 套件。
* 以 visudo 來建立 sudo 的設定檔,並設定不用輸入密碼即可執行 QEMU: (其中的 UserName 和 HostName 請替換成您的系統設定,或設定為 ALL。)
代碼:
Cmnd_Alias QEMU=/usr/bin/qemu
UserName HostName=NOPASSWD: QEMU
* 編輯 .bashrc,讓 qemu 能預設以 sudo qemu 來執行:
代碼:
alias qemu='sudo qemu'
* 執行 qemu,並以 ps aux | grep bochs 來確認 qemu 是否以 root 的身份執行?
讓 TUN/TAP 介面可以和實體網路連線
若依前文所提的方式來設定 TUN/TAP 介面,
則 Guest System 則只能使用固定 IP、
且除了 Host OS 之外,外部網路的其它電腦會完全無法連線至 Guest System。
這種做法並非十全十美。
解決方案之一是將 TUN/TAP 介面和實體網路給 Bind 在一起, 也就是將數個實體網路介面合成一個 Bridge 介面:
設定 Bridge 介面
* 安裝 bridge-utils 套件
* 在 /etc/network/interfaces 加入一段:(在此假設是使用 DHCP 來設定網路的)代碼:
iface bridge inet dhcp
其中的 bridge 名稱可以自訂。
這樣子我們在日後就可以用 ifup、ifdown、ifconfig 等指令來直接操作 bridge 這個介面了。
當然囉,使用 ifconfig、route、dhclient 等指令來手動操作當然也可以;這就全憑個人喜好了。
* 這數個要 Bind 在一起的實體網路介面之 IP 必須為 0.0.0.0,並啟用 promisc 模式:
代碼:
ifconfig eth0 0.0.0.0 promisc up
* 宣告一個名為 bridge 介面的『Bridge';並設定其動作模式:
代碼:
# 建立一個名為 bridge 的 Bridge 介面
brctl addbr bridge
# 轉送延遲時間,Bridge 切換至 listening 及 learning 狀態所需時間。
# Bridge 會花一點時間來記錄每個實體介面的 MAC Address。
brctl setfd bridge 0
# 傳送 STP Hello 封包的頻率。設定為 0 因為我們不使用 STP 這個功能。
brctl sethello bridge 0
# 關閉 spanning tree protocol 功能。用不著...
brctl stp bridge off
* 此時,可以使用 ifconfig -a 來檢視是否出現了 bridge 這個介面。
* 將 eth0 給 Bind 至 bridge 上:
代碼:
brctl addif bridge eth0
* 啟用 bridge 介面:
如果在 /etc/network/interfaces 已設定了 bridge 資訊的話:
ifup bridge
若 bridge 使用 DHCP:
dhclient bridge
手動設定 bridge 參數:
ifconfig bridge 192.168.1.1 netmask 255.255.255.0 up
route add default gw 192.168.1.254
* 檢視 Bridge 的狀況:
代碼:
brctl show
* 由於將數個介面合成了一個 bridge 介面, 而像是 iptables、pppoe 等等設定也必須視情況而有所變更。 而如何設定 iptables 就超過了本篇的範圍之外,在此就略過不加討論了。
關閉 bridge 的方式
* 關閉 bridge 介面:
代碼:
ifdown bridge
ifconfig bridge down
* 解除 Bind 在 bridge 上的 eth0:
代碼:
brctl delif bridge eth0
* 移去 bridge 介面:
代碼:
brctl delbr bridge
* 啟用 eth0:(如果在 /etc/network/interfaces 已設定了 eth0 資訊的話)
代碼:
ifup eth0
這時,eth0 應該就恢後原有的狀態了。
將以上步驟寫成 /etc/init.d/bridge:
代碼:
#!/bin/sh
PATH=/usr/local/sbin:/sbin:/usr/sbin:/usr/local/bin:/bin:/usr/bin
if [ "$(id -u)" != "0" ]; then
echo "$0: To $1 Bridge, you must be root."
exit 1
fi
# Default settings
bridge_interface='bridge'
bind_ethernet='eth0'
case "$1" in
start)
printf "Starting Bridge ... "
ifdown $bind_ethernet
ifconfig $bind_ethernet down
ifconfig $bind_ethernet 0.0.0.0 promisc up
brctl addbr $bridge_interface
brctl setfd $bridge_interface 0
brctl sethello $bridge_interface 0
brctl stp $bridge_interface off
brctl addif $bridge_interface $bind_ethernet
ifup $bridge_interface
echo ""
brctl show
echo ""
;;
stop)
ifdown $bridge_interface
ifconfig $bridge_interface down
brctl delif $bridge_interface $bind_ethernet
brctl delbr $bridge_interface
ifup $bind_ethernet
;;
restart|reload)
$0 stop && $0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
您可以考慮讓這個 script 在開機時自動執行:(在此時設定其啟動編號為 13)
代碼:
update-rc.d bridge start 13 0 2 3 4 5 6 .
這樣就可以在開機時就自動產生 bridge 這個介面囉。
設定 TUN/TAP 介面的 script
而 QEMU 設定 TUN/TAP 介面的 script 也要改成:(建議寫入 /etc/qemu-ifup 中)
代碼:
#!/bin/bash
ifconfig ${1##/*/} 0.0.0.0 promisc up
brctl addif bridge ${1##/*/}
這樣子,只要 QEMU 一啟動,在 QEMU 裡的 Guest System 就可以傳送接收 DHCP、Windows Login 等封包,外部網路的其它電腦也可以自由連線至 Guest System 了。
小技巧
如果在無線網路卡上啟動 Bridge 可能會遭遇到困難, 這時您可以在啟動 Bridge 之前先啟動無線網路卡, 很可能可以解決這個困擾哦!
另外,因為 Bridge 介面很可能會用到 iptbale 裡的 ipt_physdev 模組。
請自行參考 iptables 之說明。
而這個方式也適用於 User-Mode-Linux 及 Bochs 等等用得到 TUN/TAP 介面的程式哦!
設定 Guest System 小技巧
MS Windows 95/98/Me
在 QEMU 裡執行 MS Windows 95/98 時,將使得 CPU 的 Loading 永遠維持在 100%。 您可以到 AMN Software 下載並安裝 Amn Task Manager 來解決這個問題。
另外,Windows 95/98/ME 在安裝完成後, 在該顯示遊標的地方只會出現一個大大的白色方塊。(可能是一個 Bug...),所以建議使用 -std-vga 參數來暫時避開這個問題。
MS Windows 2000
可能暫時無法在 QEMU 裡安裝。會出現『磁碟空間不足』之錯誤訊息。
GNU/Linux
在安裝時,不管是 Woody 或是 Sarge 都能夠自動驅動 QEMU 所模擬的 NE2000 PCI 網路卡。
若想使用 X Window,顯示卡模組請採用 vesa 或是 cirrus 模組;色深建議採用 16 bit。
若想使用 Kernel 2.6.x,
因為 Kernel 2.6.x 會精確得檢查電腦硬體時鍾的時間,而這是 QEMU 無法模擬的。請在開機時加上 clock=pit 參數來避開這個問題。
在 Free Software 的世界中, 除了 Bochs 之外,還有一個以速度號稱的 x86 模擬器 - QEMU。
QEMU 的模擬速度約為實機的 25%; 約為 Bochs 的 60 倍。
Plex86、User-Mode-Linux、VMware 和 Virtual PC 則比 QEMU 快一點,但 Bochs 需要特定的 Kernel Patch;User-Mode-Linux 的 Guest System 必須為 Linux;
VMware 和 Virtual PC 則需要在 Guest System 上安裝特定的 Driver,且它們是針對作業系統而進行模擬,並不能說是完整的模擬器。
所以 QEMU 仍不失為極優秀的 x86 模擬器。
QEMU 所模擬的硬體列表
* i440FX host PCI bridge and PIIX3 PCI to ISA bridge
* Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA extensions (hardware level, including all non standard modes).
* PS/2 mouse and keyboard
* 2 PCI IDE interfaces with hard disk and CD-ROM support
* Floppy disk
* NE2000 PCI network adapters
* Serial port
* Soundblaster 16 card
QEMU 所採用的 PC BIOS 乃取自 Bochs 及 Plex86/Bochs 的 LGPL VGA BIOS。
事前準備
和 Bochs 類似的,在 QEMU 裡,是利用 Image File 來模擬硬碟的;也就是 QEMU 是將一個大大的檔案模擬成一顆硬碟。
我們可以利用 qemu-mkcow 指令來製作這些 Image File,例:
代碼: qemu-mkcow Sarge.cow 2048
這時就會產生一個名為 Sarge.bin 的 COW 檔案。
qemu-mkcow 所產生出來的檔案為取自 User-Mode-Linux 的 Copy On Write (COW) 檔案。 這種檔案的特性是:它只儲存修改過的磁區,所以它是一種會 Growing 的檔案格式。
但它只能存放在 ext2、ext3 之類,有支援 holes 的檔案系統之中。
在使用 ls -l 來檢視 COW 檔案時,
您會發現它的檔案容量就是您所指定的大小;(在上例中,就是 2048 MB) 而只有在使用 ls -ls 來檢視時才會出現它真正所佔用的磁碟空間。
注意:在執行 qemu-mkcow 指令時, 若所指定的檔案已經存在了,或是發生任何問題, qemu-mkcow 幾乎並不會輸出任何的錯誤訊息。使用時請注意。
執行 QEMU
QEMU 並不使用任何的設定檔,它只能以命令列參數來執行; 但是把這些參數寫成一個小小的 script 是輕而易舉的事,所以並不會造成任何的不便。
例: 代碼:
qemu -fda Boot.img -hda Windows95.cow -hdb Source.cow -cdrom CWindows95.iso -boot a -m 64 -enable-audio -localtime -user-net
一般參數(節錄)
-fda file / -fdb file:
指定軟碟機。可在此指定 Image 檔案。
-hda file / -hdb file / -hdc file / -hdd file:
指定硬碟 Image 檔案。請勿指定為光碟 ISO 檔案。
-cdrom file: 指定光碟機。可在此指定 ISO 檔案。它將固定使用 hdc 這個位置,
所以 -hdc 不能和 -cdrom 同時使用。
-boot [a|c|d]:
指定開機磁碟。a 為 floppy,c 為硬碟,d 為 CD-ROM。
-m megs:
指定記憶體大小;單位為 MB。預設為 128 MB。
-enable-audio:
啟用音效卡。預設是關閉的。
-localtime:
使用真實時間。建議使用於 MS Windows / DOS 系統。預設上是使用 UTC 時間。
網路設定參數(節錄)
在 QEMU 裡,有三種網路模式可供選擇:
TUN/TAP 模式(預設模式)
在 Linux 系統中,使用 TUN/TAP 介面來模擬網路界面是很標準的做法。
若要使用 TUN/TAP 介面,請切換至 /dev 目錄中,執行 代碼:
MAKEDEV tun 來建立 tun 之裝置檔。之後,在執行 QEMU 時,QEMU 便會自行載入 tun 模組並產生一個名為 tun0 的網路介面;之後 Guest System 便能夠藉由這個 tun0 介面和外部連線了。
請參考以下這個 script 來設定 TUN/TAP 介面: (請將 192.168.1.254 替換成一個空的 IP 位址。這個位址將由 tun 介面所使用。) (請將 192.168.1.101 替換成一個空的 IP 位址。這個位址將由 Guest System 使用。)
代碼:
#!/bin/bash
/sbin/ifconfig ${1##/*/} 192.168.1.254
route add -host 192.168.1.101 dev ${1##/*/}
這樣子在 QEMU 啟動時,就會將 tun 裝置設定為 192.168.1.254 了。由於執行這個 Scrip 需要 root 之權限, 所以必須具有 root 身份才能正常啟用這個模式的。且 tun 裝置的 IP 位置和 Guest System 的 IP 位址是寫死在 script 裡的, 所以在使用上並不是很方便。
藉由 TUN/TAP 介面來和網路連線。必須採用固定 IP,但 IP 可以隨意指定;Guest System 可以連線出去,Host OS 也可以和 Guest System 連線, 但外部網路的其它電腦則完全無法連線進來。User-Nat 模式 使用 User Mode Network Stack 來模擬網路界面。Guest System 必須採用 DHCP,且一定會得到 10.0.2.x 的IP,同時,Gateway 會指向 10.0.2.2,DNS 則指向 10.0.2.2。
Guest System 可以連線出去,但 Host OS 和外部網路的其它電腦則完全無法連線進來。
由於 User Mode Network Stack 無法完全支援 ping 指令,所以 Guest System 只能 Ping 到 Host OS,無法 ping 到外部網路的其它電腦。
Dummy Net 模式
並不實地得進行任何網路連線。 網路介面的命令例參數(節錄)
-nics n:
模擬幾個網路介面。預設為 1 個,最多為 6 個。
-n script:
設定 TUN/TAP 網路連線的 script;預設為使用 /etc/qemu-ifup。
-user-net:
使用 User Mode Network Stack。
若未指定或找不到 TUN/TAP 的 script 時,則會採用這個模式。
-dummy-net:
使用虛擬的網路介面。這個網路介面將不會傳送接收任的網路連線。
除錯 / 進階選項(節錄)
-S:
在啟動時暫停 CPU 之運作。使用 c 來繼續執行。
-d item1,...
將 LOG 輸出至 /tmp/qemu.log 中。
使用 -d ? 來查看會產生 LOG 的項目之列表。
-isa:
模擬一個純 ISA 系統;預設上則是模擬成 PCI 系統。
-std-vga:
將顯示卡模擬成一個同時包含了 VESA Bochs 擴充的標準 VGA 卡。
預設則模擬為 CL-GD5446 PCI 顯示卡。
QEMU Monitor(節錄)
在執行 QEMU 後,會出現一個
代碼: (qemu) 的提示。在這個提示下可以輸入一些指令來操作 QEMU。例:
help 或 ? [cmd]
顯示說明文字
info 指令:
顯示系統狀態。例:
★ info network,顯示網路介面狀態
★ info block,顯示儲存裝置狀態
★ info registers,顯示 CPU 的暫存器狀態
★ info history,顯示歷史指令
q 或 quit:
關閉模擬器
eject [-f] device:
退出裝置。使用 -f 來強制退出
change device filename:
更換抽取式媒體。如:軟碟片或是光碟片。
screendump filename:
截取螢幕畫面,儲存成 PPM 影像。
log item1[,...]
將所指定的項目之 LOG 寫入 /tmp/qemu.log 中。
savevm filename:
將整個模擬器狀態儲存至檔案中
loadvm filename:
由檔案中載入模擬器狀態
stop
停止模擬
c 或 cont
繼續模擬
sendkey keys
傳送某個鍵擊給模擬器。使用 - 來連結複合鍵。例:
代碼:
sendkey ctrl-alt-f1
將會傳送 <Ctrl><Alt><F1> 給模擬器。
system_reset
重新啟動系統。
快捷鍵
在 QEMU 的系統裡,可以按下 <Ctrl><Shift> 來跳離 QEMU;
按下 <Ctrl><Shift><f> 來進入全螢幕的畫面。
網路介面解決方案
使用 sudo 來執行 QEMU
如果要使用 TUN/TAP 介面,必須以 root 身份來設定 TUN/TAP 介面才行。
所以建議採用 sudo 的方式執行 QEMU。
☆ 以 root 或是 SUID 或 sudo 來執行任何程式都是大風險,
尤其是使用者可以自行設定 QEMU 呼叫某一個 script 來設定網路, 若 QEMU 以 SUID/sudo 來執行的話,將可能引起極嚴重之安全問題。
* 安裝 sudo 套件。
* 以 visudo 來建立 sudo 的設定檔,並設定不用輸入密碼即可執行 QEMU: (其中的 UserName 和 HostName 請替換成您的系統設定,或設定為 ALL。)
代碼:
Cmnd_Alias QEMU=/usr/bin/qemu
UserName HostName=NOPASSWD: QEMU
* 編輯 .bashrc,讓 qemu 能預設以 sudo qemu 來執行:
代碼:
alias qemu='sudo qemu'
* 執行 qemu,並以 ps aux | grep bochs 來確認 qemu 是否以 root 的身份執行?
讓 TUN/TAP 介面可以和實體網路連線
若依前文所提的方式來設定 TUN/TAP 介面,
則 Guest System 則只能使用固定 IP、
且除了 Host OS 之外,外部網路的其它電腦會完全無法連線至 Guest System。
這種做法並非十全十美。
解決方案之一是將 TUN/TAP 介面和實體網路給 Bind 在一起, 也就是將數個實體網路介面合成一個 Bridge 介面:
設定 Bridge 介面
* 安裝 bridge-utils 套件
* 在 /etc/network/interfaces 加入一段:(在此假設是使用 DHCP 來設定網路的)代碼:
iface bridge inet dhcp
其中的 bridge 名稱可以自訂。
這樣子我們在日後就可以用 ifup、ifdown、ifconfig 等指令來直接操作 bridge 這個介面了。
當然囉,使用 ifconfig、route、dhclient 等指令來手動操作當然也可以;這就全憑個人喜好了。
* 這數個要 Bind 在一起的實體網路介面之 IP 必須為 0.0.0.0,並啟用 promisc 模式:
代碼:
ifconfig eth0 0.0.0.0 promisc up
* 宣告一個名為 bridge 介面的『Bridge';並設定其動作模式:
代碼:
# 建立一個名為 bridge 的 Bridge 介面
brctl addbr bridge
# 轉送延遲時間,Bridge 切換至 listening 及 learning 狀態所需時間。
# Bridge 會花一點時間來記錄每個實體介面的 MAC Address。
brctl setfd bridge 0
# 傳送 STP Hello 封包的頻率。設定為 0 因為我們不使用 STP 這個功能。
brctl sethello bridge 0
# 關閉 spanning tree protocol 功能。用不著...
brctl stp bridge off
* 此時,可以使用 ifconfig -a 來檢視是否出現了 bridge 這個介面。
* 將 eth0 給 Bind 至 bridge 上:
代碼:
brctl addif bridge eth0
* 啟用 bridge 介面:
如果在 /etc/network/interfaces 已設定了 bridge 資訊的話:
ifup bridge
若 bridge 使用 DHCP:
dhclient bridge
手動設定 bridge 參數:
ifconfig bridge 192.168.1.1 netmask 255.255.255.0 up
route add default gw 192.168.1.254
* 檢視 Bridge 的狀況:
代碼:
brctl show
* 由於將數個介面合成了一個 bridge 介面, 而像是 iptables、pppoe 等等設定也必須視情況而有所變更。 而如何設定 iptables 就超過了本篇的範圍之外,在此就略過不加討論了。
關閉 bridge 的方式
* 關閉 bridge 介面:
代碼:
ifdown bridge
ifconfig bridge down
* 解除 Bind 在 bridge 上的 eth0:
代碼:
brctl delif bridge eth0
* 移去 bridge 介面:
代碼:
brctl delbr bridge
* 啟用 eth0:(如果在 /etc/network/interfaces 已設定了 eth0 資訊的話)
代碼:
ifup eth0
這時,eth0 應該就恢後原有的狀態了。
將以上步驟寫成 /etc/init.d/bridge:
代碼:
#!/bin/sh
PATH=/usr/local/sbin:/sbin:/usr/sbin:/usr/local/bin:/bin:/usr/bin
if [ "$(id -u)" != "0" ]; then
echo "$0: To $1 Bridge, you must be root."
exit 1
fi
# Default settings
bridge_interface='bridge'
bind_ethernet='eth0'
case "$1" in
start)
printf "Starting Bridge ... "
ifdown $bind_ethernet
ifconfig $bind_ethernet down
ifconfig $bind_ethernet 0.0.0.0 promisc up
brctl addbr $bridge_interface
brctl setfd $bridge_interface 0
brctl sethello $bridge_interface 0
brctl stp $bridge_interface off
brctl addif $bridge_interface $bind_ethernet
ifup $bridge_interface
echo ""
brctl show
echo ""
;;
stop)
ifdown $bridge_interface
ifconfig $bridge_interface down
brctl delif $bridge_interface $bind_ethernet
brctl delbr $bridge_interface
ifup $bind_ethernet
;;
restart|reload)
$0 stop && $0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
您可以考慮讓這個 script 在開機時自動執行:(在此時設定其啟動編號為 13)
代碼:
update-rc.d bridge start 13 0 2 3 4 5 6 .
這樣就可以在開機時就自動產生 bridge 這個介面囉。
設定 TUN/TAP 介面的 script
而 QEMU 設定 TUN/TAP 介面的 script 也要改成:(建議寫入 /etc/qemu-ifup 中)
代碼:
#!/bin/bash
ifconfig ${1##/*/} 0.0.0.0 promisc up
brctl addif bridge ${1##/*/}
這樣子,只要 QEMU 一啟動,在 QEMU 裡的 Guest System 就可以傳送接收 DHCP、Windows Login 等封包,外部網路的其它電腦也可以自由連線至 Guest System 了。
小技巧
如果在無線網路卡上啟動 Bridge 可能會遭遇到困難, 這時您可以在啟動 Bridge 之前先啟動無線網路卡, 很可能可以解決這個困擾哦!
另外,因為 Bridge 介面很可能會用到 iptbale 裡的 ipt_physdev 模組。
請自行參考 iptables 之說明。
而這個方式也適用於 User-Mode-Linux 及 Bochs 等等用得到 TUN/TAP 介面的程式哦!
設定 Guest System 小技巧
MS Windows 95/98/Me
在 QEMU 裡執行 MS Windows 95/98 時,將使得 CPU 的 Loading 永遠維持在 100%。 您可以到 AMN Software 下載並安裝 Amn Task Manager 來解決這個問題。
另外,Windows 95/98/ME 在安裝完成後, 在該顯示遊標的地方只會出現一個大大的白色方塊。(可能是一個 Bug...),所以建議使用 -std-vga 參數來暫時避開這個問題。
MS Windows 2000
可能暫時無法在 QEMU 裡安裝。會出現『磁碟空間不足』之錯誤訊息。
GNU/Linux
在安裝時,不管是 Woody 或是 Sarge 都能夠自動驅動 QEMU 所模擬的 NE2000 PCI 網路卡。
若想使用 X Window,顯示卡模組請採用 vesa 或是 cirrus 模組;色深建議採用 16 bit。
若想使用 Kernel 2.6.x,
因為 Kernel 2.6.x 會精確得檢查電腦硬體時鍾的時間,而這是 QEMU 無法模擬的。請在開機時加上 clock=pit 參數來避開這個問題。
- 10月 07 週二 200822:58
[轉貼] VSFTPD 設定參數
本篇出自:二林網管-村仔仔的學習手札
3.2.3 設定檔說明
在範例中,有些省略的設定可以在這邊找到,譬如連線電腦的總數、同一個位址的連線電腦數、顯示檔案擁有者的名稱等等,希望讀者細讀後,可以做出最適合自己的設定。
格式
vsftpd.conf 的內容非常單純,每一行即為一項設定。若是空白行或是開頭為#的一行,將會被忽略。內容的格式只有一種,如下所顯示
option=value
要注意的是,等號兩邊不能加空白,不然是不正確的設定。
===ascii 設定=====================
ascii_download_enable
管控是否可用ASCII 模式下載。預設值為NO。
ascii_upload_enable
管控是否可用ASCII 模式上傳。預設值為NO。
===個別使用者設定===================
chroot_list_enable
如果啟動這項功能,則所有的本機使用者登入均可進到根目錄之外的資料夾,除了列
在/etc/vsftpd.chroot_list 之中的使用者之外。預設值為NO。
userlist_enable
用法:YES/NO
若是啟動此功能,則會讀取/etc/vsftpd.user_list 當中的使用者名稱。此項功能可以在詢問密碼前就出現失敗訊息,而不需要檢驗密碼的程序。預設值為關閉。
userlist_deny
用法:YES/NO
這個選項只有在userlist_enable 啟動時才會被檢驗。如果將這個選項設為YES,則在/etc/vsftpd.user_list 中的使用者將無法登入 若設為NO , 則只有在
/etc/vsftpd.user_list 中的使用者才能登入。而且此項功能可以在詢問密碼前就出現錯誤訊息,而不需要檢驗密碼的程序。
user_config_dir
定義個別使用者設定文件所在的目錄,例如定義user_config_dir=/etc/vsftpd/userconf,且主機上有使用者test1, test2,那我們可以在user_config_dir 的目錄新增檔案名為test1 以及test2。若是test1 登入,則會讀取user_config_dir 下的test1 這個檔案內的設定。預設值為無。
===歡迎語設定=====================
dirmessage_enable
如果啟動這個選項,使用者第一次進入一個目錄時,會檢查該目錄下是否有.message這個檔案,若是有,則會出現此檔案的內容,通常這個檔案會放置歡迎話語,或是對該目錄的說明。預設值為開啟。
banner_file
當使用者登入時,會顯示此設定所在的檔案內容,通常為歡迎話語或是說明。預設值為無。
ftpd_banner
這邊可定義歡迎話語的字串串,相較於banner_file 是檔案的形式,而ftpd_banner 是字串的格式。預設為無。
===特殊安全設定====================
chroot_local_user
如果設定為YES,那麼所有的本機的使用者都可以切換到根目錄以外的資料夾。預設值為NO。
hide_ids
如果啟動這項功能,所有檔案的擁有者與群組都為ftp,也就是使用者登入使用ls -al之類的指令,所看到的檔案擁有者跟群組均為ftp。預設值為關閉。
ls_recurse_enable
若是啟動此功能,則允許登入者使用ls -R 這個指令。預設值為NO。
write_enable
用法:YES/NO
這個選項可以控制FTP 的指令是否允許更改file system,譬如STOR、DELE、
RNFR、RNTO、MKD、RMD、APPE 以及SITE。預設是關閉。
setproctitle_enable
用法:YES/NO
啟動這項功能,vsftpd 會將所有連線電腦的狀況已不同的process 呈現出來,換句話說,使用ps -ef 這類的指令就可以看到連線電腦的狀態。預設值為關閉。
tcp_wrappers
用法:YES/NO
如果啟動,則會將vsftpd 與tcp wrapper 結合,也就是可以在/etc/hosts.allow 與/etc/hosts.deny 中定義可連線電腦或是拒絕的來源位址。
pam_service_name
這邊定義PAM 所使用的名稱,預設為vsftpd。
secure_chroot_dir
這個選項必須指定一個空的資料夾且任何登入者都不能有寫入的權限,當vsftpd 不需要file system 的權限時,就會將使用者限制在此資料夾中。預設值為/usr/share/empty
===紀錄文件設定=====================
xferlog_enable
用法:YES/NO
如果啟動,上傳與下載的信息將被完整紀錄在底下xferlog_file 所定義的檔案中。預設為開啟。
xferlog_file
這個選項可設定紀錄文件所在的位置,預設值為/var/log/vsftpd.log。
xferlog_std_format
如果啟動,則紀錄文件將會寫為xferlog 的標準格式,如同wu-ftpd 一般。預設值為關閉。
===逾時設定======================
accept_timeout
接受建立連線電腦的逾時設定,服務機構為秒。預設值為60。
connect_timeout
回應PORT 方式的資料連線電腦的逾時設定,服務機構為秒。預設值為60。
data_connection_timeout
建立資料連線電腦的逾時設定。預設值為300 秒。
idle_session_timeout
發呆的逾時設定,若是超出這時間沒有資料的傳送或是指令的輸入,則會強迫斷線,服務機構為秒。預設值為300。
===速率限制======================
anon_max_rate
匿名登入所能使用的最大傳輸速度,服務機構為每秒多少bytes,0 表示不限速度。預設值為0。
local_max_rate
本機使用者所能使用的最大傳輸速度,服務機構為每秒多少bytes,0 表示不限速度。預設值為0。
===新增檔案權限設定==================
anon_umask
匿名登入者新增檔案時的umask 數值。預設值為077。
file_open_mode
上傳檔案的權限,與chmod 所使用的數值相同。預設值為0666。
local_umask
本機登入者新增檔案時的umask 數值。預設值為077。
===port 設定======================
connect_from_port_20
用法:YES/NO
若設為YES,則強迫ftp-data 的資料傳送使用port 20。預設值為YES。
ftp_data_port
設定ftp 資料連線電腦所使用的port。預設值為20。
listen_port
FTP server 所使用的port。預設值為21。
pasv_max_port
建立資料連線電腦所可以使用port 範圍的上界,0 表示任意。預設值為0。
pasv_min_port
建立資料連線電腦所可以使用port 範圍的下界,0 表示任意。預設值為0。
===其它========================
anon_root
使用匿名登入時,所登入的目錄。預設值為無。
local_enable
用法:YES/NO
啟動此功能則允許本機使用者登入。預設值為YES。
local_root
本機使用者登入時,將被更換到定義的目錄下。預設值為無。
text_userdb_names
用法:YES/NO
當使用者登入後使用ls -al 之類的指令查詢該檔案的管理權時,預設會出現擁有者的UID,而不是該檔案擁有者的名稱。若是希望出現擁有者的名稱,則將此功能開啟。預設值為NO。
pasv_enable
若是設為NO,則不允許使用PASV 的模式建立資料的連線電腦。預設值為開啟。
===更換檔案所有權===================
chown_uploads
用法:YES/NO
若是啟動,所有匿名上傳資料的擁有者將被更換為chown_username 當中所設定的使用者。這樣的選項對於安全及管理,是很有用的。預設值為NO。
chown_username
這裡可以定義當匿名登入者上傳檔案時,該檔案的擁有者將被置換的使用者名稱。預設值為root。
===guest 設定=====================
guest_enable
用法:YES/NO
若是啟動這項功能,所有的非匿名登入者都視為guest。預設值為關閉。
guest_username
這裡將定義guest 的使用者名稱。預設值為ftp。
===anonymous 設定==================
anonymous_enable
用法:YES/NO
管控使否允許匿名登入,YES 為允許匿名登入,NO 為不允許。預設值為YES。
no_anon_password
若是啟動這項功能,則使用匿名登入時,不會詢問密碼。預設值為NO。
anon_mkdir_write_enable
用法:YES/NO
如果設為YES,匿名登入者會被允許新增目錄,當然,匿名使用者必須要有對上層目錄的寫入權。預設值為NO。
anon_other_write_enable
用法:YES/NO
如果設為YES,匿名登入者會被允許更多於上傳與建立目錄之外的權限,譬如刪除或是更名。預設值為NO。
anon_upload_enable
用法:YES/NO
如果設為YES,匿名登入者會被允許上傳目錄的權限,當然,匿名使用者必須要有對上層目錄的寫入權。預設值為NO。
anon_world_readable_only
用法:YES/NO
如果設為YES,匿名登入者會被允許下載可閱讀的檔案。預設值為YES。
ftp_username
定義匿名登入的使用者名稱。預設值為ftp。
deny_email_enable
若是啟動這項功能,則必須提供一個檔案/etc/vsftpd.banner_emails,內容為email
address。若是使用匿名登入,則會要求輸入email address,若輸入的email address 在此檔案內,則不允許連線電腦。預設值為NO。
===Standalone 選項==================
listen
用法:YES/NO
若是啟動,則vsftpd 將會以獨立運作的方式執行,若是vsftpd 獨立執行,如RedHat9的預設值,則必須啟動 若是vsftpd 包含在xinetd 之中,則必須關閉此功能,如RedHat8。在RedHat9 的預設值為YES。
listen_address
若是vsftpd 使用standalone 的模式,可使用這個參數定義使用哪個IP address 提供這項服務,若是主機上只有定義一個IP address,則此選項不需使用,若是有多個IP address,可定義在哪個IP address 上提供ftp 服務。若是不設定,則所有的IP address均會提供此服務。預設值為無。
max_clients
若是vsftpd 使用standalone 的模式,可使用這個參數定義最大的總連線電腦數。超過這個數目將會拒絕連線電腦,0 表示不限。預設值為0。
max_per_ip
若是vsftpd 使用standalone 的模式,可使用這個參數定義每個ip address 所可以連線電腦的數目。超過這個數目將會拒絕連線電腦,0 表示不限。預設值為0。
=============================
3.2.4 FTP 數字程式碼的意義
110 重新啟動標記回應。
120 服務在多久時間內ready。
125 資料鏈路埠開啟,準備傳送。
150 文件狀態正常,開啟資料連接連接埠。
200 指令執行成功。
202 指令執行失敗。
211 系統狀態或是系統求助回應。
212 目錄的狀態。
213 文件的狀態。
214 求助的訊息。
215 名稱系統類型。
220 新的連線電腦服務ready。
221 服務的控制連接埠關閉,可以註銷。
225 資料連結開啟,但無傳輸動作。
226 關閉資料連接連接埠,請求的文件操作成功。
227 進入passive mode。
230 使用者登入。
250 請求的文件操作完成。
257 顯示目前的路徑名稱。
331 用戶名稱正確,需要密碼。
332 登入時需要帳號信息。
350 請求的操作需要進一部的指令。
421 無法提供服務,關閉控制連結。
425 無法開啟資料鏈路。
426 關閉連線電腦,終止傳輸。
450 請求的操作未執行。
451 指令終止:有本機的錯誤。
452 未執行指令:磁牒空間不足。
500 格式錯誤,無法識別指令。
501 參數語法錯誤。
502 指令執行失敗。
503 指令順序錯誤。
504 指令所接的參數不正確。
530 未登入。
532 儲存文件需要賬戶登入。
550 未執行請求的操作。
551 請求的指令終止,類型未知。
552 請求的文件終止,儲存位溢出。
553 未執行請求的的指令,名稱不正確。
- 10月 07 週二 200822:57
[轉貼] 讓 Pietty 與 SSH 保持連線
本篇出自:Gavin's Linux學習手札
當我們使用 Pietty(putty)與伺服器做 SSH 連線時,只要使用者閒置一段時間就會自動斷線,我們要如果讓 Pietty 保持連線呢?
首先,修改伺服器上 SSH 的設定檔
/etc/ssh/sshd_config
------------------------------------
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3
將前面的 # 拿掉
TCPKeepAlive yes
ClientAliveInterval 0
ClientAliveCountMax 3
接下來修改 Pietty 的參數,進入」PieTTY 連線設定」。
選擇「Connection」項目,左邊將「Seconds between keepalives [0 to turn off]」輸入你所需要每隔幾秒,傳送一個封包訊息保持連線。
當我們使用 Pietty(putty)與伺服器做 SSH 連線時,只要使用者閒置一段時間就會自動斷線,我們要如果讓 Pietty 保持連線呢?
首先,修改伺服器上 SSH 的設定檔
/etc/ssh/sshd_config
------------------------------------
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3
將前面的 # 拿掉
TCPKeepAlive yes
ClientAliveInterval 0
ClientAliveCountMax 3
接下來修改 Pietty 的參數,進入」PieTTY 連線設定」。
選擇「Connection」項目,左邊將「Seconds between keepalives [0 to turn off]」輸入你所需要每隔幾秒,傳送一個封包訊息保持連線。
- 10月 07 週二 200822:57
[轉貼] Traceroute 的功能介紹
本文出自PCZONE by shyong
Traceroute 的功能介紹
一、What's Traceroute ?
每個連接在 Internet 上的設備,如 Webserver、Router、
Client...等一般情形下都會有一組獨立的IP Address。透過
Traceroute 我們可以得知封包(Packet)從你的電腦到網路另一端的
電腦所走的路徑。當然每次封包從相同的出發點(source)傳送到相同
的目的地(destination)所走的路徑都有所不同,但大致上來說絕大
部分所走的路徑是相同的。在 Linux 系統中,我們稱為
Traceroute, 在Microsoft Windows中稱為 Tracert。 Traceroute
送出的封包抵到目的設備後,一直到其返回,來測量其所需的時間。
一條路徑上的每個設備Traceroute 測試 3 次。輸出結果中包含每次
測試的時間(ms)和設備的名稱(如有的話)及IP Address。
於 C:>tracert http://www.pczone.com.tw [Enter]
Tracing route to reality.pczone.com.tw [209.66.124.61]
over a maximum of 30 hops:
1 40 ms 40 ms 40 ms 61-216-192-254.HINET-IP.hinet.net [61.216.192.254]
2 41 ms 50 ms 50 ms kh-b-c6r1.router.hinet.net [168.95.227.62]
3 40 ms 50 ms 50 ms kh-b-c12r1.router.hinet.net [168.95.207.201]
4 40 ms 50 ms 40 ms kh-b-c12r31.router.hinet.net [168.95.19.25]
5 50 ms 50 ms 41 ms pa-c12r1.USA-PaloAlto.router.hinet.net [202.39.91.5]
6 71 ms 70 ms 70 ms sj-c7r1.USA-SanJose.router.hinet.net [202.39.83.9]
7 91 ms 92 ms 92 ms abovenet-hinet-fe.sjc.above.net [209.249.0.185]
8 111 ms 110 ms 101 ms core5-core2-oc3.sjc1.above.net [216.200.0.118]
9 110 ms 110 ms 110 ms core3-sjc1-oc48.sjc2.above.net [208.184.102.206]
10 111 ms 100 ms 110 ms main1colo8-core3-oc12.sjc2.above.net [208.184.102.226]
11 111 ms 120 ms 110 ms ymca.com.tw [209.66.124.61]
Trace complete.
參數說明:
tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name
該診斷實用程序通過向目的地傳送具有不同生存時間 (TTL) 的
Internet 控制信息協議 (ICMP) 回應報文,以確
定至目的地的路由。路徑上的每個路由器都要在轉發該 ICMP 回應封
包之前將其 TTL 值至少減 1,因此 TTL 是有效的跳轉計數。當封包
的 TTL 值減少到 0 時,路由器向原來系統傳回 ICMP 逾時訊息。通
過發送 TTL 為 1 的第一個回應封包並且在隨後的發送中每次將
TTL 加 1,直到目標回應或到達最大 TTL 值,Tracert 可以確定路
由通過檢查途中路由器發回的 ICMP 逾時(Time Exceeded)訊息,以
確定路由器。注意,有些路由器會「安靜」的丟棄生存時間(TLS)過
期的封包並且對 tracert 指令無效。
參數
-d 指定不對網域名稱解析地址。
-h maximum_hops 指定尋找目標的跳躍最大數量。
-j computer-list 指定在 computer-list 中鬆散來源路由。
-w timeout 等待由 timeout 對每個回應指定的毫秒數。
target_name 目的電腦的名稱。
二、What's Traceroute Gateway ?
使用 Traceroute(或Tracert)是基於一台電腦的,但是通常你只
能知道以本身的電腦為來源位址到網路上任意一台線上的電腦的路由
連接品質及數據傳輸效率的情況,而使用基於 WEB 的方式,只要一
台電腦安裝了特定的CGI 程序,用戶就可以通過這台電腦運行相關的
程序,執行 Traceroute 的功能。這台電腦稱為 Traceroute
Gateway。Traceroute 閘道可以幫助用戶瞭解網路的物理與邏輯連接
的拓樸情形及數據傳輸效率。這種閘道如果夠多的話,我們就可清楚
的瞭解連線到各電腦之間的情形。
三、What's use Traceroute?
1.幾乎每個上網的人對於本身的電腦與網路的連接,路徑,連接速
度,品質...等都很在意。使用由 Hinet 組織起來的各地區 Router
所提供的 Traceroute 閘道服務,將會給你滿意的答案。從你的電腦
到任何其他的電腦,Hinet(Traceroute)能提供其中間的每個 Router
(IP Address)及連接時間。它可以讓你畫出通過網路的路徑。
2.目前許多公司和公家機關都設有自己的伺服器-尤其是 Web
server。一但擁有自己的 Web server,隨著登入的
人數增加,你一定很想知道是否他們都能與你連接。你的 ISP 如何
與一個或多個 NAP 連接,以及他們的連接效率會直接影響到你的連接
品質.
3.在選擇ISP方面,骨幹頻寬及對國外頻寬是大多數的網友喜歡檢查
該 Site 的連接性能及與誰連接,連接到哪裡。NetMap
(Traceroute)將給你一個完美的答案。
四、Traceroute的功能介紹:
Traceroute最早是由 Van Jacobson 在 1988年寫出的程式。當
時主要是解決他本身所碰到的一些網路問題。Traceroute 是一個正
確理解 IP 網路並瞭解路由原理的重要工具。這對負責網路工程技術
與 MIS 是一個不錯的程式。對 ISP 而言,設立 Traceroute
Gateway,提高用戶對 ISP QoS。High QoS ISP 通常會設立
Traceroute Gateway,讓用戶明解他們與網路連接時的傳輸效率。當
然,基本設備差,Low Qos ISP 是非常害怕提供這項服務。因為,如
此用戶就可透過這項工具瞭解 ISP 目前的網路連接品質。
在一台電腦安裝相關的 Traceroute 的 CGI 程式後,你就可以
輸入相對應的目的電腦的IP Address 或者 Domain name ,就可得到
相關的數據:
五、Traceroute的命令參數:
Traceroute 的用法為: Traceroute [options] [data size]
[options]的內容有:
[-n]:顯示位址是用 IP表示而非 Domain name
[-v]:長輸出
[-p]:UDP 阜口設定(初設值33434)
[-q]:設定 TTL測試數量(初設值3)
[-t]:設定測試封包的服務類型
[data size]:每次測試封包的數據字元長度(初設值38)
六、Traceroute 工作原理:
Traceroute最簡單的基本用法是:traceroute hostname
tarski:~traceroute to pczone.com.tw (209.66.124.61), 30 hops max, 40 byte packets
1 TKU-MOE.tku.edu.tw (163.13.1.254) 0.752 ms 0.619 ms 0.627 ms
2 140.111.255.25 (140.111.255.25) 1.358 ms 2.004 ms 1.865 ms
3 TANet-defaultgateway.edu.tw (203.72.38.101) 6.5 ms 11.673 ms 8.175 ms
4 * TANet-Internet.edu.tw (210.70.55.38) 95.83 ms *
5 * 12.124.35.17 (12.124.35.17) 185.175 ms 183.056 ms
6 gbr5-p80.sffca.ip.att.net (12.123.13.150) 212.853 ms 218.853 ms 211.15 ms
7 gbr4-p100.sffca.ip.att.net (12.122.5.146) 231.717 ms 235.807 ms *
8 ggr1-p370.sffca.ip.att.net (12.123.13.69) 239.347 ms * 240.052 ms
9 * above-att-oc3.sjc2.above.net (216.200.254.157) 254.362 ms 258.62 ms
10 * sjc2-gige-core1.sjc2.above.net (208.184.102.97) 257.209 ms 252.991 ms
11 core4-core1-oc48.sjc2.above.net (208.184.102.202) 270.475 ms 268.473 ms s
12 sjc2-gige-main2.colo8.sjc2.above.net (208.185.175.38) 273.827 ms 269.929 s
13 ymca.com.tw (209.66.124.61) 262.796 ms 265.22 ms 269.965 ms
Traceroute 程式的設計是利用ICMP及IP header的TTL(Time
To Live)欄位(field)。首先,traceroute
會送出一個TTL為1的IP datagram(其實,每次送出的是 3個 40
bytes 的 Packet,內容為來源地址,目的地址
和封包發送的時間標籤)到目的地,當路徑上的第一個路由器
(Router)收到這個 datagram 時,會將 TTL減1。
此時,TTL變為0了,所以該Router會將此 datagram丟棄,並送回一
個「ICMP time exceeded」訊息(包括發送
IP封包的來源地址,IP封包的所有內容及 Router IP Address),
Traceroute 收到這個訊息後,便得知此
Router 存在於這個路徑上,接著 Traceroute 會再送出另一個 TTL
為 2 的datagram,當發現第 2個 Router
...... traceroute 每次將送出的 datagram 的 TTL 加1來發現另一
個 Router,這個重複的動作會一直持續到某
個 datagram 抵達目的地。當 datagram 到達目的地後,該電腦並不
會送回 ICMP time exceeded 消息,因為它
已經是目的地,那麼 traceroute 又如何知道目的地已到達呢?
Traceroute在送出 UDP datagrams 到目的地時,它所選擇送達
的 port number 是一般應用程式不會用的號
碼(30000 以上),所以當此 UDP datagram 到達目的地後該電腦會送
回一個「ICMP port unreachable」的訊息,
而當 traceroute 收到此訊息時,便知道目的地已經抵達。所以
traceroute 在 Server 端也是沒有所謂的
Daemon 程式。
Traceroute 送出 ICMP TTL 到期訊息的設備 IP Address 並作
網域解析。每次 Traceroute 都顯示出一串數據,包含所經過的路由
設備名稱及 IP Address ,三個封包每次來回所花的時間。
Traceroute face="宋體" 有一個固定的時間等待響應(ICMP TTL
到期訊息)。如果這個時間超過,它將顯示出一系列的 * 號註明:在
這個路徑上,此設備不能在規定的時間內發出ICMP TTL 到期訊息的
回應。之後,Traceroute 將 TTL 記數器加 1,然後繼續進行。
- 10月 07 週二 200822:56
[轉貼]淺談EPC Xandros OS
本文出自:linux心得分享- 淺談EPC Xandros OS
EPC OS 是 ASUS 委託 Xandros客製化的OS,Xandros 使用Debian based + icewm(windows manager),
最大的功夫是花在(1)快速開機(2)記憶體fine tune(3)EOU(Easy of USE).
如果有人興趣研究的話,筆者提供以下資訊:
1.Xandros SDK
請到以下網址download
Xandros Desktop - Open Circulation Edition, version 4.5+Eclipse+QT
整合成一片install DVD,在此可以開發程式http://sourceforge.net/project/showfiles.php?group_id=215613
其中ASUS-SDK-GUIDE.pdf 不妨先看一下,尤其是關掉Eclipse一些功能,可以加快開發環境執行的速度.
2.VM-Ware
2.1 下載 floppy image
ftp://ftp.debian.org/debian/dists/stable/main/installer-i386/20070308/images/floppy/
03/10/07 12:00上午 1,474,560 boot.img
03/10/07 12:00上午 1,474,560 net-drivers-1.img
03/10/07 12:00上午 1,474,560 net-drivers-2.img
03/10/07 12:00上午 1,474,560 root.img
2.2 apt-get install icewm xserver-xfree86 xfonts-base xterm
2.3 startx
3.EPC-實體安裝
3.1 下載debian image for epc,並dd 到USB flash開機
http://eeepc.debian.net/images/
3.2 apt-get install icewm xserver-xfree86 xfonts-base xterm
3.3 startx
4.其它平台
你也可以在其它電腦平台上發展QT或GTK的程式,不過要注意link libary 的問題.
