2011年4月30日 星期六

Windows 7 的 SSD 效能優化進階

Windows 7 的 SSD 效能優化進階

在進入 SSD 的門戶後, 難免要把作業系統優化, SSD 應用時有效維護及提昇運作效能, 優化主要針對 Windows 7 作業系統, 快將引退的 XP 系統有硬體及軟體上的功能限制(不支援系統原生的 TRIM 功能)也該準備退役了, 雖然 Windows 7 系統有良好的支援 SSD(微軟說的), 不過還是有很多被忽略的需要手動修改, SSD 優化後的好處在效能上也十分明顯。

作業系統優化後除了影響 SSD 固態硬碟效能, 減小 SSD 頻繁作業亦有效增強了閒置時維護(TRIM/GC)後的高鋒寫入效能, 還會對 HDD 硬碟機有小許改善。

Windows 7 SSD 一般重點優化:
  • Disk alignment 對齊 (SSD)
    微軟在 WinHEC 2008 的技術文件 Windows 7 Enhancements for Solid-State Drives 序述了關於 SSD 的 4KB page size(block) alignment 的問題對文件系統(NTFS 分割區)的寫入效能影響; 預見的在安裝 SSD 時 NTFS 分割格化後, 分割區沒有對齊 4KB page 邊界而寫入時抹寫兩個實體 block 動作次數, 在持續寫入效能影響下降達 ~20% 至 ~40% 之間(已實測), 要修正 SSD align 問題, 必雖使用 disk align 軟體(例如 Paragon Alignment Tool)將初始化後的 SSD 執行 partition align 分割區對齊, 以得到完美的寫入效能。建議在 SSD 初始分割格化後即時執行對齊程序, 可減小因為分割區內大量文件檔案耗用執行對齊時間。
  • AHCI (SSD/HDD)
    AHCI 模式對不同廠牌 SSD 的傳輸影響在 AS SSD 測試中 4KQD32 有達 ~400%以上(NCQ 對細小的持續讀取最明顯), 要用盡 SSD 的效能火力(尤其是配合 Intel RST AHCI)的話, 開啟 AHCI 模式是無容置疑; 如果 OS 已安裝成 IDE 模式的話, 需要在 Windows 7 內先修改 registry 機碼(及準備好驅動程式), 然後重啟電腦進入 BIOS 啟用 AHCI。

    修改 Windows 7 機碼啟用 AHCI:
    以系統管理員身分執行 regedit 登錄編輯程式
    尋找
    [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msahci]
    修改
    將 start 預設值 3 修改為 0參考微軟技術文件 KB922976
  • TRIM (SSD)
    Windows 7 新增 TRIM 功能支援專用於 SSD, 主要由於 Block、Page 及 Cell 必須首先抹除才能寫入新的數據, 寫入隨時間及空間容量縮小累積而在沒有更多 pre-erase 的 block 下持續爆發寫入(burst write)效能下降, TRIM 的作用是把 SSD 可刪除文件的 block/cell 資料立即標示為 invalid, 容許內置預先抹除, 待再有寫入動作時減去了同時要執行抹除作業。要應用到 TRIM 的話, 必須 OS、驅動程式 及 SSD 同時支援, 現時 OS 完全支援 TRIM 功能只有 Windows 7, Windows Server 2008 R2 及 Linux(kernel 2.6.33), 而 Windows 7 內的 Microsoft generic AHCI/ATA 驅動程式 及 Intel 的 RST 9.6 已支援 TRIM, 市場上的 SSD 並不是全部都支援 TRIM, 部分可以透過更新 firmware 提供升級, 部分因為 SSD 控制晶片的限制沒有 TRIM 功能, 某些舊型號 SSD 亦沒有 GC(Garbage Collection)功能內建(需要額外工具程式修復, 例如 Intel X25-M G1, 及 JMF612 控制器晶片), 採購 SSD 時要注意是否支援。

    Windows 7 查看 TRIM 支援預設:
    以系統管理員身分執行 cmd 命令提示字元
    執行指令:
    fsutil behavior query DisableDeleteNotify
    正常 DisableDeleteNotify = 0 即表示 OS 內 TRIM 功能已啟用
  • Superfetch/Prefetch (SSD)
    Superfetch 對軟體程序的啟動和預取增強的程式讀取載入性能, 主要針對是 HDD 硬碟機的物理機械限制, 但 SSD 跟本沒有此問題情況, Superfetch/Prefetch 只會更浪費耗用讀取時間及程序, SSD 當系統碟的話, 關閉 Superfetch/Prefetch 絕對有好處; Windows 7 把 services 服務內的 Superfetch 設定為手動啟動, 停用後可以刪除 c:\windows\prefetch 目錄內的檔案文件。

    停止 Superfetch 服務:
    以系統管理員身分執行 services.msc 服務
    尋找 Superfetch 服務
    點按 將 "自動" 改為 "停用"或"手動" 及點按 "停止"
    停用 Superfetch 服務的話, 亦同時停止了 Prefetch 及 ReadyBoost 功能。
  • Defragment (SSD)
    磁碟區塊破碎是機械硬碟機的攸久問題, defragment(破碎重組)只能有效針對 HDD 硬碟機因為檔案區塊分散影響讀取性能而已, 沒有物理機械限制的 SSD 是無需執行任何「磁碟重組」作業。
    Windows 7 的 disk defragment(磁碟重組)是自動排程, 需要手動停止自動磁碟重組(雖然微軟宣稱 SSD 會自動停止磁碟重組)

    停止磁碟重組自動排程:
    以系統管理員身分執行 dfrgui.exe(disk defragment)
    在 "設定排程" 內關閉不勾選 "依排程執行"

