站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

FreeBSD 基礎設定 上

OpenFoundry

本文刊載於 [OpenFoundry 電子報第 171 期 - FreeBSD 基礎設定 (上)] 於 2011 年 4 月 26 日出刊,您可至 [OpenFoundry 電子報總覽] 輸入您的 E-Mail 即可訂閱。

前言

相信對於大多數的個人電腦使用者來說,或許都以為作業系統只有一套,那就是目前在個人電腦市場上佔有率 90% 的 [Microsoft Windows]。個人認為造成 Microsoft Windows 受到大家喜愛的原因,不外乎「習慣性」。許多初次接觸個人電腦的人,不論是愛玩線上遊戲的玩家,或者是做文書處理工作的使用者,應該都是從 Windows 作業系統開始學習並使用。這樣的使用習慣造成日後要選擇作業系統時,理所當然選擇自已熟悉又可以輕鬆掌握的作業系統。也正因為 Windows 擁有絕對優勢的市佔率,導致市場上各家軟硬體廠商西瓜靠大邊,推出支援 Windows 的軟體及驅動程式。因此使用者安裝新硬體時 Windows 通常內建有相對應的驅動程式。若沒有相對應的驅動程式,往往會附上安裝程式。安裝驅動程式時按[下一步]的安裝方式,對於使用者來說都不會造成太大的困難。

或許有人會說目前 [Linux] 作業系統在安裝及設定方面也很便利及直覺啊! 但是其實對於一般使用者來說操作 Linux 確實具有一定困難度,除了操作介面與使用者的習慣不同導致不適應之外,若發生問題,解決問題所花費的時間及資源也是相對較高的。例如,若使用者安裝的硬體沒有提供支援 Linux 的 [驅動程式] 時,一般使用者便很難在短時間內解決這樣的問題。

然而,Microsoft Windows 作業系統的絕對優勢僅適用於桌面端而已。除了桌面端之外,[Unix-Like] 作業系統以及商業應用的自由軟體不會輸給 Microsoft Windows,比方網頁伺服器中自由軟體 [Apache] 的市佔率便遠遠勝過 Microsoft Windows IIS 網頁伺服器。本篇文章所要介紹的作業系統,便是在學術單位及企業應用上佔有一席之地的 [FreeBSD]

FreeBSD 是經過 BSD、386BSD、4.4BSD 等階段所發展出來的 Unix-Like 作業系統。與 Linux 作業系統不同,開發方式相當具有階層性,採用 Submitter、Committer、Core Team 這種自由互信且層層分工的樹狀結構來進行發展,至今已發展到穩定版本 8.2-Release ,同時還有開發中版本為 9.0-Current。以下說明 FreeBSD 團隊採用的開發分工模式:

在開始學習 FreeBSD 以前,建議您先了解整個作業系統版本的命名規則以便日後選擇適當的版本,FreeBSD 的版本命名方式為 FreeBSD A.B.C-Tag-D 其代表意義如下:

由上述命名規則可以知道,若您要嘗試 FreeBSD 作業系統的最新功能請使用 Current 版本,若是要將 FreeBSD 安裝於要求穩定度為重的企業用環境,則請選擇 Release 或 Stable 版本。本文則以 FreeBSD 8.2 Release 版本進行示範與介紹。

實作環境

建立一般使用者帳號

