Linux 文件系统介绍
2024-07-26 00:30:46
供稿:网友
一、简介:
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之档案内容。
(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