2011年12月29日 星期四

透過 TAP 增進網路安全


企業不斷地增進網路安全建設以面對內在及外在的安全威脅。網路安全解決方案的成效和成本也是不停地被評估著的。本文介紹了如何搭配網路資安探測器(Network Security Probe)和網路分流器(Network TAP)來提高可見度和備援能力,同時降低解決方案的複雜性和成本。

傳統的網路安全
網路安全專家的任務是確保數據資料在穿越網路和保存在伺服器的安全。這些專家使用特製的探測器或入侵偵測系統,來監測和分析網路流量的潛在威脅。這種作法,無論在技術上或經濟上,都無法在整個網路佈放多個探測器。此外,管理大量的安全探測器和警報訊息就足以耗盡原本的生產力。有個比較實際的做法是確認網路中哪裡存在最機密的訊息、網路漏洞何在,然後在重要訊息和其儲存設備周圍擺放保護措施。下面圖片說明了一個常見的網路拓撲。
圖一:網路拓撲示意圖

傳統上,網安專家最主要的關注都放在由未授權用戶來的外部威脅。安全探測器就放置在外部網路出口處,也就是(圖一)防火牆和Router 2 之間。探測器監看和分析進出的流量,並在防火牆內攔截惡意流量。

而時至今日,專家們還擔心內部授權用戶的威脅。授權用戶可以透過 VPN 存取網路,而 VPN 端點通常都已在防火牆之後。必須在網路內部,部署安全探測器來解決這些內部威脅。

在大多數組織中,機密資訊儲存在特定的伺服器。機密資訊包含了公司財務資料、員工密碼、員工身份證字號、客戶聯絡資料、以及客戶信用卡資料等等。這些儲存資料的伺服器通常都放在網路的核心處。(圖二)描述了可以將安全探測器放置在網路中何處以保護網路免於外部和內部威脅。
圖二:探測器建置圖(使用Port Mirror)

在這個例子裡,Probe 1 監看 Firewal l和 Router 2 之間的網路進出流量。Probe 2 監看 Switch 1 和 Router 2 之間的使用者流量,而 Probe 3 則是監看 Server 1 的流量,在這個例子中,Server 1 是公司機密資料的儲存處。

本例中,各 Probe 均透過 "Port Mirror” 來取得網路流量。Port Mirror 在網路交換器或路由器是很普遍的功能,那是透過軟體的方式建立網路設備內部的連線。Port Mirror 會將網路設備上被指定的埠口(們)的流量複製至另一指定輸出埠口。當 Probe 連接至此輸出埠,理論上就可以看到所有被指定埠的網路流量。
本例中,各 Probe 均透過 "Port Mirror” 來取得網路流量。Port Mirror 在網路交換器或路由器是很普遍的功能,那是透過軟體的方式建立網路設備內部的連線。Port Mirror 會將網路設備上被指定的埠口(們)的流量複製至另一指定輸出埠口。當 Probe 連接至此輸出埠,理論上就可以看到所有被指定埠的網路流量。

Port Mirror 的缺點
使用 Port Mirror 的好處是此功能內建於網路設備就能看到通過交換器的流量,但是它還是有其缺點存在的。
 
許多網路安全專家會使用 Port Mirror,但是卻沒注意到並不是100%的流量都被複製到輸出埠。因為Port Mirror是透過軟體達成的,所以當交換器擁塞時,複製的流量可能會有封包遺失的狀況。一旦封包遺失,Probe 就無法得到網路流量的全貌,安全性也就可能受到威脅。

Port Mirror 是在交換器管理軟體中設定的。而錯誤的設定可能導致網路擁塞,更甚者,Port Mirror 可能會意外地或是故意地被關閉。這種可以從遠端將傳送給 Probe 的流量關閉的功能,會是一個隱憂。

通常,在公司的組織中,都會有不同的部門或群組需要存取網路。IT部門可能會想要監看網路流量以協助進行網路和應用程式的障礙排除。法務組可能需要提供稽核者網路流量的存取能力以確保符合財務、HIPPA 或是 PCI 法規。但,網路交換器或路由器通常只提供有限幾個埠口的 Port Mirror 能力,所以另外的安全小組可能就沒有可用的 Port Mirror 了。

使用網路分流器吧!
網路分流器(TAP, Test Access Point)可將網路流量複製至Probe和其他設備。用網路分流器取代Port Mirror,可以避免Port Mirror的相關限制:交換器擁塞時會造成封包遺失、mirror設定錯誤、以及遠端關閉mirror。網路分流器的設計,也讓其本身避免成為網路的故障點—即使失去電力,網路鏈結上的流量依舊會繼續傳輸。網路分流器亦可將半雙工的流量彙集到一個網路監看埠,然後傳送給Probe;同時網路分流器上的緩衝設計,也可以用來因應網路上突來的巨大流量。

網路分流器可以任意擺放在想要監看流量的位置。再回到先前的範例,分流器可以擺放在 Firewall 和 Router 2 之間監看進出網路的流量、Switch 1 和 Router 2 之間監看使用者的流量以及 Switch 2 和 Server 1 之間監看伺服器流量,然後將 Probe 連接至分流器。如圖三所示。
圖三:探測器建置圖(使用網路分流器)

彙集式網路分流器(Aggregation TAP)將Probe數量最小化
彙集器(Aggregator),亦就是彙集式網路分流器(Aggregation TAP),是一台可以將許多份輸入流量聚合成一份輸出的設備。透過彙集器,將數個在線型 TAP 的流量彙合,就可以減少 Probe 的使用個數。只需一台Probe來分析這彙合後的流量,就可以取代每個 TAP 配一台 Probe 的配置。使用彙集器時,只需注意輸入流量的總合要小於輸出的頻寬。因此,在線型 TAP 加上彙集器,在低網路使用率的狀況下,是一個經濟實惠的解決方案。只需一台 Probe 就可以監看彙合後的多個位置的網路流量,如此可以最大化每台 Probe 的產出價值,同時亦將購置 Probe 的成本最小化。
 
圖四:彙合多個TAP的流量到一台Probe

複製式網路分流器(SPAN TAP)提高備援力複製式網路分流器(SPAN TAP),或是重製式網路分流器(Regeneration TAP),可以產生監看流量的相同副本,如此一來,就可以讓多台 Probe 分析到相同的網路流量。SPAN TAP 的應用包括了建置具備援能力的安全探測器,假設其中一台失效了,備用的 Probe 可以直接接手安全監控的任務。SPAN TAP 在有多台設備需要取用同樣的網路流量的情況下,也是相當有幫助的,例如:同時使用網路分析儀、應用程式效能分析系統、封包擷取側錄等。每台設備都可以取用這些流量內容,而且不必耗用交換器或其他設備的資源,如圖五所示。
圖五:將相同流量給多台設備使用

