Linux入门(七)-文件系统介绍

五、文件系统

你可能听过其他人以各种不同和令人迷惑的方式谈论过文件系统。文件系统这个单词本身有多重含义,你需要从一个讨论或文件的上下文中理解它的正确含义。
在不同情况下使用“文件系统”这个词来定义它的不同含义。

  • 始于顶层 root(/)目录的整个 Linux 目录结构。
  • 特定类型的数据存储格式,比如 EXT3、EXT4、BTRFS 以及 XFS 等等。Linux 支持近百种类型的文件系统,包括一些非常老的以及一些最新的。每一种文件系统类型都使用它自己独特的元数据结构来定义数据是如何存储和访问的。
  • 用特定类型的文件系统格式化后的分区或逻辑卷,可以挂载到 Linux 文件系统的指定挂载点上。
    磁盘存储是文件系统必须的功能,它与之伴生的有一些有趣而且不可或缺的细节。很明显,文件系统是用来为非易失数据的存储提供空间,这是它的基本功能。然而,它还有许多从需求出发的重要功能。

所有文件系统都需要提供一个名字空间,这是一种命名和组织方法。它定义了文件应该如何命名、文件名的最大长度,以及所有可用字符集中可用于文件名中字符集子集。它也定义了一个磁盘上数据的逻辑结构,比如使用目录来组织文件而不是把所有文件聚集成一个单一的、巨大的文件混合体。

定义名字空间以后,元数据结构是为该名字空间提供逻辑基础所必须的。这包括所需数据结构要能够支持分层目录结构,同时能够通过结构来确定硬盘空间中的块是已用的或可用的,支持修改文件或目录的名字,提供关于文件大小、创建时间、最后访问或修改时间等信息,以及位置或数据所属的文件在磁盘空间中的位置。其他的元数据用来存储关于磁盘细分的高级信息,比如逻辑卷和分区。这种更高层次的元数据以及它所代表的结构包含描述文件系统存储在驱动器或分区中的信息,但与文件系统元数据无关,与之独立。

文件系统也需要一个应用程序接口(API),从而提供了对文件系统对象,比如文件和目录进行操作的系统功能调用的访问。API 也提供了诸如创建、移动和删除文件的功能。它也提供了算法来确定某些信息,比如文件存于文件系统中的位置。这样的算法可以用来解释诸如磁盘速度和最小化磁盘碎片等术语。

现代文件系统还提供一个安全模型,这是一个定义文件和目录的访问权限的方案。Linux 文件系统安全模型确保用户只能访问自己的文件,而不能访问其他用户的文件或操作系统本身。

最后一块组成部分是实现这些所有功能所需要的软件。Linux 使用两层软件实现的方式来提高系统和程序员的效率。

在这里插入图片描述
图片 1:Linux 两层文件系统软件实现。

这两层中的第一层是 Linux 虚拟文件系统。虚拟文件系统提供了内核和开发者访问所有类型文件系统的的单一命令集。虚拟文件系统软件通过调用特殊设备驱动来和不同类型的文件系统进行交互。特定文件系统的设备驱动是第二层实现。设备驱动程序将文件系统命令的标准集解释为在分区或逻辑卷上的特定类型文件系统命令。

5.1 查看目录结构tree

  • tree
tree abc ///显示abc之下的目录结构
tree -L 1 /
/
├── bin -> usr/bin # 用于存放二进制命令,比如说cp,ls,kill
├── boot # 存放的是启动Linux时使用的一些核心文件,内核及引导系统程序所在的目录
├── dev # 所有设备文件的目录(如磁盘、光驱等),类似于windows的设备管理器,
├── etc # 配置文件默认路径、服务启动命令存放目录,存放所有系统管理所需要的配置文件,比如说mysql中的配置文件,my.conf
          |----skel 目录一般是存放用户启动文件的目录,这个目录是由root权限控制,当我们添加用户时,这个目录下的文件自动复制到新添加的用户的家目录下;
├── home # 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录是以用户的账号命名的,root用户为/root
├── lib -> usr/lib # 32位库文件存放目录,库文件存放目录
├── lib64 -> usr/lib64 # 64位库文件存放目录
├── media # 媒体文件存放目录,Linux会识别一些设备,例如U盘,光驱等等,识别后,Linux会把识别的设备挂载到这个目录下
├── mnt # 临时挂载设备目录
├── opt # 自定义软件安装存放目录,正常这个文件夹是用来放安装包的
├── proc # 别动,进程及内核信息存放目录,这是系统内存的映射
├── root # 系统管理员root的用户主目录
├── run # 系统运行时产生临时文件,存放目录
├── sbin -> usr/sbin # 存放系统管理员使用的系统管理指令
├── srv # 别动,service的缩写,存放的是一些服务启动之后需要使用的数据
├── sys #别动, 系统使用目录
├── tmp # 临时文件目录
├── usr # 系统命令和帮助文件目录,用户的很多应用程序和文件都放在这个目录下,有点像Windows下的program files目录
		|----/usr/local  #安装后的程序存放的地方
