Skip to content

文件系统

  • Linux 系统中,一切都是文件

硬盘

  • 分区(partition):是硬盘的一部分,具有设备名称(如 /dev/sda1),可以独立于硬盘其他部分独立寻址
    • 仅安装期间:ubiquity 可以在硬盘上建立分区。
    • parted 可以操作分区。
  • 分区表:存放与硬盘分区相关的信息。建立第一个分区前必须建立一个空白的分区表。对分区的修改将会记录到分区表。如果删除分区表,就无法访问硬盘上的信息。
  • 文件系统:在将程序写入分区前,需要将称为文件系统的数据结构写入到分区中。
    • mkfs (make filesystem)能够在分区上创建文件系统。
    • fsck (filesystem check)能够检查文件系统数据结构的完整性。
  • 格式化:将文件系统写入某个分区。
  • 挂载点:用于把分区和系统目录关联起来。使用挂载点就可以访问分区中的文件系统了。
    • 在引导过程中,Ubuntu 查看 fstab(filesystem table,文件系统表)文件,将每个分区与对应的挂载点关联起来。
    • 举例:将分区 /dev/sda2 挂在到 /home 目录上。

分区建议

  • (swap):当 Linux 没有足够的内存保存正在处理的信息时,Linux 会将程序和数据临时存放在交换分区。这个分区不是必须的。交换分区的建议大小为内存的两倍。交换分区不会与任何挂载点关联。
  • /boot:存放内核和系统启动所需的数据。该分区必须位于磁盘起始处附近。
  • /var:存放大量系统日志、软件包信息和记账数据,这个分区的数据变化非常频繁。将其作为独立分区,可以避免磁盘空间耗尽时日志受到影响。
  • /home:用户的主目录。将其作为独立分区,在全新安装的时候就不会覆盖掉。
  • /usr:软件包的存放地址,分区上的数据很少发生变化。将其作为独立分区,能够导出到另一个系统、增强安全性。
  • /usr/local/opt:存放其他软件包。

LVM(Logical Volume Manager):逻辑卷管理程序

  • 逻辑卷:LVM 将磁盘的各个组成部分(分区、硬盘或存储阵列,称为物理卷)划分成存储池或虚拟硬盘,称为卷组(volume group)。卷组的一部分分配出来建立逻辑卷。

逻辑卷在功能上类似于传统磁盘分区,可以建立文件系统。对于修改和移动来说,逻辑卷更加容易。当用户升级物理卷时,LVM 可以将数据转移到新的物理卷上。

文件类型

符号 文件类型 说明
- 普通
d 目录
l 链接
b 块设备
c 字符设备
p 管道

文件权限与归属

每一个文件都对三类实体分配权限:user, group, others (合称 all),均用首字母代表

这些权限有:r, w, x

  • 请回忆:对于目录来说,这三个符号代表什么?文件呢?
    • 这三个权限也采用位模式表示,比如111=7,说明可读可写可执行
    • rwxrw-r--代表什么?

权限管理工具

  • chmod [option] permission file|directory
    • 可以使用数字设置权限
  • chown [option] owner:group file|directory
    • -R 它们都使用大写 R 表示递归操作

特殊权限位

  • SUID
    • 用于:二进制程序
    • 用途:让程序执行者临时拥有属主的权限
    • 例:passwd 程序修改密码,密码存放于 /etc/shadow 权限为 000
    • 表示:rwxrwsrw-rwS,放置于 owner 的执行位上
  • SGID
    • 用于:目录、程序
    • 用途:在该目录中创建的文件自动继承目录用户组、执行者临时拥有属组的权限
    • 例:ps命令查看进程状态信息,ps 的属性是 -r-xr-sr-x ,它读取这个文件: /dev/kmem 是字符设备存储内核程序使用数据,属性为 cr--r-----
    • 表示:放置于 group 的执行位上
    • 联系[[Linux用户#用户组]]
    • 文件创建时,默认情况下归属于该用户的基本用户组而非扩展用户组
  • SBID (sticky bit)
    • 用于:目录
    • 用途:确保用户只能删除自己的文件,不能删除其他用户的文件
    • 例:/tmp 中的文件都只能被属组删除
    • 表示:放置于 others 的执行位上 t/T

隐藏权限

你可能在以下情况下碰到隐藏权限:权限充足却无法删除、只能在日志中追加而不能修改、删除。这些隐藏权限保障着 Linux 的安全性。

  • chattr [option] file
  • lsattr [option] file

ACL 访问控制列表

FHS

/

  • /bin 二进制文件,存放最经常使用命令

  • /dev 外部设备

    • zero:这是一个不占用系统存储空间,却能提供无穷无尽数据的文件
    • cdrom
    • stdin, stdout, stderr
  • /etc 所有系统管理所需配置文件和子目录
    • passwd, shadow, group
    • fstab
    • /apt
      • sources.list
  • /home 用户主目录
  • /usr usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
    • /bin 系统用户使用的应用程序。
    • /sbin 超级用户使用的比较高级的管理程序和系统守护程序。
    • /src 内核源代码默认的放置目录。
  • /var var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
    • /log
      • messages:日志文件(Ubuntu 无,Debian 有)
  • /lib 动态连接共享库,几乎所有应用程序都会用到这个库
  • /mnt 用于临时挂载文件系统
  • /proc 一种虚拟文件系统,存储当前内核运行状态的一系列特殊文件,直接获取系统信息。这个目录的内容在内存里而不是硬盘上。
  • /sys 该文件系统是内核设备树的一个直观反映。
  • /root 管理员的主目录
  • /sbin 管理员用的管理程序