結語
對每個企業組織來講,避免從內到外的網路安全威脅都是非常重要的。安全探測器結合網路分流器來監看分析網路流量是網路安全專家通常採用的建置方式。網路分流器是可信賴的,而永遠在線、容易安裝,又可以避免使用 Port Mirror 的限制。彙集式網路分流器將多個位置的網路流量彙合在一起,可以有效地簡化並降低網路安全系統的建置和成本。而複製式網路分流器則可以提高安全探測器的備援性,並且讓公司內不同部門的不同需求的儀器設備都可以同時取用這些網路流量。

HUB、SPAN、TAP比較



 在獲取資料包進行網路分析時,常用的方法有三種:HUBSPANTAP

HUB
    HUB 很“弱智”,但這種方法卻是最早的資料包獲取方法。HUB是半雙工的乙太網設備,在廣播資料包時,無法同時進行反方向的資料流程傳輸。

優勢:便宜

劣勢
1、降低鏈路一半以上的頻寬
2、導致錯誤衝突,潛在的網路故障點
3、無千兆方案

SPAN
  SPAN(Switch Port Analysis)也就是鏡像埠。
    高級的交換機可以將其一個或幾個埠的資料包複製到一個指定的埠,分析儀可以接到鏡像埠接受資料。但這一功能會影響交換機的性能,當資料超載時還會造成資料包的丟失。
   
優勢
1 經濟的,不需要額外的設備。
2 可同時監測一個交換機上一個 VLAN 上所有的流量。
3 一台分析儀可監測多條鏈路。

劣勢
1 多埠流量鏡像到一個埠上,可引起緩存超載及丟包現象。
2 資料包通過緩存時會被重定時,就不可能精確的確定時間尺度,如:抖動、資料包間隔 分析、延遲。
3 不能監測OSI1.2層錯誤包,大多數據鏡像埠過濾掉不規則的資料包,這就不能為故障排查提供詳盡有用的資料資訊。
4 因為鏡像埠的流量使得交換機的 CPU 負載加重,所以會引起交換機工作性能下降。


鏡像技術的典型應用
1、在頻寬較低且能有較的進行鏡像的鏈路,可進行多埠鏡像來靈活的分析、監測。
2、趨勢監測:不需要精確的監測,只要不定期的資料統計就可以的情況下。
3、協定和應用分析:從一個鏡像埠可以方便、經濟的提供相關的資料資訊
4、整個 VLAN 監測:利用多埠鏡像技術可以方便的監測一個交換機上的一個 VLAN 全部。


TAP
    TAP(Test Access Point)也叫分路器,是目前較流行的一種網路資料獲取方法。
    即便是TAP電源掉電也不會中斷網路連接,可提供全面可視的網路資料流程,對全線速的雙向會話進行準確無誤的監測,並且無丟包和延遲。

優勢
1 捕獲 100%的資料包,沒有丟包。
2 可監測到不規則的資料包,方便于故障排查。
3 精確的時間戳記,沒有延遲和重定時。
4 一次安裝,可方便分析儀接入和移動。

劣勢
1 需額外花費購買分路器TAP,很貴,還佔用機架空間
2 一次只能看一條鏈路。

分路器技術的典型應用
1 商業鏈路:這些鏈路需要極短的故障排除時間,在這些鏈路中安裝上分路器 TAP,網路工程師可迅速查找、排除突發的問題。
2 核心或骨幹鏈路。它們具有高頻寬利用率,同時在接入、移動分析儀時不能中斷鏈路。TAP保證了資料 100%的捕獲而沒有丟包,為精確分析這些鏈路提供了性能保障。
3 VoIPQoSVoIP 服務品質測試需要精確的抖動和丟包率度量。TAP可完全保障這些測試,但鏡像埠會改變抖動值,提供不真實的丟包率。
4 故障排查:保證能監測到不規則資料包及錯誤的資料包。鏡像埠會將這些資料包全部過濾掉,這樣就不能為工程師查找故障提供重要而完整的資料資訊。
5 IDS 應用:IDS 依靠完整的資料資訊來識別入侵模式,TAP能提供可靠完整的資料流程給入侵偵測系統。
6 伺服器群:多埠分路器可以同時連接8/12條鏈路,可實現遠端自由切換,方便于隨時監測、分析。

結論
通常重要的鏈路和臨界的應用,更喜歡分路器的應用。
分路器TAP能提供一個完整、精確資料監測的接入點。
鏡像埠通常用在總體趨勢的監測或希望能同時監測到多條鏈路資訊的應用。
由於鏡像埠的緩存,同步、丟包率不能精確的度量,不能應用在 VoIP 及其它對時間要求精確的度量上。

記錄惡意網路封包資訊 實作Snort+BASE網頁型入侵偵測系統


隨著網路的普及化,網路安全問題也日漸嚴重,以往一般企業大多採用防火牆作為防止駭客入侵的第一道防線,但隨著網路攻擊手法的日趨成熟與多樣化,單純使用防火牆已無法建構安全的企業環境。
企 業一旦遭到攻擊,現有的防火牆經常無法即時監測並記錄攻擊,而造成日後舉證上的困難,因此具有記錄功能的入侵偵測系統逐漸被人重視。本篇文章將結合開源碼 社群最有名的入侵偵測軟體(Snort)與Web介面的管理軟體(BASE)實作一個網頁型的入侵偵測系統,而建構所需的套件如下表所示:  
什麼是入侵偵測系統
入侵偵測系統依偵測型式可分為網路型入侵偵測系統(Network-based Intrusion Detection System,NIDS)和主機型入侵偵測系統(Host-based Intrusion Detection System,HIDS)兩種。
網路型入侵偵測系統(NIDS)NIDS
通常部署在網域閘道(Gateway)上,透過竊聽(Sniffer)的方式即時監測網路上的封包並比對攻擊模式,當發現有疑似入侵行為時可適時提出警告。NIDS的網路部署如下圖所示。