Windows 7 SSD/HDD 其他有的無的優化:
  • Windows Search Indexing
    Windows 7 的 Search Indexing 是桌面系統的一個特色功能, 建立文件索引有效快捷地幫助搜尋用戶的個人文件, 但是我們都已習慣將自己的文件分類, 一般電腦用戶其實是很小機會需要搜尋自己的文件, 一天內可能都不會有一次, 而 Search Indexing 卻會不斷地在系統 background 內執行, 對 SSD 來說是額外的寫入耗損, 對 HDD 來說是硬碟機永遠都不會 idle 閒置及 spin down。

    設定停用 Windows Search 服務 Indexing:
    以系統管理用身分執行 services.msc 服務
    尋找 Windows Search 服務
    點按 將 "自動(延遲開始)" 改為 "停用" 及點按 "停止"完全停止 Search Indexing 並不是關閉了 Search 功能, 只是需要搜尋作業時速度慢一點而已。
  • LastAliveStamp(Heartbeat)
    心跳?! 微軟的技術解釋是寫入機碼的時程認定, Windows 2003 及 2000 伺服器是預設值是五分鐘(2000 pro 及 xp 是 0), 用於 dirty shutdown event 時的 last alive time 記錄; 在 Windows 7(Vista)預設值是每一分鐘寫入
    C:\Windows\ServiceProfiles\LocalService\AppData\Local\lastalive1.dat 或 lastalive0.dat
    不過, 實際是每十數秒就有寫入作業, 後果是...OS 系統碟的文件系統永遠都不會 idle 閒置, 這亦是筆電(或小筆電)預裝 Windows 7 在電池應用時節能效率較 XP 差的其中一個原因。

    修改停止生成 dirty shutdown event 的頻繁寫入記錄 TimeStampInterval 機碼:
    以系統管理員身分執行 regedit 登錄編輯程式
    尋找 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Reliability]
    修改 TimeStampInterval 預設值 1 改為 0
    "TimeStampInterval"=dword:00000000重啟電腦生效
  • Windows Customer Experience Improvement Program
    Microsoft 客戶經驗改進計畫(CEIP), 以搜集系統分析資料報告, 協助處理系統問題及改進產品設計與開發; 在 Windows 7 內有多個自動排程執行系統分析, 當用戶選擇加入客戶經驗改進計畫時, 資料報告會自動上載到微軟; 此類分析排程對於個人用戶來說, 其實就是將用戶電腦變成微軟的奴役機, 一般電腦用戶根本不會有樂趣於閱覽其電腦的分析資料, 分析程序卻不會理會用戶是否選擇加入計畫而不斷地在 background 處理中排程執行, 額外耗用了用戶電腦的資源(電費當然要用戶付帳啦)。

    停止 Windows 7 的客戶經驗改進計畫
    以系統管理員身分執行 gpedit.msc 本機群組原則編輯器
    展開 系統管理範本 -> 系統 -> 網際網絡通訊管理 -> 網際網絡通訊設定
    在 "關閉 Windows 客戶經驗改進計劃" 內勾選 "啟用"關閉了 Windows 客戶經驗改進計劃只是禁止用戶選擇加入 CEIP, 及停止將分析報告上載到微軟, 並不是停止 CEIP 的分析排程作業。

    停止 CEIP 自動排程
    以系統管理員身分執行 taskschd.msc 工作排程器
    展開 工作排程器程式庫 -> Microsoft -> Windows -> Customer Experience Improvement Program
    滑鼠右點將三個排程 Consolidator KernelCeipTask UsbCeip 停用
    停止 RAC 自動排程每小時一次(CEIP 關聯)
    以系統管理員身分執行 taskschd.msc 工作排程器
    展開 工作排程器程式庫 -> Microsoft -> Windows -> RAC
    滑鼠右點將排程 RacTask 停用
  • ReadyBoot tracing log
    Windows 7(及 Vista)系統在每次 bootup 啟動時都會有大量 tracing 日誌動作, 其中的 ReadyBoot tracing 會建立c:\windows\prefetch\readyboot\readyboot.etl 文件日誌上限 20MB, 然後又會自動清空, 此頻繁地複寫 tracing log 程序對電腦用戶沒有明顯效益, 只會額外耗用 bootup 電腦資源, 一般用戶根本不會留意閱覽 tracing log。

    停止 ReadyBoot tracing:
    以系統管理員身分執行 perfmon 效能監視器
    展開 資料搜集器集合工具 --> 啟動事件追蹤工具階段 --> 點按 ReadyBoot
    在 ReadyBoot 的 "追蹤工具階段" 頁內點按不勾選 "已啟用"(Enabled), 在按 "確定" 完成完成後 readyboot.etl 文件可以刪除掉, 而且亦不會再在重啟電腦時執行 ReadyBoot tracing。
  • pagefile.sys
    分頁檔案 pagefile.sys 是系統虛擬記憶體應用時轉移記憶體的系統文件, 不可或缺! 沒有分頁檔案某些軟體會因記憶體不足或虛擬記憶體不能轉移而出現系統錯誤; 要善用保固 SSD 壽命的話, pagefile.sys 的頻繁讀寫作業是應該要盡量避免, 如果將 SSD 當系統碟的話, 可以安裝褂載 RAMDISK(例如 Superspeed RAMDISK)或利用已有的 HDD 硬碟來存放 pagefile.sys。
  • Windows Temp
    Windows 的暫存文件目錄, 幫助軟體存放臨時的配置文件或紀錄暫存, 要有效加速應用環境的話, 極端做法是將 Temp 目錄設定使用 RAMDISK, 可以減去使用 SSD(或 HDD) 寫入而又可以獲得極速暫存, 而且暫存目錄內的文件檔案一般關機後是不需要保留存放的。
  • UserProfile
    遷移用戶帳號目錄一般適合在電腦內有多顆磁碟(或分割區), 將用戶帳號由系統碟擴展到大容量空間, 系統碟(分割區)一但需要重灌時避免用戶檔案及配置違失。

    參考: 遷移及配置 Windows 7 的用戶帳號 UserProfile 預設目錄位置
  • hiberfil.sys
    Windows 7 當偵測到電腦硬體主機板支援 ACPI 的話, 會自動配置「休眠」Hibernate 功能, 在應用桌面環境下系統會建立一個大容量的系統文件C:\hiberfil.sys, 一般 4GB 記憶體會耗用 2.5GB 的文件空間, 休眠功能較適合用於筆電 notebook, 對於並不是經常需要休眠功能的桌機用戶或使用細容量的 SSD 系統碟, 關閉「休眠」功能可以釋放耗用的磁碟空間, 而且 Windows 7 也有「睡眠」Sleep 功能(即是 XP 的 Standby)可以將電腦進入省電停止狀態。

    停止休眠功能:
    以系統管理員身分 執行 cmd 命令提示字元
    執行關閉休眠功能指令
    powercfg -h off
  • IPv6 & IP Helper Service
    自 Vista 開始微軟已經在 OS 內建 IPv6(網際網絡協定版本6), 支援更多的網絡地址空間及 IPsec 保安特式等等, Windows 7 預設啟用了 IPv6 並且紮捆提供 HomeGroup 分享功能, 令 IPv6 與 HomeGroup(家用群組)功能不能分割, 應用到 HomeGroup 分享就必需要有 IPv6; 一般個人家庭及公司企業內部網絡其實甚小需要使用支援超大量網絡地址的 IPv6(除非是 ISP 網絡供應商), 家庭/企業網絡都架建在防火牆的路由器網絡保安環境內, IPv6 對於小型應用環境意義大於實際, 一般現在的電腦用戶舊有的網絡裝置(路由器, 集線器, switch, 閘道器, 防火牆, ADSL等等)也並不是完全支援 IPv6, Windows 7 的 HomeGroup 只能應用在 Windows 7 的作業系統, 沒有家用群組其實仍然可以用傳統的文件網絡分享(Windows File & Printer Sharing), 關閉 IPv6 也可以令系統釋放一些資源(特別是頻繁的虛擬局域網及同時處理 IPv4 和 IPv6), 除非必須使用 HomeGroup 來小圈子無限分享檔案, 否則關掉 IPv6 不會有大損失。

    參考微軟技術文件 KB929852

    關閉 Windows 7 內的 IPv6:
    以系統管理員身分執行 regedit 登錄編輯程式
    尋找機碼
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters]
    新增機碼
    "DisabledComponents"=dword:ffffffff

    停止 IP-Helper 服務:
    IPv6 轉換技術, 主要是將非 IPv6 的地址轉換到支援 IPv6 的網絡環境(例如 在內部 IPv6 網絡連接到 IPv4 的網址), 此系統服務會在 background 內不斷對外呼號連接轉換, 利用 Resource Monitor 時會看到有持續的網絡資料傳送, 關閉了 IPv6 的話 IP-Helper 已無用處, 也停止對外呼號連接轉換。
    以系統管理員身分執行 services.msc 服務
    尋找 IP-Helper
    點按 將 "自動" 改為 "停用" 及點按 "停止"
    網絡裝置停止使用 IPv6 協同
  • DisablePagingExecutive
    微軟技術解說是 Kernel 及 驅動程式 記憶體分頁處理, 一般情況下 Windows 系統會將載入記憶體閒置不作用中的 Kernel 及 驅動程式 記憶體 swap 到 pagefile 處理, 以釋放更多可用記憶體空間給應用程式; 不過, 現在的主流(廠機及DIY)電腦記憶體配置都已經是 2GB(甚至 4GB) 起跳, 採購了的記憶體當然就不要浪費, 要善用記憶體來為作業系統增強性能, 禁止 kernel 及 driver 記憶體 page swap 保留常駐在應用記憶體中, 減少 page swap 的 IO 作業, 亦令 OS 應用時反應不會因為 paging 而遲緩。
    Description
    Specifies whether user-mode and kernel-mode drivers and kernel-mode system code can be paged to disk when not in use.
    0 Drivers and the kernel can be paged to disk as needed.
    1 Drivers and the kernel must remain in physical memory.

    如果電腦配置 2GB(建議 4GB) 以上記憶體的話
    設定禁止 kernel paging 作業:
    以系統管理員身分執行 regedit 登錄編輯程式
    尋找
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
    修改 DisablePagingExecutive 預設值 0 改為 1
    "DisablePagingExecutive"=dword:00000001

    重啟電腦生效

    微軟 TechNET 技術參考 DisablePagingExecutive
  • 未完
    待續...


