Linux下上網.
其實在linux下上網和在windows下上網一樣簡單,常用的方式有EthernetConnection,XDSL Connection和Wireless Connection.
在REHL AS4下,通過圖形介面,可以很輕鬆的配置.在應用程式->系統工具->網路裝置控制中可以調出設定面板.點添加新裝置,可以根據自己的網路情況來選擇以何種方式.如:
因為我自己是小區寬頻接入方式,因此我選擇了乙太網路串連.像學校教育網內學生宿舍那種使用固定內網IP的,也應該選用這種,如果是自動擷取IP的,也是這個,只是在後來的IP設定中選dhcp自動獲得.
如果是家庭的ADSL撥接,則選用XDSL連結方式,無線網卡上網則選擇無線串連,這裡就不贅述了.
因為我是在VMW裡用rehl上網,因此我還需要安裝些針對虛擬機器的特殊服務.我VMW網路選擇的橋接模式(bridge),因此還需要安裝VMware網路服務介面和VMware橋接網路服務,另外還要開啟dhcp服務.這些在安裝VMW時應該就都會安裝上,不過因為我使用的是綠色版本,所以需要手動來安裝和啟動,稍微麻煩點.
這些都配好後,在乙太網路裝置屬性選項卡雷根據自己的情況,勾選自動擷取IP和DNS或靜態輸入.
在保證你的宿主機能正常上網的前提下,現在你的虛擬機器下的linux應該也能上網了.測試一下:
在terminal中輸入ifconfig命令可以查看當前的網路狀況.ping 網關來測試與路由器是否串連正常.最後ping 外網地址,能通的話,就算大功告成了.
Http服務和apache
作為伺服器OS,提供http服務是再經常不過的一項需求,在windows2000/2003中,我們最經常使用IIS作為web server來提供http服務.在linux下可沒有IIS,這裡最廣泛使用的web server是apache,雖然我最終會選用lighthttpd來作為我的web server,但是在這之前要先瞭解下apache.
rhel預設安裝包含了apache,如果你不確定,可以用rpm -q httpd來查詢一下,如果已經安裝了,將返回版本號碼,比如在rhel AS4下,輸入後將返回:httpd-2.0.52-25.ent.如果沒有安裝的話,你可以在Applications->System Settings->Add/Remove Applications中,把Web Server(全球資訊網服務)前的勾給選上,再點更新即可.如果提示插入安裝盤,按提示把盤放入光碟機即可.或者直接去apache的網站下載最新的版本,解壓後,用rpm -ivh來安裝也可以.
安裝了apache後,需要在啟動http服務,rehl一樣提供了非常簡單直觀的圖形操作介面,可以在Applications->System Settings->Service中選中httpd,然後啟動它.或者直接輸入命令service httpd start.
服務啟動後,就已經可以訪問了,開啟瀏覽器,在裡面輸入http://localhost/,就可以看到預設的redhat的頁面了,如下所示:
這個時候,如果是在一個區域網路內,就可以用其他的機器輸入IP來直接存取該頁面了.
接下來是配置問題,rhel提供了一個http服務的組態工具,在Applications->System Settings->Server Settings->HTTP可以調出該配置器,使用非常的簡單.如果有過配置IIS的經驗,配置這個也不難,但是裡面沒有配置虛擬目錄的功能(不會是我沒找到吧?),這裡我介紹下如何配置虛擬目錄.
在linux中,軟體大量的依賴設定檔,不光是靜態資訊,功能和模組也大量使用設定檔動態產生(儲存後常常需要重啟服務).這對於軟體的擴充非常好,如果要增加第三方的組件,可以很容易實現,其本身的配置也可以相當的靈活.這些年在.NET項目裡,設定檔也開始大量的被使用,與早期的開發方式相比,這種方式優點太多,低耦合,易維護,靈活等,像CS,castle,DNN都是典型.
繼續回到apache的配置中來,上面說到設定檔,虛擬目錄的建立也需要通過修改設定檔實現.
首先找到設定檔並編輯
vi /etc/httpd/conf/httpd.conf
在apache中添加虛擬目錄是通過"別名(alias)"來實現的,具體如下:
比如我要在根目錄下添加一個虛擬目錄User,指向一個我自己的檔案價/UserData/wiseman,那麼我該這麼寫
Alias /User/ "/UserData/wiseman/"
把上面這句寫入到設定檔當中.注意這裡路徑的"/"號,兩個路徑的"/"號應該保持一致,即,前面帶的話,後面也帶,不帶,則都不帶.在訪問的時候,如果配置的帶了"/"號,那麼輸入地址必須要寫,否則將返回404錯誤,如果不帶"/"號的話,則輸入地址無論帶不帶"/"號,都能正確顯示.即是:
假如你配置了http://localhost/user/,那麼你只能通過http://localhost/user/來訪問,假如你輸入了http://localhost/user,將返回404錯誤.如果你配置的是http://localhost/user,那麼無論是http://localhost/user還是http://localhost/user/都能正確顯示.
添加了別名,如果想要使用者能夠訪問,還需要添加目錄許可權.
在conf檔案底部填寫如下的內容
<Directory "/UserData/wiseman">
Options Indexes Includes FollowSymLinks
AllowOverride None
Allow from all
Order allow,deny
</Directory>
AllowOverride None保證所有使用者都可以訪問該目錄下頁面.
Allow from all 保證所有來源都可以顯示該目錄下內容,這個部分可以用來做防盜鏈,from 後面填寫自己的網站地址即可.
Order allow,deny 表示預設情況是不允許任何網站的訪問,然後不在allow範圍的網站和在deny範圍的網站將被禁止訪問.
這裡allow所有網站,deny沒有,因此最後得出允許所有網站訪問的結論.
關於allow,deny和order指令,可以參看這篇介紹:http://man.chinaunix.net/newsoft/ApacheManual/mod/mod_access.html
其他的參數含義如下:
Option:定義在目錄內所能執行的操作。
None:表示只能瀏覽,
FollowSymLinks:允許頁面串連到別處,
ExecCGI:允許執行CGI,
MultiViews:允許看動畫或是聽音樂之類的操作,
Indexes:允許伺服器返回目錄的格式化列表,
Includes:允許使用SSI。這些設定可以複選。
All:則可以做任何事,但不包括MultiViews。
AllowOverride:加None參數表示任何人都可以瀏覽該目錄下的檔案。
另外的參數有:FileInfo、AuthConfig、Limit。
修改完畢後,用:wq退出vi,然後service httpd restart
再通過http://localhost/User/看,已經可以訪問了.
FTP服務和vsftp
最後是ftp的配置了.在win2003下,我最常使用的ftp服務端軟體是serverU,功能確實強大,不過有一些安全性漏洞,可以通過配置許可權解決,這裡不多說明了.
可惜的是,在linux下沒有serverU,不過一樣也有其他的ftp軟體,這裡面最受推崇的就是vsftp(very safe ftp)了,聽名字就知道是個非常安全的ftp.ftp的配置過程比較的複雜,也沒有任何組態工具,全部要手工輸命令操作,下面介紹下簡單的流程.
首先,同樣是檢查vsftp的安裝.在rhel AS4裡,預設安裝時,是沒有安裝vsftp的,如果當時安裝的時候沒有勾選的話,那麼就需要先安裝.檢查自己的機子是否安裝的命令是rpm -qa |grep vsftpd,如果有安裝,將返回版本號碼,在AS4的光碟片中帶的vsftp版本是2.0.X.
與安裝apache一樣,你可以通過rehl圖形介面裡的添加/移除工具添加ftp服務,然後按提示插入光碟片,最後安裝vsftp.或者在光碟片中找到rpm包,通過rpm ivh安裝.在安裝完畢後,記得輸入rpm -qa |grep vsftpd來確定已經安裝成功(如).
接下來,service vsftpd start
啟動ftp服務,然後ftp localhost(或者IP),這時已經可以連上ftp了,提示輸入使用者名稱和密碼.這個時候,如果你輸入root和口令,將提示login failed,如果你有建立其他的系統使用者,輸入使用者名稱和相應的口令就能登入成功.
vsftp預設的配置是與linux系統共用使用者庫的,即是,作業系統的使用者可以登入ftp,預設的列表是其使用者目錄(/Home/使用者名稱),在/etc/vsftpd/vsftpd.conf中可以修改其許可權,匿名使用者的設定也在那裡.
不過我想要的並不是這種ftp服務,我希望像serverU一樣,可以建立使用者,這個使用者與OS登入的使用者沒有任何關係,其可以管理的檔案夾位置也可以自己定義.這種使用者被稱為虛擬使用者.在linux裡,要實現上面的功能一般有兩種方法.第一種是建立使用者,然後去掉shell登入許可權,然後設定檔案路徑.另一種是建立使用者庫,裡麵包含若干使用者,映射到一個系統使用者上,然後設定檔案路徑.
我使用的是第二種方法.
首先建立虛擬使用者vUser,這個使用者不用來ftp登入,作為虛擬使用者存在,每一個虛擬使用者可以看作一個使用者組.
useradd -d /ftp地址 vUser //建立使用者組,並指定該組使用者的列表檔案夾
chmod 700 /ftp地址 //把該檔案夾設定為僅該組使用者可以操作.
然後是具體的過程
1)構造口令檔案ftpUserInfo.txt
按照奇數行為使用者名稱,偶數行為密碼的方式建立該檔案.如,檔案內容如下:
wiseman
12345
wiseman2
54321
表示有兩個使用者,wiseman的密碼是12345,wiseman2的密碼是54321,這兩個使用者最終用於ftp登入.
建立檔案可以用cat或vi命令,如果在圖形介面下,也可以直接建立.
這裡有個問題,我在建立的時候,在後面的build過程中出現過如下出錯提示:
db_load: unexpected end of input data or key/data pair
db_load: odd number of key/data pairs
原因大概是在ftpUserInfo.txt最後需要再加個斷行符號,加斷行符號後,就沒問題了,在圖形介面的文字編輯器儲存預設也會添加一個斷行符號,所以,如果是在圖形介面的文字編輯器下直接產生的,不會出現該錯誤.
2)產生加密使用者庫
db_load -T -t hash -f ~/ftpUserInfo.txt /etc/vsftpd_login.db
chmod 600 /etc/vsftpd_login.db //修改加密使用者庫檔案的許可權
這部分很容易出問題,首先是hash那個參數,這指定的是用hash加密(也就是md5),使用其他的,或沒該參數,最後登入會出錯.
然後是db_load指令,似乎很多版本的linux都沒裝這個命令,至少rhel AS4預設就沒裝,網上很多朋友也說沒有裝.如果指定該指令出現"沒有該指令"的提示,說明肯定沒裝了.
先用rpm -qa|grep db4查下自己的系統裝了什麼.在rhel AS4裡,預設裝了個db4-4.XXX,實際上,該指令還需要db4-devel-xxx,db4-utils-xxx兩個檔案.在rhel 4的安裝盤裡,這幾個檔案都有,具體哪張盤不記得了,如果有問題的,可以自己去rpm包裡找找.
安裝完後,在執行db_load命令就沒問題了.
3)增加vsftp的pam驗證.
先建個檔案
vi /etc/pam.d/ftp.vu
然後再裡面加入兩句命令,對ftp的登入進行處理.
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
4)修改vsftp的設定檔
vi /etc/vsftpd/vsftpd.conf
主要修改下面的內容
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES