Skip to main content

7. 文件系统

David LiuAbout 5 min

7. 文件系统

IDE

SCSI

移动硬盘

hd

sd 开头是窜口磁盘

默认是 8e,Linux LVM,现在是 83

Disk Partitions

make filesyste

创建文件系统

Windows 目录森林,每个文件系统都是一棵树

Unix 只有一个根,把他们嫁接成一个树,需要有一个 mount point,挂载点,一般喜欢找到一个空目录 mnt 进行挂载(因为会把原目录里的文件遮蔽)

lost+found

取消挂载:umount+目录名或者设备名都可以

mount 上去

link number 不为 0 的文件,就放在 lost+found

Mount -o ro:只读,不能被修改

fuser 可以查看谁在用哪个硬盘

LVM

mkfs 在分好区的硬盘上构建一个文件系统,在逻辑上进行组织

文件系统:

  1. 超级块

  2. i 节点表

    ls -l 里面所有的信息都来自 i 节点 i-node(FCB)

    一个 i 节点有 13 个指针,第 11 块指针指向的块只存他指向的块的指针(非常多),12 块就是上一类块的指针(根本用不完这么多)

    ls -i 一开始的序号就是 i 节点的序号

  3. blocks

磁盘配额

目录就是一张表,存的就是所有的 i 节点信息

entry:文件,从哪个目录里面出现一下

文件移动,只需要修改两个目录就可以了,所以非常快

链接

i 节点一样,同一个文件

unix 不允许一个目录的链接

rm 删除就是文件链接数据,如果链接数是 0 的时候,就释放(没法删掉,只是以后别人可以占用这里)

删除的只是,把这个链接删掉了,用工具去扫描硬盘就可以看到里面所有的东西

文件名不用在 i 节点,文件名是目录赋予他的,可以有多个名字(考虑 ln)

ln -s

符号链接,就是快捷方式,可以一起改内容

符号链接可以做链接

权限

  1. 第一位:4bit,文件类型

    • - 文件
    • d 目录
    • l 符号链接
    • b 块设备:硬盘
    • c 字符设备:tty、mice
  2. st_mode,

rwx:文件夹的 rwx,r 是 ls,x 是 cd,w 是里面内容的增删改查,不能 cd 就不能操作了

st_mode,16bit

Type: setuid: setgid: sticky; rwx(user); rwx(group); rwx(other)

s:setid 被置为 1 了,执行这个的时候以 uid 的身份运行,passwd 在运行的时候就是 root 权限了

setuid 的程序,应该少用,容易被人攻克,人家就拿到 root 了

8 进制写法

共享目录:chmod 1777 sticky,只允许目录的所有者删除或重命名,其他用户只具有该目录的写入权限

sticky,

粘滞位通常在公共目录上使用,如 /tmp 目录,以确保只有文件的所有者能够删除文件。这样可以防止其他用户意外或恶意地删除其他用户的文件,提高了文件的安全性和保护用户数据的完整性。

以下是粘滞位的一些常见用途和优势:

防止误删除:当多个用户共享同一个目录时,粘滞位可以防止用户误删除其他用户的文件。只有文件的所有者才能删除自己的文件,其他用户只能删除自己创建的文件。

防止恶意操作:粘滞位还可以防止恶意用户删除或篡改其他用户的文件。只有目录的所有者才有权限对其中的文件进行修改。

公共目录的安全性:在公共目录(如 /tmp)中启用粘滞位可以确保每个用户只能删除自己的临时文件,而不能删除其他用户的文件。这对于多个用户同时使用公共目录非常有用。

要设置粘滞位,可以使用 chmod 命令并在权限设置中添加数字 1 或符号 +t。例如,chmod +t directoryname 将为目录设置粘滞位。

请注意,粘滞位只对目录有效,对于文件没有任何影响。

Filesystem Table

临时文件,重启之后有效就挂载一下 etc/fstab,告诉系统重启以后如何挂载

mount -a

sda1 专门放 boot

boot 进去以后

逻辑卷,虚拟的,好处很多

swap 交换空间,可以是独立分区,也可以是一个文件,一般是用放一个独立分区

Disk use

du <目录> # 每个文件的每个目录占多大
du -s <目录> # 总共占多少
du -ms <目录>

df <文件系统>

没有物理安全就没有信息安全

umask 可以杜绝用户无意之间的权限给的太多的问题

chmod 修改文件权限

chown 修改文件的 owner

chgrp 修改用户组

ACL

可以给每一个用户一个独一无二的权限(也可以给一个目录)

挂载的时候,打开 ACL 选项(好用,但是开销比较大)

getfacl <file name>
 -m u::# 修改权限
 -x # 删掉一个权限
setfacl

ACL mask 给一个最大的权限,所有人的权限不超过这个

copy ACL

给一个目录设置一个 ACL 权限,然后下面所有的文件都有权限

setfacl -dm u: # 多了一个d,可以让所有人都可以

乔布斯讲 iCloud,标准的 presentation 的范本,presentation 的条理性

m1 性能很好,但是写入写出很多,很耗硬盘