為了減少不必要的篇幅,本文不會說明如何安裝 FreeBSD,有興趣的讀者可以參考官方使用者手冊 [FreeBSD Handbook Chapter2 Installing FreeBSD],相信有基礎的使用者一定能順利無誤的安裝起來。由於 FreeBSD 的設計是以簡潔著稱,因此您會發現安裝 FreeBSD 過程所花費的時間非常短,而安裝完成後預設情況下您只能使用 root 管理者帳號(預設密碼為空白)來登入 FreeBSD。如同管理 Microsoft Windows 主機,同樣的安全性概念,也就是一般性操作時,使用一般使用者帳號即可進行操作;若執行動作需要管理者權限時,才需要轉換身份提升權限。同樣的在首次登入 FreeBSD 後,建議您先為管理者建立一般使用者帳號,再將該使用者帳號加入管理者群組中。下列為透過指令 adduser 建立一般使用者帳號 weithenn 以及相關設定,並將該使用者加入管理者群組 wheel 當中:

 #adduser                                      //執行新增使用者指令
 Username: weithenn                            //輸入使用者帳號
 Full name: Weithenn Wang                      //輸入使用者名稱
 Uid (Leave empty for default):                //設定使用者 UID (按下 Enter 為採用預設值)
 Login group [weithenn]:                       //輸入使用者群組名稱
 Login group is dfnoc. Invite weithenn into other groups? []:  //是否要加入其它群組
 Login class [default]:                        //登入的類別
 Shell (sh csh tcsh nologin) [sh]:tcsh         //輸入使用者 Shell 環境
 Home directory [/home/weithenn]:              //使用者家目錄路徑
 Home directory permissions (Leave empty for default):
 Use password-based authentication? [yes]:     //是否採用密碼認證
 Use an empty password? (yes/no) [no]:         //是否採用空值密碼
 Use a random password? (yes/no) [no]:         //是否採用隨機密碼
 Enter password:                               //輸入使用者密碼
 Enter password again:                         //再次輸入密碼已確認
 Lock out the account after creation? [no]:    //建立完成後是否要鎖定使用者帳號
 Username   : weithenn
 Password   : *****
 Full Name  : Weithenn Wang
 Uid        : 1001
 Class      :
 Groups     : weithenn
 Home       : /home/weithenn
 Home Mode  :
 Shell      : /bin/tcsh
 Locked     : no
 OK? (yes/no): yes                            //是否確定要建立該使用者帳號
 adduser: INFO: Successfully added (dfnoc) to the user database.
 Add another user? (yes/no): no               //是否要建立其它使用者帳號
 Goodbye!
 #vi /etc/group                               //修改群組設定檔
 wheel:*:0:root,weithenn                      //將使用者帳號 weithenn 加入管理者群組

設定網路功能

建立好使用者帳號後,接下來設定 FreeBSD 的網路功能。在本文中網路功能是以設定固定 IP 位址來進行說明。要對 FreeBSD 設定固定 IP 位址有兩種方式,一為使用指令 sysinstall 進行互動設定,另一種方式則為將固定 IP 位址、網路遮罩、預設閘道寫入 "/etc/rc.conf" 設定檔, DNS 資訊則寫入 "/etc/resolve.conf" 設定檔中。下列先以 sysinstall 互動設定進行說明,接著再解釋手動寫入設定檔的方式:

  1. 執行 sysinstall 指令使系統進入 sysinstall Main Menu 互動視窗中。
  2. 進入互動視窗後請選擇【Configure】。
  3. 選擇【Networking】再選擇【Interfaces】。
  4. 選擇要設定固定 IP 位址的網路卡,本例為 "vxn0 3COM 3c590 / 3c595 Ethernet card"。到了這步系統會先詢問是否要啟動 IPv6 於此網路卡中,這邊選擇 "No"。
  5. 系統會詢問是否要啟動此網路卡中的 DHCP 功能,此例選擇 "No"。
  6. 接下來為設定固定 IP 位址及相關網路資訊,如下圖所示:

設定網路功能

透過上述互動設定好固定 IP 位址後,系統會將相關網路設定值寫入相對應的設定檔。例如,固定 IP 位址、網路遮罩、預設閘道資訊寫入至 "/etc/rc.conf" 設定檔內,而 DNS 名稱解析的網路資訊寫入 "/etc/resolv.conf" 設定檔內。所以當我們查看這二個設定檔內容時,可以看到相關網路資訊已寫入。您可依個人喜好來決定要如何設定網路資訊,看您是要使用指令 sysinstall 以互動方式來設定網路,或將相關網路設定值寫入相關設定檔內即可。就個人來說使用互動設定便可設定完成是比較簡單的方式。

 #cat /etc/rc.conf               //查看設定檔其網路設定資訊如下
 ifconfig_vxn0="inet 192.168.1.10  netmask 255.255.255.0”
 defaultrouter="192.168.1.254"
 hostname="bsd82.weithenn.org"
 #cat /etc/resolv.conf          //查看名稱解析設定檔內容
 domain  weithenn.org           //網域 DNS 名稱
 nameserver      8.8.8.8        //若有多台 DNS 伺服器可自行新增

上述設定完成後,您會發現 FreeBSD 主機仍然無法連上 Internet。 雖然您透過互動設定已經設定好相關網路資訊,但系統目前仍未啟動相關設定,例如,套用預設閘道設定值。建議您可以重新啟動主機或執行下列指令即可:

 #ifconfig vxn0 down                                   //關閉 vxn0 網路卡
 #ifconfig vxn0 192.168.1.10 netmask 255.255.255.0     //設定 vxn0 網路卡固定 IP 及遮罩
 #ifconfig vxn0 up                                     //啟動 vxn0 網路卡
 #route add default 192.168.1.254                      //建立預設閘道 (Default Gateway)

