什么是系統配置文件?
內核本身也可以看成是一個(gè)“程序”。為什么內核需要配置文件??jì)群诵枰私庀到y中用戶(hù)和組的列表,進(jìn)而管理文件權限(即根據權限判定特定用戶(hù)(UNIX_USERS)是否可以打開(kāi)某個(gè)文件)。注意,這些文件不是明確地由程序讀取的,而是由系統庫所提供的一個(gè)函數讀取,并被內核使用。例如,程序需要某個(gè)用戶(hù)的(加密過(guò)的)密碼時(shí)不應該打開(kāi) /etc/passwd 文件。相反,程序應該調用系統庫的 getpw() 函數。這種函數也被稱(chēng)為系統調用。打開(kāi) /etc/passwd 文件和之后查找那個(gè)被請求的用戶(hù)的密碼都是由內核(通過(guò)系統庫)決定的。
除非另行指定,Red Hat Linux 系統中大多數配置文件都在 /etc 目錄中。配置文件可以大致分為下面幾類(lèi):
訪(fǎng)問(wèn)文件
/etc/host.conf 告訴網(wǎng)絡(luò )域名服務(wù)器如何查找主機名。(通常是 /etc/hosts,然后就是名稱(chēng)服務(wù)器;可通過(guò) netconf 對其進(jìn)行更改)
/etc/hosts 包含(本地網(wǎng)絡(luò )中)已知主機的一個(gè)列表。如果系統的 IP 不是動(dòng)態(tài)生成,就可以使用它。對于簡(jiǎn)單的主機名解析(點(diǎn)分表示法),在請求 DNS 或 NIS 網(wǎng)絡(luò )名稱(chēng)服務(wù)器之前,/etc/hosts.conf 通常會(huì )告訴解析程序先查看這里。
/etc/hosts.allow 請參閱 hosts_access 的聯(lián)機幫助頁(yè)。至少由 tcpd 讀取。
/etc/hosts.deny 請參閱 hosts_access 的聯(lián)機幫助頁(yè)。至少由 tcpd 讀取。
引導和登錄/注銷(xiāo)
/etc/issue & /etc/issue.net 這些文件由 mingetty(和類(lèi)似的程序)讀取,用來(lái)向從終端(issue)或通過(guò) telnet 會(huì )話(huà)(issue.net)連接的用戶(hù)顯示一個(gè)“welcome”字符串。 它們包括幾行聲明 Red Hat 版本號、名稱(chēng)和內核 ID 的信息。它們由 rc.local 使用。
/etc/redhat-release 包括一行聲明 Red Hat 版本號和名稱(chēng)的信息。由 rc.local 使用。
/etc/rc.d/rc 通常在所有運行級別運行,級別作為參數傳送。 例如,要以圖形(Graphics)模式(X-Server)引導機器,請在命令行運行下面的命令:init 5。運行級別 5 表示以圖形模式引導系統。
/etc/rc.d/rc.local 非正式的??梢詮?rc、rc.sysinit 或 /etc/inittab 調用。
/etc/rc.d/rc.sysinit 通常是所有運行級別的第一個(gè)腳本。
/etc/rc.d/rc/rcX.d 從 rc 運行的腳本(X 表示 1 到 5 之間的任意數字)。這些目錄是特定“運行級別”的目錄。 當系統啟動(dòng)時(shí),它會(huì )識別要啟動(dòng)的運行級別,然后調用該運行級別的特定目錄中存在的所有啟動(dòng)腳本。例如,系統啟動(dòng)時(shí)通常會(huì )在引導消息之后顯示“entering run-level 3”的消息;這意味著(zhù) /etc/rc.d/rc3.d/ 目錄中的所有初始化腳本都將被調用。
文件系統
內核提供了一個(gè)接口,用來(lái)顯示一些它的數據結構,這些數據結構對于決定諸如使用的中斷、初始化的設備和內存統計信息之類(lèi)的系統參數可能很有用。這個(gè)接口是作為一個(gè)獨立但虛擬的文件系統提供的,稱(chēng)為 /proc 文件系統。很多系統實(shí)用程序都使用這個(gè)文件系統中存在的值來(lái)顯示系統統計信息。例如,/proc/modules 文件列舉系統中當前加載的模塊。lsmod 命令讀取此信息,然后將其以人們可以看懂的格式顯示出來(lái)。 下面表格中指定的 mtab 文件以同樣的方式讀取包含當前安裝的文件系統的 /proc/mount 文件。
/etc/mtab 這將隨著(zhù) /proc/mount 文件的改變而不斷改變。換句話(huà)說(shuō),文件系統被安裝和卸載時(shí),改變會(huì )立即反映到此文件中。
/etc/fstab 列舉計算機當前“可以安裝”的文件系統。 這非常重要,因為計算機引導時(shí)將運行 mount -a 命令,該命令負責安裝 fstab 的倒數第二列中帶有“1”標記的每一個(gè)文件系統。
/etc/mtools.conf DOS 類(lèi)型的文件系統上所有操作(創(chuàng )建目錄、復制、格式化等等)的配置。
系統管理
/etc/group 包含有效的組名稱(chēng)和指定組中包括的用戶(hù)。單一用戶(hù)如果執行多個(gè)任務(wù),可以存在于多個(gè)組中。例如,如果一個(gè)“用戶(hù)”是“project 1”工程組的成員,同時(shí)也是管理員,那么在 group 文件中他的條目看起來(lái)就會(huì )是這樣的:user: * : group-id : project1
/etc/nologin 如果有 /etc/nologin 文件存在,login(1) 將只允許 root 用戶(hù)進(jìn)行訪(fǎng)問(wèn)。它將對其它用戶(hù)顯示此文件的內容并拒絕其登錄。
etc/passwd 請參閱“man passwd”。它包含一些用戶(hù)賬號信息,包括密碼(如果未被 shadow 程序加密過(guò))。
/etc/rpmrc rpm 命令配置。所有的 rpm 命令行選項都可以在這個(gè)文件中一起設置,這樣,當任何 rpm 命令在該系統中運行時(shí),所有的選項都會(huì )全局適用。
/etc/securetty 包含設備名稱(chēng),由 tty 行組成(每行一個(gè)名稱(chēng),不包括前面的 /dev/),root 用戶(hù)在這里被允許登錄。
/etc/usertty
/etc/shadow 包含加密后的用戶(hù)賬號密碼信息,還可以包括密碼時(shí)效信息。包括的字段有:
登錄名
加密后的密碼
從 1970 年 1 月 1 日到密碼最后一次被更改的天數
距密碼可以更改之前的天數
距密碼必須更改之前的天數
密碼到期前用戶(hù)被警告的天數
密碼到期后帳戶(hù)被禁用的天數
從 1970 年 1 月 1 日到賬號被禁用的天數
/etc/shells 包含系統可用的可能的“shell”的列表。
/etc/motd 每日消息;在管理員希望向 Linux 服務(wù)器的所有用戶(hù)傳達某個(gè)消息時(shí)使用。
聯(lián)網(wǎng)
/etc/gated.conf gated 的配置。只能被 gated 守護進(jìn)程所使用。
/etc/gated.version 包含 gated 守護進(jìn)程的版本號。
/etc/gateway 由 routed 守護進(jìn)程可選地使用。
/etc/networks 列舉從機器所連接的網(wǎng)絡(luò )可以訪(fǎng)問(wèn)的網(wǎng)絡(luò )名和網(wǎng)絡(luò )地址。通過(guò)路由命令使用。允許使用網(wǎng)絡(luò )名稱(chēng)。
/etc/protocols 列舉當前可用的協(xié)議。請參閱 NAG(網(wǎng)絡(luò )管理員指南,Network Administrators Guide)和聯(lián)機幫助頁(yè)。
C 接口是 getprotoent。絕不能更改。
/etc/resolv.conf 在程序請求“解析”一個(gè) IP 地址時(shí)告訴內核應該查詢(xún)哪個(gè)名稱(chēng)服務(wù)器。
/etc/rpc 包含 RPC 指令/規則,這些指令/規則可以在 NFS 調用、遠程文件系統安裝等中使用。
/etc/exports 要導出的文件系統(NFS)和對它的權限。
/etc/services 將網(wǎng)絡(luò )服務(wù)名轉換為端口號/協(xié)議。由 inetd、telnet、tcpdump 和一些其它程序讀取。有一些 C 訪(fǎng)問(wèn)例程。
/etc/inetd.conf inetd 的配置文件。請參閱 inetd 聯(lián)機幫助頁(yè)。 包含每個(gè)網(wǎng)絡(luò )服務(wù)的條目,inetd 必須為這些網(wǎng)絡(luò )服務(wù)控制守護進(jìn)程或其它服務(wù)。注意,服務(wù)將會(huì )運行,但在 /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ò )配置腳本。
系統命令
系統命令要獨占地控制系統,并讓一切正常工作。所有如 login(完成控制臺用戶(hù)身份驗證階段)或 bash(提供用戶(hù)和計算機之間交互)之類(lèi)的程序都是系統命令。因此,和它們有關(guān)的文件也特別重要。這一類(lèi)別中有下列令用戶(hù)和管理員感興趣的文件。
/etc/lilo.conf 包含系統的缺省引導命令行參數,還有啟動(dòng)時(shí)使用的不同映象。您在 LILO 引導提示的時(shí)候按 Tab 鍵就可以看到這個(gè)列表。
/etc/logrotate.conf 維護 /var/log 目錄中的日志文件。
/etc/identd.conf identd 是一個(gè)服務(wù)器,它按照 RFC 1413 文檔中指定的方式實(shí)現 TCP/IP 提議的標準 IDENT 用戶(hù)身份識別協(xié)議。identd 的操作原理是查找特定 TCP/IP 連接并返回擁有此連接的進(jìn)程的用戶(hù)名。作為選擇,它也可以返回其它信息,而不是用戶(hù)名。請參閱 identd 聯(lián)機幫助頁(yè)。
/etc/ld.so.conf “動(dòng)態(tài)鏈接程序”(Dynamic Linker)的配置。
/etc/inittab 按年代來(lái)講,這是 UNIX 中第一個(gè)配置文件。在一臺 UNIX 機器打開(kāi)之后啟動(dòng)的第一個(gè)程序是 init,它知道該啟動(dòng)什么,這是由于 inittab 的存在。在運行級別改變時(shí),init 讀取 inittab,然后控制主進(jìn)程的啟動(dòng)。
/etc/termcap 一個(gè)數據庫,包含所有可能的終端類(lèi)型以及這些終端的性能。
守護進(jìn)程
守護進(jìn)程是一種運行在非交互模式下的程序。一般來(lái)說(shuō),守護進(jìn)程任務(wù)是和聯(lián)網(wǎng)區域有關(guān)的:它們等待連接,以便通過(guò)連接提供服務(wù)。Linux 可以使用從 Web 服務(wù)器到 ftp 服務(wù)器的很多守護進(jìn)程。
/etc/syslogd.conf syslogd 守護進(jìn)程的配置文件。syslogd 是一種守護進(jìn)程,它負責記錄(寫(xiě)到磁盤(pán))從其它程序發(fā)送到系統的消息。這個(gè)服務(wù)尤其常被某些守護進(jìn)程所使用,這些守護進(jìn)程不會(huì )有另外的方法來(lái)發(fā)出可能有問(wèn)題存在的信號或向用戶(hù)發(fā)送消息。
/etc/httpd.conf Web 服務(wù)器 Apache 的配置文件。這個(gè)文件一般不在 /etc 中。它可能在 /usr/local/httpd/conf/ 或 /etc/httpd/conf/ 中,但是要確定它的位置,您還需要檢查特定的 Apache 安裝信息。
/etc/conf.modules or /etc/modules.conf kerneld 的配置文件。有意思的是,kerneld 并不是“作為守護進(jìn)程的”內核。它其實(shí)是一種在需要時(shí)負責“快速”加載附加內核模塊的守護進(jìn)程。
更改配置文件
在更改配置文件時(shí),如果程序不是由系統管理員或內核控制的,就要確保重新啟動(dòng)過(guò)使用該配置的程序。普通用戶(hù)通常沒(méi)有啟動(dòng)或停止系統程序和/或守護進(jìn)程的權限。
內核
更改內核中的配置文件會(huì )立即影響到系統。例如,更改 passwd 文件以增加用戶(hù)將立即使該用戶(hù)變?yōu)榭捎?。而且任?Linux 系統的 /proc/sys 目錄中都有一些內核可調參數。只有超級用戶(hù)可以得到對所有這些文件的寫(xiě)訪(fǎng)問(wèn)權力;其它用戶(hù)只有只讀訪(fǎng)問(wèn)權力。此目錄中文件的分類(lèi)的方式和 Linux 內核源代碼的分類(lèi)方式一樣。此目錄中的每個(gè)文件都代表一個(gè)內核數據結構,這些數據結構可以被動(dòng)態(tài)地修改,從而改變系統性能。
注意:在更改其中任何文件的任何值之前,您應該確保自己全面了解該文件,以避免對系統造成不可修復的損害。
/proc/sys/kernel/ 目錄中的文件
文件名
描述
threads-max 內核可運行的最大任務(wù)數。
ctrl-alt-del 如果值為 1,那么順序按下這幾個(gè)鍵將“徹底地”重新引導系統。
sysrq 如果值為 1,Alt-SysRq 則為激活狀態(tài)。
osrelease 顯示操作系統的發(fā)行版版本號
ostype 顯示操作系統的類(lèi)型。
hostname 系統的主機名。
domainname 網(wǎng)絡(luò )域,系統是該網(wǎng)絡(luò )域的一部分。
modprobe 指定 modprobe 是否應該在啟動(dòng)時(shí)自動(dòng)運行并加載必需的模塊。
守護進(jìn)程和系統程序
守護進(jìn)程是永遠運行在后臺的程序,它默默地執行自己的任務(wù)。常見(jiàn)的守護進(jìn)程有 in.ftpd(ftp 服務(wù)器守護進(jìn)程)、in.telnetd(telnet 服務(wù)器守護進(jìn)程)和 syslogd(系統日志記錄守護進(jìn)程)。 有些守護進(jìn)程在運行時(shí)會(huì )嚴密監視配置文件,在配置文件改變時(shí)就會(huì )自動(dòng)重新加載它。但是大多數守護進(jìn)程并不會(huì )自動(dòng)重新加載配置文件。我們需要以某種方式“告訴”這些守護進(jìn)程配置文件已經(jīng)被發(fā)生了改變并應該重新加載??梢酝ㄟ^(guò)使用服務(wù)命令重新啟動(dòng)服務(wù)來(lái)達到這個(gè)目的(在 Red Hat Linux 系統上)。
例如,如果我們更改了網(wǎng)絡(luò )配置,就需要發(fā)出:
service network restart。
注意:這些服務(wù)最常見(jiàn)的是 /etc/rc.d/init.d/* 目錄中存在的腳本,在系統被引導時(shí)由 init 啟動(dòng)。所以,您也可以執行如下操作來(lái)重新啟動(dòng)服務(wù):
/etc/rc.d/init.d/ start | stop | status
start、stop 和 status 是這些腳本接受的輸入值,用來(lái)執行操作。
用戶(hù)程序
用戶(hù)或系統程序在每次啟動(dòng)時(shí)都會(huì )讀取其配置文件。盡管如此,請記住,有些系統程序在計算機打開(kāi)時(shí)情況不一樣,它們的行為依賴(lài)于在 /etc/ 中的配置文件中讀到的內容。所以,用戶(hù)程序第一次啟動(dòng)時(shí)將從 /etc/ 目錄中存在的文件讀取缺省配置。然后,用戶(hù)可以通過(guò)使用 rc 和 .(點(diǎn))文件來(lái)定制程序,正如下面一節所示。
用戶(hù)配置文件:.(點(diǎn))文件和 rc 文件
我們已經(jīng)看到怎樣容易地配置程序。但是如果有的人不喜歡在 /etc/ 中配置程序的方式該怎么辦呢?“普通”用戶(hù)不能簡(jiǎn)單地進(jìn)入 /etc 然后更改配置文件;從文件系統的角度來(lái)看,配置文件的所有者是 root 用戶(hù)!這就是大多數用戶(hù)程序都定義兩個(gè)配置文件的原因:第一個(gè)是“系統”級別的,位于 /etc/;另一個(gè)屬于用戶(hù)“專(zhuān)用”,可以在他或她的主目錄中找到。
例如,我在我的系統中安裝了非常有用的 wget 實(shí)用程序。/etc/ 中有一個(gè) /etc/wgetrc 文件。在我的主目錄中,有一個(gè)名為 .wgetrc 的文件,它描述了我定制的配置(只有在我,也就是用戶(hù)運行 wget 命令時(shí),才會(huì )加載這個(gè)配置文件)。其它用戶(hù)在他們自己的主目錄(/home/other)中也可以有 .wgetrc 文件;當然,只有這些用戶(hù)運行 wget 命令時(shí),才會(huì )讀取這個(gè)文件。換句話(huà)說(shuō),/etc/wgetrc 文件為 wget 提供了“缺省”值,而 /home/xxx/.wgetrc 文件列舉了某個(gè)用戶(hù)的“定制項”。重要的是這只是“一般規則”,并非所有情況都如此。例如,一個(gè)象 pine 一樣的程序,在 /etc/ 中并沒(méi)有任何文件,它只在用戶(hù)主目錄中有一個(gè)定制配置文件,名為 .pinerc。其它程序可能只有 /etc/ 中的缺省配置文件,而且可能不允許用戶(hù)“定制”這些配置文件(/etc 目錄中只有少數 config. 文件是這種情況)。
通常使用的 rc 和 .(點(diǎn))文件
文件名
描述
~/.bash_login 請參考“man bash”。如果 ~/.bash_profile 不存在,bash 則將 ~/.bash_login 作為 ~/.bash_profile 處理。
~/.bash_logout 請參考“man bash”。在退出時(shí)由 bash 登錄 shell 引用。
~/.bash_profile 由 bash 登錄 shell 引用 /etc/profile 之后引用。
~/.bash_history 先前執行的命令的列表。
~/.bashrc 請參考“man bash”。由 bash 非登錄交互式 shell 引用(沒(méi)有其它文件)。除非設置了 BASH_ENV 或 ENV,非交互式 shell 不引用任何文件。
~/.emacs 啟動(dòng)時(shí)由 emac 讀取。
~/.forward
如果這里包含一個(gè)電子郵件地址,那么所有發(fā)往 ~ 的所有者的郵件都會(huì )被轉發(fā)到這個(gè)電子郵件地址。
~/.fvwmrc ~/.fvwm2rc fvwm 和 fvwm2(基本的 X Window 管理器)的配置文件。
~/.hushlogin 請參考“man login”。引起“無(wú)提示”登錄(沒(méi)有郵件通知、上次登錄信息或者 MOD 信息)。
~/.mail.rc 郵件程序的用戶(hù)初始化文件。
~/.ncftp/ ncftp 程序的目錄;包含書(shū)簽、日志、宏、首選項和跟蹤信息。請參閱 man ncftp。ncftp 的目的是為因特網(wǎng)標準文件傳輸協(xié)議(Internet standard File Transfer Protocol)提供一個(gè)強大而靈活的接口。它旨在替換系統所使用的標準的 ftp 程序。
~/.profile 請參考“man bash”。如果 ~/.bash_profile 和 ~/.bash_login 文件不存在,bash 則將 ~/.profile 作為 ~/.bash_profile 處理,并被其它繼承 Bourn 的 shell 使用。
~/.pinerc Pine 配置
~/.muttrc Mutt 配置
~/.exrc 這個(gè)文件可以控制 vi 的配置。
示例:set ai sm ruler
在此文件中寫(xiě)入上面一行會(huì )讓 vi 設置自動(dòng)縮進(jìn)、匹配括號、顯示行號和行-列這幾個(gè)選項。
~/.vimrc 缺省的“Vim”配置文件。和 .exrc 一樣。
~/.gtkrc GNOME 工具包(GNOME Toolkit)。
~/.kderc KDE 配置。
~/.netrc ftp 缺省登錄名和密碼。
~/.rhosts 由 r- 工具(如 rsh、rlogin 等等)使用。因為冒充主機很容易,所以安全性非常低。
必須由用戶(hù)(~/ 的所有者)或超級用戶(hù)擁有。
列出一些主機,用戶(hù)可以從這些主機訪(fǎng)問(wèn)該賬號。
如果是符號鏈接則被忽略。
~/.rpmrc 請參閱“man rpm”。如果 /etc/rpmrc 不存在則由 rpm 讀取。
~/.signature 消息文本,將自動(dòng)附加在從此賬號發(fā)出的郵件末尾。
~/.twmrc twm(The Window Manager)的配置文件。
~/.xinitrc 啟動(dòng)時(shí)由 X 讀?。ǘ皇怯?xinit 腳本讀?。?。通常會(huì )啟動(dòng)一些程序。
示例:exec /usr/sbin/startkde
如果該文件中存在上面這行內容,那么在從這個(gè)賬號發(fā)出 startx 命令時(shí),這一行就會(huì )啟動(dòng)“KDE 視窗管理器”(KDE Window Manager)。
~/.xmodmaprc 此文件被傳送到 xmodmap 程序,而且可以被命名為任何文件(例如 ~/.Xmodmap 和 ~/.keymap.km)。
~/.xserverrc 如果 xinit 可以找到要執行的 X,xinit 就會(huì )將該文件作為 X 服務(wù)器運行。
~/News/Sent-Message-IDs gnus 的缺省郵件歷史文件。
~/.Xauthority 由 xdm 程序讀和寫(xiě),以處理權限。請參閱 X、xdm 和 xauth 聯(lián)機幫助頁(yè)。
~/.Xdefaults,
~/.Xdefaults-hostname 在主機 hostname 的啟動(dòng)過(guò)程中由 X 應用程序讀取。如果找不到 -hostname 文件,則查找 .Xdefaults 文件。
~/.Xmodmap 指向 .xmodmaprc;Red Hat 有使用這個(gè)名稱(chēng)的 .xinitrc 文件。
~/.Xresources 通常是傳送到 xrdb 以加載 X 資源數據庫的文件的名稱(chēng),旨在避免應用程序需要讀取一個(gè)很長(cháng)的 .Xdefaults 文件這樣的情況。(有些情況曾經(jīng)使用了 ~/.Xres。)
~/mbox
用戶(hù)的舊郵件?!?/font>
聯(lián)系客服