Linux文件权限工作原理(linux文件的权限管理的原理是什么)
sinye56 2024-11-12 12:46 3 浏览 0 评论
理解用户权限的工作原理是掌握 Linux 的最重要部分之一。从这里开始学习基础知识。
译自 Linux: How File Permissions Work,作者 Damon M Garn。
Linux:Linux 技能模块库的配套实验室文章。在本系列文章中,我们还介绍了如何选择发行版、Linux 内核如何与硬件交互以及如何Linux 管理系统服务、存储和用户和组权限。
权限控制用户对文件和目录的访问。例如,权限决定用户是否可以读取文件 sales.txt。它们还决定用户是否可以编辑或更改该文件的内容。权限还指定用户是否可以运行程序或脚本。
如果您已经熟悉 Windows 权限,您会发现 Linux 权限要简单得多。
本文介绍了标准 Linux 权限可用的身份和访问级别,解释了绝对模式与符号模式,并展示了 chmod 和 chown 命令的语法。
我将从一个简短的命令参考部分开始,演示如何创建一些用户、组、文件和目录,您可以在设置权限时使用它们。
查看我之前的帖子,“了解 Linux 命令行”,以更好地使用这些命令。
设置用户和资源
创建一些用户帐户,以便您可以使用以下示例为不同的人设置不同的权限:
图 1:创建用户 fsmith 的命令。
使用相同的方法创建 slee 和 mgarcia。
注意:以 root(管理员)用户身份登录 Linux 系统是一种糟糕的 安全实践。大多数系统强制您以普通用户身份登录,然后使用 sudo(超级用户执行)命令提升您的权限。使用 sudo 时,系统可能会提示您输入密码。
查看用户管理命令:
命令 | 描述 |
useradd username | 创建新用户 |
usermod username | 修改现有用户 |
userdel username | 删除现有用户 |
也创建一些组。以下是一个示例:
创建 HR 和 PR 组,使用相同的语法。
查看组管理命令:
命令 | 描述 |
groupadd groupname | 创建新群组 |
groupmod groupname | 修改现有群组 |
groupdel groupname | 删除现有群组 |
您可以在我最近的 Linux 用户和组文章 中找到更多详细信息。
现在您已经拥有了一些用户和组,请创建一些资源,以便您可以使用权限控制对它们的访问。
切换到 /home/fsmith 主目录。使用 mkdir 命令创建以下目录:
- departments
- departments/it_dept
- departments/hr_dept
- departments/pr_dept
图 2:确认部门目录已存在。
这些代表您管理 Linux 服务器的模拟公司中的三个部门。
使用 touch 命令在指定目录中创建这些文件:
- 在 it_dept 目录中,创建 password-reset.txt
- 在 hr_dept 目录中,创建 policies.txt
- 在 pr_dept 目录中,创建 press-releases.txt
在 此处 找到有关 管理 Linux 文件和目录的更多信息。
用户、文件和权限都是单个较大主题的一部分:访问控制。用户帐户是身份,文件是资源。权限根据身份控制对资源的访问。例如,权限控制 fsmith 是否可以读取 fileA.txt 和 slee 是否可以更改 fileB.txt 的内容。
您可能会认为用户和组管理、文件管理和文件权限教程的内容是一个相关的主题集合——控制对文件的访问。
了解权限和身份
设置权限需要您了解可用的访问级别并管理这些访问级别适用于谁。本节介绍管理 Linux 权限所需的权限和身份。
了解访问级别
Linux 权限提供三种访问级别:读、写和执行。它们的行为在应用于文件或目录时略有不同。
下表解释了读、写和执行权限在应用于文件时的含义。
权限 | 字符 | 描述 |
读 | r | 查看文件内容 |
写 | w | 修改文件内容 |
执行 | x | 如果文件是程序或脚本,则运行它 |
此表显示了读、写和执行权限如何应用于目录。
权限 | 字符 | 描述 |
读 | r | 列出和复制目录内容 |
写 | w | 在目录中添加或删除文件(也需要 x) |
执行 | x | 使用 cd 进入目录 |
一个重要的区别是,需要在目录上拥有执行权限才能使用 cd 命令进入该目录。需要在文件上拥有执行权限才能将其作为程序或脚本运行。
了解身份
Linux 识别三种用于访问控制的身份:
- 拥有文件或目录的一个用户。
- 与文件或目录关联的一个组。
- 所有不是该用户或组成员的其他人。
身份 | 字符 | 描述 |
用户(所有者) | u | 文件或目录的创建者或关联身份。 |
组 | g | 与文件或目录关联的一个组。 |
其他 | o | 所有不是用户或组的帐户。 |
三种访问级别(rwx)可以应用于三种身份(ugo)。
显示和解释权限
显示目录内容的命令是 ls(“list”的缩写)。添加 -l 选项以显示文件和目录权限。在这些示例中使用 ls -l 来显示对权限的更改。
图 3:使用 ls -l 命令显示现有权限。
图 4:识别哪些权限块适用于哪些身份。
上图用颜色编码来解释哪些权限适用于哪些身份。黄色框(rwx)中的权限适用于用户 fsmith。绿色框显示 IT 组的权限(rw-)。其他身份只有读权限(r--),如红色框所示。破折号表示未授予权限。
了解权限模式
Linux 管理员有两种不同的设置权限的方法:绝对模式和符号模式。您的系统识别这两种模式,因此使用对您最简单的模式。您可能会发现自己在不同的时间点使用这两种模式。
了解绝对模式
绝对模式使用数字八进制值来表示权限级别。
权限 | 八进制值 |
r(读) | 4 |
w(写) | 2 |
x(执行) | 1 |
绝对模式将数字权限值相加以表示整体访问级别。值的总和按特定顺序排列:用户、然后是组、然后是其他人。
示例 1: 读、写和执行访问 = r (4) + w (2) + x (1) = 7
- 所有访问级别的绝对模式值为 7 (4+2+1)
示例 2: 读和写(但不能执行) = r (4) + w (2) = 6
- 对文件的读写但不能执行访问的绝对模式值为 6。
示例 3: 仅读(无写和无执行) = r (4)
- 仅读访问的绝对模式值为 4。
绝对模式还按特定顺序使用三个身份,始终是用户、组、其他人(ugo)。
示例 1: 用户拥有 rwx,组拥有 r-x,其他人没有访问权限 = 750
- 用户拥有 7(读+写+执行的值),组拥有 5(读+执行),其他人拥有 0(没有值)。
示例 2: 用户拥有 rw-,组拥有 r–,其他人拥有 r– = 644
- 用户拥有 6 (r+w),组和其他人拥有 4 (读)。
绝对模式听起来非常复杂,但一旦您习惯了这些值,它比符号模式更简单、更快。我几乎总是使用绝对模式在 Linux 上工作。
了解符号模式
符号模式将身份字母(ugo)、权限字母(rwx)和数学运算符(+,-,=)组合起来以配置权限。
以下是一些示例:
- 授予用户对文件的读权限如下所示:u+r(为用户添加读权限)。
- 为组授予读写权限为 g+rw(为组添加读写权限)。
- 从其他人那里删除读写权限为 o-rw(从其他人那里减去读写权限)。
符号模式的优点是能够逻辑地推断出您想要什么,而不是仅仅应用数学结果。您可能会对自己说,“我想为用户和组添加读写权限。” 这看起来很合乎逻辑:ug+rw。
使用chmod命令
现在您已经可以解释标准的 Linux 权限,是时候使用 chmod(“更改模式”)命令来设置权限。您将在这里使用绝对模式或符号模式。
无论您喜欢哪种模式,chmod 语法如下所示:
$ chmod PERMISSION filename
文件名值是命令的参数(它所作用的对象)。在以下示例中,我将对 fileA.txt 应用各种权限。
绝对模式示例:
示例 1:将用户权限设置为 u = rwx、group = r-x 和 others = —。
示例 2:将 user = rw-、group = r–、others = r–
此方法要求您使用三个身份的总和来声明所需的实际权限级别。
注意:本教程末尾有一个关于这些概念的练习。
符号模式示例
符号模式不同,因为它从现有值中添加或减去所需的权限。如果用户已经对文件具有读取权限,但您还想授予写入权限,那么您只需将写入权限添加到现有值中:
图 6:使用 chmod 命令设定使用符号模式的权限。
此示例保留了用户现有的读取权限,并且根本没有修改组或其他权限。
授予组读取和写入权限如下所示:
同样,这会保留现有的用户和其他人权限。
本教程末尾有一个关于这些概念的练习。
语法回顾:
- 绝对模式使用表示 rwx 权限的值之和。这些值按表示用户、组和其他的顺序列出。
- 符号模式将三个身份的首字母缩写(ugo)与三个访问级别的首字母缩写(rwx)结合使用 + 和 - 来添加或删除权限。
应该使用哪种模式?
那么,在日常 Linux 任务中应该使用哪种模式?您应该了解并识别这两种模式,原因如下:
- 认证考试会测试您对这两种方法的掌握程度。
- 文档可能使用任一方法编写,因此您必须能够理解每种方法。
但是,您可以随意使用对您最有意义的模式。我更喜欢绝对模式,因为它需要更少的输入并且更直接。其他人则乐于使用符号模式。只要确保您理解这两种方法即可。
管理文件和目录所有权
chmod 命令允许您设置权限,但 chown 命令会更改权限适用的对象。您可以更改用户(所有者)和组关联,将各种目录和文件重新分配给系统中的任何人。
使用chown命令
您可能希望进行三种所有权更改:更改所有者(用户)、更改关联的组或同时更改两者。
要更改文件或目录的所有者,请键入:
要更改分配给文件或目录的组,请键入:
要同时更改这两个值,请键入:
考虑以下示例,您需要将 fsmith 帐户设置为 password-reset.txt 文本文件的所有者,您是在本教程开始时创建的:
$ chown fsmith password-reset.txt
接下来,将 HR 组与 hr_dept 目录关联。
也许您需要将 mgarcia 设置为所有者,并将 PR 组与 pr_dept 目录同时关联:
$ chown mgarcia:PR pr_dept
使用 -R 选项更改目录及其所有内容的所有权。-R 选项代表“递归”。要将 IT 组与 it_dept 目录中的任何目录和文件关联,请键入:
实践机会
我编写了一些基本练习,以帮助您练习使用 chmod 和 chown。
如果您没有在文章开头创建用户、组、目录和文件,请现在返回并创建它们。您可以根据需要修改用户名、组、目录和文件。通过匹配以下要求,练习使用本教程中的命令。
实践设置所有权
使用 chown 命令设置部门目录的所有权和组关联:
- 将 fsmith 设置为 it_dept 目录的所有者(使其递归)。
- 将 mgarcia 设置为 pr_dept 目录的所有者(使其递归)。
- 将 slee 设置为 hr_dept 目录的所有者(使其递归)。
- 将 IT、HR 和 PR 组递归地与匹配的部门目录关联。
图 7:根据说明中指定的设置所有者和组的结果。
实践目录权限
使用绝对模式设置以下访问级别:
- 将 mgarcia 的递归权限设置为 rwx,PR 组的权限设置为 rwx,其他人的权限设置为 r-x,应用于 pr_dept 目录。
- 将 slee 的递归权限设置为 rwx,HR 组的权限设置为 rwx,其他人的权限设置为 r-x,应用于 hr_dept 目录。
- 将 fsmith 的递归权限设置为 rwx,IT 组的权限设置为 rwx,其他人的权限设置为 rwx,应用于 it_dept 目录。
图8:如说明中所述设置权限的结果。
实践文件权限
使用 chown 命令设置所有权,以及使用具有 symbolic 模式的 chmod 命令来添加和取消权限,直到它们满足以下要求:
- 将 password-reset.txt 文件的访问权限授予 fsmith(rw-)、当前用户组(rw-)和其他人(rw-)。
- 将 press-releases.txt 文件的访问权限授予 mgarcia(rwx)、当前用户组(r--)和其他人(无访问权限)。
- 将 policies.txt 文件的访问权限授予 slee(rw-)、当前用户组(rw-)和其他人(r--)。
图 9:按照本说明设置权限后的结果。
可以自由创建其他用户、组、目录和文件以练习权限。
总结
控制对资源的访问是管理员的一项关键技能。它始于创建正确的用户和组帐户来代表用户。接下来,创建和组织文件和目录,并牢记安全性。最后,为所有者 (u)、组 (g) 和所有其他人 (o) 设置适当的权限。这种身份、资源和权限的组合是控制数据访问的基本组成部分。
本教程介绍了标准的 Linux 权限,但还有一些额外的特殊权限可以修改它们的工作方式。额外的 Linux 访问控制列表提供了更强大的控制文件安全性的方法。
花时间练习管理对文件和目录的访问非常值得,方法是创建一些示例资源和用户,然后设置各种权限和所有权。
相关推荐
- RHEL8和CentOS8怎么重启网络
-
本文主要讲解如何重启RHEL8或者CentOS8网络以及如何解决RHEL8和CentOS8系统的网络管理服务报错,当我们安装好RHEL8或者CentOS8,重启启动网络时,会出现以下报错:...
- Linux 内、外网双网卡路由配置
-
1.路由信息的影响Linux系统中如果有多张网卡的情况下,如果路由信息配置不正确,...
- Linux——centos7修改网卡名
-
修改网卡名这个操作可能平时用不太上,可作为了解。修改网卡默认名从ens33改成eth01.首先修改网卡配置文件名(建议将原配置文件进行备份)...
- CentOS7下修改网卡名称为ethX的操作方法
-
?Linux操作系统的网卡设备的传统命名方式是eth0、eth1、eth2等,而CentOS7提供了不同的命名规则,默认是基于固件、拓扑、位置信息来分配。这样做的优点是命名全自动的、可预知的...
- Linux 网卡名称enss33修改为eth0
-
一、CentOS修改/etc/sysconfig/grub文件(修改前先备份)为GRUB_CMDLINE_LINUX变量增加2个参数(net.ifnames=0biosdevname=0),修改完成...
- CentOS下双网卡绑定,实现带宽飞速
-
方式一1.新建/etc/sysconfig/network-scripts/ifcfg-bond0文件DEVICE=bond0IPADDR=191.3.60.1NETMASK=255.255.2...
- linux 双网卡双网段设置路由转发
-
背景网络情况linux双网卡:网卡A(ens3)和网卡B(...
- Linux-VMware设置网卡保持激活
-
Linux系统只有在激活网卡的状态下才能去连接网络,进行网络通讯。修改配置文件(永久激活网卡)...
- VMware虚拟机三种网络模式
-
01.VMware虚拟机三种网络模式由于linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费。那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有v...
- 2023年最新版 linux克隆虚拟机 解决网卡uuid重复问题
-
问题描述1、克隆了虚拟机,两台虚拟机里面的ip以及网卡的uuid都是一样的2、ip好改,但是uuid如何改呢?解决问题1、每台主机应该保证网卡的UUID是唯一的,避免后面网络通信有问题...
- Linux网卡的Vlan配置,你可能不了解的玩法
-
如果服务器上连的交换机端口已经预先设置了TRUNK,并允许特定的VLAN可以通过,那么服务器的网卡在配置时就必须指定所属的VLAN,否则就不通了,这种情形在虚拟化部署时较常见。例如在一个办公环境中,办...
- Centos7 网卡绑定
-
1、切换到指定目录#备份网卡数据cd/etc/sysconfig/network-scriptscpifcfg-enp5s0f0ifcfg-enp5s0f0.bak...
- Linux搭建nginx+keepalived 高可用(主备+双主模式)
-
一:keepalived简介反向代理及负载均衡参考:...
- Linux下Route 路由指令使用详解
-
linuxroute命令用于显示和操作IP路由表。要实现两个不同子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle忘记用户名密码 (59)
- oracle11gr2安装教程 (55)
- mybatis调用oracle存储过程 (67)
- oracle spool的用法 (57)
- oracle asm 磁盘管理 (67)
- 前端 设计模式 (64)
- 前端面试vue (56)
- linux格式化 (55)
- linux图形界面 (62)
- linux文件压缩 (75)
- Linux设置权限 (53)
- linux服务器配置 (62)
- mysql安装linux (71)
- linux启动命令 (59)
- 查看linux磁盘 (72)
- linux用户组 (74)
- linux多线程 (70)
- linux设备驱动 (53)
- linux自启动 (59)
- linux网络命令 (55)
- linux传文件 (60)
- linux打包文件 (58)
- linux查看数据库 (61)
- linux获取ip (64)
- linux进程通信 (63)