Linux系统各文件、目录介绍
文章来源:http://www.webrj.com 阅读次数:301
--------------------------------------------------------------------------------
一、简介:
Linux操作系统中,以文件来表示所有的逻辑实体与非逻辑实体。逻辑实体系指文件与目录; 非逻辑实体则泛指硬盘、终端机、打印机等。
一般而言,Linux文件名称的组成除由连续字母、标点符号、数字等构成外,中间不能有空格符、路径名称符号 / 或 # * % & {} [] ……..等与Shell有关的特殊字符。
Linux文件系统中,结构上以root file system 位最上位也最为重要,所谓root file system乃于开机时将root partition挂载在 / 的目录,若无法mount / 则开机时无法进入Linux系统中此时仅能remount / 的目录。该目录下有/etc、/dev、/boot、/home、/lib、/lost+found、/mnt、/opt、/proc、/root、/bin、/sbin、/tmp、/var、/usr等重要目录,以下兹分别介绍之。
二、目录与文件简介
1./etc:本目录下存放着许多系统所需的重要设定与管理文件,有一些为纯档名,有些是以.conf的型态出现另亦有一些自成单一目录:当然亦有些设定文件并非放在/etc目录下,例如使用者家目录之.bashrc、.bash_profile等文件;通常祇要更动过/etc目录下之设定档内容必须重新激活设定档使设定生效,且一般亦无须重开机。以下谨胪列主要文件如后:
(1) HOSTNAME
本文件内容仅记载主机+网域名称,在系统提示符号下输入hostname可以显示HOSTNAME之文件内容。如:www.webrj.com、www.webrj.net、www.e0797.com、www.ok138.com等。
(2) XF86Config
本文件内容为X Window System的主要设定档,Caldera的版本放在/etc目录下,RedHat版本则放在/etc/X11目录下,有关显示卡、鼠标、键盘均可在此加以设定。
(3) aliases
本文件内容用来设定邮件别名及邮件清单可以让特定的地址转寄给不同的使用者或群组;编辑完/etc/aliases后须下newaliases指令使之生效,对于由远程寄送至local端的邮件具有备份功能,为mail server重要的设定档之一。
(4) amd.conf
本文件为一常驻服务程序(daemon),全名为automatically mount file system,Caldera的版本称为am.d;是一个能自动mount和umount cdrom和floppy的文件系统。
(5) at.deny
本文件为对能否使用at指令的使用者加以限制, at 是一个非常有用的工具,可以让使用者指定在特定时刻执行某个程序或指令,通常只执行一次。如果你想定时定期的执行某项工作,应该使用cron工具而非at。
(6) crontab
本文件可让系统定时执行排程工作为系统管理上极为重要之文件,Cron是一个常驻程序 (daemon),在开机时激活cron的daemon时,它会自动去检查/var/spool/cron 目录下面看看是否有任何cron文件。每一个user的可以去设定自己所要排定执行的工作。在这一个目录底下,每一个user会有一个属于他loginid名称的cron文件,crond会自动将这些user的cron文件加载至内存中,并定期去执行每个user的cron文件。另外,crond也会去读取 /etc/crontab 的内容。
这是属于系统的cron工作设定文件,主要系统会定期去执行 /etc/cron.d/ 目录下面四个cron.daily、cron.hourly、cron.weekly、cron.monthly目录下(RedHat版本则集中放在/etc目录下)的命令。
(7) dhcpd.conf
本文件为DHCP Server的设定档,可烤贝/usr/doc/dhcp-serial number目录下的dhcpd.conf.sample至/etc目录下,该文件内容一般有记载着subnet、netmask、routers、domain-name、default-lease-time、max-lease-time及 IP range;亦可一并指派固定IP给特定主机。
(8) dosemu.conf
本文件为Dos仿真器的设定文件可以在Linux上仿真Dos环境,用Dos 指令。
(9) dumpdate
dump指令可对Linux ext2文件系统进行检查备份(例如dumpe2fs /etc 对/etc目录作备份),dumpdate则是存放dump指令的执行日期。
(10) exports
本文件为NFS(Network File System)设定档,NFS主要是运用在UNIX 系统上,用来使UNIX系统能够在几部计算机间做文件的分享。其功能类似windows的网络磁盘驱动器,可以mount的方式,分享其它linux或UNIX主机的目录或文件。exports文件内则分别记载着分享目录、分享对象及权限等项目。
(11) fdprm
本文件为软盘机参数表,含有各大小格式扇区磁道等资料。
(12) fstab
本文件包含了开机时需加载的文件系统,每一行都表示一个文件系统,各字段分别有特定的装置或远程的文件系统、挂载点、加载的文件型态、挂载选项、dump设定及fsck设定。此文件可供Linux于开机时加载到系统上,并于关机时卸载。
(13) ftp*
以ftp开头的文件如ftpaccess(主要设定档)、ftpconversions(文件的相关压缩规定)、ftpgroups、ftphosts、ftpusers(分别为ftp群组、主机、使用者拒绝存取设定)等均为ftp server相关的设定档。
(14) group 本文件为群组的资料文件,可以使每个使用者均拥有自己的群组;一般而言新的使用者建立后的的同时会产生相同于使用者名称的群组名称(RedHat Distribution)(Caldera Distribution 则会随adduser 或useradd 指令的不同而会纳入users群组或相同于使用者名称的群组名称);在GNOME环境中可用LinuxConf设定,在KDE环境中可用User Manger加以设定之。
(15) host*
在/etc目录下以host开头的文件有host.conf、hosts、hosts.allow、host.deny等目录,兹分述如下:
host.conf
本文件设定网络搜寻顺序系依hosts或DNS之先后顺序定之;同时亦可一并设定是否将多重IP指定给一台主机与否。
hosts
本文件设定主机的IP及网域名称,利用此文件可加速特定主机的搜寻速度无须借助DNS之功能,早期未有DNS前即是依赖hosts档作名称查寻。
hosts.allow
本文件记载着允许那些主机联机到你的主机,在系统安全上为Tcpwrapper机制的存取控制文件。通常是维护主机安全或作测试用。
hosts.deny
本文件记载着拒绝那些主机联机到你的主机,在系统安全上为Tcpwrapper机制的存取控制文件。通常是维护主机安全或作测试用。一般而言,常与hosts.allow檔原则上先deny ALL 再设定allow,被allow同意的存取便不会再被deny否决。
(16) httpd
本目录下置放有conf目录、log 及module等文件其中尤以conf目录下的httpd.conf(主要设定档) 、access.conf(网页目录及资料来源路径文件)、srm.conf(设定apache的存取控制檔),目前Apache 1.3.9以后版本已整合成httpd.conf加以设定即可;/etc/httpd为Apache Server重要目录所在。
(17) inetd.conf
通常当系统激活时,有部份的service是并没有在开机时被激活的,以节省系统资源。他们是利用inetd( internet daemon)--来监控网络服务的要求,再激活适当的daemon。inetd 是用来监控各种service的daemon,依不同的port提供不同的监控。/etc/inetd.conf即为其设定档,并由tcpd来提供监控。例如将telnet加上#,系统便不提供telnet的服务。
本文件最常与Tcpwrapper机制的存取控制文件hosts.allow及 hosts.deny搭配负责网络安全的监控;举ftp为例,当inetd接收到使用ftp的请求时,便会激活tcpd,tcpd先纪录这项ftp的请求,然后检查hosts.allow、host.deny这二个存取设定控制档,如果同意存取,就会激活。另外,Tcpwapper只能影响inetd激活,并且在inetd.conf里面经过编辑,由tcpd呼叫的服务,所以并不能为其它服务提供安全保障(如sendmail、NFS等)。管理者可以看log文件知道系统是否有被别人侵入。
(18) inittab
一般Linux系统激活时,LILO 执行后加载kernel,kernel激活后呼init program(/sbin/init)激活系统必备程序,init为parent process(呼叫后fork 许多child process),接着便检视/etc/inittab,视/etc/inittab以runlevel? 启动再执行/etc/rc.d/rc.?d/下所有s开头之shell script,直到完成(ex.s10network ; s40cron)是以inittab文件乃在规范使用者要以那一种runlevel登入Linux系统,我们亦可直接在系统提示符号下输入init 或 telinit 后加上欲豋入之第几层runlevel,例如init 3 或telinit 5,即可进入该环境模式
(19) isapnp.gone
本文件包含ISA适配卡所使用的资源,可用来设定硬件所需的内存、I/O Base、IRQ及DMA。
(20) issue(net)
本文件是记载使用者在登入本机时所出现的一段文字讯息,例如「Red Hat Linux release 6.2 (Zoot) + CLE V0.9P1 (Yami) Kernel 2.2.17-4CLE on an i586」而issue.net则用于远程登入时之文字讯息显示之用。issue文件可加以修改成你需要出现的内容, 但需同时将/etc/rc.d/rc.local文件中「echo “” > /etc/issue至echo >> /etc/issue」等几行加上批注起来,始能生效。
(21) ldso.conf
本文件存放了系统中共享函式库(shared libraries)的路径;Linux提供了两种形式函式库:shared及static,而Unix只提供shared libraries。当程序被编译时,程序便会去连结该程序所需用到的函式库。有时候程序为了便于侦错,或是为了某些考量,我们不希望程序去使用共享函式库,而是把会用到的链接库全部连结进程序的执行文件,让程序本身拥有一份函式库中函式的副本,这种方式称为静态连结程序(static linked),而依赖共享函式库所建立的程序称动态连结程序(Dynamically Linked)。系统安装了library后,必须告诉程序library放置于何处,使用共享函式库的好处是免除不同的程序里重复使用静态函数库(static libraries),与其在每个呼叫这些函式的程序里都储存一份copy,不如把函式库集中在系统的文件里,让执行的程序都可以读到这个程序。
当编辑完ldso.conf文件增加新的函式库或新安装某个套件之后(可能会安装某个新的共享函式库),后须下ldconfig -v,使之生效。
(22) lilo.conf
lilo即linux loader,本文件lilo.conf内容可以分为两部分: Global及per-image,负责指定开机时所使用的kernel及开机时所要读取的lilo是放在哪一个装置,另亦有设定多重开机功能,使多个操作系统并存;如果对本文件进行修改,须下lilo –v –v –v 的指令重改设定由于lilo并非为一Daemon,仅为一内部程序,通常须重开机后设定始能生效。
(23) mediaprm
本文件用来定义磁盘驱动器位于Linux下的代号ex. /dev/fd0、/dev/cdrom
(24) modules.conf
本文件为模块的主要设定文件,在Red Hat 版本之名称命名为conf.modules ,Modules一般来说大部分为一些装置、网络、文件系统等的驱动程序,传统上,驱动程序是核心的一部份,因为几乎所有的核心都需要藉由成为核心码的一部份来取得使用硬件的能力,至于模块化程序则是一种可加载之式驱动程序(Loadable
device driver),在系统执行时是直接由加载内存或从内存卸载;而使用module的方式,可以不用重新建立kernel,同时也可以节省时间及内存空间。
(25) motd
本文件为系统显示与user的提示讯息提示的时机则在user login并输入帐号及密码后出现之讯息,例如:「Last login: Mon Dec 18 10:19:15 on tty1」。
(26) mtab
本文件记载着已挂载(mount)的文件系统,当你下mount指令时所显现之内容与mtab内容常相一致。
(27) ntp.conf
NTP全名为Network Time Protocol(网络对时协议),系client端针对NTP Server作同步化对时所使用之协议,为达到NTP同步化获致正确而可信赖时间。ntp.conf则为主要设定文件提供模式的选择和使用的servers设定。
(28) pam.d
PAM(Pluggable Authentication Modules)即可插拔的认证模块;当login时,必需提供username和password,然后系统根据所给予的username和password来验证可否login,确认使用者身份,PAM允许设置多种认证方式,不须再重新编译核心要进行认证的程序。使用PAM,可编辑配置文件动态的去读取配置模块,然后再去执行验证;pam.d目录下则放置与PAM相关的文件。
(29) passwd
每一位使用者皆有使用者名称供以辨识身份,亦必须一并设定密码在/etc/passwd文件中可以root身份来加入新的使用者,通常user输入username及密码,系统会先将输入之密码加密成13位码,再与 / etc / passwd作一比对,无误与否。至于实际的密码则放在/etc/shadow文件中。
(30) protocols
通讯协议号码是IP数据段表头中的一个字节,藉以显示出数据应该传给IP层以上的何种协议;至于协议号码则规范在本文件中,protocols内容是一个对照表,包含协议名称及协议号码和批注等栏项,利用协议号码与协议名称的对照便可知使用何种协议。
(31) rc.d
本目录下以etc/rc.d/rc0.d ~ /etc/rc.d/rc6.d里的文件代表各种不同runlevel所激活的daemon尤为重要,K代表kill,S代表start。在渠等目录下的文件通常为一连结档link至/etc/rc.d/init.d 里的daemon以供激活。/etc/inittab文件乃在规范使用者要以那一种runlevel登入Linux系统,至于本文件案则视以runlevel? 登入,代表激活rc?.d目录下依序激活各连结档的shell script(/etc/rc.d/init.d 里的daemon)。
(32) resolv.conf
BIND的伺服端透过daemon(/etc/rc.d/init.d/named)来执行;BIND的客户端则透过resolver,它是一个程序函式库组成,会发出名称查询,而由/etc/resolv.conf设定之(即将nameserver加入该文件中),例如echo “
nameserver 172.17.0.10” >> /etc/resolv.conf 或者手动vi编辑之。
(33) rpc
rpc全名为remote procedure call即远程程序呼叫,通常系指local 端程序对位于远程系统中的程序进行呼叫,俟其完成任务并将该任务传回给local端;/etc/rpc文件内存rpc程序号码数据库,含有使用者可识别之替代rpc程序号码的名称基本格式则含有rpc程序的server名称、rpc程序号码、别名等记载栏项。
(34) samba.d/smb.conf:
Samba(Server Message Block protocol)使用来将linux system与windows system透过网络上的芳邻作沟通整合之用,而/etc/samba.d/smb.conf 则为samba的重要设定档,该档中主要分global与share defini tions二大项;/etc/samba.d/ smbpasswd则是samba password的设定档。
(35) securetty
本文件定义了root可login的terminal,一般而言预设为tty1至tty8,root只能从定义中的terminal登入。
(36) sendmail.cf
本文件为mail server的重要设定档,sendmial是一种MTA,目前在unix或linux上使用相当广泛,由柏克莱大学大学生所写的程序,功能强大,但sendmail.cf内容由宏指令写成较为艰涩难懂,因此一般除伪装名称、主机的别名、收信的主机位置名称等少数项目由sendmail.cf文件直接于其中设定外,一般而言,均另用m4产生sendmail.cf的宏定义档,RedHat版本名称为/etc/sendmail.mc ,OpenLinux版本则放在/usr/share/sendmail/cf/cf/gerneric-col2.2.mc;此外/etc/aliases、/etc/access、/etc/mail/relay-domains亦为sendmail的相关设定檔。
(37) services
一般而言Linux或Unix的操作系统port号码常定义在/etc/services文件中由port号码可辨示出application process(应用程序行程)即网络服务例如ftp、telnet;在services文件中256以下port号码保留给常用的网络服务,256到1024的port号码则由特定的Linux服务使用,另不同的Transport Layer(传输层)可以共享相同的port号码;port号码必须与协议号码共同搭配始能将资料导引到正确的网络服务。
(38) shadow
Shadow passwording将密码移到另一个文件,本文件即属密码文件而与/etc/passwd搭配;权限上则较为严格,一般而言,仅有root有读写(Caldera distribution)或读(RedHat distribution)的权利。
(39) skel
本目录下之文件内容例如:.bash_logout、.bash_profile、.bashrc、.kde、.kderc、.netscape、.screenrc、Destop等即是用来在建立一新的使用者时在/home/目录下的使用者名称目录的内容即烤贝至skel此目录下之文件内容。
(40) sysconfig/network-sccripts/ifcfg-eth?
本文件为网络卡的设定档内容有设备名称、IP地址、屏蔽、广播地址、网段、开机激活设定等项目。
(41) wgetrc
wget乃使用来将World wide web上之文件取回之工具指令,wgetrc文件则是wget初始化的文件其中有quota、mail header、重传文件的预设次数、firewall及proxy的相关设定。
(42) z*
以下z开头的文件均为zshell相关的设定档zlogin系指z shell的登入设定;zlogout系指z shell的注销设定;zprofile系指z shell的使用者设定;zshenv系指z shell的使用环境设定;zshrc系指z shell的资源档设定。
2./dev:
本目录中存放了device file(装置文件),使用者可以经由核心用来存取系统中之硬设备,当使用装置文件时 核心会辨识出I/O Request传递到相对应装置的驱动程序以便完成特定的动作;每个装置在/dev目录下均有一个相对应的项目;另/dev目录下尚有一些项目是没有的装置这通常是安装系统时所建立的,它不一定对应到实体的硬件装置;此外亦有一些虚拟的装置,不对应到任何实体装置,例如俗称黑洞装置的/dev/null,任何写入该档的请求均会被执行但被写入的资料均会如进入黑洞般的消失无踪。
在/dev目录下第一栏的文件型态会发现常存有既非directory亦非file而是“b”或”c”,”b”指block device file(区块装置文件),”c”指character device(字符装置文件);区块装置(例如硬盘)通常是外接装置,资料的读写都是以整个区块的形式进行读写,字符装置(例如串行端口),资料的读写都是以一个byte来进行读写。
(1) /dev/fd*
fd0、fd1--------等指第几个软盘支持的装置驱动接口,fd0表示第一个fd1表示第二个。
(2) /dev/hd
系指IDE硬盘的装置驱动接口,在/dev/lilo.conf设定中boot=/dev/hda即指整颗硬盘,/dev/hda1则指硬盘中的第一个partition。
(3) /dev/sd
系指SCSI磁盘的装置驱动接口。
(4) /dev/console
系指系统的操作控制台乃实际连接到Linux操作系统的屏幕。
(5) /dev/tty
系指提供使用者不同的terminal操作控制台的装置驱动接口,并有virtual console的功能切换上可使用ctrl+alt+F1~F6。
(6) /dev/ttyS?
ttyS系指串行端口接口ttyS0即为COM1,ttyS1即为COM2
3./boot:
本目录下放置有系统激活的相关文件例如initrd.img、vmlinuz、System.map,均为重要的文件,是以本目录不可任意删除。
initrd.img为系统激活时最先加载的文件。
Vmlinuz即为kernel的image文件。
System.map包括了kernel的功能及位置。top、ps指令会去读此文件来显示系统目前的信息状态。因此System.map必须对应到相同的kernel,不然会显示错误的信息。
4./home:
一般而言,使用者的家目录就($HOME)是放在/home这个目录下,而以使用者名称作为/home目录下各个目录的名称例如使用者col的家目录路径即为/home/col目录下当使用者col login时,其所在的目录即为/home/col,此外ftp站台目录(ftp)及web站台目录(httpd)亦置于/home目录下。
5./lib:
许多系统激活时所需要用到重要的共享函式库shared libraries均放于此,包含最重要的GNU C library在内,凡档名为library.so.version的共享函式库,通常放在/lib目录下。
/usr/lib/:
本目录与/lib目录不同的是/lib乃系统激活时所需要用到重要的共享函式库而/usr/lib乃关于应用软件常置放函式库之处;例如放置一些其它应用程序(如Netscape、X server)等的share libraries。其中,最重要的函式库为libc或glibc (glibc 2.x便是libc 6.x版本,标准C语言函式库)。几乎所有程序都会用到libc或glibc,因为这两个程序提供了对于Linux kernel的标准接口。又档名为library.a的静态函式库,通常亦放在/usr/lib目录下。
6./lost+found:
一般重启或关闭system,可下sync;sync.避免有些message会留在硬盘之cache上,此时dirty bit为1,当再开机时,system会去检查每一个dirtybit是否为0,如果为1则会执行fsck。作fsck时,常会问要否删除dirtybit,如选yes时,会把inode集中放在lost+found®用file 指令去查寻,不重要再行删除即可(inode number)。简单言之,本目录乃记录硬盘上的partition于资料流失时作fsck寻找回来的遗失文件片段。
7./mnt:
本目录为系统内定的mount point(挂载点),预设则有/nnt/cdrom和/mnt/floppy,使用自动的挂载程序例如KDE桌面上的cdrom与floppy或者GNOME的Drive Mount Applet,均会自动地把光驱和软盘机挂载至这二个目录。如果要挂加载额外的文件系统,一般而言我们都会将/mnt目录当作挂载点,然后在该目录下建立任一目录名称作为挂载目录;家目录把同一颗硬盘上的另一个Window 2000操作系统mount到本机Linux操作系统上则可用此法。
8./proc:
本目录为一个虚拟的文件系统,其功能乃在统一文件与行程,它不占用任何硬盘空间,因为该目录下的文件均放置于内存内;每当你存取/proc文件系统时kernel会拦截你的存取动作撷取相关信息再动态的产生目录与文件内容。
本目录下主要有二大形态的文件;其一是以PID数字为文件名,/proc会记录系统每个行程,有助于系统的管理于与除错;其二乃kernel所搜集到的系统使用的硬件信息例如/proc/ioports、/proc/dma、/proc/meminfo、/proc/interrupts均属之。
9./root:
本目录为系统管理者 root的家目录。
10./bin:
bin为binary的简写主要放置一些系统的必备执行文件例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。
/usr/bin:
主要放置一些应用软件工具的必备执行文件例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、newaliases、nslookup passwd、quota、smb*、wget等。
/sbin:
主要放置一些系统管理的必备程序例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、runlevel、shutdown等。
/usr/sbin:
放置一些网络管理的必备程序例如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等。
11./tmp:
本目录乃供全体使用者暂时放文件的目录,有时某些应用程序执行中产生的临时文件亦会暂放至此目录;然而系统预设本目录权限为可读、写、执行但无法删除之1777(drwxrwxrwt)亦即多加上save program text on swap device即t 的权限;以避免有人任意删除他人存放于/tmp目录的文件。
12./var:
Linux操作系统经常需要变动的或暂存的资料常放在固定的目录而后系统新产生的资料都会在这个文件中作更新;在这个目录下有几个重要的目录例如:/var/log;/var/spool;/var/run等以下兹分别介绍之:
(1) /var/log
log文件乃记载着Linux操作系统运作过程的记录分别有激活纪录(boot)、网站存取、错误、安全记录(httpd/access_log、httpd/error_log、httpd/ssl*)、邮件记录(maillog)、登入讯息(secure)、FTP讯息(xferlog)。
(2) /var/spool
spool乃Linux操作系统将工作暂放置于内存特定区域或硬盘上特定设备,/var/spool是一个队列目录提供spool服务,其底下最为重要的目录即为lpd、mail、squid等三个目录;打印文件的print queue会在/var/spool/lpd。
文章来源于领测软件测试网 https://www.ltesting.net/