文件系统¶
- 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
- 表示:
rwx
→rws
,rw-
→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
管理员用的管理程序