Linux 基础/文件系统、权限
外观
< Linux 基础
- Linux 系统基础
- 系统分区
- 交换分区,在内存不足时使用,未使用的程序文件会被转移到该分区。
- 我们可以随时将交换空间添加为系统上的文件。这些文件的大小不会改变,因此不会出现碎片化。
- 我们可以将 Linux 安装到独立的文件系统中,如果我们将其作为服务器安装。这样做是为了提高安全性,例如,如果日志文件填满了系统,而它们在单独的分区上,系统就不会停止。
- 我们通常将以下目录放在单独的分区上:/home /var /tmp /boot /usr
- 分区
- 我们将介质(HDD、SSD)划分为分区,并在其中创建文件系统。
- 分区表指定了存储分区的方案。出于兼容性原因,Linux 默认使用“DOS”分区表。
- DOS 分区表只允许 4 个主分区,其余分区可以位于扩展分区中。扩展分区可以进一步划分为多个部分,我们称这些部分为逻辑分区。
- GPT 分区表允许无限个分区。这更为常见。
- DAC(Discretionary Access Control,自主访问控制)允许已识别的用户根据其属性访问对象。访问权限只能设置为所有者和组。
- 我们也称之为 UNIX 权限。
- 还有一种称为 MAC(Mandatory Access Control,强制访问控制)。我们为对象创建访问规则,这些规则适用于所有用户(即使是 root)。
- 第三种是基于角色的访问控制(RBAC)。超级用户创建多个角色。有了给定的权限,我们可以访问特定的对象。
- 我们区分三种权限
- 读取 (r)
- 写入 (w)
- 执行 (x)
- 权限可以授予三种类型的用户
- 所有者
- 属于某个组的用户
- 其他所有人
- 我们可以使用 chmod 命令设置权限,有时我们会根据下表将权限与所有者、组和其他人相关联
用户 | u |
组 | g |
其他 | o |
所有 | a |
- 示例:HOME 文件夹中 ls -l 的输出
-rw-r--r-- 1 joska joska 3184 dec 13 18.37 .bashrc
类型 | 所有者权限 | 组权限 | 其他 |
---|---|---|---|
- | rw- | r-- | r-- |
类型可以是
内容 | 意义 |
---|---|
- | 普通文件 |
d | 目录 |
D | Solaris 网关(进程间通信) |
c | 字符设备(tty 或打印机) |
b | 块设备(磁盘或 CD-ROM) |
l | 符号链接(软链接) |
s | 套接字 |
= 或 p | FIFO(System V,Linux) |
chown 命令
- 我们可以使用该命令分配文件或目录的所有者和组。
chown joska.joska filename
chown joska:joska filename
chown joska. filename
chown joska: filename
chmod 命令
- 它可以用于设置权限。
- 我们可以使用两种方法添加/移除权限。第一种是使用数字,第二种是使用字母。
- 我们使用字母指定要添加或移除权限的用户。然后是 +/-,取决于我们要修改的内容(+: 添加,-: 移除)。最后是我们想要更改的内容。用户类型是可叠加的,因此我们可以写成 ug 或 uo 或 ugo,最后一个等效于 "a"。权限也可以叠加。
- 我们要授予用户对 forest.txt 文件的写入权限:
chmod u+w forest.txt
- 我们要授予组和所有者所有权限:
chmod ug+rwx forest.txt
- 我们也可以使用数字来设置:
chmod 770 forest.txt
- "770" 的解释
所有者 / 用户 (u) | 组 (g) | 其他 (o) |
---|---|---|
421 | 421 | 000 |
4 表示读取,2 表示写入,1 表示执行。
SUID、SGID、粘性位
- SUID:我们可以设置程序以哪个用户的权限运行,但这存在安全风险,所以只有在无法用其他方法解决问题时才使用。
- SGID:设置该位后,程序可以以文件所有者所在组的权限运行,并且我们可以在目录中设置它,因此所有文件都属于特定组的所有权。
- 粘性位:打开粘性位表示操作系统应在执行后将文件保留在内存中,以便以后更快地启动。
- 我们也可以在目录的情况下打开粘性位。任何人都可以将文件添加到具有粘性位的文件夹中(尽管其他权限必须符合),但每个人都可以删除自己的文件。