小道消息:
繼近日 Toshiba 東芝宣告在日本三重縣四日市的東芝 NAND flash 晶圓廠新廠房 Fab 5已經正式開工建設明年竣工, Intel 與 Micron(美光)計劃在年底前重新啟動新加坡合資建設的晶圓廠, 把 2008年因為金融風暴全球經濟形勢而推遲量產的 12英寸 NAND flash 晶圓廠再次投產, 預計此擴產計劃將影響明年 NAND flash 夥粒的供應量, 以滿足 2011年大福增長需求的 SSD 及其他固態硬碟的應用範圍。

似乎 SSD 這個大餅勢將成為主流, 無可避免會供不應求啊, 難怪近日某主流品牌 SSD 售價還上漲了小許。

2011年4月10日 星期日

vsftp的設定檔教學


vsftp的設定檔教學,轉貼自http://60.248.128.85/bbs/dispbbs.asp?boardid=62&id=24962&star=1&page=1
對於ftp的設定很有幫助。

V S F T P
環境:FedoraCore 8 i386DVD 版)
套件:vsftpd-2.0.5-19.fc8(光碟片預設套件版本)
主要設定檔:/etc/vsftpd/vsftpd.conf

啟動:service vsftpd start停止:service vsftpd stop重新啟動:service vsftpd restart(先將服務停止之後在重新啟動服務)
重取設定檔:service vsftpd reload(將服務的設定檔案重新載入,常用於設定檔修改之後)

