Debian系統配置文件說明

Chapter 10. Debian系統配置文件說明

在Debian系統中有很多的配置文件,這些配置文件都很重要,控制着系統和應用程序的運行。下面記錄這些配置文件的存放位置、作用和配置參數,以便我們在系統維護中能快速定位和配置這些文件。

10.1. .bash_profile、.bashrc、.bash_history和.bash_logout

  1. 上面這三個文件是bash shell的用戶環境配置文件,位於用戶的主目錄下。其中.bash_profile是最重要的一個配置文件,它在用戶每次登錄系統時被讀取,裏面的所有命令都會被bash執行。.profile(由Bourne Shell和Korn Shell使用)和.login(由C Shell使用)兩個文件是.bash_profile的同義詞,目的是爲了兼容其它Shell。在Debian中使用.profile文件代替. bash_profile文件。

  2. .bashrc文件會在bash shell調用另一個bash shell時讀取,也就是在shell中再鍵入bash命令啓動一個新shell時就會去讀該文件。這樣可有效分離登錄和子shell所需的環境。但一般來說都會在.bash_profile裏調用.bashrc腳本,以便統一配置用戶環境。

  3. .bash_history是bash shell的歷史記錄文件,裏面記錄了你在bash shell中輸入的所有命令。可通過HISTSIZE環境變量設置在歷史記錄文件裏保存記錄的條數。

  4. .bash_logout在退出shell時被讀取。所以我們可把一些清理工作的命令放到這文件中。

在/etc目錄的bash.bashrc和profile是系統的配置文件,當在用戶主目錄下找不到.bash_profile和.bashrc時,就會讀取這兩個文件。

10.2. /etc/passwd、/etc/shadow和/etc/group

這三個配置文件用於系統帳號管理,都是文本文件,可用vi等文本編輯器打開。/etc/passwd用於存放用戶帳號信息,/etc/shadow用於存放每個用戶加密的密碼,/etc/group用於存放用戶的組信息。

  • /etc/passwd文件的內容如下:

    root:x:0:0:root:/root:/bin/bash
    daemon:x:1:1:daemon:/usr/sbin:/bin/sh
    bin:x:2:2:bin:/bin:/bin/sh
    sys:x:3:3:sys:/dev:/bin/sh
    sync:x:4:65534:sync:/bin:/bin/sync
    games:x:5:60:games:/usr/games:/bin/sh
    ...

    每一行是由分號分隔的字串組成,它的格式如下:

    username:password:uid:gid:gecos:homedir:shell

    如果啓用shadow口令功能,password的內容爲“x”,加密的密碼轉而存放到/etc/shadow文件中。如果password的內容爲“*”,則該帳號被停用。使用passwd這個程序可修改用戶的密碼。

  • /etc/shadow存放加密的口令,該文件只能由root讀取和修改。下面是shadow文件的內容:

    root:$1$43ZR5j08$kuduq1uH36ihQuiqUGi/E9:12973:0:99999:7:::
    daemon:*:12973:0:99999:7:::
    bin:*:12973:0:99999:7:::
    sys:*:12973:0:99999:7:::
    sync:*:12973:0:99999:7:::
    ...

    我們可用chage命令顯示test用戶的帳號信息:
    debian:~# chage -l test
    最小: 0
    最大: 99999
    警告日: 7
    失效日: -1
    最後修改: 7月 09, 2005
    密碼過期: 從不
    密碼失效: 從不
    帳戶過期: 從不

    /etc/shadow文件的格式如下:

    username:password:last_change:min_change:max_change:warm:failed_expire:expiration:reserved
    各字段的簡要說明:
    last_change:表示自從Linux使用以來,口令被修改的天數。可用chage -d命令修改。
    min_change:表示口令的最小修改間隔。可用chage -m命令修改。
    max_change:表示口令更改週期。可用chage -M命令修改。
    warm:表示口令失效的天數。可用chage -W命令修改。
    failed_expire:表示口令失效後帳號的鎖定天數。可用chage -I命令修改。
    expiration:表示帳號到期日時間。可用chage -E命令修改。
    reserved:沒有使用,留待以後使用。

    在debian系統中,使用shadowconfig on/off命令可控制啓用和禁用shadow口令功能。

  • /etc/group是帳號分組文件,控制用戶如何分組。下面是組文件的內容:

    root:x:0:
    daemon:x:1:
    bin:x:2:
    sys:x:3:
    adm:x:4:
    ...

    它的格式如下:

    groupname:password:gid:members

    這裏的password代表組口令,很少用到。它可使原先不在這個羣組中的用戶可以通過newgrp命令暫時繼承該組的權限,使用 newgrp命令時會新開一個shell。口令的加密方式和passwd文件中的口令一樣,所以如果需設置組口令,要用passwd程序虛設一個用戶,再把該用戶password節中的加密口令拷貝到/etc/group文件中。members列代表組成員,我們可把需加入該組的用戶以逗號分隔添加到這裏即可。同一組的成員可繼承該組所擁有的權限。

10.3. /etc/login.defs

