linux中“一切皆文件”,学习linux一年了,在学习过程中对目录树的一点心得,分享给大家,有不对的地方敬请斧正。
不多说了,先上图:
根目录: /
哪些目录不可与根目录分开:
/etc:配置文件
/dev:所需要的设备文件
/lib:执行文件所需的函数库与内核所需模块
/bin:重要执行文件
/sbin:重要的系统执行文件
*********************************************************************
一:/etc
etc目录存放系统的大部分配置文件和子目录。该目录下的文件由系统管理员来使用,普通用户对大部分文件有只读权限。FHS建议不要放置可执行文件(binary)在这个目录中。
1.1 /etc/inittab :init 的配置文件.
id:3:initdefault: // 默认级别3 # System initialization. si::sysinit:/etc/rc.d/rc.sysinit //该值告诉init程序运行/etc/rc.d/rc.sysinit脚本文件来初始化系统,该脚本文件与所有启动的脚本类似,它只是一个包含Linux的 shell命令的可执行文件。 l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6
Init进程是系统启动之后的第一个用户进程,所以它的pid(进程编号)始终为1。init进程上来首先做的事是去读取/etc/目录下inittab文件中initdefault id值,这个值称为运行级别(run-level)。它决定了系统启动之后运行于什么级别。运行级别决定了系统启动的绝大部分行为和目的。这个级别从0到6 ,具有不同的功能。不同的运行级定义如下:
# 0 - 停机(千万别把initdefault设置为0,否则系统永远无法启动)
# 1 - 单用户模式
# 2 - 多用户,没有 NFS
# 3 - 完全多用户模式(标准的运行级)
# 4 – 系统保留的
# 5 - X11 (x window)
# 6 - 重新启动 (千万不要把initdefault 设置为6,否则将一直在重启 )
1.2 /etc/init.d:Linux 启动时,运行一个叫做init 的程序。下面存放着很多的服务程序(当然都是可执行的)。
/etc/init.d/xinetd start就是启动xinetd的意思,可以有start、stop、status、restart、condrestart和reload这六个参数,它的部分shell script如下图所示,执行vim /etc/init.d/xinetd可查看完整script 。shell script在之后的博文会写到。
init.d目录下脚本的执行方式为:
/etc/init.d/command OPTION
还可以用service,例如,停止SSH服务: service sshd stop
Chkconfig:管理系统服务默认开机与否。是个很实用的命令。
1.3 /etc/rc /etc/rc.d /etc/rc*.d :启动、或改变运行级时运行的scripts或scripts的目录.
1.4/etc/services
/etc/services文件是记录网络服务名和它们对应使用的端口号及协议。文件中的每一行对应一种服务,它由4个字段组成,中间用TAB或空格分隔,分别表示“服务名称”、“使用端口”、“协议名称”以及“别名”。例如:远程连接机制使用的是ssh这个服务,使用的端口号是22.如下图所示(最前面是序号):
很多的系统程序要使用这个文件。一般情况下,不要修改该文件的内容,因为这些设置都是Internet标准的设置。一旦修改,可能会造成系统冲突,使用户无法正常访问资源。Linux系统的端口号的范围为0–65535,不同范围有不同的意义。
- 0 不使用
- 1--1023 系统保留,只能由root用户使用
- 1024---4999 由客户端程序自由分配
- 5000---65535 由服务器端程序自由分配
如果你想知道某个端口号对应的服务是什么,可以使用正则表达式搜寻:例如8080端口对应www服务。
可以通过"netstat -anp" 来查看哪些端口被打开。用netstat –anp|grep 23来查询23端口的信息。
1.4/etc/xinetd.d与/etc/xinetd.conf:
xinetd的配置文件是/etc/xinetd.conf,但是它只包括几个默认值及/etc/xinetd.d目录中的配置文件。如果要启用或禁用某项xinetd服务,编辑位于/etc/xinetd.d目录中的配置文件。大部分的网络服务都是由它们启动的
在行首的#代表已注释。
/etc/xinetd.conf可以成为默认值的配置文件,最上面就有defaults的字样
Defaults // 默认 { # The next two items are intended to be a quick access place to # temporarily enable or disable services. # # enabled = # disabled = # Define general logging characteristics.//服务启动成功或失败,以及相关登录行为的日志文件 log_type = SYSLOG daemon info // 日志文件的记录服务类型 log_on_failure = HOST //发生错误时需要记录的信息为主机(HOST) log_on_success = PID HOST DURATION EXIT //成功启动或登录时的记录信息 # Define access restriction defaults //允许或限制连接的默认值 # # no_access = # only_from = # max_load = 0 cps = 50 10 //同一秒内的最大连接数为50个,若超过则暂停10秒 instances = 50 //同一服务最大同时连接进程数为50个 per_source = 10 // 同一来源的客户端的最大连接数 # Address and networking defaults //网络 # # bind = # mdns = yes v6only = no //是否允许Ipv6?暂时不启动 # setup environmental attributes //环境参数 # # passenv = groups = yes umask = 002 # Generally, banners are not used. This sets up their global defaults # # banner = # banner_fail = # banner_success = } includedir /etc/xinetd.d //表示告诉xinetd更多的设置文件或目录在/etc/xinetd.d
以/etc/xinetd.d下的telnet为例:
service telnet { flags = REUSE socket_type = stream // 表示服务的数据包类型为stream,这是使用了TCP连接之故 wait = no // 表示不需等待,能同时进行大量的连接功能,即服务将以多线程的方式运行 user = root //执行此服务进程的用户是root server = /usr/sbin/in.telnetd //启动脚本的位置 log_on_failure += USERID // 表示设置失败时,额外将用户ID-UID添加到系统登记表 disable = yes //表示禁用这个服务 }
1.5 /etc/sysconfig:与网络有关的配置文件保存在这
1.6 /etc/X11: 与X Window 有关的各种配置文件都在这,其配置文件为xorg.conf。
1.7 /etc/passwd:用户数据,其中的给出了账号名称、密码、UID、GID、用户信息说明列、主文件夹、shell等7个字段,字段之间用“:”隔开。格式如下:
1.8 /etc/shadow:密码存放的文件,与/etc/passwd分隔开,只有系统管理员才有权利进行查看和修改的文件。
其中有登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志等9个字段。格式如下:
1.9 /etc/group 文件中每个用户组为一条记录。
每条记录分四个字段,格式如下: group_name:passwd:GID:user_list 它们分别为用户组名称、用户组密码、GID和用户列表。
推荐详解可看http://blog.sina.com.cn/s/blog_6561ca8c0101ac69.html
1.10/etc/fdprm
软盘参数表.说明不同的软盘格式.用setfdprm 设置.
1.11/etc/fstab:自动挂载记录文件
启动时mount -a命令(在/etc/rc 或等效的启动文件中)自动mount的文件系统列表.Linux下,也包括用swapon -a启用的swap区的信息。
记录开机要 mount 上来的 filesystem, 这个档案相当重要!我们可以在 /etc/rc.d/rc.S 中找到 /sbin/mount -avt nonfs 这一列, 当执行到这一列时, mount 就依据 /etc/fstab 中的记载, 自动的将档案系统 mount 上来. 下面就是示图. 假如你一开机就想自动 mount 一些 filesystems, 而不要等到开机后再以手动 mount 的话那把 这些 filesystems 及相关资讯写在这个档, 是不错的选择.
1.12 /etc/issue
getty在登录提示符前的输出信息.通常包括系统的一段短说明或欢迎信息.内容由系统管理员确定.
例如:Kernel on an m
issue内各代码说明:
d 本地端时间的日期
l 显示第几个终端接口
m 显示硬件的等级
显示主机的网络名称
o 显示域名
操作系统的版本
显示本地端的时间
s 操作系统的名称
v 操作系统的版本
1.13 /etc/motd
Message Of TheDay,成功登录后自动输出.内容由系统管理员确定.经常用于通告信息,如计划关机时间的警告.
1.14 /etc/magic
file 的配置文件.包含不同文件格式的说明,file 基于它猜测文件类型.
file 这个指令的命令格式为:
file [ -c ] [ -z ] [ -L ] [ -f namefile ] [ -m magicfile ] file
file 这个指令可以告诉你某一个档案的格式, 如它是一个text 档, 或是一个 shell s cript 或 DOS 可执行档等.
1.15 /etc/mtab :记载的是现在系统已经装载的文件系统,包括操作系统建立的虚拟文件等
当前安装的文件系统列表.由scripts初始化,并由mount 命令自动更新.需要一个当前安装的文件系统的列表时使用,例如df命令.
1.16 /etc/login.defs :login 命令的配置文件.
login.defs是设置用户帐号限制的文件,在这里我们可配置密码的最大过期天数,密码的最大长度约束等内容。该文件里的配置对root用户无效。如果/etc/shadow文件里有相同的选项,则以/etc/shadow里的设置为准,也就是说/etc/shadow的配置优先级高于/etc/login.defs
MAIL_DIR /var/spool/mail //创建用户时,要在目录/var/spool/mail中创建一个用户mail文件 PASS_MAX_DAYS 99999 //用户的密码不过期最多的天数; PASS_MIN_DAYS 0 //密码修改之间最小的天数; PASS_MIN_LEN 5 //密码最小长度; PASS_WARN_AGE 7 UID_MIN 500 //最小UID为500,也就是说添加用户时,UID是从500开始的; UID_MAX 60000 //最大UID为60000; GID_MIN 500 //GID是从500开始; GID_MAX 60000 CREATE_HOME yes UMASK 077 # This enables userdel to remove user groups if no members exist. # USERGROUPS_ENAB yes # Use MD5 or DES to encrypt password? Red Hat use MD5 by default. MD5_CRYPT_ENAB yes
1.17 /etc/printcap
类似/etc/termcap ,但针对打印机.语法不同.
1.18 /etc/profile , /etc/csh.login ,/etc/csh.cshrc
登录或启动时Bourne或Cshells执行的文件.这允许系统管理员为所有用户建立全局缺省环境.
1.19 /etc/securetty :确认安全终端,即哪个终端允许root登录.一般只列出虚拟控制台,这样就不可能(至少很困难)通过modem或网络闯入系统并得到超级用户特权.
注释掉(在这一行的开头加上#号)所有你想不让root登录的tty设备。
编辑securetty文件(vi /etc/securetty)象下面一样,注释掉一些行:
tty1
#tty2
#tty3
#tty4
#tty5
#tty6
#tty7
#tty8
1.20 /etc/shells :列出了系统可用的shell 命令行编辑器.
列出可信任的shell.chsh 命令允许用户在本文件指定范围内改变登录shell.提供一台机器FTP服务的服务进程ftpd检查用户shell是否列在 /etc/shells 文件中,如果不是将不允许该用户登录.
1.21 /etc/termcap
终端性能数据库.说明不同的终端用什么"转义序列"控制.写程序时不直接输出转义序列(这样只能工作于特定品牌的终端),而是从/etc/termcap中查找要做的工作的正确序列.这样,多数的程序可以在多数终端上运行
1.22 /etc/ grup---确定系统中定义组名和组
1.23 /etc/alternatives---包含了替换工具所有的链接,从而允许系统管理员以用户不可见的方式把一个服务替换成另一个(目前只有邮件和打印机使用替换服务)
1.24 /etc/redhat-release
1.25 /etc/cron*---该系列的目录包含的文件定义了crond工具如何在每天(cron,daily),小时(cron.hourly),每月(cron.mouthly),每周(corn.weekly)按计划运行的程序
/etc/crontab---设置cron环境变量和运行自动任务的时间
SHELL=/bin/bash //可以看到1.20/etc/shells中列出的/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给root HOME=/ # run-parts //第一个字段表示分钟,第二个字段表示小时,第三个字段表示天,第四个字段表示月,第五个字段是星期 01 * * * * root run-parts /etc/cron.hourly //每个小时去执行一遍/etc/cron.hourly内的脚本 02 4 * * * root run-parts /etc/cron.daily //每天去执行一遍/etc/cron.daily内的脚本 22 4 * * 0 root run-parts /etc/cron.weekly //每星期去执行一遍/etc/cron.weekly内的脚本 42 4 1 * * root run-parts /etc/cron.monthly //每个月去执行一遍/etc/cron.monthly内的脚本
1.26 /etc/protocols---为一系列internet服务是指协议号和名称
1.27 /etc/default---包含的文件为多个不同工具设置了缺省值 例如:为useradd命令定义了在新建用户帐户时所需要的缺省组id,主目录,密码过期日期,shell和框架目录(/etc/skel)
1.28 /etc/rpc---定义了远程调用的名称和端口号
1.29 /etc/ppp---包含用于设备点对点协议(使计算机能够拨号访问internet)的多个配置文件。
1.30 /etc/adjtime---包括了调整硬件时钟的数据
1.31 /etc/aliases---包含了linux邮件服务所有的分发列表
1.32 /etc/ bashre---为shell用户设置系统范围的缺省设置。(缺省情况下,它的设置shell提示符包含当前用户名,主机名,当前目录和其他值)
1.33 /etc/yum*:
[main] cachedir=/var/cache/yum //yum缓存的目录 keepcache=0 // debuglevel=2 //除错级别,0──10,默认是2 logfile=/var/log/yum.log //yum的日志文件 distroverpkg=redhat-release //指定一个软件包,yum会根据这个包判断你的发行版本 tolerant=1 //也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误 exactarch=1 //有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用1686的包来升级。 obsoletes=1 gpgcheck=1 //有1和0两个选择,分别代表是否是否进行gpg校验 plugins=1 exclude=*.i?86 kernel kernel-xen kernel-debug //排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开 # Note: yum-RHN-plugin doesn't honor this. metadata_expire=1h # Default. # installonly_limit = 3 # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d
1.34 /etc/DIR_COLORS : 设定在用 ls 时 , 各种不同档案型态所用的颜色 , 但是不能用pipe 再导向输出, 否则就没有各种颜色了
1.35 /etc/ host*:
host.conf---设置TCP/IP网络上搜索域名查看文件的位置
hosts---包含了从你的这计算机上可以到达的ip地址和主机名
hosts.allow---列出允许使用本地计算机上某些TCP/IP服务的主机
hosts,deny---列出不允许使用本地计算机某些TCP/IP服务的主机 (默认情况下是不存在的)