Linux_FHS目录作用分析

核能气质少年 提交于 2019-12-03 23:54:22

总目录概览

目录 英文全名 用途
/bin Binaries 用于存放最常用的二进制命令
/boot Boot 包含引导Linux的重要文件,如grub和内核文件等
/dev Devices 所有设备都在该目录下,包括硬盘和显示器等
/etc etc 系统的所有配置文件都放在它下面
/home Home 存放个用户的家目录($HOME)及其文件和配置
/lib Libraries 系统的库文件,有点像Windows的Program Files
/lost+found lost+found 用于存放系统异常时丢失的文件(如突然宕机),以利于恢复
/media Media 用于加载各种媒体,如光盘、软盘等
/mnt Mount 用于加载各种文件系统
/opt Optionally 用于存放安装的“可选”程序
/proc Processes 包含进程等信息,是内存的映射,不是真实目录
/root Root 该目录是root用户的家目录($HOME)
/run Run 该目录是是系统每次重启时生成的tmpfs,其真正的链接是/var/run
/sbin System-only binaries 用于存放系统专用的二进制命令
/srv Service 服务启动之后需要访问的数据目录
/sys System 用于存放系统信息
/tmp Temporary files 用于存放临时文件
/usr User 用于存放普通用户的应用程序、库文件和文档等
/var Variable files 用于存放那些在时间、大小、内容上会经常变化的文件

/bin目录

注意:
文件权限除了

  • r:4
  • w:2
  • x:1

外,还有:

  • SUID:4
  • SGID:2
  • SBIT:1

SUID

(1)SUID权限仅对二进制程序有效;
(2)执行者对于该程序需要具有x的可执行权限;
(3)本权限仅在执行该程序的过程中有效;
(4)执行者将具有该程序所有者的权限。

SGID

对二进制程序:
(1)SGID对二进制程序有用;
(2)程序执行者对该程序需具备x权限;
(3)执行者在执行过程中会获得该程序用户组的支持。
对目录:
(1)用户若对此目录具有r和x权限,该用户能够进入该目录;
(2)用户在此目录下的有效用户组将变成该目录的用户组;
(3)若用户在此目录下拥有w权限,则用户所创建的新文件的用户组与该目录的用户组相同。

SBIT

SBIT目前只对目录有效。
SBIT对目录的作用是:
(1)当用户对此目录具有w和x权限时,即具有写入权限时;
(2)当用户在该目录下创建新文件或目录时,仅有自己和root才有权力删除。

文件夹 文件 用途
/bin ... man command

/boot目录

文件夹 文件 用途
/boot vmlinuz-3.10.0-957.el7.x86_64 内核文件
/boot initramfs-3.10.0-957.el7.x86_64.img
initramfs是改进版的tmpfs,不仅可以交换分区,还可以设定一个tmpfs装载点的最大尺寸以免耗尽内存
/boot System.map-3.10.0-957.el7.x86_64 特定内核的内核符号表,是当前运行的内核的System.map的链接
/etc/grub 引导装置配置文件

如须了解更多,请点击:/boot目录介绍

/dev目录

文件夹 文件 用途
/dev console 系统控制台,也就是直接和系统链接的监视器
/dev fd 软驱设备驱动程序
/dev null “黑洞”,所有写入该设备的信息都将会消失
/dev sda scsi硬盘驱动程序接口
/dev tty 提供虚拟控制台支持
/dev ttys 计算机串行接口
/dev pty 提供远程登陆伪终端支持

/etc目录