▲網路型入侵偵測系統(NIDS)的網路部署。
NIDS部署在網域閘道上監控所有的封包並與攻擊模式資料庫比對,一旦發現有符合攻擊樣式的網路封包,即觸發相關事件來通知管理者。
若仔細觀察上頁圖示,會發現入侵偵測系統(Snort)是接在交換器(Switch)裝置前的集線器(Hub),而不是與Switch裝置直接連接,這是因為封包在這兩種裝置上傳遞方式不同的緣故。
在Hub上,封包則是採用廣播的方式,當封包進入到Hub時,會以廣播的方式將封包傳遞給Hub上所有的主機,但只有目的主機會接收此封包。 換句話說,在Hub上連接的主機都會接收到封包,只是沒收下來而已。在這個情況下,如果讓網卡進入所謂的混亂(Promiscuous)模式,那麼網卡就 會強制地將同一Hub上的所有封包資訊接收下來。這也是一些以竊取資料為目的木馬程式的特徵,所以有些網管人員會特別注意相關Log檔案是否有類似混亂的 字串。
不過,Snort啟動後也會強迫網卡進入混亂模式,藉此取得其他主機的封包。以Linux系統為例,可利用ifconfig指令查看目前網卡的狀況,如下圖所示,一個正常模式的網卡在此模式下僅會處理與本身相關的封包。

可利用「Ifconfig eth0 promisc」指令讓網卡進入混亂模式,右上圖所示即為一個進入混亂模式的網卡。在此模式下,網卡會處理流經Hub的所有封包,Snort即是利用此種 特性處理網域內的所有封包,並比對是否有惡意樣式的封包,所以Snort程式在執行時會將網卡設定成混亂模式。

在Switch上,則會保存一張對應表,對應連接到Switch上的每台主機埠口(這裡指的是Switch裝置上的埠而非主機上的埠)與實體位址 (MAC)的資訊。當封包流進此Switch時,會先查詢此對應表,並直將封包直接傳遞給目的主機,不相關的其他主機無法接收到封包。因此,若無經過特殊 的處理,Snort直接連在Switch上也無法取得其他主機的封包。這也是為什麼Snort主機不能直接接到Switch上從事監控作業,而必須接在 Hub上的原因。
除非,Switch提供所謂的鏡像(Mirror)埠或SPAN(Catalyst Switched Port Analyzer)功能,可將Switch上的其他埠所接收到的封包複製一份到Snort主機所在的埠口上。否則,Snort接在Switch上是無法取 得其他主機的封包,僅可取得流經自己主機的封包。
須附帶說明的是,在電腦商場內常會發現有些網路產品標示為Switching Hub(既是Switch又是Hub?),讀者可別被字面上的含義搞混了,此處所謂的Switching指的是速率可自動切換10/100M的意思。其實此類產品,本質上還是一個Hub。
NIDS的偵測方式可分為特徵比對(Signature-based)與異常偵測(Anomaly-based)兩種方式,以下分別加以說明。
特徵比對
特徵比對又稱為「不當行為偵測(Misuse Detection)」,系統會先針對入侵特徵建立一個「異常特徵資料庫」,只要NIDS偵測到的封包內容與資料庫的某個特徵相符,系統即會判別為入侵。 此種方式作法的優點是不易誤判,因為個別的攻擊行為通常擁有特殊的特徵符號,就如同病毒碼一般可精確比對出攻擊模式。
但就如上所言,此種方式是否能完整地檢測出惡意的封包,取決於「異常特徵資料庫」的完整性,異常特徵資料庫越完整,檢測出惡意封包的機率就越大,所以此種 方式無法檢測出未知的攻擊方式,因為須先有攻擊行為才會有攻擊特徵,而「異常特徵資料庫」也才能加入此種攻擊特徵。最後,NIDS才可藉此掃描出惡意封 包。Snort所採用的偵測方式,即屬於特徵比對的方式。
異常偵測
異常偵測運用統計分析的方式,先定義出正常的系統模式(以下簡稱正常模式),而後當NIDS檢測出不符合正常模式的流量時,即判別為異常。此種模式的優點 在於可偵測未知的攻擊行為,因為攻擊行為常會造成系統偏離正常模式而被檢測出來,但缺點是很難界定「正常的系統模式」為何。
舉例來說,A公司為6點下班,所以假設晚上6點後應該沒有人會使用網路,因此定義A公司網路流量在晚上6點後應小於10k,方為正常系統模式。但如果有一 天公司部門晚上加班,那流量使用必定超過原先所設定的正常模式而被歸為異常。諸如此類的問題,將使得「正常的系統模式」更加難以定義,而增加系統誤判的機 率,因此目前入侵偵測系統大都採用特徵比對方式。此外,入侵偵測系統採用NIDS的部署方式具有以下的優點:
● 成本低,僅需一台NIDS即可以監控整個網域,但要注意的是,當網路流量超過NIDS的負荷,即可能造成封包遺失,進而影響偵測的準確率。
● 有些入侵行為是利用惡意的網路行為完成,如DoS(拒絕服務攻擊),此種類的攻擊僅能利用NIDS偵測出來,而HIDS偵測不到。
● 由於NIDS在駭客入侵時即開始記錄,比較不容易被駭客消除入侵證據。
● NIDS因為採用Sniffer的方式,所以不必理會內部主機所採用的作業系統,即所謂「作業系統無關」,而HIDS高度相依於主機上的作業系統。 NIDS雖然擁有以上諸多的優點,但同時也具有下列的限制:
● 如果網路流量超過NIDS的負荷時,即可能造成封包遺失,進而影響偵測的準確率。
● 如果網路封包已被加密,NIDS將無法有效地偵測這些加密後的封包。
● NIDS僅能偵測網路的入侵,對於駭客在電腦前的實際攻擊行為則無能為力。目前有所謂的入侵防禦系統(Intrusion Prevention Systems,IPS)系統,當偵測出惡意的網路行為時,即直接利用防火牆將該惡意來源封鎖(Block),但使用此種設備須特別小心,最好是調校 NIDS至最佳狀態,即最少的誤判率時方可使用,否則可能封鎖掉正常的來源。

2011年12月28日 星期三

使用 /proc 文件系統來控制系統

/proc 文件系統是 Linux 的優秀特性之一,本文向您詳細講述了它的一些最實用的基礎知識。使用 /proc,您再也不用關閉並重新引導機器來管理操作系統的許多細節問題,這對那些要求系統的可用性盡可能高的管理員來說非常有用。

任何管理過具有商業重要性的系統的人都知道計算機正常運行時間的價值 - 或者反過來講,知道用戶因故障時間會給您帶來諸多頭痛問題。公司採用 UNIX 服務器的主要原因之一是由於它的可靠性和穩定性。如果仔細管理,通常可以很長時間不需重啟這些服務器。為了做到盡善盡美,您可以即時執行一些管理任務,甚至是內核這一級別的任務,從而保持服務器的可用性。雖然因升級硬體或因某人踢掉電源線而仍需要重啟系統,但瞭解到許多管理任務可以在不干擾服務的情況下執行,總是有益的。

