每一個 Linux 程序都是一個可執行文件,它含有操做碼列表,CPU 將執行這些操做碼來完成特定的操做。例如,ls 命令是由 /bin/ls 文件提供的,該文件含有機器指令的列表,在屏幕上顯示當前目錄中文件的列表時須要使用這些機器指令。 幾乎每一個程序的行爲均可以經過修改其配置文件來按照您的偏好或須要去定製。node
一句話,沒有。不熟悉 Linux 的用戶(必定)會感到沮喪,由於每一個配置文件看起來都象是一個要迎接的新挑戰。在 Linux 中,每一個程序員均可以自由選擇他或她喜歡的配置文件格式。能夠選擇的格式不少,從 /etc/shells 文件(它包含被一個換行符分開的 shell 的列表),到 Apache 的複雜的 /etc/httpd.conf 文件。linux
內核自己也能夠當作是一個「程序」。爲何內核須要配置文件?內核須要瞭解系統中用戶和組的列表,進而管理文件權限(即根據權限斷定特定用戶 (UNIX_USERS)是否能夠打開某個文件)。注意,這些文件不是明確地由程序讀取的,而是由系統庫所提供的一個函數讀取,並被內核使用。例如,程序 須要某個用戶的(加密過的)密碼時不該該打開 /etc/passwd 文件。相反,程序應該調用系統庫的 getpw() 函數。這種函數也被稱爲系統調用。打開 /etc/passwd 文件和以後查找那個被請求的用戶的密碼都是由內核(經過系統庫)決定的。程序員
除非另行指定,Red Hat Linux 系統中大多數配置文件都在 /etc 目錄中。配置文件能夠大體分爲下面幾類:shell
回頁首數據庫
/etc/host.conf | 告訴網絡域名服務器如何查找主機名。(一般是 /etc/hosts,而後就是名稱服務器;可經過 netconf 對其進行更改) |
---|---|
/etc/hosts | 包含(本地網絡中)已知主機的一個列表。若是系統的 IP 不是動態生成,就可使用它。對於簡單的主機名解析(點分表示法),在請求 DNS 或 NIS 網絡名稱服務器以前,/etc/hosts.conf 一般會告訴解析程序先查看這裏。 |
/etc/hosts.allow | 請參閱 hosts_access 的聯機幫助頁。至少由 tcpd 讀取。 |
/etc/hosts.deny | 請參閱 hosts_access 的聯機幫助頁。至少由 tcpd 讀取。 |
回頁首vim
/etc/issue & /etc/issue.net | 這些文件由 mingetty(和相似的程序)讀取,用來向從終端(issue)或經過 telnet 會話(issue.net)鏈接的用戶顯示一個「welcome」字符串。 它們包括幾行聲明 Red Hat 版本號、名稱和內核 ID 的信息。它們由 rc.local 使用。 |
---|---|
/etc/redhat-release | 包括一行聲明 Red Hat 版本號和名稱的信息。由 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 | 一般是全部運行級別的第一個腳本。 |
/etc/rc.d/rc/rcX.d | 從 rc 運行的腳本( X 表示 1 到 5 之間的任意數字)。這些目錄是特定「運行級別」的目錄。 當系統啓動時,它會識別要啓動的運行級別,而後調用該運行級別的特定目錄中存在的全部啓動腳本。例如,系統啓動時一般會在引導消息以後顯示「entering run-level 3」的消息;這意味着 /etc/rc.d/rc3.d/ 目錄中的全部初始化腳本都將被調用。 |
回頁首瀏覽器
內核提供了一個接口,用來顯示一些它的數據結構,這些數據結構對於決定諸如使用的中斷、初始化的設備和內存統計信息之類的系統參數可能頗有用。這個接口是做爲一個獨立但虛擬的文件系統提供的,稱爲 /proc 文件系統。不少系統實用程序都使用這個文件系統中存在的值來顯示系通通計信息。例如,/proc/modules 文件列舉系統中當前加載的模塊。lsmod 命令讀取此信息,而後將其以人們能夠看懂的格式顯示出來。 下面表格中指定的 mtab 文件以一樣的方式讀取包含當前安裝的文件系統的 /proc/mount 文件。安全
/etc/mtab | 這將隨着 /proc/mount 文件的改變而不斷改變。換句話說,文件系統被安裝和卸載時,改變會當即反映到此文件中。 |
---|---|
/etc/fstab | 列舉計算機當前「能夠安裝」的文件系統。 這很是重要,由於計算機引導時將運行 mount -a 命令,該命令負責安裝 fstab 的倒數第二列中帶有「1」標記的每個文件系統。 |
/etc/mtools.conf | DOS 類型的文件系統上全部操做(建立目錄、複製、格式化等等)的配置。 |
回頁首bash
/etc/group | 包含有效的組名稱和指定組中包括的用戶。單一用戶若是執行多個任務,能夠存在於多個組中。例如,若是一個「用戶」是「project 1」工程組的成員,同時也是管理員,那麼在 group 文件中他的條目看起來就會是這樣的: user: * : group-id : project1 |
---|---|
/etc/nologin | 若是有 /etc/nologin 文件存在,login(1) 將只容許 root 用戶進行訪問。它將對其它用戶顯示此文件的內容並拒絕其登陸。 |
etc/passwd | 請參閱「man passwd」。它包含一些用戶賬號信息,包括密碼(若是未被 shadow 程序加密過)。 |
/etc/rpmrc | rpm 命令配置。全部的 rpm 命令行選項均可以在這個文件中一塊兒設置,這樣,當任何 rpm 命令在該系統中運行時,全部的選項都會全局適用。 |
/etc/securetty | 包含設備名稱,由 tty 行組成(每行一個名稱,不包括前面的 /dev/),root 用戶在這裏被容許登陸。 |
/etc/usertty /etc/shadow |
包含加密後的用戶賬號密碼信息,還能夠包括密碼時效信息。包括的字段有:
|
/etc/shells | 包含系統可用的可能的「shell」的列表。 |
/etc/motd | 每日消息;在管理員但願向 Linux 服務器的全部用戶傳達某個消息時使用。 |
/etc/gated.conf | gated 的配置。只能被 gated 守護進程所使用。 |
---|---|
/etc/gated.version | 包含 gated 守護進程的版本號。 |
/etc/gateway | 由 routed 守護進程可選地使用。 |
/etc/networks | 列舉從機器所鏈接的網絡能夠訪問的網絡名和網絡地址。經過路由命令使用。容許使用網絡名稱。 |
/etc/protocols | 列舉當前可用的協議。請參閱 NAG(網絡管理員指南,Network Administrators Guide)和聯機幫助頁。 C 接口是 getprotoent。毫不能更改。 |
/etc/resolv.conf | 在程序請求「解析」一個 IP 地址時告訴內核應該查詢哪一個名稱服務器。 |
/etc/rpc | 包含 RPC 指令/規則,這些指令/規則能夠在 NFS 調用、遠程文件系統安裝等中使用。 |
/etc/exports | 要導出的文件系統(NFS)和對它的權限。 |
/etc/services | 將網絡服務名轉換爲端口號/協議。由 inetd、telnet、tcpdump 和一些其它程序讀取。有一些 C 訪問例程。 |
/etc/inetd.conf | inetd 的配置文件。請參閱 inetd 聯機幫助頁。 包含每一個網絡服務的條目,inetd 必須爲這些網絡服務控制守護進程或其它服務。注意,服務將會運行,但在 /etc/services 中將它們註釋掉了,這樣即便這些服務在運行也將不可用。 格式爲:<service_name> <sock_type> <proto> <flags> <user> <server_path> <args> |
/etc/sendmail.cf | 郵件程序 sendmail 的配置文件。比較隱晦,很難理解。 |
/etc/sysconfig/network | 指出 NETWORKING=yes 或 no。至少由 rc.sysinit 讀取。 |
/etc/sysconfig/network-scripts/if* | Red Hat 網絡配置腳本。 |
系統命令要獨佔地控制系統,並讓一切正常工做。全部如 login(完成控制檯用戶身份驗證階段)或 bash(提供用戶和計算機之間交互)之類的程序都是系統命令。所以,和它們有關的文件也特別重要。這一類別中有下列令用戶和管理員感興趣的文件。
/etc/lilo.conf | 包含系統的缺省引導命令行參數,還有啓動時使用的不一樣映象。您在 LILO 引導提示的時候按 Tab 鍵就能夠看到這個列表。 |
---|---|
/etc/logrotate.conf | 維護 /var/log 目錄中的日誌文件。 |
/etc/identd.conf | identd 是一個服務器,它按照 RFC 1413 文檔中指定的方式實現 TCP/IP 提議的標準 IDENT 用戶身份識別協議。identd 的操做原理是查找特定 TCP/IP 鏈接並返回擁有此鏈接的進程的用戶名。做爲選擇,它也能夠返回其它信息,而不是用戶名。請參閱 identd 聯機幫助頁。 |
/etc/ld.so.conf | 「動態連接程序」(Dynamic Linker)的配置。 |
/etc/inittab | 按年代來說,這是 UNIX 中第一個配置文件。在一臺 UNIX 機器打開以後啓動的第一個程序是 init,它知道該啓動什麼,這是因爲 inittab 的存在。在運行級別改變時,init 讀取 inittab,而後控制主進程的啓動。 |
/etc/termcap | 一個數據庫,包含全部可能的終端類型以及這些終端的性能。 |
守護進程是一種運行在非交互模式下的程序。通常來講,守護進程任務是和聯網區域有關的:它們等待鏈接,以便經過鏈接提供服務。Linux 可使用從 Web 服務器到 ftp 服務器的不少守護進程。
/etc/syslogd.conf | syslogd 守護進程的配置文件。syslogd 是一種守護進程,它負責記錄(寫到磁盤)從其它程序發送到系統的消息。這個服務尤爲常被某些守護進程所使用,這些守護進程不會有另外的方法來發出可能有問題存在的信號或向用戶發送消息。 |
---|---|
/etc/httpd.conf | Web 服務器 Apache 的配置文件。這個文件通常不在 /etc 中。它可能在 /usr/local/httpd/conf/ 或 /etc/httpd/conf/ 中,可是要肯定它的位置,您還須要檢查特定的 Apache 安裝信息。 |
/etc/conf.modules or /etc/modules.conf | kerneld 的配置文件。有意思的是,kerneld 並非「做爲守護進程的」內核。它實際上是一種在須要時負責「快速」加載附加內核模塊的守護進程。 |
在 Linux(和通常的 UNIX)中,有無數的「用戶」程序。最多見的一種用戶程序配置文件是 /etc/lynx.cfg。這是著名的文本瀏覽器 lynx 的配置文件。經過這個文件,您能夠定義代理服務器、要使用的字符集等等。 下面的代碼樣本展現了 lynx.cfg 文件的一部分,修改這部分代碼能夠改變 Linux 系統的代理服務器設置。缺省狀況下,這些設置適用於在各自的 shell 中運行 lynx 的全部用戶,除非某個用戶經過指定 --cfg = "mylynx.cfg"
重設了缺省的配置文件。
.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 p_w_picpath. # .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
在更改配置文件時,若是程序不是由系統管理員或內核控制的,就要確保從新啓動過使用該配置的程序。普通用戶一般沒有啓動或中止系統程序和/或守護進程的權限。
更改內核中的配置文件會當即影響到系統。例如,更改 passwd 文件以增長用戶將當即使該用戶變爲可用。並且任何 Linux 系統的 /proc/sys 目錄中都有一些內核可調參數。只有超級用戶能夠獲得對全部這些文件的寫訪問權力;其它用戶只有只讀訪問權力。此目錄中文件的分類的方式和 Linux 內核源代碼的分類方式同樣。此目錄中的每一個文件都表明一個內核數據結構,這些數據結構能夠被動態地修改,從而改變系統性能。
注意:在更改其中任何文件的任何值以前,您應該確保本身全面瞭解該文件,以免對系統形成不可修復的損害。
/proc/sys/kernel/ 目錄中的文件
文件名 | 描述 |
---|---|
threads-max | 內核可運行的最大任務數。 |
ctrl-alt-del | 若是值爲 1,那麼順序按下這幾個鍵將「完全地」從新引導系統。 |
sysrq | 若是值爲 1,Alt-SysRq 則爲激活狀態。 |
osrelease | 顯示操做系統的發行版版本號 |
ostype | 顯示操做系統的類型。 |
hostname | 系統的主機名。 |
domainname | 網絡域,系統是該網絡域的一部分。 |
modprobe | 指定 modprobe 是否應該在啓動時自動運行並加載必需的模塊。 |
守護進程是永遠運行在後臺的程序,它默默地執行本身的任務。常見的守護進程有 in.ftpd(ftp 服務器守護進程)、in.telnetd(telnet 服務器守護進程)和 syslogd(系統日誌記錄守護進程)。 有些守護進程在運行時會嚴密監視配置文件,在配置文件改變時就會自動從新加載它。可是大多數守護進程並不會自動從新加載配置文件。咱們須要以某種方式「告訴」這些守護進程配置文件已經被髮生了改變並應該從新加載。能夠經過使用服務命令從新啓動服務來達到這個目的(在 Red Hat Linux 系統上)。
例如,若是咱們更改了網絡配置,就須要發出: service network restart
。
注意:這些服務最多見的是 /etc/rc.d/init.d/* 目錄中存在的腳本,在系統被引導時由 init 啓動。因此,您也能夠執行以下操做來從新啓動服務: /etc/rc.d/init.d/<script-for-the-service> start | stop | status
start、stop 和 status 是這些腳本接受的輸入值,用來執行操做。
用戶或系統程序在每次啓動時都會讀取其配置文件。儘管如此,請記住,有些系統程序在計算機打開時狀況不同,它們的行爲依賴於在 /etc/ 中的配置文件中讀到的內容。因此,用戶程序第一次啓動時將從 /etc/ 目錄中存在的文件讀取缺省配置。而後,用戶能夠經過使用 rc 和 .(點)文件來定製程序,正以下面一節所示。
咱們已經看到怎樣容易地配置程序。可是若是有的人不喜歡在 /etc/ 中配置程序的方式該怎麼辦呢?「普通」用戶不能簡單地進入 /etc 而後更改配置文件;從文件系統的角度來看,配置文件的全部者是 root 用戶!這就是大多數用戶程序都定義兩個配置文件的緣由:第一個是「系統」級別的,位於 /etc/;另外一個屬於用戶「專用」,能夠在他或她的主目錄中找到。
例如,我在個人系統中安裝了很是有用的 wget 實用程序。/etc/ 中有一個 /etc/wgetrc 文件。在個人主目錄中,有一個名爲 .wgetrc 的文件,它描述了我定製的配置(只有在我,也就是用戶運行 wget 命令時,纔會加載這個配置文件)。其它用戶在他們本身的主目錄(/home/other)中也能夠有 .wgetrc 文件;固然,只有這些用戶運行 wget 命令時,纔會讀取這個文件。換句話說,/etc/wgetrc 文件爲 wget 提供了「缺省」值,而 /home/xxx/.wgetrc 文件列舉了某個用戶的「定製項」。重要的是這只是「通常規則」,並不是全部狀況都如此。例如,一個象 pine 同樣的程序,在 /etc/ 中並無任何文件,它只在用戶主目錄中有一個定製配置文件,名爲 .pinerc。其它程序可能只有 /etc/ 中的缺省配置文件,並且可能不容許用戶「定製」這些配置文件(/etc 目錄中只有少數 config. 文件是這種狀況)。
文件名 | 描述 |
---|---|
~/.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 | 先前執行的命令的列表。 |
~/.bashrc | 請參考「man bash」。由 bash 非登陸交互式 shell 引用(沒有其它文件)。除非設置了 BASH_ENV 或 ENV,非交互式 shell 不引用任何文件。 |
~/.emacs | 啓動時由 emac 讀取。 |
~/.forward | 若是這裏包含一個電子郵件地址,那麼全部發往 ~ 的全部者的郵件都會被轉發到這個電子郵件地址。 |
~/.fvwmrc ~/.fvwm2rc | fvwm 和 fvwm2(基本的 X Window 管理器)的配置文件。 |
~/.hushlogin | 請參考「man login」。引發「無提示」登陸(沒有郵件通知、上次登陸信息或者 MOD 信息)。 |
~/.mail.rc | 郵件程序的用戶初始化文件。 |
~/.ncftp/ | ncftp 程序的目錄;包含書籤、日誌、宏、首選項和跟蹤信息。請參閱 man ncftp。ncftp 的目的是爲因特網標準文件傳輸協議(Internet standard File Transfer Protocol)提供一個強大而靈活的接口。它旨在替換系統所使用的標準的 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 設置自動縮進、匹配括號、顯示行號和行-列這幾個選項。 |
~/.vimrc | 缺省的「Vim」配置文件。和 .exrc 同樣。 |
~/.gtkrc | GNOME 工具包(GNOME Toolkit)。 |
~/.kderc | KDE 配置。 |
~/.netrc | ftp 缺省登陸名和密碼。 |
~/.rhosts | 由 r- 工具(如 rsh、rlogin 等等)使用。由於冒充主機很容易,因此安全性很是低。
|
~/.rpmrc | 請參閱「man rpm」。若是 /etc/rpmrc 不存在則由 rpm 讀取。 |
~/.signature | 消息文本,將自動附加在今後賬號發出的郵件末尾。 |
~/.twmrc | twm( The Window Manager)的配置文件。 |
~/.xinitrc | 啓動時由 X 讀取(而不是由 xinit 腳本讀取)。一般會啓動一些程序。 示例:exec /usr/sbin/startkde 若是該文件中存在上面這行內容,那麼在從這個賬號發出 startx 命令時,這一行就會啓動「KDE 視窗管理器」(KDE Window Manager)。 |
~/.xmodmaprc | 此文件被傳送到 xmodmap 程序,並且能夠被命名爲任何文件(例如 ~/.Xmodmap 和 ~/.keymap.km)。 |
~/.xserverrc | 若是 xinit 能夠找到要執行的 X,xinit 就會將該文件做爲 X 服務器運行。 |
~/News/Sent-Message-IDs | gnus 的缺省郵件歷史文件。 |
~/.Xauthority | 由 xdm 程序讀和寫,以處理權限。請參閱 X、xdm 和 xauth 聯機幫助頁。 |
~/.Xdefaults, ~/.Xdefaults-hostname | 在主機 hostname 的啓動過程當中由 X 應用程序讀取。若是找不到 -hostname 文件,則查找 .Xdefaults 文件。 |
~/.Xmodmap | 指向 .xmodmaprc;Red Hat 有使用這個名稱的 .xinitrc 文件。 |
~/.Xresources | 一般是傳送到 xrdb 以加載 X 資源數據庫的文件的名稱,旨在避免應用程序須要讀取一個很長的 .Xdefaults 文件這樣的狀況。(有些狀況曾經使用了 ~/.Xres。) |
~/mbox | 用戶的舊郵件。 |