隨筆-86  評論-33  文章-0  trackbacks-0
          本 文說明了 Linux 系統(tǒng)的配置文件,在多用戶、多任務(wù)環(huán)境中,配置文件控制用戶權(quán)限、系統(tǒng)應(yīng)用程序、守護(hù)進(jìn)程、服務(wù)和其它管理任務(wù)。這些任務(wù)包括管理用戶帳號、分配磁盤配 額、管理電子郵件和新聞組,以及配置內(nèi)核參數(shù)。本文還根據(jù)配置文件的使用和其所影響的服務(wù)的情況對目前 Red Hat Linux 系統(tǒng)中的配置文件進(jìn)行了分類。

          介紹

          每個 Linux 程序都是一個可執(zhí)行文件,它含有操作碼列表,CPU 將執(zhí)行這些操作碼來完成特定的操作。例如,ls 命令是由 /bin/ls 文件提供的,該文件含有機器指令的列表,在屏幕上顯示當(dāng)前目錄中文件的列表時需要使用這些機器指令。 幾乎每個程序的行為都可以通過修改其配置文件來按照您的偏好或需要去定制。

          Linux 中有沒有一個標(biāo)準(zhǔn)的配置文件格式?

          一句話,沒有。不熟悉 Linux 的用戶(一定)會感到沮喪,因為每個配置文件看起來都象是一個要迎接的新挑戰(zhàn)。在 Linux 中,每個程序員都可以自由選擇他或她喜歡的配置文件格式。可以選擇的格式很多,從 /etc/shells 文件(它包含被一個換行符分開的 shell 的列表),到 Apache 的復(fù)雜的 /etc/httpd.conf 文件。

          什么是系統(tǒng)配置文件?

          內(nèi)核本身也可以看成是一個“程序”。為什么內(nèi)核需要配置文件?內(nèi)核需要了解系統(tǒng)中用戶和組的列表,進(jìn)而管理文件權(quán)限(即根據(jù)權(quán)限判定特定用戶 (UNIX_USERS)是否可以打開某個文件)。注意,這些文件不是明確地由程序讀取的,而是由系統(tǒng)庫所提供的一個函數(shù)讀取,并被內(nèi)核使用。例如,程序 需要某個用戶的(加密過的)密碼時不應(yīng)該打開 /etc/passwd 文件。相反,程序應(yīng)該調(diào)用系統(tǒng)庫的 getpw() 函數(shù)。這種函數(shù)也被稱為系統(tǒng)調(diào)用。打開 /etc/passwd 文件和之后查找那個被請求的用戶的密碼都是由內(nèi)核(通過系統(tǒng)庫)決定的。

          除非另行指定,Red Hat Linux 系統(tǒng)中大多數(shù)配置文件都在 /etc 目錄中。配置文件可以大致分為下面幾類:




          訪問文件

          /etc/host.conf 告訴網(wǎng)絡(luò)域名服務(wù)器如何查找主機名。(通常是 /etc/hosts,然后就是名稱服務(wù)器;可通過 netconf 對其進(jìn)行更改)
          /etc/hosts 包含(本地網(wǎng)絡(luò)中)已知主機的一個列表。如果系統(tǒng)的 IP 不是動態(tài)生成,就可以使用它。對于簡單的主機名解析(點分表示法),在請求 DNS 或 NIS 網(wǎng)絡(luò)名稱服務(wù)器之前,/etc/hosts.conf 通常會告訴解析程序先查看這里。
          /etc/hosts.allow 請參閱 hosts_access 的聯(lián)機幫助頁。至少由 tcpd 讀取。
          /etc/hosts.deny 請參閱 hosts_access 的聯(lián)機幫助頁。至少由 tcpd 讀取。



          引導(dǎo)和登錄/注銷

          /etc/issue & /etc/issue.net 這些文件由 mingetty(和類似的程序)讀取,用來向從終端(issue)或通過 telnet 會話(issue.net)連接的用戶顯示一個“welcome”字符串。 它們包括幾行聲明 Red Hat 版本號、名稱和內(nèi)核 ID 的信息。它們由 rc.local 使用。
          /etc/redhat-release 包括一行聲明 Red Hat 版本號和名稱的信息。由 rc.local 使用。
          /etc/rc.d/rc 通常在所有運行級別運行,級別作為參數(shù)傳送。 例如,要以圖形(Graphics)模式(X-Server)引導(dǎo)機器,請在命令行運行下面的命令: init 5 。運行級別 5 表示以圖形模式引導(dǎo)系統(tǒng)。
          /etc/rc.d/rc.local 非正式的。可以從 rc、rc.sysinit 或 /etc/inittab 調(diào)用。
          /etc/rc.d/rc.sysinit 通常是所有運行級別的第一個腳本。
          /etc/rc.d/rc/rcX.d 從 rc 運行的腳本( X 表示 1 到 5 之間的任意數(shù)字)。這些目錄是特定“運行級別”的目錄。 當(dāng)系統(tǒng)啟動時,它會識別要啟動的運行級別,然后調(diào)用該運行級別的特定目錄中存在的所有啟動腳本。例如,系統(tǒng)啟動時通常會在引導(dǎo)消息之后顯示“entering run-level 3”的消息;這意味著 /etc/rc.d/rc3.d/ 目錄中的所有初始化腳本都將被調(diào)用。



          文件系統(tǒng)

          內(nèi)核提供了一個接口,用來顯示一些它的數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)對于決定諸如使用的中斷、初始化的設(shè)備和內(nèi)存統(tǒng)計信息之類的系統(tǒng)參數(shù)可能很有用。這個接口是作為一個獨立但虛擬的文件系統(tǒng)提供的,稱為 /proc 文件系統(tǒng)。很多系統(tǒng)實用程序都使用這個文件系統(tǒng)中存在的值來顯示系統(tǒng)統(tǒng)計信息。例如,/proc/modules 文件列舉系統(tǒng)中當(dāng)前加載的模塊。lsmod 命令讀取此信息,然后將其以人們可以看懂的格式顯示出來。 下面表格中指定的 mtab 文件以同樣的方式讀取包含當(dāng)前安裝的文件系統(tǒng)的 /proc/mount 文件。

          /etc/mtab 這將隨著 /proc/mount 文件的改變而不斷改變。換句話說,文件系統(tǒng)被安裝和卸載時,改變會立即反映到此文件中。
          /etc/fstab 列舉計算機當(dāng)前“可以安裝”的文件系統(tǒng)。 這非常重要,因為計算機引導(dǎo)時將運行 mount -a 命令,該命令負(fù)責(zé)安裝 fstab 的倒數(shù)第二列中帶有“1”標(biāo)記的每一個文件系統(tǒng)。
          /etc/mtools.conf DOS 類型的文件系統(tǒng)上所有操作(創(chuàng)建目錄、復(fù)制、格式化等等)的配置。



          系統(tǒng)管理

          /etc/group 包含有效的組名稱和指定組中包括的用戶。單一用戶如果執(zhí)行多個任務(wù),可以存在于多個組中。例如,如果一個“用戶”是“project 1”工程組的成員,同時也是管理員,那么在 group 文件中他的條目看起來就會是這樣的: user: * : group-id : project1
          /etc/nologin 如果有 /etc/nologin 文件存在,login(1) 將只允許 root 用戶進(jìn)行訪問。它將對其它用戶顯示此文件的內(nèi)容并拒絕其登錄。
          etc/passwd 請參閱“man passwd”。它包含一些用戶帳號信息,包括密碼(如果未被 shadow 程序加密過)。
          /etc/rpmrc rpm 命令配置。所有的 rpm 命令行選項都可以在這個文件中一起設(shè)置,這樣,當(dāng)任何 rpm 命令在該系統(tǒng)中運行時,所有的選項都會全局適用。
          /etc/securetty 包含設(shè)備名稱,由 tty 行組成(每行一個名稱,不包括前面的 /dev/),root 用戶在這里被允許登錄。
          /etc/usertty
          /etc/shadow
          包含加密后的用戶帳號密碼信息,還可以包括密碼時效信息。包括的字段有:
          • 登錄名
          • 加密后的密碼
          • 從 1970 年 1 月 1 日到密碼最后一次被更改的天數(shù)
          • 距密碼可以更改之前的天數(shù)
          • 距密碼必須更改之前的天數(shù)
          • 密碼到期前用戶被警告的天數(shù)
          • 密碼到期后帳戶被禁用的天數(shù)
          • 從 1970 年 1 月 1 日到帳號被禁用的天數(shù)
          /etc/shells 包含系統(tǒng)可用的可能的“shell”的列表。
          /etc/motd 每日消息;在管理員希望向 Linux 服務(wù)器的所有用戶傳達(dá)某個消息時使用。



          聯(lián)網(wǎng)

          /etc/gated.conf gated 的配置。只能被 gated 守護(hù)進(jìn)程所使用。
          /etc/gated.version 包含 gated 守護(hù)進(jìn)程的版本號。
          /etc/gateway 由 routed 守護(hù)進(jìn)程可選地使用。
          /etc/networks 列舉從機器所連接的網(wǎng)絡(luò)可以訪問的網(wǎng)絡(luò)名和網(wǎng)絡(luò)地址。通過路由命令使用。允許使用網(wǎng)絡(luò)名稱。
          /etc/protocols 列舉當(dāng)前可用的協(xié)議。請參閱 NAG(網(wǎng)絡(luò)管理員指南,Network Administrators Guide)和聯(lián)機幫助頁。 C 接口是 getprotoent。絕不能更改。
          /etc/resolv.conf 在程序請求“解析”一個 IP 地址時告訴內(nèi)核應(yīng)該查詢哪個名稱服務(wù)器。
          /etc/rpc 包含 RPC 指令/規(guī)則,這些指令/規(guī)則可以在 NFS 調(diào)用、遠(yuǎn)程文件系統(tǒng)安裝等中使用。
          /etc/exports 要導(dǎo)出的文件系統(tǒng)(NFS)和對它的權(quán)限。
          /etc/services 將網(wǎng)絡(luò)服務(wù)名轉(zhuǎn)換為端口號/協(xié)議。由 inetd、telnet、tcpdump 和一些其它程序讀取。有一些 C 訪問例程。
          /etc/inetd.conf inetd 的配置文件。請參閱 inetd 聯(lián)機幫助頁。 包含每個網(wǎng)絡(luò)服務(wù)的條目,inetd 必須為這些網(wǎng)絡(luò)服務(wù)控制守護(hù)進(jìn)程或其它服務(wù)。注意,服務(wù)將會運行,但在 /etc/services 中將它們注釋掉了,這樣即使這些服務(wù)在運行也將不可用。 格式為:
          /etc/sendmail.cf 郵件程序 sendmail 的配置文件。比較隱晦,很難理解。
          /etc/sysconfig/network 指出 NETWORKING=yes 或 no。至少由 rc.sysinit 讀取。
          /etc/sysconfig/network-scripts/if* Red Hat 網(wǎng)絡(luò)配置腳本。



          系統(tǒng)命令

          系統(tǒng)命令要獨占地控制系統(tǒng),并讓一切正常工作。所有如 login(完成控制臺用戶身份驗證階段)或 bash(提供用戶和計算機之間交互)之類的程序都是系統(tǒng)命令。因此,和它們有關(guān)的文件也特別重要。這一類別中有下列令用戶和管理員感興趣的文件。

          /etc/lilo.conf 包含系統(tǒng)的缺省引導(dǎo)命令行參數(shù),還有啟動時使用的不同映象。您在 LILO 引導(dǎo)提示的時候按 Tab 鍵就可以看到這個列表。
          /etc/logrotate.conf 維護(hù) /var/log 目錄中的日志文件。
          /etc/identd.conf identd 是一個服務(wù)器,它按照 RFC 1413 文檔中指定的方式實現(xiàn) TCP/IP 提議的標(biāo)準(zhǔn) IDENT 用戶身份識別協(xié)議。identd 的操作原理是查找特定 TCP/IP 連接并返回?fù)碛写诉B接的進(jìn)程的用戶名。作為選擇,它也可以返回其它信息,而不是用戶名。請參閱 identd 聯(lián)機幫助頁。
          /etc/ld.so.conf “動態(tài)鏈接程序”(Dynamic Linker)的配置。
          /etc/inittab 按年代來講,這是 UNIX 中第一個配置文件。在一臺 UNIX 機器打開之后啟動的第一個程序是 init,它知道該啟動什么,這是由于 inittab 的存在。在運行級別改變時,init 讀取 inittab,然后控制主進(jìn)程的啟動。
          /etc/termcap 一個數(shù)據(jù)庫,包含所有可能的終端類型以及這些終端的性能。



          守護(hù)進(jìn)程

          守護(hù)進(jìn)程是一種運行在非交互模式下的程序。一般來說,守護(hù)進(jìn)程任務(wù)是和聯(lián)網(wǎng)區(qū)域有關(guān)的:它們等待連接,以便通過連接提供服務(wù)。Linux 可以使用從 Web 服務(wù)器到 ftp 服務(wù)器的很多守護(hù)進(jìn)程。

          /etc/syslogd.conf syslogd 守護(hù)進(jìn)程的配置文件。syslogd 是一種守護(hù)進(jìn)程,它負(fù)責(zé)記錄(寫到磁盤)從其它程序發(fā)送到系統(tǒng)的消息。這個服務(wù)尤其常被某些守護(hù)進(jìn)程所使用,這些守護(hù)進(jìn)程不會有另外的方法來發(fā)出可能有問題存在的信號或向用戶發(fā)送消息。
          /etc/httpd.conf Web 服務(wù)器 Apache 的配置文件。這個文件一般不在 /etc 中。它可能在 /usr/local/httpd/conf/ 或 /etc/httpd/conf/ 中,但是要確定它的位置,您還需要檢查特定的 Apache 安裝信息。
          /etc/conf.modules or /etc/modules.conf kerneld 的配置文件。有意思的是,kerneld 并不是“作為守護(hù)進(jìn)程的”內(nèi)核。它其實是一種在需要時負(fù)責(zé)“快速”加載附加內(nèi)核模塊的守護(hù)進(jìn)程。



          用戶程序

          在 Linux(和一般的 UNIX)中,有無數(shù)的“用戶”程序。最常見的一種用戶程序配置文件是 /etc/lynx.cfg。這是著名的文本瀏覽器 lynx 的配置文件。通過這個文件,您可以定義代理服務(wù)器、要使用的字符集等等。 下面的代碼樣本展示了 lynx.cfg 文件的一部分,修改這部分代碼可以改變 Linux 系統(tǒng)的代理服務(wù)器設(shè)置。缺省情況下,這些設(shè)置適用于在各自的 shell 中運行 lynx 的所有用戶,除非某個用戶通過指定 --cfg = "mylynx.cfg" 重設(shè)了缺省的配置文件。


          /etc/lynx.cfg 中的代理服務(wù)器設(shè)置

          
                      .h1 proxy
          .h2 HTTP_PROXY
          .h2 HTTPS_PROXY
          .h2 FTP_PROXY
          .h2 GOPHER_PROXY
          .h2 NEWS_PROXY
          .h2 NNTP_PROXY
          # Lynx version 2.2 and beyond supports the use of proxy servers that can act as
          # firewall gateways and caching servers. They are preferable to the older
          # gateway servers. Each protocol used by Lynx can be mapped separately using
          # PROTOCOL_proxy environment variables (see Lynx Users Guide). If you have
          # not set them externally, you can set them at run time via this configuration file.
          # They will not override external settings. The no_proxy variable can be used
          # to inhibit proxying to selected regions of the Web (see below). Note that on
          # VMS these proxy variables are set as process logicals rather than symbols, to
          # preserve lowercasing, and will outlive the Lynx image.
          #
          .ex 15
          http_proxy:http://proxy3.in.ibm.com:80/
          ftp_proxy:http://proxy3.in.ibm.com:80/
          #http_proxy:http://penguin.in.ibm.com:8080
          #ftp_proxy:http://penguin.in.ibm.com:8080/

          .h2 NO_PROXY
          # The no_proxy variable can be a comma-separated list of strings defining
          # no-proxy zones in the DNS domain name space. If a tail substring of the
          # domain-path for a host matches one of these strings, transactions with that
          # node will not be proxied.
          .ex
          no_proxy:demiurge.in.ibm.com, demiurge
          posted on 2006-12-07 13:21 Derek.Guo 閱讀(451) 評論(0)  編輯  收藏 所屬分類: Linux/Unix
          MSN:envoydada@hotmail.com QQ:34935442
          主站蜘蛛池模板: 东阿县| 民丰县| 玉树县| 和平区| 搜索| 台中市| 谷城县| 天祝| 胶州市| 垦利县| 元朗区| 兰西县| 阿拉善左旗| 安达市| 辰溪县| 秭归县| 从化市| 柳江县| 潜江市| 枣阳市| 全南县| 通州区| 简阳市| 呼伦贝尔市| 昭平县| 郑州市| 方山县| 察隅县| 武宁县| 五常市| 绿春县| 张家港市| 凤城市| 永顺县| 紫阳县| 肥西县| 恩施市| 盐源县| 汽车| 如东县| 南陵县|