當您將主機重新啟動或執行上述指令後,可以使用 ping 指令來判斷主機是否能順利連上 Internet,並進行名稱解析,查看這台主機的網路通訊是卡在哪個環節上。

 #ping 127.0.0.1               //檢查 Loopback IP Address
 #ping 192.168.1.10            //檢查設定的固定 IP Address
 #ping 192.168.1.254           //檢查主機與預設閘道之間的通訊
 #ping 8.8.8.8                 //檢查主機能否連結 DNS 伺服器
 #ping www.google.com.tw       //檢查主機能否進行名稱解析

啟用 SSH 服務

經過上述網路設定及確認檢查後,我們可以確定主機網路功能運作無誤。接下來我們便可著手啟動 SSH 服務,以便屆時透過此服務進行主機遠端管理。要在 FreeBSD 主機中啟動 SSH 服務非常簡單,只需要把相關字串值寫入 "/etc/rc.conf" 設定檔後,執行啟動 SSH 服務的指令即可,如下所示:

 #vi /etc/rc.conf              //修改設定檔
 sshd_enable="YES"             //加上此行
 #/etc/rc.d/sshd start         //啟動 SSH 服務

執行指令啟動 SSH 服務後,要如何確定主機上的 SSH 服務是否啟動成功呢?要判斷服務是否正常運作,您可透過如下指令來查詢 SSH Process 是否執行,以及 SSH 服務 Port 是否有聆聽。

 #ps aux |grep sshd            //檢查 SSH Process
 root       892  0.0  0.5  6712  2704  ??  Is   Fri05PM   0:00.00 /usr/sbin/sshd
 #sockstat | grep sshd         //檢查 SSH 服務聆聽的 Port
 root     sshd       892   3  tcp6   *:22                  *:*
 root     sshd       892   4  tcp4   *:22                  *:*

Linux 的 SSH 服務預設情況下允許 root 帳號遠端登入,為何在 FreeBSD 無法使用 root 管理者帳號進行遠端登入?許多習慣在 Linux 上操作的人一定非常不習慣 FreeBSD 這樣的設計。這是因為 FreeBSD 設計理念為希望您使用一般使用者帳號遠端登入,等到需要提升權限時,再提升為管理者權限。若您非常希望使用 root 管理帳號進行遠端登入來管理系統,您可修改 sshd_config 設定檔並重新載入 SSH 服務即可。

 #vi /etc/ssh/sshd_config      //修改 SSH 服務的設定檔
 #PermitRootLogin no           //預設值
 PermitRootLogin yes           //修改後 (取消註解符號 # 並將 no 改為 yes)
 #/etc/rc.d/sshd reload        //重新載入 SSH 服務 (套用變更)

在管理作業系統上,安全性與便利性往往是不可兼得的,當您系統的操作便利性愈高則安全性通常會相對的降低。雖然用管理權限遠端登入很方便,筆者建議您不要使用 root 管理者帳號遠端登入管理系統,有以下兩個理由:一是增加了被入侵的機會(因為管理者帳號已經被知道了,剩下就是嘗試密碼了);二是使用管理者帳號登入若下錯指令,很有可能就把系統給毀掉,就必須乖乖至機器面前進行修復了。

有時候遠端登入主機時輸入帳號後要等很久才能輸入密碼。會發生這樣的狀況是因為 FreeBSD 在 SSH 服務時,預設會配合使用名稱解析所導致。若您主機運作的網路環境中已經過作了名稱解析,則不會發生這類問題。若發生這樣的問題,請檢查 DNS 名稱解析中,反向解析對於此主機的解析情況。若此台主機並沒有相關名稱解析的機制,您可取消 SSH 服務中會使用到名稱解析的設定。

 #vi /etc/ssh/sshd_config      //修改 SSH 服務的設定檔
 #UseDNS yes                   //預設值
 UseDNS no                     //修改後 (取消註解符號 # 並將 yes 改為 no)
 #/etc/rc.d/sshd reload        //重新載入 SSH 服務 (套用變更)

結語

本文進行至此已經建立使用者帳號及設定主機網路資訊(固定 IP 位址、網路遮罩、預設閘道、DNS伺服器),並確認網路功能運作無誤。再來則是在 FreeBSD 主機上啟動 SSH 服務,此時 FreeBSD 主機已經具備網路連通能力,而管理者也可以遠端進行管理主機的動作了。在下一篇文章中將討論透過安裝套件 sudo 來限制及記錄管理者帳號 root 的使用記錄,建立良好的 Shell 環境,以及將安裝套件的來源指向至台灣本地鏡像網站,以加快軟體套件下載時間。

Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com