├── /selinux #全名— security enhanced linux,安全加强linux。这个类似于windows中的杀毒软件,是一种安全系统,比如收到攻击的时候这个文件会被触发
└── var # 存放内容易变的文件的目录

注意:
Linux系统只有一个根目录“ / ”
Linux系统每个目录存放要存放的内容是规划好的,一般不要乱放文件
Linux以文件的形式来管理我们的设备,因此Linux系统一切皆文件
对根目录下的每个子目录要有一定的了解,每个目录用来放什么

5.2 几种重要的系统文件

5.2.1 网卡配置文件

网卡配置文件为:/etc/sysconfig/network-scripts/ifcfg-eth0

cat /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE=Ethernet # 类型为以太网
PROXY_METHOD=none # 代理方式:关闭状态
BROWSER_ONLY=no # 只是浏览器:否
BOOTPROTO=static # 网卡引导协议为静态,dhcp为动态
DEFROUTE=yes # 默认路由:开启
IPV4_FAILURE_FATAL=no # 是否开启ipv4致命错误检测:否
IPV6INIT=yes # IPv6是否自动初始化:是
IPV6_AUTOCONF=yes # ipv6是否自动配置
IPV6_DEFROUTE=yes # ipv6是否可以为默认路由
IPV6_FAILURE_FATAL=no # 是否开启ipv6致命错误检测:否
IPV6_ADDR_GEN_MODE=stable-privacy # ipv6地址生成模型
NAME=eth0 # 网卡名称
# 以下几项为手动配置
ONBOOT=yes # 网卡开机自启动
IPADDR=192.168.10.3 # IP地址
PREFIX=24 # 子网掩码
GATEWAY=192.168.10.254 # 网关地址
DNS1=223.5.5.5 # DNS地址

5.2.2 DNS配置文件

DNS(Domain Name System)用于将域名解析为IP地址,

本地DNS配置文件为:/etc/resolv.conf

cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 223.5.5.5

5.2.3 系统hosts文件

hosts文件是主机IP地址与主机名或域名对应的解析配置文件,进行本地解析。所有内网服务器hosts文件都保持一致。
夫妻之间的服务通信、接口调用等可以用hosts文件中的域名或主机名代替IP

文件路径为:/etc/hosts

cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.2 nginx-lb
192.168.10.3 nginx01
192.168.10.4 tomcat01
192.168.10.5 tomcat02

5.2.4 主机名配置文件

可以在此文件中修改主机名,
也可以通过命令hostnamectl set-hostname 主机名直接进行修改

文件路径为:/etc/hostname

5.2.5 fstab文件

这个文件是记录开机需要自动挂载的文件系统的配置文件,也就是常说的永久挂载
临时挂载命令为:mount 文件系统 挂载点

文件的路径为:/etc/fstab

cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Sun Jan 10 03:40:54 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=cafe565d-aa74-4650-97cf-917c79d997d1 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
上面内容包含两条挂载信息,挂的信息分为六列,含义分别为:
1.被挂载的设备名称
2.挂载点
3.文件系统类型
4.挂载选项。default为默认
5.是否需要备份,0为不需要
6.是否需要开机检查,0为不需要

5.2.6 rc.local文件

用于存放开机自启动服务命令,可以将命令直接写入此配置文件中,
配置完成后,需要执行chmod +x /etc/rc.d/rc.local属于该文件的执行权限

路径为:/etc/rc.local

cat /etc/rc.local 
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local

5.2.7 全局环境变量配置文件

此文件中配置对所有用户生效,如果需要对某用户配置环境变量,需要在其家目录下.bash_profile文件中做出配置。

路径为:/etc/profile

cat /etc/profile

export JAVA_HOME=/app/jdk
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$PATH:$JAVA_HOME/bin
上面内容为为JDK配置的环境变量。配置完成后运行source /etc/profile使其生效。

5.2.8 /etc/skel目录

/etc/skel 目录下的文件,一般是我们用useradd 和adduser命令添加用户(user)时,系统自动复制到新添加用户(user)的家目录下;如果我们通过修改 /etc/passwd来添加用户时,我们可以自己创建用户的家目录,然后把/etc/skel 下的文件复制到用户的家目录下,然后要用chown来改变新用户家目录的属主;