文件夹 文件 用途
/etc aliases,aliases.db alias给命名指定别名
/etc/alternatives 只能在root权限下执行,常用于同一个系统中安装同一软件的多个版本
/etc/audit,/etc/audisp audit可以将(用户空间)审计记录写入日志文件,包括记录系统调用和文件访问。管理员可以检查这些日志,确定是否存在安全漏洞
/etc/cloud 当系统启动时,cloud-init可从nova metadata服务或者config drive中获取metadata,完成一些定制化工作,如设置default locale、设置hostname、添加ssh key、设置用户密码、配置网络和安装软件包等
/etc crypttab 用于描述在系统启动过程中创建的加密块设备(加密卷)
/etc csh.cshrc,csh.login,profile 登录或启动时bourne或Cshell执行的文件,这允许系统管理员为所有用户建立全局缺省环境,里面 可以添加对所有用户有效的环境变量、系统配置等
/etc/depmod.d depmod:分析可加载模块的依赖性,生成modules.dep文件和映射文件;lsmod:列出内核已载入模块的状态;modprobe:内核添加删除模块;modinfo:显示内核模块的信息;insmod:向内核中插入一个模块;rmmod:删除内核中的一个模块
/etc dracut.conf dracut用于制作initrd启动镜像文件,dracut-network会为镜像内添加nfs等网络支持
/etc e2fsck.conf e2fsck为磁盘修复命令,如突然断电后可能产生磁盘坏道,使用该命令进行磁盘修复
/etc exports NFS的配置文件
/etc fstab 指定启动时需要自动安装的文件系统列表,也包括用sapon -a启用的swap区的信息
/etc GeoIP.conf GeoIP是一套含IP数据库的软件工具,Geo会根据来访者的IP,定位该IP所在经纬度、国家/地区、省市和街道等位置信息。因为GeoIP赌气的是本地的二进制IP数据库,所以效率很高,比从APNIC读取再转高很多
/etc groff groff命令把标准的文本和特殊的命令翻译成格式化的输出
/etc idmapd.conf 这是一个libnfsidmap的排位置文件,由idmapd和svcgssd将NFSv4的名称映射到ids
/etc inittab init的配置文件
/etc inputrc 用于告知系统应该以怎样的键盘布局处理键盘
/etc issue 包含用户在登录提示符前的输出信息。通常包括系统的一段短说明或欢迎信息,具体内容由系统管理员确定
/etc kdump.conf kdump 是一种先进的基于 kexec 的内核崩溃转储机制。当系统崩溃时,kdump 使用 kexec 启动到第二个内核。第二个内核通常叫做捕获内核,以很小内存启动以捕获转储镜像。第一个内核保留了内存的一部分给第二内核启动用。由于 kdump 利用 kexec 启动捕获内核,绕过了 BIOS,所以第一个内核的内存得以保留。这是内核崩溃转储的本质。由于能够分析核心转储显著有助于确定系统故障的确切原因,强烈建议启用此功能。kdump 需要两个不同目的的内核,这两个内核被称为kdump kernel,生产内核和捕获内核。生产内核是捕获内核服务的对像。捕获内核会在生产内核崩溃时启动起来,与相应的 ramdisk 一起组建一个微环境,用以对生产内核下的内存进行收集和转存
/etc krb5.conf Kerberos的配置文件,Kerberos协议主要用于计算机网络的身份鉴别(Authentication),其特点是用户只需输入一次身份验证信息就可以凭借此雅正获得的票据(ticket-granting ticket)访问多个服务
/etc ld.so.conf 此文件记录了编译时使用的动态库的路径,也就是加载so库的路径。默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,而通常通过源码包进行安装时,如果不指定--prefix会将库安装在/usr/local目录下,而又没有在文件/etc/ld.so.conf中添加/usr/local/lib这个目录>。这样虽然安装了源码包,但是使用时仍然找不到相关的.so库,就会报错。也就是说系统不知道安装了源码包
/etc locale.conf 用于全系统范围的本地化(locale)设置
/etc login.defs login命令的配置文件
/etc logrotate.conf logrotate程序是一个日志管理工具,可以“转储”,压缩日志,发送至指定e-mail
/etc machine-id 包含一个在安装或首次启动操作系统时生成的,专属于本系统的、独一无二的“machine ID”
/etc magic "file"配置文件,包含不同文件格式的说明,"file"基于它猜测文件类型
/etc mke2fs.conf mkesfs用于在磁盘分区上创建ext2、ext3、ext4文件系统,默认情况下会创建ext2
/etc motd motd是message of the day的缩写,用户成功登录后自动输出。内容由系统管理员确定。常用于通告系信息,如计划关机时间的警告等
/etc mtab 当前安装的文件系统列表。由脚本(scritp)初始化,并由mount命令自动更新。当需要一个当前安装的文件系统的列表时使用(例如df命令)
/etc my.cnf MySQL的配置文件
/etc netconfig 该文件描述了主机上的所有传输协议
/etc networks 它用在IP范围和网络名称之间转换,它用于像Netstat和路由这样的工具,它只在A类、B类或C类网络上工作,它不在子网上工作
/etc nsswitch 服务搜索顺序
/etc/openldap LDAP是轻量目录访问协议(Lightweight Directory Access Protocol)的缩写,它是一个为查询、浏览和搜索而优化的专业分布式数据库。目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。所以目录天生是用来查询的,就好象它的名字一样
/etc os-release,*-release 用于查看系统版信息
/etc ovirt-guest-agent.conf oVirt(Open Virtualization)是类似于VMware的vSphere,基于KVM(Kernel-based Virtual Machine)虚拟化技术的开源IaaS云服务解决方案
/etc/pam.d PAM模块的配置文件,重要
/etc passwd 用户数据库,其中的域给了用户名、真实姓名、用户起始目录、加密口令和用户的其他信息
/etc/pkcs11 pam-pkcs 11是一个pam(可插入身份验证模块)插件,它允许登录到unix/linux系统,通过使用存储在智能卡中的数字证书来支持pam
/etc polkit-1 polkit 是一个应用程序级别的工具集,通过定义和审核权限规则,实现不同优先级进程间的通讯:控制决策集中在统一的框架之中,决定低优先级进程是否有权访问高优先级进程
/etc/popt popt 库的存在,主要是为了解析命令行选项,它不使用全局变量,因此可以并行解析argv;它可以解析任意的argv风格的元素数组,可以解析来自任何源文件的命令行字符串(ps:估计是命令行字符串参数可保存在文件中,程序通过导入配置文件解析获得参数);它提供了一个使用选项别名的标准方法;它可以执行外部选项过滤器;最后,它能够自动生成程序的help和usage信息
/etc/postfix Postfix是一个邮件传输客户端(MTA),它也是ubuntu种默认的邮件传输客户端
/etc/ppp if-up,if-down,peers 有关网络接口的设置
/etc prlink.conf.d Prelink利用事先链接代替运行时链接的方法来加速共享库的加载,它不仅可以加快起动速度,还可以减少部分内存开销,是各种 Linux 架构上用于减少程序加载时间、缩短系统启动
/etc printcap printcap数据库是用于描述打印机的termcap数据库的简化版本。每次使用时,后台系统都会访问printcap文件,因此您可以动态添加或删除打印机。数据库中的每个条目都描述了一个打印机
/etc protocols 包含有关DARPA网络中使用的已知协议的信息
/etc/qemu-ga qga是一个运行在虚拟机内部的普通应用程序(可执行文件名称默认为qemu-ga,服务名称默认为qemu-guest-agent),其目的是实现一种宿主机和虚拟机进行交互的方式,这种方式不依赖于网络,而是依赖于virtio-serial(默认首选方式)或者isa-serial,而QEMU则提供了串口设备的模拟及数据交换的通道,最终呈现出来的是一个串口设备(虚拟机内部)和一个unix socket文件(宿主机上)。qga通过读写串口设备与宿主机上的socket通道进行交互,宿主机上可以使用普通的unix socket读写方式对socket文件进行读写,最终实现与qga的交互,交互的协议与qmp(QEMU Monitor Protocol)相同(简单来说就是使用JSON格式进行数据交换),串口设备的速率通常都较低,所以比较适合小数据量的交换
/etc/rc.d rc.d详解
/etc request-key.conf 当内核被请求要一个它没有立即可用的键时,这个程序就会被内核调用。内核创建一个部分设置的键,然后调用这个程序来实例化它,并不打算直接调用它
/etc resolv.conf DNS客户机配置文件,设置DNS服务器的IP地址及DNS域名
/etc/rhsm rhsm是Red Hat Subscription Manager的缩写
/etc/rpm rpm是Red-Hat Package Manager的缩写
/etc rsyncd.conf Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录。请参考rsync详解
/etc rsyslog.conf rsyslog 是一个 syslogd 的多线程增强版。rsyslog负责写入日志, logrotate负责备份和删除旧日志, 以及更新日志文件
/etc/sasl2 SMTP服务的配置文件
/etc securetty 该文件允许你规定"root"用户可以从哪个tty设备登录,登录程序(通常是/bin/login)需要读取"/etc/securetty"文件
/etc/security limits.conf 该文件限制着用户可以使用的最大文件数,最大线程,最大内存等资源使用量,也可使用"ulimit"命令查看
/etc/selinux SELinux是个经过安全强化的Linux操作系统
/etc services 该文件包含网络服务和它们映射端口的列表。inetd 或 xinetd 会查看这些细节,以便在数据包到达各自的端口或服务有需求时,它会调用特定的程序
/etc sestatus.conf sestatus工具用于获取运行selinux系统的状态。该文件由sestatus命令与-v选项一起使用,以确定应显示什么文件和进程安全上下文
/etc shadow 在安装了影子(shadow)口令软件的系统上的影子口令文件。影子口令文件将/etc/password文件中的加密口令移动到/etc/shadow中,而后者只对超级用户(root)可读。这使破译口令更困难,以此增加系统的安全性
/etc shells 记录当前系统支持的shell环境
/etc/skel 该目录是用来存放新用户配置文件的目录,当我们添加新用户的时候,这个目录下的所有文件会自动被复制到新添加的用户的家目录下。这个目录下的所有文件都是隐藏文件(以.点开头的文件)通过修改、添加、删除/etc/skel目录下的文件,我们可为新创建的用户提供统一的、标准的、初始化用户环境
/etc/ssl SSL证书
/etc/systemd systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。systemd对应的进程管理命令是systemctl
/etc/terminfo Terminfo 已经永久取代了Termcap ,但为了兼容性,一些Unix仍然拥有Termcap文件。Linux系统将每种终端类型的terminfo数据作为一个单独的文件存储在terminfo数据库目录
/etc/tuned Linux性能优化特性Tuned和ktune,Tuned本质上是一个Linux环境中的后台进程,在运行过程中依据配置内容监控调整系统。监控程序会根据监控的配置内容,监控进程会持续监控结果反馈,调整优化策略。Ktune进程是在Red Hat 5.3引入的一项架构服务内容,为一些特定的用例场景来优化进程
/etc vconsole.conf 文件被 udev 规则 90-vconsole.rules 用来配置虚拟控制台的键盘映射与字体。 如果你不想以这种方式初始化控制台的设置,那么可以安全的屏蔽 90-vconsole.rules 文件
/etc virc vi编辑器配置文件
/etc/wpa_supplicant wpa_supplicant是linux系统下一个非常强大的无线网卡管理程序
/etc/X11 目前Ubuntu使用的X server
/etc/xdg xdg自动启动规范定义了一种在桌面环境启动和可移动介质安装上自动启动普通桌面条目的方法,方法是将它们放置在特定的目录下
/etc xinetd.d 在Linux系统中有一个超级服务程序inetd,大部分的网络服务都是由它启动的,如chargen、echo、finger、talk、telnet、wu-ftpd等,在旧版本它的设置是在/etc/inetd.conf中配置的。在新版本,它就改成了一个xinetd.d目录。在xinetd.d目录中,每一个服务都有一个相应的配置文件