本文提供了不需要重新引導就能夠執行關於各種管理任務和更改系統的提示和技巧。Linux 提供了各種方法,用以在保持系統正常運行的情況下,更改底層操作系統的值和設置。這些方法有兩種基本形式,一種形式對於所有 Linux 系統都是通用的,並在 Linux 內核中提供這一形式(您可以在 Linux Kernel Archives 上查找更多關於 Linux 內核的資訊和下載內核源代碼﹔請參閱參考資料,裡面有至 Linux Kernel Archives 的鏈接),還有一種形式是各分發版所獨有的,並且由供應商提供。本文將討論這兩種方法。

更改運行中的內核的參數 Linux 向管理員提供了非常好的方法,使他們可以在系統運行時更改內核,而不需要重新引導內核/系統。這是通過 /proc 虛擬文件系統實現的。Linux Gazette 給出了一份有關 /proc 的參考,它是我所看到過的最簡單且最容易的參考之一。(請參閱參考資料,其中有至這篇文章的鏈接。)/proc 檔系統主要可以讓您查看運行中的內核,這一點對於監控性能、查找系統資訊、瞭解系統是如何配置的以及更改該配置很有用。該檔系統被稱為虛擬檔系統,因為它實際上根本不是一個檔系統。它只是內核提供的一個映射,被附加在通常的檔系統結構之上,從而使您能夠訪問它。

我們可以採用某種方法在系統正常運行的同時更改運行中的內核的參數,這一事實賦予了系統管理員在更改內核設置方面強大的能力和高的靈活性。這種實現是出自部分 Linux 內核開發人員富有靈感的想法。但能力太大會是一件壞事嗎﹖有時確實如此。如果准備更改 /proc 檔系統中的任何內容,您必須確保自己知道在更改什麼以及這會對系統產生什麼影響。這些技術確實有用,但錯誤的舉動會帶來完全不希望得到的結果。如果您不熟悉這方面的內容,或者不確定您所做的某項更改會帶來什麼影響,那麼請在一台對您或您公司不重要的機器上進行實踐。

如何更改 首先,考慮怎樣做不會對內核進行更改。有兩條充分的理由說明瞭為什麼不能直接切換至 /proc 檔系統,用文本編輯器打開一個檔,做一系列更改,然後保存該檔,再退出。這兩條理由是﹕