5.2.8 定时任务配置文件

此文件路径为:/var/spool/cron/
可以直接使用命令crontab -e进行编辑。

5.3 文件权限

5.3.1 查看文件权限命令ls

ls(英文全拼:list files)命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。

 ls [-alrtAFR] [name...]
参数 :
无参数,显示当前工作目录下的文件
-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 若目录下有文件,则以下之文件亦皆依序列出

实例:

  • 列出根目录()下的所有目录:
    ls /
    bin dev lib media net root srv upload www
    boot etc lib64 misc opt sbin sys usr
    home lost+found mnt proc selinux tmp var
  • 列出目前工作目录下所有名称是 s 开头的文件,越新的排位越靠后 :
    ls -ltr s*
  • 将 /bin 目录以下所有目录及文件详细资料列出 :
    ls -lR /bin
  • 列出目前工作目录下所有文件及目录;目录于名称后加 “/”, 可执行档于名称后加 “*” :
    ls -AF

5.3.2 文件权限描述

使用ls -l命令会出现如下文件信息:

- rw-r-xr--   1 user  group 4096 May 9 14:43 text.txt
  1. 第一个字符代表这个文件类型

[d]:目录
[-] :文件
[l]:连结档(link file);
[b]:装置文件里面的可供储存的接口设备(可随机存取装置)
[c]:装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)

  1. 接下来9个符号为文件权限
  • r (read):
    可读取此一文件的实际内容,如读取文本文件的文字内容等
    对于目录而言,表示具有读取目录结构列表的权限,表示可以查询该目录下的文件名数据。所以就可以利用ls 这个指令将该目录的内容列表显示出来。
  • w(write):
    可以编辑、新增或者是修改该文件的内容(但不含删除该文件,此权限规上级目录所有)
    对目录而言,目录有了 w 权限,相当于以下权限:
    建立新的文件和目录
    删除底下的文件和目录(无论文件的权限如何)
    对文件和目录进行改名
    对目录下的文件进行移动
  • x(execute):
    该文件具有可以被系统执行的权限,
    目录的x代表的是用户能否进入该目录成为工作目录的用途,即可以用cd命令进入该目录。
  • -:
    无权限
    前三个符号是文件拥有者权限、中间三个符号是文件拥有者权限、后三个符号为其他人权限
    上图表示文件拥有者可读可写,所属群组和其他人仅可读
    可用数字表示为: r=4,w=2,x=1 因此rwx=4+2+1=7
    示例:
    chmod 741 文件/目录
  1. 1: 如果是文件,表示硬链接的数目, 如果是目录,则表示有多少个子目录 ,目录会包含./本目录与…/上级目录,所以实际数量会比显示数量少2个。
  2. user 文件或者目录所有者。
  3. group 文件或者目录所在的组
  4. 4096 表示文件大小,如果是目录,则统一为 4096 ,并不是代表目录下面所有文件的大小,它代表的是目录本身所占空间的大小(目录是一种特殊的文件))
  5. May 9 14:43 文件最后修改的时间。

5.4 修改文件权限

5.4.1 修改文件权限chmod

5.4.1.1 通过+、-、=变更权限
chmode 选项 文件/目录
选项:
u:所有者(user) 
g:所有组(group) 
o:其他人(other)  
a:所有人(u、g、o的总和)(all)  
示例:
1) chmod   u=rwx,g=rx,o=x     文件、目录 【表示:给所有者rwx, 给所在组的用户 rx, 给其他人 x】  
2) chmod   o+w                文件、目录 【表示:给其它用户增加w 的权限】  
3) chmod   a-x                文件、目录    【表示:给所有用户 去掉 x权限】 
5.4.1.2 通过数字变更权限

r=4 w=2 x=1
组合:
rwx=4+2+1=7
rw-=6
r-x=5
r–=4
-wx=3
-w-=2
–x=1


chmod u=rwx,g=rx,o=x    文件、目录
相当于 chmod   751  文件、目录  ( 7(rwx)5(rx)1(x)  )

5.4.2 修改文件所有者/组chown

chown有两个功能,既可以修改文件所有者,也可以修改文件所属组(相当于chgrp指令)。

chown  [-R] newowner:newgroup  file
可以不填:newgroup ,只修改文件所有者
可以不填newower,使用:newgroup,修改文件所有组
或者两者同时修改
-R   如果是目录 则使其下所有子文件或目录递归生效

5.4.3 修改文件所在组chgrp

chgrp [-R] newgroup file  改变文件的所有组
-R   如果是目录 则使其下所有子文件或目录递归生效
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值