Linux配置⽂件
原⽂
本⽂说明了 Linux 系统的配置⽂件,在多⽤户、多任务环境中,配置⽂件控制⽤户权限、系统应⽤程序、守护进程、服务和其它管理任务。这些任务包括管理⽤户帐号、分配磁盘配额、管理电⼦邮件和新闻组,以及配置内核参数。本⽂还根据配置⽂件的使⽤和其所影响的服务的情况对⽬前 Red Hat Linux 系统中的配置⽂件进⾏了分类。
介绍
每个 Linux 程序都是⼀个可执⾏⽂件,它含有操作码列表,CPU 将执⾏这些操作码来完成特定的操作。例如,ls 命令是由 /bin/ls ⽂件提供的,该⽂件含有机器指令的列表,在屏幕上显⽰当前⽬录中⽂件的列表时需要使⽤这些机器指令。⼏乎每个程序的⾏为都可以通过修改其配置⽂件来按照您的偏好或需要去定制。
Linux 中有没有⼀个标准的配置⽂件格式?
⼀句话,没有。不熟悉 Linux 的⽤户(⼀定)会感到沮丧,因为每个配置⽂件看起来都象是⼀个要迎接的新挑战。在 Linux 中,每个程序员都可以⾃由选择他或她喜欢的配置⽂件格式。可以选择的格式很多,
从 /etc/shells ⽂件(它包含被⼀个换⾏符分开的 shell 的列表),到Apache 的复杂的 /f ⽂件。
什么是系统配置⽂件?
内核本⾝也可以看成是⼀个“程序”。为什么内核需要配置⽂件?内核需要了解系统中⽤户和组的列表,进⽽管理⽂件权限(即根据权限判定特定⽤户(UNIX_USERS)是否可以打开某个⽂件)。注意,这些⽂件不是明确地由程序读取的,⽽是由系统库所提供的⼀个函数读取,并被内核使⽤。例如,程序需要某个⽤户的(加密过的)密码时不应该打开 /etc/passwd ⽂件。相反,程序应该调⽤系统库的 getpw() 函数。这种函数也被称为系统调⽤。打开 /etc/passwd ⽂件和之后查那个被请求的⽤户的密码都是由内核(通过系统库)决定的。
除⾮另⾏指定,Red Hat Linux 系统中⼤多数配置⽂件都在 /etc ⽬录中。配置⽂件可以⼤致分为下⾯⼏类:
访问⽂件
/f告诉⽹络域名服务器如何查主机名。(通常是 /etc/hosts,然后就是名称服务器;可通过
netconf 对其进⾏更改)
/etc/hosts 包含(本地⽹络中)已知主机的⼀个列表。如果系统的 IP 不是动态⽣成,就可以使⽤它。对于简单的主机名解析(点分表⽰法),在请求 DNS 或 NIS ⽹络名称服务器之前,/f 通常会告诉解析程序先查看这⾥。
/etc/hosts.allow请参阅 hosts_access 的联机帮助页。⾄少由 tcpd 读取。/etc/hosts.deny请参阅 hosts_access 的联机帮助页。⾄少由 tcpd 读取。
引导和登录/注销
/etc/issue & /etc/issue 这些⽂件由 mingetty(和类似的程序)读取,⽤来向从终端(issue)或通过 telnet 会话(issue)连接的⽤户显⽰⼀个“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 ⽂件的改变⽽不断改变。换句话说,⽂件系统被安装和卸载时,改变
会⽴即反映到此⽂件
中。
列举计算机当前“可以安装”的⽂件系统。这⾮常重要,因为计算机引导时将运⾏ mount -a 命令,该命令负责安装 fstab 的
/etc/fstab倒数第⼆列中带有“1”标记的每⼀个⽂件系统。
/f DOS 类型的⽂件系统上所有操作(创建⽬录、复制、格式化等等)的配置。
系统管理
三星双卡
联⽹
/f gated 的配置。只能被 gated 守护进程所使⽤。
/etc/gated.version包含 gated 守护进程的版本号。
/etc/gateway由 routed 守护进程可选地使⽤。
/etc/networks列举从机器所连接的⽹络可以访问的⽹络名和⽹络地址。通过路由命令使⽤。允许使⽤⽹络名称。
/etc/protocols列举当前可⽤的协议。请参阅 NAG(⽹络管理员指南,Network Administrators Guide)和联机帮助页。 C 接⼝是getprotoent。绝不能更改。
/f在程序请求“解析”⼀个 IP 地址时告诉内核应该查询哪个名称服务器。
/etc/rpc包含 RPC 指令/规则,这些指令/规则可以在 NFS 调⽤、远程⽂件系统安装等中使⽤。
战狼票房多少/etc/exports要导出的⽂件系统(NFS)和对它的权限。
/etc/services将⽹络服务名转换为端⼝号/协议。由 inetd、telnet、tcpdump 和⼀些其它程序读取。
有⼀些 C 访问例程。
/f inetd 的配置⽂件。请参阅 inetd 联机帮助页。包含每个⽹络服务的条⽬,inetd 必须为这些⽹络服务控制守护进程或其它服务。注意,服务将会运⾏,但在 /etc/services 中将它们注释掉了,这样即使这些服务在运⾏也将不可⽤。格式为:<service_name><sock_type><server_path>
/etc/sendmail.cf邮件程序 sendmail 的配置⽂件。⽐较隐晦,很难理解。
/etc/sysconfig/network指出 NETWORKING=yes 或 no。⾄少由 rc.sysinit 读取。
/etc/sysconfig/network-
scripts/if*
Red Hat ⽹络配置脚本。
系统命令
系统命令要独占地控制系统,并让⼀切正常⼯作。所有如 login(完成控制台⽤户⾝份验证阶段)或 bash(提供⽤户和计算机之间交互)之类的程序都是系统命令。因此,和它们有关的⽂件也特别重要。这⼀类别中有下列令⽤户和管理员感兴趣的⽂件。
/f包含系统的缺省引导命令⾏参数,还有启动时使⽤的不同映象。您在 LILO 引导提⽰的时候按 Tab 键就可以看到
这个列表。
/f维护 /var/log ⽬录中的⽇志⽂件。
/f identd 是⼀个服务器,它按照 RFC 1413 ⽂档中指定的⽅式实现 TCP/IP 提议的标准 IDENT ⽤户⾝份识别协议。identd 的操作原理是查特定 TCP/IP 连接并返回拥有此连接的进程的⽤户名。作为选择,它也可以返回其它信息,⽽不是⽤户名。请参阅 identd 联机帮助页。
/etc/f“动态链接程序”(Dynamic Linker)的配置。
/etc/inittab按年代来讲,这是 UNIX 中第⼀个配置⽂件。在⼀台 UNIX 机器打开之后启动的第⼀个程序是 init,它知道该启动什么,这是由于 inittab 的存在。在运⾏级别改变时,init 读取 inittab,然后控制主进程的启动。
/etc/termcap⼀个数据库,包含所有可能的终端类型以及这些终端的性能。
守护进程
守护进程是⼀种运⾏在⾮交互模式下的程序。⼀般来说,守护进程任务是和联⽹区域有关的:它们等待连接,以便通过连接提供服务。Linux 可以使⽤从 Web 服务器到 ftp 服务器的很多守护进程。
/f syslogd 守护进程的配置⽂件。syslogd 是⼀种守护进程,它负责记录(写到磁盘)从其它程序发送到系统的消息。这个服务尤其常被某些守护进程所使⽤,这些守护进程不会有另外的⽅法来发出可能有问题存在的信号或向
⽤户发送消息。
/f Web 服务器 Apache 的配置⽂件。这个⽂件⼀般不在 /etc 中。它可能在 /usr/local/httpd/conf/ 或 /etc/httpd/conf/ 中,但是要确定它的位置,您还需要检查特定的 Apache 安装信息。
/dules or
/f 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:proxy3.in.ibm:80/
ftp_proxy:proxy3.in.ibm:80/
#http_proxy:penguin.in.ibm:8080
#ftp_proxy:penguin.in.ibm: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, demiurge
更改配置⽂件
在更改配置⽂件时,如果程序不是由系统管理员或内核控制的,就要确保重新启动过使⽤该配置的程序。普通⽤户通常没有启动或停⽌系统程序和/或守护进程的权限。
内核
更改内核中的配置⽂件会⽴即影响到系统。例如,更改 passwd ⽂件以增加⽤户将⽴即使该⽤户变为可⽤。⽽且任何 Linux 系统的 /proc/sys ⽬录中都有⼀些内核可调参数。只有超级⽤户可以得到对所有这些⽂件的写访问权⼒;其它⽤户只有只读访问权⼒。此⽬录中⽂件的分类的⽅式和 Linux 内核源代码的分类⽅式⼀样。此⽬录中的每个⽂件都代表⼀个内核数据结构,这些数据结构可以被动态地修改,从⽽改变系统性能。
注意:在更改其中任何⽂件的任何值之前,您应该确保⾃⼰全⾯了解该⽂件,以避免对系统造成不可修复的损害。
/proc/sys/kernel/ ⽬录中的⽂件
⽂件名描述
threads-max内核可运⾏的最⼤任务数。
ctrl-alt-del如果值为 1,那么顺序按下这⼏个键将“彻底地”重新引导系统。
sysrq如果值为 1,Alt-SysRq 则为激活状态。
osrelease显⽰操作系统的发⾏版版本号
ostype显⽰操作系统的类型。
hostname系统的主机名。
domainname⽹络域,系统是该⽹络域的⼀部分。
暗黑3安装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/ 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先前执⾏的命令的列表。
小年是哪一天2022~/.bashrc请参考“man bash”。由 bash ⾮登录交互式 shell 引⽤(没有其它⽂件)。除⾮设
2018假期安排时间表置了 BASH_ENV 或 ENV,⾮交互式 shell 不引⽤任何⽂件。
~/.emacs启动时由 emac 读取。
~/.forward如果这⾥包含⼀个电⼦邮件地址,那么所有发往 ~ 的所有者的邮件都会被转发到
这个电⼦邮件地址。
~/.fvwmrc
~
/.fvwm2rc
fvwm 和 fvwm2(基本的 X Window 管理器)的配置⽂件。
~/.hushlogin请参考“man login”。引起“⽆提⽰”登录(没有邮件通知、上次登录信息或者 MOD
信息)。
~/.邮件程序的⽤户初始化⽂件。
~/.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 配置。
新疆维吾尔族服装~/rc 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⽤户的旧邮件。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论