數據完整性﹕所有這些檔描述了運行中的系統,由於內核可以隨時更改這些檔中的任何一個,因此如果打開一個編輯器,然後更改某些數據,而同時,系統也正在底層更改這些數據,那麼無論您保存下來的任何內容都不可能是內核所期望的內容。 虛擬檔﹕所有這些檔實際上都不存在。如何使保存的數據同步,等等﹖
所以,解決辦法是,不使用編輯器來更改任何這些檔。每當更改 /proc 文件系統中的任何內容時,應該使用 echo 命令,然後從命令列將輸出重定向至 /proc 下所選定的文件中。例如﹕
echo "Your-New-Kernel-Value" > /proc/your/file
類似的,如果希望查看 /proc 中的資訊,應該使用專門用於此用途的命令,或者使用命令列下的 cat 命令。
更改什麼 要很好地使用 /proc 不需要您是一位元內核方面的高手,只需基本瞭解這個檔系統的結構就可以極大地幫助您。直到有一天用戶向您詢問某些特定的功能,使您很高興曾下功夫瞭解過在哪裡進行更改,您才可能會覺得有必要知道關於 /proc 中的任何事情。在這方面,/proc 檔系統通過其結構和文件許可權幫助系統管理員。
/proc 中的每個檔都有一組分配給它的非常特殊的檔許可權,並且每個檔屬於特定的用戶標識。這一點實現得非常仔細,從而提供給管理員和用戶正確的功能。下麵這個列表匯總了各個文件上有哪些特定的許可權﹕
只讀﹕任何用戶都不能更改該檔﹔它用於表示系統資訊 root 寫﹕如果 /proc 中的某個檔是可寫的,則通常只能由 root 用戶來寫 root 讀﹕有些檔對一般系統用戶是不可見的,而只對 root 用戶是可見的 其它﹕出於各種原因,您可能會看到不同于上面常見的三種許可權的組合
關於 /proc,您會發現最通常的情況是,它的大多數檔是只讀的,除了 /proc/sys 目錄。該目錄下存放著大多數的內核參數(而不是資訊),並且設計成可以在系統運行的同時進行更改。因此這個目錄是本文的主旨所在。
就更改 /proc 中什麼內容而言,要瞭解的最後一點是,應該向這些檔實際寫些什麼。當查看 /proc 中各種檔時,會發現其中一些檔對我們來說是可讀的,一些文件是數據文件。通過用特定的實用程式(譬如 top、lspci 和 free),這些數據文件仍然也可讀。您還會注意到,對我們來說可讀檔有兩種不同格式﹕一些是二進制開關,另一些包含其它資訊。二進制開關檔只包含代表特定內核功能的 0(關)或 1(開)。
進行更改 詳細介紹有關 /proc 中每個檔的用法和確切資訊超出了本文所涉及的範圍。要獲得任何關于本文沒有涉及到的 /proc 檔的其它資訊,一個最佳來源就是 Linux 內核源代碼本身,它包含了一些非常優秀的文檔。對於系統管理員,/proc 中的以下文件較有用。這不意味著它是一份詳盡的說明,而只是日常使用中便於查閱的參考。
/proc/scsi /proc/scsi/scsi 作為系統管理員,需要瞭解的最有用內容是,在有熱交換驅動器情況下,如何不重啟系統就可以添加更多磁盤空間。假使不使用 /proc,您可以插入驅動器,但為了使系統識別新磁盤,必須隨即重新引導系統。這裡,可以用以下命令來使系統識別新的驅動器﹕
echo "scsi add-single-device w x y z" > /proc/scsi/scsi
為使該命令正常運行,必須指定正確的參數值 w、x、y 和 z,如下所示﹕
w 是主機介面卡標識,第一個適配器為零(0) x 是主機介面卡上的 SCSI 通道,第一個通道為零(0) y 是設備的 SCSI 標識 z 是 LUN 號,第一個 LUN 為零(0)
一旦將磁盤添加到系統中之後,可以掛裝任何先前已格式化的檔系統,也可以開始對它進行格式化等。例如,如果不確定磁盤是什麼設備,或者想檢查任何先前已有的分區,則可以用如 fdisk -l 這樣的命令來向您報告這方面的資訊。
相反的,在不重新引導系統的情況下將設備從系統中除去的命令是﹕
echo "scsi remove-single-device w x y z" > /proc/scsi/scsi
在輸入這條命令並將熱交換 SCSI 磁盤從系統中除去之前,請確保首先卸下已從該磁盤安裝的任何文件系統。
/proc/sys/fs/ /proc/sys/fs/file-max 該檔指定了可以分配的檔案控制代碼的最大數目。如果用戶得到的錯誤消息聲明由於打開檔數已經達到了最大值,從而他們不能打開更多檔,則可能需要增加該值。可將這個值設置成有任意多個檔,並且能通過將一個新數字值寫入該文件來更改該值。
缺省設置﹕4096
/proc/sys/fs/file-nr 該文件與 file-max 相關,它有三個值﹕
已分配檔案控制代碼的數目 已使用檔案控制代碼的數目 檔案控制代碼的最大數目 該檔是只讀的,僅用於顯示資訊。
/proc/sys/fs/inode-* 任何以名稱"inode"開頭的檔所執行的操作與上面那些以名稱"file"開頭的檔所執行的操作一樣,但所執行的操作與索引節點有關,而與檔案控制代碼無關。
/proc/sys/fs/overflowuid 和 /proc/sys/fs/overflowgid 這兩個檔分別保存那些支持 16 位用戶標識和組標識的任何文件系統的用戶標識(UID)和組標識(GID)。可以更改這些值,但如果您確實覺得需要這樣做,那麼您可能會發現更改組和密碼檔項更容易些。
缺省設置﹕65534
/proc/sys/fs/super-max 該檔指定超級塊處理程式的最大數目。掛裝的任何檔系統需要使用超級塊,所以如果掛裝了大量檔系統,則可能會用盡超級塊處理程式。
缺省設置﹕256
/proc/sys/fs/super-nr 該文件顯示當前已分配超級塊的數目。該檔是只讀的,僅用於顯示資訊。
/proc/sys/kernel /proc/sys/kernel/acct 該檔有三個可配置值,根據包含日誌的檔系統上可用空間的數量(以百分比表示),這些值控制何時開始進行進程記帳﹕
如果可用空間低於這個百分比值,則停止進程記帳 如果可用空間高於這個百分比值,則開始進程記帳 檢查上面兩個值的頻率(以秒為單位) 要更改這個文件的某個值,應該回送用空格分隔開的一串數字。
缺省設置﹕2 4 30
如果包含日誌的檔系統上只有少於 2% 的可用空間,則這些值會使記帳停止,如果有 4% 或更多可用空間,則再次啟動記帳。每 30 秒做一次檢查。
/proc/sys/kernel/ctrl-alt-del 該文件有一個二進制值,該值控制系統在接收到 ctrl+alt+delete 按鍵組合時如何反應。這兩個值表示﹕
零(0)值表示捕獲 ctrl+alt+delete,並將其送至 init 程式。這將允許系統可以完美地關閉和重啟,就好象您輸入 shutdown 命令一樣。 壹(1)值表示不捕獲 ctrl+alt+delete,將執行非幹淨的關閉,就好象直接關閉電源一樣。
缺省設置﹕0
/proc/sys/kernel/domainname 該檔允許您配置網絡功能變數名稱。它沒有缺省值,也許已經設置了功能變數名稱,也許沒有設置。
/proc/sys/kernel/hostname 該檔允許您配置網絡主機名稱。它沒有缺省值,也許已經設置了主機名稱,也許沒有設置。
/proc/sys/kernel/msgmax 該檔指定了從一個進程發送到另一個進程的消息的最大長度。進程間的消息傳遞是在內核的內存中進行,不會交換到磁盤上,所以如果增加該值,則將增加操作系統所使用的內存數量。
缺省設置﹕8192
/proc/sys/kernel/msgmnb 該檔指定在一個消息隊列中最大的字節數。
缺省設置﹕16384
/proc/sys/kernel/msgmni 該檔指定消息隊列標識的最大數目。
缺省設置﹕16
/proc/sys/kernel/panic 該檔表示如果發生"內核嚴重錯誤(kernel panic)",則內核在重新引導之前等待的時間(以秒為單位)。零(0)秒設置在發生內核嚴重錯誤時將禁止重新引導。
缺省設置﹕0
/proc/sys/kernel/printk 該文件有四個數字值,它們根據日誌記錄消息的重要性,定義將其發送到何處。關于不同日誌級別的更多資訊,請閱讀 syslog(2) 聯機幫助頁。該文件的四個值為﹕
控制台日誌級別﹕優先級高於該值的消息將被列印至控制台 缺省的消息日誌級別﹕將用該優先級來列印沒有優先級的消息 最低的控制台日誌級別﹕控制台日誌級別可被設置的最小值(最高優先級) 缺省的控制台日誌級別﹕控制台日誌級別的缺省值
缺省設置﹕6 4 1 7
/proc/sys/kernel/shmall 該檔是在任何給定時刻系統上可以使用的共用內存的總量(以字節為單位)。
缺省設置﹕2097152
/proc/sys/kernel/shmax 該檔指定內核所允許的最大共用內存段的大小(以字節為單位)。
缺省設置﹕33554432
/proc/sys/kernel/shmmni 該檔表示用於整個系統共用內存段的最大數目。
缺省設置﹕4096
/proc/sys/kernel/sysrq 如果該檔指定的值為非零,則啟動 System Request Key。
缺省設置﹕0
/proc/sys/kernel/threads-max 該檔指定內核所能使用的線程的最大數目。
缺省設置﹕2048
/proc/sys/net /proc/sys/net/core/message_burst 寫新的警告消息所需的時間(以 1/10 秒為單位)﹔在這個時間內所接收到的其它警告消息會被丟棄。這用於防止某些企圖用消息"淹沒"您系統的人所使用的拒絕服務(Denial of Service)攻擊。
缺省設置﹕50(5 秒)
/proc/sys/net/core/message_cost 該檔存有與每個警告消息相關的成本值。該值越大,越有可能忽略警告消息。
缺省設置﹕5
/proc/sys/net/core/netdev_max_backlog 該檔指定了,在介面接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。
缺省設置﹕300
/proc/sys/net/core/optmem_max 該文件指定了每個通訊端所允許的最大緩沖區的大小。
/proc/sys/net/core/rmem_default 該文件指定了接收通訊端緩沖區大小的缺省值(以字節為單位)。
/proc/sys/net/core/rmem_max 該文件指定了接收通訊端緩沖區大小的最大值(以字節為單位)。
/proc/sys/net/core/wmem_default 該檔指定了發送通訊端緩沖區大小的缺省值(以字節為單位)。
/proc/sys/net/core/wmem_max 該文件指定了發送通訊端緩沖區大小的最大值(以字節為單位)。
/proc/sys/net/ipv4 所有 IPv4 和 IPv6 的參數都被記錄在內核源代碼文檔中。請參閱文件 /usr/src/linux/Documentation/networking/ip-sysctl.txt。
/proc/sys/net/ipv6 同 IPv4。
/proc/sys/vm /proc/sys/vm/buffermem 該文件控制用於緩沖區內存的整個系統內存的數量(以百分比表示)。它有三個值,通過把用空格相隔的一串數字寫入該文件來設置這三個值。
用於緩沖區的內存的最低百分比 如果發生所剩系統內存不多,而且系統內存正在減少這種情況,系統將試圖維護緩沖區內存的數量。 用於緩沖區的內存的最高百分比
缺省設置﹕2 10 60
/proc/sys/vm/freepages 該文件控制系統如何應對各種級別的可用內存。它有三個值,通過把用空格相隔的一串數字寫入該文件來設置這三個值。
如果系統中可用頁面的數目達到了最低限制,則只允許內核分配一些內存。 如果系統中可用頁面的數目低於這一限制,則內核將以較積極的方式啟動交換,以釋放內存,從而維持系統性能。 內核將試圖保持這個數量的系統內存可用。低於這個值將啟動內核交換。
缺省設置﹕ 512 768 1024
/proc/sys/vm/kswapd 該文件控制允許內核如何交換內存。它有三個值,通過把用空格相隔的一串數字寫入該文件來設置這三個值﹕
內核試圖一次釋放的最大頁面數目。如果想增加內存交換過程中的帶寬,則需要增加該值。 內核在每次交換中試圖釋放頁面的最少次數。 內核在一次交換中所寫頁面的數目。這對系統性能影響最大。這個值越大,交換的數據越多,花在磁盤尋道上的時間越少。然而,這個值太大會因"淹沒"請求隊列而反過來影響系統性能。
缺省設置﹕512 32 8
/proc/sys/vm/pagecache 該文件與 /proc/sys/vm/buffermem 的工作內容一樣,但它是針對檔的內存映射和一般高速緩存。
使內核設置具有持久性 這裡提供了一個方便的實用程式,用於更改 /proc/sys 目錄下的任何內核參數。它使您可以更改運行中的內核(類似於上面用到的 echo 和重定向方法),但它還有一個在系統引導時執行的設定檔。這使您可以更改運行中的內核,並將這些更改添加到設定檔,以便於在系統重新引導之後,這些更改仍然生效。