login.defs 是設置用戶帳號限制的文件,在這裏我們可配置密碼的最大過期天數,密碼的最大長度約束等內容。該文件裏的配置對root用戶無效。如果 /etc/shadow文件裏有相同的選項,則以/etc/shadow裏的設置爲準,也就是說/etc/shadow的配置優先級高於 /etc/login.defs。下面內容是該文件的節選:

...
#
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password change.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_WARN_AGE 7
...
#
# Number of significant characters in the password for crypt().
# Default is 8, don't change unless your crypt() is better.
# If using MD5 in your PAM configuration, set this higher.
#
PASS_MAX_LEN 8
...

10.4. /etc/securetty

該文件可控制根用戶登錄的設備,該文件裏記錄的是可以作爲根用戶登錄的設備名,如tty1、tty2等。用戶是不能從不存在於該文件裏的設備登錄爲根用戶的。這種情況用戶只能以普通用戶登錄進來,再用su命令轉爲根用戶。/etc/securetty文件的格式如下:

# /etc/securetty: list of terminals on which root is allowed to login.
# See securetty(5) and login(1).
console

# for people with serial port consoles
ttyS0

# for devfs
tts/0

# Standard consoles
tty1
tty2
tty3
...

如果/etc/securetty是一個空文件,則根用戶就不能從任務的設備登錄系統。只能以普通用戶登錄,再用su命令轉成根用戶。如果/etc/securetty文件不存在,那麼根用戶可以從任何地方登錄。這樣會引發安全問題,所以/etc/securetty文件在系統中是一定要存在的。

10.5. ~/.gnomerc

作用:GNOME桌面系統的用戶級啓動文件,該文件裏的腳本在GNOME桌面系統啓動時會自動執行,如果在用戶主目錄中沒有該文件,用戶可自行創建。該腳本是由GNOME系統級啓動文件/etc/X11/Xsession.d/55gnome-session_gnomerc所觸發的。在我的的系統中,該配置文件的內容如下:

# 配置GTK+程序的打開文件窗口字體編碼爲GBK
export G_FILENAME_ENCODING=GBK
#下面設置fcitx輸入法的環境變量
export XIM_PROGRAM=fcitx
export XIM=fcitx
export XMODIFIERS="@im=fcitx"
#啓動fcitx中文輸入法
fcitx&

G_FILENAME_ENCODING參數的官方解析可參考網址:http://developer.gnome.org/doc/API/2.0/glib/glib-running.html

10.6. ~/.gtkrc.zh_CN

作用:設置GTK+ 1.x程序的配置文件,默認已有字體配置選項,與上面的~/.gnomerc配置文件中的配置GTK+程序打開文件窗口的編碼選項配合使用,可使GTK+ 1.x程序能在打開文件窗口顯示中文的文件名。配置文件內容如下 :

style "gtk-default-zh-cn" {
fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-*,/
-*-*-medium-r-normal--14-*-*-*-*-*-gb2312.1980-0"
}
class "GtkWidget" style "gtk-default-zh-cn"

該文件的全局配置文件是/etc/gtk/gtkrc。如果需統一設置所有用戶的gtk中文設置,可在該文件中配置。文件的內容和上面的一樣。

10.7. ~/.gtkrc-2.0

作用:gtk2.0程序的設置文件,如果不存在,可手工創建。配置GTK2.0程序字體的配置如下:

style "gtk-default-zh-cn" {
font_name = "Bitstream Vera Sans 10,SimSun 10"
}
class "GtkWidget" style "gtk-default-zh-cn"

該文件也有一個全局配置文件/etc/gtk-2.0/gtkrc,注意是gtkrc,而不是gtkrc-2.0,默認該文件也是沒有的,需手工創建。一旦存在~/.gtkrc-2.0或/etc/gtk-2.0/gtkrc文件,則該文件的配置優先級是最高的,即使用gnome- font-properties字體配置程序也不能改變。例如你在~/.gtkrc-2.0裏設置了字體是SimSun 10號字,則你不能用gnome-font-properties字體配置程序更改該設置。

10.8. /etc/modules

內核模塊文件,裏面列出的模塊會在系統啓動時自動加載。可用modconf工具配置,也可用文本編輯器配置。

10.9. /etc/gdm.conf

GDM配置文件

10.10. /etc/kde3/kdm/kdmrc

kdm的配置文件,默認kdm是不允許root用戶登錄的,如果我們需以root用戶登錄,我們需修改kdmrc文件,把

AllowRootLogin=false

改爲

AllowRootLogin=true

10.11. /etc/services

Internet網絡服務文件,記錄網絡服務名和它們對應使用的端口號及協議。文件中的每一行對應一種服務,它由4個字段組成,中間用TAB或空格分隔,分別表示“服務名稱”、“使用端口”、“協議名稱”以及“別名”。下面是這個文件的節選內容。

