十五、
配置文件
1
、配置文件介紹:
每個 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 目錄中。配置文件可以大致分為下面
幾類:
2
、配置文件分類:
訪問文件
/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 文件的改變而不斷改變。換句話說,文件系統被安裝和
卸載時,改變會立即反映到此文件中。
1.文件格式
/etc/mtab 的格式和/etc/fstab 是一樣的.但這個文件不能算是用戶配置文件,
他是由系統維護的.和/etc/fstab 的區別在於, fstab 是系統啟動時需掛載的文
件系統列表,而 mtab 是系統當前已掛載的文件系統列表,它由系統維護,在用戶
執行了 mount 或者 umount 命令后自動更新.用戶不應該對此文件作任何修改.
2.安全性
/etc/mtab 的默認權限仍然是 644
3.相關命令
mount
umount
smbmount
/etc/fstab
1.文件格式
/etc/fstab 記載了系統啟動時自動掛載的文件系統。一行為一條記錄。每條記
錄有 6 個字段,字段間用空格或者 tab 鍵分開。這六個字段分別是:設備名稱,
掛載點(除交換分區為 swap 外,都必須是一個存在的目錄名),文件系統類型,
mount 選項,是否需要 dump(1 表示需要,0 表示不需要),在 reboot 期間 fsck
檢查的順序(激活文件系統設定為 1,其余文件系統設定為 2,若設定為 0 表示
該文件系統不需要被檢查)。
在 linux 和 windows 共存時,也許想開機自動掛載 windows 分區,那么就可以
在這個文件里加上相應的記錄。
某些時候對硬盤分區作了調整以后,這里也需要做一些相應的修改。否則會出
現一些問題。
可用的 mount 選項:
async
對該文件系統的所有 I/O 操作都異步執行
ro
該文件系統是只讀的
rw
該文件系統是可讀可寫的
atime
更新每次存取 inode 的存取時間
auto
可以使用 -a 選項 mount
defaults
使用預設的選項:rw,suid,dev,exec,auto,nouser,async
dev
解釋在文件系統上的字符或區塊設備
exec
允許執行二進制文件
noatime
不要在這個文件系統上更新存取時間
noauto
這個文件系統不能使用 -a 選項來 mount
nodev
不要解釋在文件系統上的字符或區塊設備
noexec
不允許在 mounted 文件系統上執行任何的二進制文件。這個選項對於具有包含
非它自己的二進制結構的文件系統服務器而言非常有用
nosuid
不允許 setuid 和 setgid 位發生作用。(這似乎很安全,但是在安裝 suidperl
后,同樣不安全)。
nouser
限制一般非 root 用戶 mount 文件系統
remount
嘗試重新 mount 已經 mounted 的文件系統。這通常是用來改變文件系統的 mount
標志,特別是讓只讀的文件系統變成可擦寫的
suid
允許 setuid 和 setgid 位發生作用
sync
文件系統的所有 I/O 同步執行
user
允許一般非 root 用戶 mount 文件系統。這個選項會應用 noexec,nosuid,nodev
這三個選項(除非在命令行上有指定覆蓋這些設定的選項)。
3.安全性
/etc/fstab 的默認權限是 644,所有者和所有組均為 root
2.相關命令
mount
df
列舉計算機當前“可以安裝”的文件系統。這非常重要,因為計算機引導時將
運行 mount -a 命令,該命令負責安裝 fstab 的倒數第二列中帶有“1”標記
的每一個文件系統。
/etc/mtools.conf
DOS 類型的文件系統上所有操作(創建目錄、復制、格式化等等)的配置。
系統管理
/etc/group
1.文件格式
/etc/group 存儲了系統中所有用戶的基本信息.它的格式和/etc/passwd 的格
式基本類似,這里就說簡單一點,
/etc/group 也是由一條條的記錄組成.每條記錄分 4 個字段.分別是組名,組口
令,組 ID 和該組包含用戶列表.其中組口令不再使用(現在只是保留為 x).最
后一個域是一個用逗號分隔的用戶名列表,這個組的成員就是在這里列出的所
有用戶.
2.安全性
/etc/group 的默認權限是 644,所有者和所有組均為 root.注意經常檢察.
3.相關命令
groupadd
groupdel
groupmod
groups
包含有效的組名稱和指定組中包括的用戶。單一用戶如果執行多個任務,可以
存在於多個組中。例如,如果一個“用戶”是“project 1”工程組的成員,同
時也是管理員,那么在 group 文件中他的條目看起來就會是這樣的:user: * :
group-id : project1
/etc/nologin
這是一個普通的文本文件.你可以在里面寫上你喜歡的任何東西./etc/nologin
的作用在於,如果它存在,那么系統將拒絕任何非 root 用戶的登錄請求,並對其
它登錄用戶顯示此文件的內容
此文件常由系統在停機前自動生成.有時系統管理員也會手工生成它,用以禁止
其它用戶登錄,方便進行一些管理工作.
etc/passwd
1.文件格式
/etc/passwd 存儲了系統中所有用戶的基本信息.可以說這是系統中最重要的一
個配置文件.對它作任何修改一定要小心謹慎.同時要經常檢察這個文件,包括
它的內容和權限設置.
使用 vi 編輯程序打開此文件,可以看到這個文件由許多行記錄組成.每一行記
錄對應着一個用戶.我們以第一行為例.第一行一般是 root 用戶的記錄,盡管這
不是必需的.實際上用戶記錄出現的順序並沒有任何的意義.
在我的系統中,/etc/passwd 的第一行看起來是這樣的:
root:x:0:0:root:/root:/bin/bash
每一條記錄都由 7 個字段組成,每個字段之間用冒號隔開.第一個字段是用戶
名,示例中是 root.第二個字段是用戶口令,示例中是一個字符 x,但這並不表示
root 的口令是單個字符 x,而是說用戶口令被加密了,並且加密口令也沒有放在
本文件中,而是放到了/etc/shadow(參考 /etc/shadow).假如刪除這個 x,那么
root 的口令就清空了.第三個字段是用戶的用戶 ID,即 uid.第四個字段是用戶
的組 ID,即 gid. 這里要注意,系統分辨兩個用戶是看他們的 uid 是否相同而不
是看他們的用戶名是否相同.用戶名不同但 uid 相同的兩個用戶實際上是同一
個用戶.對組來說也有類似的規則.所以這兩個字段大家一定要注意.第五個字
段是用戶全稱,沒有什么實際用途,相當於注釋,這里是 root.第六個字段是用戶
的主目錄 (home),即登錄系統后默認所處目錄,這里是/root.最后一個字段是
用戶的登錄 shell,可以是系統擁有的任何一個 shell 的完整路徑,這里是
/bin/bash.注意,這個字段可以有一個特殊的值,即/sbin/nologin.如果把一個
用戶的登錄 shell 設置為 /sbin/nologin 的話,系統將禁止此用戶的本地登錄.
請參閱“man passwd”。它包含一些用戶帳號信息,包括密碼(如果未被 shadow
程序加密過)。
2.安全性
/etc/passwd 的默認權限為 644,所有者和所有組均為 root.切記,在任何情況下
都不要更改它.
3.相關命令
passwd
useradd
userdel
adduser
usermod
users
/etc/rpmrc
rpm 命令配置。所有的 rpm 命令行選項都可以在這個文件中一起設置,這樣,
當任何 rpm 命令在該系統中運行時,所有的選項都會全局適用。
/etc/securetty
包含設備名稱,由 tty 行組成(每行一個名稱,不包括前面的 /dev/),root
用戶在這里被允許登錄。
1.文件格式
這是一個設備文件的列表.文件名取相對於/dev 的相對路徑.如,/dev/tty1 記
為 tty1
root 只有從這個列表中列出的設備上才可以登錄系統.
例如:
代碼:
$cat /etc/securretty
tty1
tty2
tty3
這里 root 被限定只能從/dev/tty1, /dev/tty2, /dev/tty3 這三個設備上登錄
系統
如果/etc/securretty 不存在的話,那么 root 將可以從任何設備登錄系統.
2.安全性
/etc/securetty 的默認權限是 600,所有者和所有組都是 root
/etc/shadow
包含加密后的用戶帳號密碼信息,還可以包括密碼時效信息。包括的字段有:
•
登錄名
•
加密后的密碼
•
從 1970 年 1 月 1 日到密碼最后一次被更改的天數
•
距密碼可以更改之前的天數
•
距密碼必須更改之前的天數
•
密碼到期前用戶被警告的天數
•
密碼到期后帳戶被禁用的天數
•
從 1970 年 1 月 1 日到帳號被禁用的天數
1.文件格式
/etc/shadow 文件保存的是用戶名,密碼,用戶賬號設置相關信息。
例:
root:$1$6UviCNvh$WTR0zPMek41KmzD0Z1DdV1:12264:3:4:5:6:12267:
第一段: root----- 用戶注冊名
第二段: $1$6UviCNvh$WTR0zPMek41KmzD0Z1DdV1 ----加密口令
第三段: 12264-----上次更動密碼的日期,以 1970 年 1 月 1 日為 1,1 天加 1
第四段: 3---------密碼將被允許修改之前的天數(0 表示“可在任何時間修
改”)
第五段: 4---------系統將強制用戶修改為新密碼之前的天數(1 表示“永遠
都不能修改”)
第六段: 5---------密碼過期之前,用戶將被警告過期的天數(-1 表示“沒有
警告”)
第七段: 6---------密碼過期之后,系統自動禁用帳戶的天數(-1 表示“永遠
不會禁用”)
第八段: 12267-----該帳戶被禁用的天數(-1 表示“該帳戶被啟用”).以 1970
年 1 月 1 日為 1,1 月 2 日為 2
第九段 ------ 保留供將來使用
注:第 2 段中為*表示帳號不可登錄,如密碼前為 !! 或只有 !! 表示帳號被鎖
2.安全性
/etc/shadow 的默認所有者和所有組均為 root.
建議運行# chattr +i /etc/shadow 來保護文件使其不被意外地刪除或重寫
3.相關命令
passwd
useradd
userdel
usermod
/ect/gshadow
1.文件格式
/ect/gshadow 文件保存的是用戶和組群設置的信息
例:
root:!!::root,wa1
第一段:組名
第四段:該組包含用戶列表
2.安全性
/etc/gshadow 的默認所有者和所有組均為 root.
建議運行# chattr +i /etc/shadow 來保護文件使其不被意外地刪除或重寫
3.相關命令
groupadd
groupdel
groupmod
groups
/etc/sysctl.conf
1.文件格式
/etc/sysctl.conf 是 sysctl 程序的配置文件.sysctl 可以在系統運行時更改內
核參數./etc/sysctl.conf 中的配置將在系統起動時執行.
以 # 和 ; 開始的行是注釋,將和空白行一起被忽略.
配置項的格式為:
token = value
token 是一個鍵名,value 是對應的鍵值.token 和 value 前后的空格將被忽略
token 不能是隨意的字符串.他和/proc/sys 下的文件有一一對應的關系:
假設foo是/proc/sys下的一個文件.刪除foo的絕對路徑前的 "/proc/sys" 這
一部分,然后把剩下部分中的 "/" 替換成 ".",得到的字符串就是 foo 所對應
的鍵名.例如:
/proc/sys/net/ipv4/ip_forward 對應的鍵名為 net.ipv4.ip_forward
應用舉例:
Redhat Linux 9 默認是禁止 ip 轉發的,而我們在做 ip 偽裝時需要起用 ip 轉發.
通常的做法是在 iptables 的規則之前加上一句:
echo 1>/proc/sys/net/ipv4/ip_forward
實際上我們也可以在/etc/sysctl.conf 中寫上:
net.ipv4.ip_forward = 1
這樣系統就默認起用 ip 轉發了.當然他不會立即生效.因為/etc/sysctl.conf
是在系統起動時讀入的.想要立即生效的話,請使用 sysctl 命令.
2.安全性
/etc/sysctl.conf 的默認權限是 644,所有者和所有組均為 root
3.See also
sysctl(8)
sysctl.conf(5)
proc(5)
procinfo(8)
/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 地址時告訴內核應該查詢哪
個名稱服務器。
1.文件格式
/etc/resolv.conf 是系統的 DNS 解析器配置文件,最常見
的用途是用來指定系統所使用的 DNS 服務器地址,您可以
最多指定 MAXNS 個 DNS 服務器,MAXNS 是一個常量,在
/usr/include/resolv.h 中定義,一般為 3。每個 DNS 服務
器地址應該以點分十進制格式寫在單獨的行上,前面加上
關鍵字 nameserver。例如:
nameserver 173.26.100.99
nameserver 202.118.224.101
這里我們指定了兩個 DNS 服務器,ip 地址分別為
173.26.100.99 和 202.118.224.101。當系統需要進行 DNS
解析時,優先使用列在前面的 DNS Server,如果解析失敗
則轉而使用下一個 DNS Server。
2.安全性
/etc/resolv.conf 的默認權限為 0644
/etc/host.conf
1.文件格式
/etc/host.conf 也是一個 DNS 解析器配置文件,但它最常
見的用途是用來指定解析器使用的方法。一般來說,DNS
解析可以使用兩種方法,一是查詢 DNS 服務器,二是使用
本地 hosts 主機表。/etc/host.conf 可以用來指定優先使
用哪一種方法。可以使用 order 關鍵字來指定他們的優先
級.order 后可跟一種或多種 DNS 查詢方法,之間用逗號隔
開,其優先級依次降低。可用的 DNS 查詢方法有:
hosts,bind,nis,分別表示使用本地 hosts 主機表,DNS
服務器,NIS 服務器來進行 DNS 查詢。最常見的配置是:
order bind,hosts
2.安全性
/etc/host.conf 的默認權限為 0644
/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,然后控制主進程的啟動。
1.文件格式
init 進程將查看此文件來啟動子進程,完成系統引導./etc/inittab 描述了
一個進程是在系統引導時起動還是在系統引導完成后的某個情形下起動.他
也是由一行行的記錄組成的.而以 # 開頭的行是注釋,將被忽略.
記錄的格式是:
id:runlevels:action:process
id 域是一個由 1 到 4 個字符組成的字符串,這個字符串必需是唯一的,即不
能有兩條記錄擁有相同的 id 域.id 域是一個標志域,由它區分各條記錄.注
意,對於 gettys 或者其他的 login 進程來說,id 域必須是對應 tty 的 tty 后
綴,例如,對於 tty1 來說,id 域應該是 1.查看你的 /etc/inittab,會發現類
似下面這樣的記錄:
.........
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
.............
runlevels 域是一個運行級的列表,可用的運行級有:
0 ---- 停機
1 ---- 單用戶模式
2 ---- 不帶 NFS 的多用戶模式
3 ---- 完整的多用戶模式
4 ---- 沒有使用
5 ---- X11
6 ---- 重起系統
S ---- 單用戶
s ---- 同 S
action 域是一個預定義的動作,可用的 action 有:
respawn
進程終止后立刻重新開始(如 getty 進程)
wait
進程在進入指定的運行級后起動一次,然后 init 將等待它的終止
once
進程在進入指定的運行級后起動一次
boot
進程在系統引導時起動,runlevels 域將被忽略
bootwait
進程在系統引導時起動,然后 init 將等待它的終止,runlevels 域將被忽略
off
這個 action 不做任何事
ondemand
有一個特殊的運行級叫做 ondemand runlevel,包括 a,b 和 c.如果一個進程
被標記了 ondemand runlevel,那么當要求切換到這個 ondemand runlevel
時將會起動這個進程.但實際上的 runlevel 不會改變
initdefault
標記了 initdefault 這個 action 的記錄項的 runlevel 域指定了系統引導完
成后進入的運行級
sysinit
在系統引導時起動這個進程.而且在所有的 boot 和 bootwait 項之前起
動.process 域將被忽略
powerwait
在電力中斷時起動這個進程.通常會由一個與連接到計算機的 UPS 系統對話
的進程通知 init 電力切斷.init 在繼續之前將等待這個進程結束
powerfail
同 powerwait 類似,但是 init 不會等待這個進程結束
powerokwait
一旦 init 被通知電力已經恢復,將起動這個進程
powerfailnow
當 init 被告知 UPS 的電力亦將耗盡時起動這個進程
ctrlaltdel
當 init 接到 SIGINT 信號時起動這個進程.一般是按下了 ctrl+alt+del 這個
組合鍵
kbrequest
當一個特殊的鍵盤組合鍵被按下時起動這個進程
process 域指定了將運行的進程,可以有參數.如果這個域以 + 開頭,表明
init 將為這個進程更新 utmp/wtmp 記錄.
范例:
id:3:initdefault:
系統引導完成后進入運行級 3
si::sysinit:/etc/rc.d/rc.sysinit
系統引導時運行/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
系統進入運行級 0 時執行/etc/rc.d/rc 0,這里 0 是參數
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
捕獲到 ctrl+alt+del 時運行/sbin/shutdown -t3 -r now.如果想禁用
ctrl+alt+del 這個組合鍵,直接刪除或注釋掉這行
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System
Shutting Down"
電力中斷時執行/sbin/shutdown -f -h +2 "Power Failure; System
Shutting Down"
1:2345:respawn:/sbin/mingetty tty1
進入運行級 2,3,4 或 5 時執行 respawn:/sbin/mingetty tty1.注意指定的
action 是 respawn,這也就是為什么我們在終端下 logout 后會立刻又出現一
個 login 提示符
x:5:respawn:/etc/X11/prefdm -nodaemon
進入運行級 5 時執行/etc/X11/prefdm -nodaemon,指定的 action 是 respawm
2.安全性
/etc/inittab 的權限是 644,所有者和所有組均為 root
3.相關命令
init
telinit
更多內容請
man init
man inittab
/etc/termcap
一個數據庫,包含所有可能的終端類型以及這些終端的性能。
守護進程
守護進程是一種運行在非交互模式下的程序。一般來說,守護進程任務是和聯網區域有關的:它們等
待連接,以便通過連接提供服務。Linux 可以使用從 Web 服務器到 ftp 服務器的很多守護進程。
/etc/syslog.conf
syslogd 是一種守護進程,它負責記錄(寫到磁盤)從其它程序發送到系統
的消息。這個服務尤其常被某些守護進程所使用,這些守護進程不會有另外
的方法來發出可能有問題存在的信號或向用戶發送消息。
1.文件格式
/etc/syslog.conf 是 syslog 守護程序的配置文件.syslog 守護程序為記錄
來自運行於系統之上的程序的消息提供了一種成熟的客戶機 -服務器機制。
syslog 接收來自守護程序或程序的消息,根據優先級和類型將該消息分類,
然后根據由管理員可配置的規則將它寫入日志。結果是一個健壯而統一的管
理日志的方法。
這個文件由一條條的規則組成.每條規則應該寫在一行內.但是如果某行以
反斜線 \ 結尾的話,他的下個物理行將被認為與此行同屬於一行.空白行和
以 # 開始的行將被忽略.
每條規則都是下面這種形式:
facility.priority[;facility.priority .....] action
facility 和 priority 之間用一個英文句點分隔.他們的整體稱為 selector.
每條規則可以有多個 selector,selector 之間用分號隔開. 而 selector 和
action 之間則用空格或者 tab 隔開.
facility 指定 syslog 功能,主要包括以下這些:
auth 由 pam_pwdb 報告的認證活動。
authpriv 包括特權信息如用戶名在內的認證活動
cron 與 cron 和 at 有關的信息。
daemon 與 inetd 守護進程有關的信息。
kern 內核信息,首先通過 klogd 傳遞。
lpr 與打印服務有關的信息。
mail 與電子郵件有關的信息
mark syslog 內部功能用於生成時間戳
news 來自新聞服務器的信息
syslog 由 syslog 生成的信息
user 由用戶程序生成的信息
uucp 由 uucp 生成的信息
local0----local7 與自定義程序使用,例如使用 local5 做為 ssh 功能
* 通配符代表除了 mark 以外的所有功能
priority 指定消息的優先級. 與每個功能對應的優先級是按一定順序排列
的,emerg 是最高級,其次是 alert,依次類推。缺省時,在
/etc/syslog.conf 記錄中指定的級別為該級別和更高級別。如果希望使用
確定的級別可以使用兩個運算符號!(不等)和=。
user.=info
表示告知 syslog 接受所有在 info 級別上的 user 功能信息。
可用的 syslog 優先級如下:
emerg 或 panic 該系統不可用
alert 需要立即被修改的條件
crit 阻止某些工具或子系統功能實現的錯誤條件
err 阻止工具或某些子系統部分功能實現的錯誤條件
warning 預警信息
notice 具有重要性的普通條件
info 提供信息的消息
debug 不包含函數條件或問題的其他信息
none 沒有重要級,通常用於排錯
* 所有級別,除了 none
action 字段所表示的活動具有許多靈活性,特別是,可以使用名稱管道的作
用是可以使 syslogd 生成后處理信息。
syslog 主要支持以下 action
file
指定文件的絕對路徑,如: /var/log/messages . log 信息將寫到此文件中
terminal 或 printer
完全的串行或並行設備標志符,如/dev/console . log 信息將送到此設備
@host
遠程的日志服務器. log 信息將送到此日志服務器
username
發送信息給指定用戶
named pipe
指定使用 mkfifo 命令來創建的 FIFO 文件的絕對路徑。
如果對此文件作了改動, 想要使改動生效,您需要向 syslog 守護程序通知
所做的更改。向它發送 SIGHUP 是個正確的辦法,您可以用 killall 命令
輕松地做到這一點:
# killall -HUP syslogd
2.安全性
您應該清楚如果 syslogd 寫的日志文件還不存在的話,程序將創建它們。
無論您當前的 umask 如何設置,該文件將被創建為可被所有用戶讀取。如
果您關心安全性,那么您應該用 chmod 命令將該文件設置為僅 root 用戶
可讀寫。此外,可以用適當的許可權配置 logrotate 程序(在下面描述)
以創建新的日志文件。syslog 守護程序始終會保留現有日志文件的當前屬
性,因此一旦創建了文件,您就不需要擔心它。
3.相關命令
logrotate
klogd
syslogd
dmesg
/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" 重設了缺省的配置文件。
/etc/lynx.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 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
更改配置文件
在更改配置文件時,如果程序不是由系統管理員或內核控制的,就要確保重新啟動過使用該配置的程
序。普通用戶通常沒有啟動或停止系統程序和/或守護進程的權限。
內核
更改內核中的配置文件會立即影響到系統。例如,更改 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 和 .(點)文件來
定制程序,正如下面一節所示。
用戶配置文件:.(點)文件和 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(
T
he
W
indow
M
anager)的配置
文件。
~/.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
用戶的舊郵件。
3
、重要的配置文件列表:
啟動引導程序配置文件
LILO /etc/lilo.conf
GRUB /boot/grub/menu.lst
系統啟動文件核腳本
主啟動控制文件 /etc/inittab
SysV 啟動腳本的位置 /etc/init.d、/etc/rc.d/init.d 或/etc/rc.d
SysV 啟動腳本鏈接的位置 /etc/init.d/rc?.d、/etc/rc.d/rc?.d 或/etc/rc?.d
本地啟動腳本 /etc/rc.d/rc.local、/etc/init.d/boot.local 或/etc/rc.boot 里的文件
網絡配置文件
建立網絡接口的腳本 /sbin/ifup
保存網絡配置數據文件的目錄 /etc/network、/etc/sysconfig/network 和
/etc/sysconfig/network-scripts
保存解析 DNS 服務的文件 /etc/resolv.conf
DHCP 客戶端的配置文件 /etc/dhclient.conf
超級服務程序配置文件和目錄
inetd 配置文件 /etc/inetd.conf
TCP Wrappers 配置文件 /etc/hosts.allow 和/etc/hosts.deny
xinetd 配置文件 /etc/xinetd.conf 和/etc/xinetd.d 目錄里的文件
硬件配置
內核模塊配置文件 /etc/modules.conf
硬件訪問文件
Linux 設備文件 /dev 目錄里
保存硬件和驅動程序數據的文件 /proc 目錄里
掃描儀配置文件
SANE 主配置 /etc/sane.d/dll.conf
特定掃描儀的配置文件 /etc/sane.d 目錄里以掃描儀型號命名的文件
打印機配置文件
BSD LPD 核 LPRng 的本地打印機主配置文件 /etc/printcap
CUPS 本地打印機主配置和遠程訪問受權文件 /etc/cups/cupsd.conf
BSD LPD 遠程訪問受權文件 /etc/hosts.lpd
LPRng 遠程訪問受權文件 /etc/lpd.perms
文件系統
文件系統表 /etc/fstab
軟驅裝配點 /floppy、/mnt/floppy 或/media/floppy
光驅裝配點 /cdrom、/mnt/cdrom 或/media/cdrom
shell 配置文件
bash 系統非登錄配置文件 /etc/bashrc、/etc/bash.bashrc 或/etc/bash.bashrc.local
bash 系統登錄文件 /etc/profile 和/etc/profile.d 里的文件
bash 用戶非登錄配置文件 ~/.bashrc
bash 用戶登錄配置文件 ~/.profile
XFree86 配置文件核目錄
XFree86 主配置文件 /etc/XF86config、/etc/X11/XF86Config 或/etc/X11/XF86Config-4
字體服務程序配置文件 /etc/X11/fs/config
Xft 1.x 配置文件 /etcX11/XftConfig
Xft 2.0 配置文件 /etc/fonts/fonts.conf
字體目錄 /usr/X11R6/lib/X11/fonts 和/usr/share/fonts
Web 服務程序配置文件
Apache 主配置文件 /etc/apache、/etc/httpd 或/httpd/conf 里的 httpd.conf 或 httpd2.conf 文
件
MIME 類型文件 與 Apache 主配置文件在同一目錄里的 mime.types 或 apache-mime.types
文件服務程序配置文件
ProFTPd 配置文件 /etc/proftpd.conf
vsftpd 配置文件 /etc/vsftpd.conf
NFS 服務程序的輸出定義文件 /etc/exports
NFS 客戶端裝配的 NFS 輸出 /etc/fstab
Samba 配置文件 /etc/samba/smb.conf
Samba 用戶配置文件 /etc/samba/smbpasswd
郵件服務程序配置文件
sendmail 主配置文件 /etc/mail/sendmail.cf
sendmail 源配置文件 /etc/mail/sendmail.mc 或/usr/share/sendmail/cf/cf/linux.smtp.mc 或
其他文件
Postfix 主配置文件 /etc/postfix/main.cf
Exim 主配置文件 /etc/exim/exim.cf
Procmail 配置文件 /etc/procmailrc 或~/.procmailrc
Fetchmail 配置文件 ~/.fetchmailrc
遠程登錄配置文件
SSH 服務程序配置文件 /etc/ssh/sshd_config
SSH 客戶端配置文件 /etc/ssh/ssh_config
XDM 配置文件 /etc/X11/xdm 目錄下
GDM 配置文件 /etc/X11/gdm 目錄下
VNC 服務程序配置文件 /usr/X11R6/bin/vncserver 啟動腳本和~/.vnc 目錄里的文件
其他服務程序配置文件
DHCP 服務程序配置文件 /etc/dhcpd.conf
BIND 服務程序配置文件 /etc/named.conf 和/var/named/
NTP 服務程序配置文件 /etc/ntp.conf