該實用程式稱為 sysctl,在 sysctl(8) 的聯機幫助頁中,對這個實用程式進行了完整的文檔說明。sysctl 的設定檔是 /etc/sysctl.conf,可以編輯該檔,並在 sysctl.conf(8) 下記錄了該文件。sysctl 將 /proc/sys 下的檔視為可以更改的單個變量。所以,以 /proc/sys 下的檔 /proc/sys/fs/file-max 為例,它表示系統中所允許的檔案控制代碼的最大數目,這個檔被表示成 fs.file-max。
這個示例揭示了 sysctl 標記法中的一些奇妙事情。由於 sysctl 只能更改 /proc/sys 目錄下的變量,並且人們始終認為變量是在這個目錄下,因此省略了變量名的那一部分(/proc/sys)。另一個要說明的更改是,將目錄分隔符號(正斜杠 /)換成了英文中的句號(點 .)。
將 /proc/sys 中的文件轉換成 sysctl 中的變量有兩個簡單的規則﹕
去掉前面部分 /proc/sys。 將檔案名中的正斜杠變為點。
這兩條規則使您能將 /proc/sys 中的任一檔案名轉換成 sysctl 中的任一變量名。一般檔到變量的轉換為﹕
/proc/sys/dir/file --> dir.file dir1.dir2.file --> /proc/sys/dir1/dir2/file
可以使用命令 sysctl -a 查看所有可以更改的變量和其當前設置。
用 sysctl 還可以更改變量,它所做的工作與上面所用的 echo 方法完全一樣。其標記法為﹕
sysctl -w dir.file="value"
還是用 file-max 作為示例,使用下面兩種方法中的一種將該值更改為 16384﹕
sysctl -w fs.file-max="16384"
或者﹕
echo "16384" > /proc/sys/fs/file-max
不要忘記 sysctl 不會將所做的更改添加到設定檔中﹔這要您用手工來完成。如果您希望在重新引導之後,前面所做的更改仍然有效,則必須維護這個設定檔。
注﹕不是所有的分發版都提供 sysctl 支援。如果您的特定系統屬於這種情況,則可以用上面所描述的 echo 和重定向方法,將這些命令添加到啟動腳本中,這樣系統每次引導時,都會執行它們。

用於設置系統的命令 在系統運行的同時更改其它非內核系統參數,而且在不重新引導系統的情況下使這些設置生效,這種做法是可能的。在 /etc/init.d 目錄中列出了包含這些參數的檔,它們主要按服務、守護程式和服務器來分類。由於越來越多各方面的腳本可以羅列在這個目錄下,所以這裡不可能討論所有各種配置。不過,下面列舉了一些示例,這些示例討論了如何在不同的 Linux 分發版上操作 /etc/init.d 下的腳本。這裡的示例可能很有用,其中討論了更改守護程式,然後在不重新引導系統的情形下重新裝入配置﹕
更改 Web 服務器配置,然後重新裝入 Apache 除去不需要的 inetd 登錄服務 操作網絡設置 通過 NFS 導出新的檔系統 啟動/停止防火牆
首先,常見的方法是,直接通過 /etc/init.d 中的腳本來操作系統服務。這些腳本用參數來操作它們所控制的服務﹔可以通過輸入腳本名但不帶任何參數這種方法來查看有哪些有效的選項。常見的參數有﹕

start﹕啟動已停止的服務 stop﹕停止正在運行的服務 restart﹕停止正在運行的服務,然後再重啟該服務﹔它將啟動已停止的服務 reload﹕在不中斷任何連接的情況下,重新裝入服務配置