/home目录

文件夹 文件 用途

/lib目录

文件夹 文件 用途

/lost+found目录

文件夹 文件 用途

/media目录

文件夹 文件 用途

/mnt目录

文件夹 文件 用途

/opt目录

文件夹 文件 用途

/proc目录

文件夹 文件 用途

/root目录

文件夹 文件 用途

/run目录

根据linux的文件系统分层结构标准(FHS)中的定义:

  • /var/run 目录中存放的是自系统启动以来描述系统信息的文件。
  • 比较常见的用途是daemon进程将自己的pid保存到这个目录。
  • 标准要求这个文件夹中的文件必须是在系统启动的时候清空,以便建立新的文件。

为了达到这个要求,linux中/var/run使用的是tmpfs文件系统,这是一种存储在内存中的临时文件系统,当机器关闭的时候,文件系统自然就被清空了。使用df -Th命令能看到类似的输出结果:

# df -Th /var/run
Filesystem     Type   Size  Used Avail Use% Mounted on
tmpfs          tmpfs  2.0G  9.0M  2.0G   1% /run

从该输出结果可看出,/var/root是一个tmpfs文件系统,并且它被挂载到/run目录下
当然,/var/run除了保存进程的pid之外也有其他的作用,比如utmp文件,就是用来记录机器的启动时间以及当前登陆用户的。

