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