閱讀說明:
**紅色的字體為注意事項 **
**紫色的字體為設定檔 **
**藍色的字體為 Mason個人的解釋與見解 **
**某些項目雖然預設值為YES,但是項目被註解掉,所以會寫成預設值為不允許**
**由於設定檔都是長,為了簡化項目,只列出常被使用的**
**為了方便說明,設定檔的項目可能會前後調動,建議用search的方式做尋找**
**綠色字體某些項目在設定檔案中找不到,可以自行加入**
**root 提示字元 #字號 **
**兩個連續的 *號為註解 **


前期設定:
#mkdir -p /home/ftpuser
設定FTP使用者集中目錄路徑,這是Mason個人習慣

#echo “ftpuser:x:10000:jovi,candy” >> /etc/group
增加一個FTP使用者的群組,這是Mason個人習慣

#chown root.ftpuser /home/ftpuser
#chmod 775 ftpuser
更改目錄的群組以及權限

#useradd -u 10001 -d /home/ftpuser/jovi -s /sbin/nologin jovi
#useradd -u 10002 -d /home/ftpuser/candy -s /sbin/nologin candy
-u指定UID
-d指定使用者家目錄
-s/sbin/nologin的意思是不允許這個帳號在本機登入。
這個項目很特別,他允許帳號遠端使用MailFTP等服務,但是卻不允許帳號在本機登入。為了安全性的考量,Mason把能su - root以外的帳號都設定成nologin