为什么要使用/run代替
这是因为/var/run文件系统并不是在系统一启动就是就绪的,而在此之前已经启动的进程就先将自己的运行信息存放在/dev中,/dev同样是一种tmpfs,而且是在系统一启动就可用的。但是/dev设计的本意是为了存放设备文件的,而不是为了保存进程运行时信息的,所以为了不引起混淆,/dev中存放进程信息的文件都以”.”开始命名,也就是都是隐藏文件夹。但是即便是这样,随着文件夹的数量越来越多,/dev里面也就越来越混乱,终于有人坐不住了,所以引入了替代方案,也就是 /var/run。

使用/var/run有什么好处
主要就是解决了上边说的管理不一致,最终使各个发行版统一管理。最终将/var/run和/var/lock都归并到/run中。而且在也不用使用隐藏文件夹这种伎俩了,对管理员来说轻松了不少。同样/dev中也不会有不相关的内容了。

文件夹 文件 用途
/run *.pid 保存进程的pid
/run *.sock 生成进程的socket
/run *.lock 生成进程的互斥锁
/run utmp 记录机器的启动时间以及当前登陆用户
/run/dbus 数据总线,是一个低延时、低开销、高可用性的ipc机制。目前dbus已被大多数Linux发行版所采用,开发者可使用D-Bus实现各种复杂的进程间通信任务
/run/systemd 系统初始化过程中包含的Units
/run/udev (用户模式)设备文件管理工具

/sbin目录

文件夹 文件 用途

/srv目录

文件夹 文件 用途

/sys目录

文件夹 文件 用途

/tmp目录

文件夹 文件 用途

/usr目录

文件夹 文件 用途

/var目录

文件夹 文件 用途
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!