status﹕報告服務處於運行狀態,還是停止狀態
例如,下麵這條命令將在不終止任何已連接的用戶會話的情形下,重新裝入 xinetd 配置(如果您更改了 /etc/xinetd.conf,那麼這條命令很有用)﹕
/etc/init.d/xinetd reload

Red Hat 提供了 service 這條命令,它可以為您操作服務。service 命令提供的功能與輸入腳本名本身的功能一樣。它的語法如下所示﹕
service script-name [parameter]
例如﹕
service xinetd reload

SuSE 也提供名為 rc 的命令。該命令類似於上面的 service 命令,但該命令與腳本名之間沒有空格。它的語法如下所示﹕
rc{script-name} parameter
例如﹕
rcapache start
與更改內核參數類似,一旦重新引導系統,則對這些服務的更改將會丟失。現在越來越多的分發版開始採用 chkconfig 命令,它管理在各種運行級別下(包括引導時)啟動的服務。在撰寫本文時,chkconfig 命令的語法會因 Linux 版本的不同而略有差異,不過如果輸入不帶任何參數的命令 chkconfig,則會顯示一個如何使用該命令的列表。也可以通過 chkconfig(8) 的聯機幫助頁找到更多有關 chkconfig 的資訊。

Linux操作系統參數意義

所有的TCP/IP調優參數都位於/proc/sys/net/目錄。例如,下面是最重要的一些調優參數, 後面是它們的含義:
  1. /proc/sys/net/core/rmem_max — 最大的TCP數據接收緩衝
  2. /proc/sys/net/core/wmem_max — 最大的TCP數據發送緩衝
  3. /proc/sys/net/ipv4/tcp_timestamps — 時間戳在(請參考RFC 1323)TCP的包頭增加12個字節
  4. /proc/sys/net/ipv4/tcp_sack — 有選擇的應答
  5. /proc/sys/net/ipv4/tcp_window_scaling — 支持更大的TCP窗口. 如果TCP窗口最大超過65535(64K), 必須設置該數值為1
  6. rmem_default — 默認的接收窗口大小
  7. rmem_max — 接收窗口的最大大小
  8. wmem_default — 默認的發送窗口大小
  9. wmem_max — 發送窗口的最大大小
  
  /proc目錄下的所有內容都是臨時性的,所以重啟動系統後任何修改都會丟失。
  
  建議在系統啟動時自動修改TCP/IP參數:
  
  把下面代碼增加到/etc/rc.local文件,然後保存文件,系統重新引導的時候會自動修改下面的TCP/IP參數:
  
  echo 256960 > /proc/sys/net/core/rmem_default
  echo 256960 > /proc/sys/net/core/rmem_max
  echo 256960 > /proc/sys/net/core/wmem_default
  echo 256960 > /proc/sys/net/core/wmem_max
  
  echo 0 > /proc/sys/net/ipv4/tcp_timestamps
  echo 1 > /proc/sys/net/ipv4/tcp_sack
  echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
  
  TCP/IP參數都是自解釋的,TCP窗口大小設置為256960,禁止TCP的時間戳(取消在每個數據包的頭中增加12字節),支持更大的TCP窗口和TCP有選擇的應答:
  
  上面數值的設定是根據互連網連接和最大帶寬/延遲率來決定。
  
  註:上面實例中的數值可以實際應用,但它只包含了一部分參數。
  
  另外一個方法:使用 /etc/sysctl.conf 在系統啟動時將參數配置成您所設置的值:  
  net.core.rmem_default = 256960
  net.core.rmem_max = 256960
  net.core.wmem_default = 256960
  net.core.wmem_max = 256960
  
  net.ipv4.tcp_timestamps = 0
  net.ipv4.tcp_sack =1
  net.ipv4.tcp_window_scaling = 1