#passwd jovi
#passwd candy
設定密碼
先從主要設定檔案開始看起:
**底下所有預設值依照套件版本不同可能會有所變更,無需特別在意**

是否允許匿名登入(預設為允許)
anonymous_enable=YES
通常會取消匿名登入的項目,純粹提供下載的FTP主機則例外。

本地端帳號是否允許登入(預設為允許)
local_enable=YES
請別誤會此項目,可以登入FTP不代表可以登入本地端主機。

是否允許寫入(預設為允許)
write_enable=YES
簡單的說就是是否允許上傳。

設定local帳號的umask(預設值為:022
local_umask=022
檔案上傳之後權限會變成644
建立目錄之後權限會變成755
關於umask的其餘項目,請自行搜尋相關文件。

設定anon帳號是否能上傳(預設值為不允許)
#anon_upload_enable=YES
通常不會開放匿名使用者上傳檔案。若是開放,檔案的擁有者與群組為:ftp

設定anon帳號是否能建立目錄(預設值為不允許)
#anon_mkdir_write_enable=YES
通常不會開放匿名使用者建立目錄。若是開放,目錄的擁有者與群組為:ftp

設定anon帳號的umask(建議預設值為:077
#anon_umask=077
檔案上傳之後權限會變成600
建立目錄之後權限會變成700
關於umask的其餘項目,請自行搜尋相關文件。

切換目錄時是否顯示.message檔案的內容(預設值為:YES
dirmessage_enable=YES
使用者切換至某個目錄時會顯示該目錄下.message(預設)檔案的內容。當然您也可以透過message_file 參數來指定不同的檔名。

 
設定訊息的檔案名稱
message_file=.message預設.message,配合上一個參數來使用。

是否要紀錄Log檔(預設值為:YES
xferlog_enable=YES是否要將client上傳及下載的資訊記錄下來,若設定YES,則記錄這些資訊的檔案是由xferlog_file或 xferlog_std_format參數來決定。

記錄Log的檔案位置(預設值為NO
#xferlog_file=/var/log/vsftpd.log
如果FTP的服務是常開的,建議將Log檔案獨立,以利分析。
是否採用標準的Log格式做紀錄檔(預設值為:YES
xferlog_std_format=YES
是否啟用標準的ftpd xferlog格式來作為記錄檔,若設定成YES,則上傳下載的資訊將會記錄在/var/log/xferlog內。另外若xferlog_file註解去掉且 xferlog_std_format=YES時,會以xferlog_file為主,所以常見的作法為開啟xferlog_file,但是導回/var/log/xferlog檔案內。

傳輸資料的Port20(預設值為:YES
connect_from_port_20=YES在主動模式下建立資料通道時,是否啟用Port20作為FTP_Data的傳輸Port

基於安全性的考量,我們不會採用標準的Port作為FTPPort號,所以Mason通常會將設定檔的相關項目設定成這樣:
#connect_from_port_20=YES
listen_port=2121
pasv_enable=YES
pasv_min_port=9961
pasv_max_port=9966
這樣一來FTP-Server會採用PASV模式(請自行搜尋相關文件),並且使用2121Port作為監聽Port,並且由主機主動提供9961~9966Port來做通訊端,如此一來安全性就會提高。更重要的是,通常都有防火牆的存在,使用PASV模式,比較不用擔心被阻攔的問題。
*這時候Client端的連線要使用passivemode

是否允許chown,以及要換成哪一個帳號(預設值為:NO& whoever
#chown_uploads=YES
#chown_username=whoever
在特殊狀況下,會採用這個項目。例如:匿名使用者可以上傳,但是上傳的檔案要給某個帳號做管理,通常會搭配umask以及Filesystem permission來做。

閒置過久斷線時間(預設值為600
#idle_session_timeout=600
這個項目通常沒有作用了,因為Client端的FTP軟體常常會主動送訊號保持連線。

是否允許ascii模式上傳&下載(預設值為:NO
#ascii_upload_enable=YES
#ascii_download_enable=YES
用到機率不高,使用預設值即可。

歡迎訊息(預設不顯示)
#ftpd_banner=Welcome to blah FTPservice.設定使用者登入時所顯示的歡迎訊息,您可將註解拿掉,然後輸入想讓使用者登入時看到的歡迎訊息。




設定匿名使用者登入時要拒絕的E-mail
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd.banned_emails
deny_email_enable設定成 YES時,可以把所要拒絕登入的E-Mail密碼設定在預設的/etc/vsftpd.banned_emails檔案內。不過請您注意一點,當deny_email_enable=YES時,如預設的 vsftpd.banned_emails檔案並不存在,會造成所有的匿名使用者都無法登入。

限制本地端的帳號登入之後是否chroot(預設值為:NO
chroot_local_user=YES若設定成YES,帳號登入後就只能在家目錄下活動,無法切換到家目錄以外的範圍。
是否啟動chroot的清單檔案(預設值為:NO
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_listchroot_local_user=NOchroot_list_enable=YES時,可搭配 chroot_list_file參數,把一些使用者帳號寫入預設的/etc/vsftpd.chroot_list檔案之中,這樣一來這些使用者就只能在自己家目錄下活動。但若反過來,當chroot_local_user=YESchroot_list_enable=YES時,則在/etc/vsftpd.chroot_list之中的帳號就可以在家目錄外活動,而沒設定在此檔之中的使用者就只能以家目錄作為預設的根目錄。
/etc/vsftpd.chroot_list
檔案格式是一行一個帳號。

使用者帳號列表(預設值為:YES
userlist_enable=YES設定成YES時表示vsftpd會載入userlist_file參數所指定的檔案,以讀取其內的使用者名單。

拒絕登入的帳號列表(預設值為:YES
userlist_deny=YES
userlist_deny=YES時(這個是預設值),則設定在userlist_file參數所指定的檔案內的使用者將會被拒絕登入。
userlist_deny=NO時,則只有設定在userlist_file參數所指定的檔案內的使用者能被允許登入,其他人則會被拒絕。
預設的user_list檔案在/etc/vsftpd/user_list檔案格式是一行一個帳號。

 
設定傳輸速度
anon_max_rate=50000
local_max_rate=200000
匿名登入者所能使用的最高速度為50KBytes/sec
本機的使用者最高速度為200KBytes/sec
設定為0的時候表示不限制速度

設定個人的傳輸速率
user_config_dir=/etc/vsftpd/limitdir我們可以指定一個目錄,並且在目錄裡面建立個別使用者的傳輸速率,比如想限定使用者jovi的傳輸速率,就在指定的目錄下去編輯一個檔案名稱叫做jovi的檔案,檔案的內容就是local_max_rate=傳輸速率,作法如下:
#mkdir -p /etc/vsftpd/limitdir
# vi/etc/vsftpd/limitdir/jovi
local_max_rate=20000
最大連線總數目(預設值為0
#max_clients=20限定最大連線數,預設值表示不限制連線數。

 
每一個IP最大連線數目(預設值為0
#max_per_ip=5
限定每個IP 最大連線數,預設值0表示不限制連線數。
本地端帳號登入之後是否將其轉換為訪客帳號(預設值為:NO
#guest_enable=YES
#guest_username=guest若設定成YES時,則可以利用guest_username參數來指定訪客的身份,若未指定,預設的身份為ftp

 
是否使用主機的時間為檔案及目錄建立的時間(預設值為:NO
#use_localtime=yes有時候您上傳檔案或建立新目錄後發覺怎麼這些檔案目錄的時間慢了n個小時,如果是這樣的話,將user_localtime設定成YES就行了。

vsftp支援tcp_wrappers(預設值為:YES
#tcp_wrappers=YES是否讓 /usr/sbin/vsftpd支援 tcp_wrappers,若設定成YES,則連線進來的封包將會經過/etc/hosts.allow/etc/hosts.deny的過濾。使用xinetd來啟動vsftpd的話,不管tcp_warppers參數設定為何,都會使用到tcp_wrappersd的過濾機制。


VSFTP加入xinetd服務的方式(通常用在嵌入式系統內,以節省記憶體的使用)
#vi /etc/xinetd.d/vsftpd
serviceftp
{
disable = no
socket_type = stream
wait = no
user= root
server = /usr/sbin/vsftpd
log_on_success += DURATIONUSERID
log_on_failure += USERID
}
接著修改vsftpd.conf
[root@fedoraroot]# vi/etc/vsftpd/vsftpd.conf

listen=NO
或者直接將該行註解起來,就等於採用預設值的意思。
最後重新啟動inetd# service xinetd restart




補上一個實用的範例:
假設某學校的老師開啟一個FTP的服務,讓學生可以使用匿名的方式登入(學生這麼多,光是建立帳號就夠受了,所以採用匿名的方式比較方便)。其中一個目錄是讓學生交作業使用的(目錄名稱為upload_work,作業一但上傳了之後就不能給其他學生下載(否則只要把別人的作業下載回去改一下就可以完成作業啦),如何達成這個目的呢?

建立目錄跟設定目錄的擁有者與群組以及目錄的權限
#mkdir -p /var/ftp/upload_work
#chown root.ftp /var/ftp/upload_work
#chmod 730 /var/ftp/upload_work

設定成匿名可以登入、上傳之後檔案變更擁有者為ftp、設定匿名的umask
#vi /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES
chown_uploads=YES
chown_username=ftp
anon_umask=077

這一個範例是一個頗為經典的範例,既可以凸顯出目錄的權限設定,也可以顯示出FTP上傳後變更檔案擁有者以及umask的能力,透過彼此之間的搭配達到所需要的目的。

這個範例除了可以利用在學校之外,需要審核的地方也頗為實用,舉例來說:
某個目錄可以提供使用者上傳,但是上傳之後的檔案,需要經過管理者掃毒、評分、歸類等等活動之後,在提供給其他使用者下載。

補上第二個實用的範例:
如果沒有足夠的經驗,以下項目請盡量不要操作,一但操作失誤,可能導致FTP驗證模組損毀,造成FTP完全無法使用。

驗證模組:
/etc/pam.d/vsftp

時間模組設定檔:
/etc/security/time.conf

目的:
jovi這個帳號,星期一到星期五0900~1700才能登入,其餘時間拒絕登入。
candy這個帳號,星期一到星期五0800~1800才能登入,其餘時間拒絕登入。

#vi /etc/pam.d/vsftpd
#%PAM-1.0
session                optional        pam_keyinit.so        forcerevoke
auth                required        pam_listfile.soitem=user sense=deny file=/etc/vsftpd/ftpusersonerr=succeed
auth                required        pam_shells.so
auth                include                system-auth
account        required        pam_time.so(自己加入這一行)
account        include                system-auth
session                include                system-auth
session                required        pam_loginuid.so

# vi/etc/security/time.conf(在檔案的最底下加入兩行)
vsftpd;*;jovi;MoTuWeThFr0900-1700
vsftpd;*;candy;MoTuWeThFr0800-1800

如此一來就可以限制登入的時間了。

VSFTP setup


vi /etc/vsftpd/vsftpd.conf

指令:anonymous_enable
說明:NO為不開放Anonymous FTP設,YES為開放 ,匿名登入時使用的本機帳號為 ftp
範例:anonymous_enable = YES

指令:local_enable
說明:允許本機帳號登入設為 YES,不允許為 NO
範例:local_enable = YES

指令:write_enable
說明:FTP寫入權限,YES為開放,NO為不開放
範例:write_enable = YES

指令:listen
listen_port
說明: vsFTP 以 Standalone (單獨伺服器) 的方式啟動,listen設定為 YES,listen_port 為 vsFTP 接受服務的連接埠
範例: listen = YES
listen_port = 2121

指令:idle_session_timeout
說明:當使用者idel時的自動登出時間,單位為秒
範例:idle_session_timeout = 600

指令:ftpd_banner
說明:使用者登入 FTP 服務時的歡迎訊息
範例:ftpd_banner = Welcome to FTP service.

指令:max_clients
說明: standalone模式起動最大可以連接的使用者數目,超出使用者將得到錯誤資訊,預設 0 為不限制
範例:max_clients = 10

指令:anon_upload_enable
說明:是否允許匿名上傳,YES為允許,NO為不允許
範例:anon_upload_enable = YES

指令:anon_mkdir_write_enable
說明:匿名登錄後是否可以建立目錄,YES為允許,NO為不允許
範例:anon_mkdir_write_enable = YES

指令:anon_max_rate
說明:最大下載速率,單位為 Bytes/Second  
範例:anon_max_rate = 10000

指令:anon_root
說明:匿名登入者的根目錄
範例:anon_root = /var/www

指令:tcp_wrappers    
說明:是否使用 /etc/hosts.allow 及 /etc/hosts.deny 來控制允許登入的主機位址, YES為是,NO為否
範例:tcp_wrappers = YES

指令:deny_email_enable
banned_email_file
說明:是否禁止某些 e-mail登入FTP, YES 為是,banned_email_file 是禁止的 e-mail 清單
範例:deny_email_enable = YES
banned_email_file = /etc/vsftpd.banned_emails

指令:chroot_local_user
說明:使用者是否可以變更目錄,設定 YES 時,使用者將被限制在自己的家目錄中,無法變更目錄
範例:chroot_local_user = YES
修改限制清單:
vi /etc/vsftpd/chroot_list

2011年4月9日 星期六

how to remove etho.bak (centos5.5)


原本系統 eth0 為 D-Link 網卡,更換成 3Com 且設定 IP, 
重開機卻會出現有兩張網卡 eth0 & eth0.bak, 
但..卻只有 eth0.bak 網路正常,如果要移除該如何做呢? 


答案: 

請到 
/etc/sysconfig/networking/devices   
/etc/sysconfig/networking/profiles/default 
/etc/sysconfig/network-scripts/ 
將多餘的網卡、設定刪除,重新設定 ip 即可! 


※ 以上為 CentOS 的設定環境。