tcpmux          1/tcp                           # TCP port service multiplexer
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
qotd 17/tcp quote
msp 18/tcp # message send protocol
msp 18/udp
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp-data 20/tcp
ftp 21/tcp
fsp 21/udp fspd
ssh 22/tcp # SSH Remote Login Protocol
ssh 22/udp
telnet 23/tcp
smtp 25/tcp mail
time 37/tcp timserver

一般情況下,不要修改該文件的內容,因爲這些設置都是Internet標準的設置。一旦修改,可能會造成系統衝突,使用戶無法正常訪問資源。

Linux系統的端口號的範圍爲0--65535,不同範圍有不同的意義。

0              不使用
1--1023 系統保留,只能由root用戶使用
1024---4999 由客戶端程序自由分配
5000---65535 由服務器端程序自由分配

10.12. /etc/protocols

該文件是網絡協議定義文件,裏面記錄了TCP/IP協議族的所有協議類型。文件中的每一行對應一個協議類型,它有3個字段,中間用TAB或空格分隔,分別表示“協議名稱”、“協議號”和“協議別名”。下面是該文件的節選內容。

# Internet (IP) protocols
#
# Updated from http://www.iana.org/assignments/protocol-numbers and other
# sources.
# New protocols will be added on request if they have been officially
# assigned by IANA and are not historical.
# If you need a huge list of used numbers please install the nmap package.

ip 0 IP # internet protocol, pseudo protocol number
#hopopt 0 HOPOPT # IPv6 Hop-by-Hop Option [RFC1883]
icmp 1 ICMP # internet control message protocol
igmp 2 IGMP # Internet Group Management
ggp 3 GGP # gateway-gateway protocol
ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'')
st 5 ST # ST datagram mode
tcp 6 TCP # transmission control protocol
egp 8 EGP # exterior gateway protocol
igp 9 IGP # any private interior gateway (Cisco)
pup 12 PUP # PARC universal packet protocol

不要對該文件進行任何修改。

10.13. /etc/network/interfaces

網絡接口參數配置文件,下面是一個配置示例,它在一個網絡接口中配置了兩個靜態IP地址:

# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

# The loopback interface
auto lo
iface lo inet loopback

# The first network card - this entry was created during the Debian installation
# (network, broadcast and gateway are optional)
auto eth0
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
# gateway 192.168.1.1
# name 以太網局域網網卡

auto eth0:0
iface eth0:0 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

下面是一個從DHCP服務器自動獲得IP地址的示例:

# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

# The loopback interface
auto lo
iface lo inet loopback

# The first network card - this entry was created during the Debian installation
# (network, broadcast and gateway are optional)
auto eth0
iface eth0 inet dhcp

10.14. /etc/resolv.conf

該文件是DNS域名解析的配置文件,它的格式很簡單,每行以一個關鍵字開頭,後接配置參數。resolv.conf的關鍵字主要有四個,分別是:

nameserver   #定義DNS服務器的IP地址
domain #定義本地域名
search #定義域名的搜索列表
sortlist #對返回的域名進行排序

/etc/resolv.conf的一個示例:

domain ringkee.com
search www.ringkee.com ringkee.com
nameserver 202.96.128.86
nameserver 202.96.128.166

最主要是nameserver關鍵字,如果沒指定nameserver就找不到DNS服務器,其它關鍵字是可選的。

10.15. /etc/host.conf

當系統中同時存在DNS域名解析和/etc/hosts主機表機制時,由該/etc/host.conf確定主機名解釋順序。示例:

order hosts,bind    #名稱解釋順序
multi on #允許主機擁有多個IP地址
nospoof on #禁止IP地址欺騙

order是關鍵字,定義先用本機hosts主機表進行名稱解釋,如果不能解釋,再搜索bind名稱服務器(DNS)。

10.16. /etc/hosts

設置IP地址與主機名對應表,可用該文件來進行主機名稱解釋。如:

#格式:IP地址     主機名       別名
127.0.0.1 localhost localhost.localdomain
192.168.1.1 debian debian
192.168.0.2 t02 t02.tiger
192.168.0.4 t04 t04.tiger

10.17. /etc/hostname

該文件只有一行,記錄着本機的主機名。

10.18. /etc/hosts.allow和/etc/hosts.deny

這兩個文件是tcpd服務器的配置文件,tcpd服務器可以控制外部IP對本機服務的訪問。這兩個配置文件的格式如下:

#服務進程名:主機列表:當規則匹配時可選的命令操作
server_name:hosts-list[:command]

/etc/hosts.allow控制可以訪問本機的IP地址,/etc/hosts.deny控制禁止訪問本機的IP。如果兩個文件的配置有衝突,以/etc/hosts.deny爲準。下面是一個/etc/hosts.allow的示例:

ALL:127.0.0.1         #允許本機訪問本機所有服務進程
smbd:192.168.0.0/255.255.255.0 #允許192.168.0.網段的IP訪問smbd服務

ALL關鍵字匹配所有情況,EXCEPT匹配除了某些項之外的情況,PARANOID匹配你想控制的IP地址和它的域名不匹配時(域名僞裝)的情況。

發佈了52 篇原創文章 · 獲贊 17 · 訪問量 28萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章