----------------------------------------------------------------------------------------------------------------------------
    /proc/sys/fs/super-max

    該文件指定超級塊處理程序的最大數目。掛裝的任何文件系統需要使用超級塊,所以如果掛裝了大量文件系統,則可能會用盡超級塊處理程序。
    缺省設置:256
    /proc/sys/fs/super-nr
    該文件顯示當前已分配超級塊的數目。該文件是只讀的,僅用於顯示信息。
    /proc/sys/kernel
    /proc/sys/kernel/acct
    該文件有三個可配置值,根據包含日誌的文件系統上可用空間的數量(以百分比表示),這些值控制何時開始進行進程記帳:
    如果可用空間低於這個百分比值,則停止進程記帳
    如果可用空間高於這個百分比值,則開始進程記帳
    檢查上面兩個值的頻率(以秒為單位)
    要更改這個文件的某個值,應該回送用空格分隔開的一串數字。
    缺省設置:2 4 30
    如果包含日誌的文件系統上只有少於 2% 的可用空間,則這些值會使記帳停止,如果有 4% 或更多可用空間,則再次啟動記帳。每 30 秒做一次檢查。
    /proc/sys/kernel/ctrl-alt-del
    該文件有一個二進制值,該值控制系統在接收到 ctrl+alt+delete 按鍵組合時如何反應。這兩個值表示:
    零(0)值表示捕獲 ctrl+alt+delete,並將其送至 init 程序。這將允許系統可以完美地關閉和重啟,就好像您輸入 shutdown 命令一樣。
    壹(1)值表示不捕獲 ctrl+alt+delete,將執行非乾淨的關閉,就好像直接關閉電源一樣。
    缺省設置:0
    /proc/sys/kernel/domainname
    該文件允許您配置網絡域名。它沒有缺省值,也許已經設置了域名,也許沒有設置。
    /proc/sys/kernel/hostname
    該文件允許您配置網絡主機名。它沒有缺省值,也許已經設置了主機名,也許沒有設置。
    /proc/sys/kernel/msgmax
    該文件指定了從一個進程發送到另一個進程的消息的最大長度。進程間的消息傳遞是在內核的內存中進行,不會交換到磁盤上,所以如果增加該值,則將增加操作系統所使用的內存數量。
    缺省設置:8192
    /proc/sys/kernel/msgmnb
    該文件指定在一個消息隊列中最大的字節數。
    缺省設置:16384
    /proc/sys/kernel/msgmni
    該文件指定消息隊列標識的最大數目。
    缺省設置:16
    /proc/sys/kernel/panic
    該文件表示如果發生「內核嚴重錯誤(kernel panic)」,則內核在重新引導之前等待的時間(以秒為單位)。零(0)秒設置在發生內核嚴重錯誤時將禁止重新引導。
    缺省設置:0
    /proc/sys/kernel/printk
    該文件有四個數字值,它們根據日誌記錄消息的重要性,定義將其發送到何處。關於不同日誌級別的更多信息,請閱讀 syslog(2) 聯機幫助頁。該文件的四個值為:
    控制台日誌級別:優先級高於該值的消息將被打印至控制台
    缺省的消息日誌級別:將用該優先級來打印沒有優先級的消息
    最低的控制台日誌級別:控制台日誌級別可被設置的最小值(最高優先級)
    缺省的控制台日誌級別:控制台日誌級別的缺省值
    缺省設置:6 4 1 7
    /proc/sys/kernel/shmall
    該文件是在任何給定時刻系統上可以使用的共享內存的總量(以字節為單位)。
    缺省設置:2097152
    /proc/sys/kernel/shmax
    該文件指定內核所允許的最大共享內存段的大小(以字節為單位)。
    缺省設置:33554432
    /proc/sys/kernel/shmmni
    該文件表示用於整個系統共享內存段的最大數目。
    缺省設置:4096
    /proc/sys/kernel/sysrq
    如果該文件指定的值為非零,則激活 System Request Key。
    缺省設置:0
    /proc/sys/kernel/threads-max
    該文件指定內核所能使用的線程的最大數目。
    缺省設置:2048
    /proc/sys/net
    /proc/sys/net/core/message_burst
    寫新的警告消息所需的時間(以 1/10 秒為單位);在這個時間內所接收到的其它警告消息會被丟棄。這用於防止某些企圖用消息「淹沒」您系統的人所使用的拒絕服務(Denial of Service)攻擊。
    缺省設置:50(5 秒)
    /proc/sys/net/core/message_cost
    該文件存有與每個警告消息相關的成本值。該值越大,越有可能忽略警告消息。
    缺省設置:5
    /proc/sys/net/core/netdev_max_backlog
    該文件指定了,在接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。
    缺省設置:300
    /proc/sys/net/core/optmem_max
    該文件指定了每個套接字所允許的最大緩衝區的大小。
    /proc/sys/net/core/rmem_default
    該文件指定了接收套接字緩衝區大小的缺省值(以字節為單位)。
    /proc/sys/net/core/rmem_max
    該文件指定了接收套接字緩衝區大小的最大值(以字節為單位)。
    /proc/sys/net/core/wmem_default
    該文件指定了發送套接字緩衝區大小的缺省值(以字節為單位)。
    /proc/sys/net/core/wmem_max
    該文件指定了發送套接字緩衝區大小的最大值(以字節為單位)。
    /proc/sys/net/ipv4
    所有 IPv4 和 IPv6 的參數都被記錄在內核源代碼文檔中。請參閱文件 /usr/src/linux/Documentation/networking/ip-sysctl.txt。
    /proc/sys/net/ipv6
    同 IPv4。
    /proc/sys/vm
    /proc/sys/vm/buffermem
    該文件控制用於緩衝區內存的整個系統內存的數量(以百分比表示)。它有三個值,通過把用空格相隔的一串數字寫入該文件來設置這三個值。
    用於緩衝區的內存的最低百分比
    如果發生所剩系統內存不多,而且系統內存正在減少這種情況,系統將試圖維護緩衝區內存的數量。
    用於緩衝區的內存的最高百分比
    缺省設置:2 10 60
    /proc/sys/vm/freepages
    該文件控制系統如何應對各種級別的可用內存。它有三個值,通過把用空格相隔的一串數字寫入該文件來設置這三個值。
    如果系統中可用頁面的數目達到了最低限制,則只允許內核分配一些內存。
    如果系統中可用頁面的數目低於這一限制,則內核將以較積極的方式啟動交換
,以釋放內存,從而維持系統性能。
    內核將試圖保持這個數量的系統內存可用。低於這個值將啟動內核交換。
    缺省設置:            512 768 1024      
    /proc/sys/vm/kswapd
    該文件控制允許內核如何交換內存。它有三個值,通過把用空格相隔的一串數字寫入該文件來設置這三個值:
    內核試圖一次釋放的最大頁面數目。如果想增加內存交換過程中的帶寬,則需要增加該值。
    內核在每次交換中試圖釋放頁面的最少次數。
    內核在一次交換中所寫頁面的數目。這對系統性能影響最大。這個值越大,交換的數據越多,花在磁盤尋道上的時間越少。然而,這個值太大會因「淹沒」請求隊列而反過來影響系統性能。
    缺省設置:512 32 8
    /proc/sys/vm/pagecache
    該文件與 /proc/sys/vm/buffermem 的工作內容一樣,但它是針對文件的內存映射和一般高速緩存。
    使內核設置具有持久性
    這裡提供了一個方便的實用程序,用於更改 /proc/sys 目錄下的任何內核參數。它使您可以更改運行中的內核(類似於上面用到的 echo 和重定向方法),但它還有一個在系統引導時執行的配置文件。這使您可以更改運行中的內核,並將這些更改添加到配置文件,以便於在系統重新引導之後,這些更 改仍然生效。
    該實用程序稱為 sysctl,在 sysctl(8) 的聯機幫助頁中,對這個實用程序進行了完整的文檔說明。sysctl 的配置文件是 /etc/sysctl.conf,可以編輯該文件,並在 sysctl.conf(8) 下記錄了該文件。sysctl 將 /proc/sys 下的文件視為可以更改的單個變量。所以,以 /proc/sys 下的文件 /proc/sys/fs/file-max 為例,它表示系統中所允許的文件句柄的最大數目,這個文件被表示成 fs.file-max。
    這個示例揭示了 sysctl 表示法中的一些奇妙事情。由於 sysctl 只能更改 /proc/sys 目錄下的變量,並且人們始終認為變量是在這個目錄下,因此省略了變量名的那一部分(/proc/sys)。另一個要說明的更改是,將目錄分隔符(正斜槓 /)換成了英文中的句號(點 .)。
    將 /proc/sys 中的文件轉換成 sysctl 中的變量有兩個簡單的規則:
    去掉前面部分 /proc/sys。
    將文件名中的正斜槓變為點。
    這兩條規則使您能將 /proc/sys 中的任一文件名轉換成 sysctl 中的任一變量名。一般文件到變量的轉換為:
    /proc/sys/dir/file --> dir.file
    dir1.dir2.file --> /proc/sys/dir1/dir2/file
    可以使用命令 sysctl -a 查看所有可以更改的變量和其當前設置。
    用 sysctl 還可以更改變量,它所做的工作與上面所用的 echo 方法完全一樣。其表示法為:
    sysctl -w dir.file="value"
    還是用 file-max 作為示例,使用下面兩種方法中的一種將該值更改為 16384