理解Linux 設定檔

來源:互聯網
上載者:User

介紹

每個 Linux 程式都是一個可執行檔,它含有作業碼列表,CPU 將執行這些作業碼來完成特定的操作。例如,ls 命令是由 /bin/ls 檔案提供的,該檔案含有機器指令的列表,在螢幕上顯示目前的目錄中檔案的列表時需要使用這些機器指令。幾乎每個程式的行為都可以通過修改其設定檔來按照您的偏好或需要去定製。

Linux 中有沒有一個標準的設定檔格式?
一句話,沒有。不熟悉 Linux 的使用者(一定)會感到沮喪,因為每個設定檔看起來都象是一個要迎接的新挑戰。在 Linux 中,每個程式員都可以自由選擇他或她喜歡的設定檔格式。可以選擇的格式很多,從 /etc/shells 檔案(它包含被一個分行符號分開的 shell 的列表),到 Apache 的複雜的 /etc/httpd.conf 檔案。

什麼是系統設定檔?
核心本身也可以看成是一個“程式”。為什麼核心需要設定檔?核心需要瞭解系統中使用者和組的列表,進而管理檔案許可權(即根據許可權判定特定使用者(UNIX_USERS)是否可以開啟某個檔案)。注意,這些檔案不是明確地由程式讀取的,而是由系統庫所提供的一個函數讀取,並被核心使用。例如,程式需要某個使用者的(加密過的)密碼時不應該開啟 /etc/passwd 檔案。相反,程式應該調用系統庫的 getpw() 函數。這種函數也被稱為系統調用。開啟 /etc/passwd 檔案和之後尋找那個被請求的使用者的密碼都是由核心(通過系統庫)決定的。

 

除非另行指定,Red Hat Linux 系統中大多數設定檔都在 /etc 目錄中。設定檔可以大致分為下面幾類:

訪問檔案

 

/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 讀取。

引導和登入/登出

 

/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 類型的檔案系統上所有操作(建立目錄、複製、格式化等等)的配置。

系統管理

 

/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
包含加密後的使用者帳號密碼資訊,還可以包括密碼時效資訊。包括的欄位有:

  • 登入名稱
  • 加密後的密碼
  • 從 1970 年 1 月 1 日到密碼最後一次被更改的天數
  • 距密碼可以更改之前的天數
  • 距密碼必須更改之前的天數
  • 密碼到期前使用者被警告的天數
  • 密碼到期後帳戶被禁用的天數
  • 從 1970 年 1 月 1 日到帳號被禁用的天數
/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 並不是“作為守護進程的”核心。它其實是一種在需要時負責“快速”載入附加核心模組的守護進程。

使用者設定檔:.(點)檔案和 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. 檔案是這種情況)。

通常使用的 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 先前執行的命令的列表。
~/.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 等等)使用。因為冒充主機很容易,所以安全性非常低。
  1. 必須由使用者(~/ 的所有者)或超級使用者擁有。
  2. 列出一些主機,使用者可以從這些主機訪問該帳號。
  3. 如果是符號連結則被忽略。
~/.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 使用者的舊郵件。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.