【Linux】权限管理(下)

简介: 【Linux】权限管理(下)

2. chown(修改文件的拥有者)

功能:修改文件的拥有者


格式:chown [参数] 用户名 文件名


当前我的家目录有如下用户:

df54b09513084f9d8dd9171fe4da6f1b.png

sherry 用户当前文件夹:

4a5fb430e72c404589668cac4ce3d72c.png

如果我想要把 file.txt 的 拥有者 从 sherry 改为Tchey_Y ,能否修改成功?

6837e4e85a0747748860524013be4436.png

表示权限不被允许, sherry 即时拥有者又是所属组,为什么不让我更改呢?


在 Linux 上,总不可能在你给权限的时候给别人留个言,说我给你个权限吧,毕竟白送给别人东西也需要对方接受才行。所以 普通用户是无法直接修改文件拥有者的!


但是可以用 root 强制把文件拥有者改掉,因为 root 是超级管理员,比如使用 sudo 提权一下,然后强制改掉:

28f051bb88724aaaabee475207c280cd.png

3. chgrp(修改文件的所属组)

功能:修改文件或目录的所属组


格式:chgrp [参数] 用户组名 文件名


常用选项:-R 递归修改文件或目录的所属组


同样的,通过 sudo 提权修改:

e680542da6214029ac7a375e3d63098d.png

补充:chown 和 chgrp 可以同时使用,格式为:sudo chown 用户名 : 用户名 filename


比如将拥有者和所属组都改回 sherry :

6d02f090c5494036b1fb8d6fb68096a3.png

4. 有无权限的区别

首先,我将 t.txt 的权限全部去掉:

7017e9df4ee448e8a92733d9b641cdcf.png

如果我现在读 t.txt:

432cc8178d3c4b198f72db9f3d08a80e.png

被权限拒绝了,再也用 echo “hello” > t.txt 写入试试:

156c47693a17436db5849478cf7ea43e.png

我当前是文件的拥有者 sherry ,但是我在没有权限的情况下依然不能访问!


那么 root 呢?我们用 root 试试:

605a3b662aa844b898c323b202754d65.png

我们发现,权限并不能约束 root !因为 root 是超级管理员,权限是约束普通人的。


总结:Linux 上权限是约束普通用户的,root 不会被约束!对于普通用户,被权限约束了什么都干不了;对于 root即使没有权限还是能畅通无阻。


5.目录的权限

目录权限的功能:


可执行权限 - x : 如果目录没有可执行权限, 则无法cd到目录中.

可读权限 - r : 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.

可写权限 - w : 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.


如果进入一个目录,只需要一种权限,就是可执行权限 x:

19f8be4b48484676b662f24a356d32f5.png

如果进入一个目录,没有 w 权限,则不能在目录中创建文件:

f23cc4e295e04758a9bfa56f276f9b5e.png


对于目录来讲,在没有r权限的目录下,无法查看当前目录下的文件名和文件属性:


c7da65a48aa04a4e832062037a76a0af.png


总结:目录文件的 r 读权限不是影响我进入(cd)目录,而是影响我查看(ls)指定目录下的文件内容 ;w 写权限 影响我在当前目录下进行创建(touch),更改(mv),删除(rf)文件。x 权限:是否允许用户进入对应目录。


6.默认权限

权限起始分为三部分:


默认权限:也就是我们看到的文件和目录一创建就有的权限。

起始权限:系统设定的权限。

最终权限:系统为了更好的控制文件权限,系统会有默认的 权限掩码 的概念(umask),起始文件和权限掩码进行计算后得到最终权限。


补充说明:


普通文件起始权限:666开始,目录文件的起始权限:777。它们默认都是八进制表示的。


Linux 上权限掩码可以用 umask 指令查看:

baacc965cc004dabbbbf8e41ee75156c.png

我们看待权限掩码 0002 时,看后三位002,这三位是八进制序列,一个八进制位是3个二进制位,翻译成二进制序列:000 000 010。第一位暂时不用管。


权限掩码特性:在起始权限中,去掉在权限掩码 umask 中出现的权限,不能影响其他任何权限。意思就是说,只要在 umask 中出现的权限,在 最终权限 里就不能出现!


那么 最终权限 是怎么计算出来的呢?

其实这时有一个计算公式的:最终权限 = 起始权限 & (~umask) (起始权限的值,按位与 取反后的权限掩码)


举个例子,比如我新建一个文件:

65ad81b46a734ea79c344a8f8f7bf133.png

它的权限rw-rw-r–翻译成八进制就是 664,而翻译成二进制序列就是 110 110 100。

        起始权限:110 110 110
        权限掩码:000 000 010
       权限掩码取反:111 111 101
起始权限 & 权限掩码取反 = 110 110 110
             111 111 101 &
             -----------
  创建文件的最终权限  =   110 110 100 


我们修改一下 umask 的值:

71ea6e3a7bdb4a009d2e6cb2f7506de8.png

这种情况下,我们创建的文件的最终权限是什么?


答案:

5717bab4117f4d6083bc979129d1695e.png

rw-rw-r–翻译成八进制是 660


7.粘滞位

粘滞位出现的背景:在使用 Linux 的时候,未来可能会有一些共享目录,被所有的用户共享,用来保存普通用户产生的临时数据,使用户之间的安全更有保障。


在一台机器上,可能会有多个用户:

9f4c231e29f0421196046cf450bd220d.png

而在 Linux 下,作为一个普通用户,它的家目录是只对自己开放的,从sherry 用户的权限只对 拥有者 有 rwx 权限就可以看出,且 所属组 和 other 没有任何权限。


而对于 共享目录 ,一般是由 root 用户创建,由root将权限放开后,供这台机器上的用户使用,从而满足不同的用户在公共的目录下进行文件的增删查改。


我们这里直接 提权 创建一个 public 目录,并开放权限chmod 777 public:

74ffafa1dfa74e84b3b2f6f150f646e8.png

假设本来sherry 和 Tchey_Y 关系很好,之前总是一起互相看文件,这个行为由于在 共享目录 的前提下也都可以进行,但是他们有一天闹了矛盾,Tchey_Y 把原先对 other 放开的 r 权限给全封掉了,导致 sherry 无法查看了:

8d42ff1deccd42ed9418fec0ad4ce51c.png

于是 sherry 想着你不让我看,那么我就删你的文件!

5455fb15ae004597924d82e9c776362d.png

为了让大家共享文件,且不让其他人随便删除别人的文件,于是就有了粘滞位。


所以 Tchey_Y 找到了 root 告状, root 就设置了粘滞位


粘滞位只能给目录添加,所以 root 就使用 chmod +t public 给 public 添加了粘滞位:

d78b8916b7af4ca09b8712bb94609474.png

(使用指令时为 a+t ,意思是给三个角色都 +t,但是只会把原先 other 的 x 的位置改为 t)


这就说明我们的 粘滞位 已经添加成功。


我们再试试能不能删除:

09066a6545ae4f63b1a6882b272388ee.png

其他用户没有权限为什么能删我的文件,这是权限的bug吗?为什么粘滞位只能给目录添加?

能否在特定目录下,创建或者删除文件由该目录的 w 权限决定。

那么既然这样,为什么要粘滞位 ?把 w 权限去掉别人就不能删我的文件了吗?

注意:这是共享目录,是多人合用的,如果把 w 权限去掉了,这也就把普通用户在该目录下创建文件的权限也去掉了。只有加上 w 权限,才能让其他用户正常地使用。

而被删的问题是由目录导致的,所以只能给目录添加 粘滞位 。

那么谈到这里,当一个目录被设置为"粘滞位"(chmod +t),则该目录下的文件能被谁删除呢?

超级管理员删除(root)

该目录的所有者删除

该文件的所有者删除


8.总结:

今天我们了解了Linux中的权限管理,主要学习了shell运行原理、Linux上用户权限、权限管理、更改文件访问权限、目录权限、默认权限和粘滞位等。接下来,我们将继续学习Linux的的相关知识。希望我的文章和讲解能对大家的学习提供一些帮助。


当然,本文仍有许多不足之处,欢迎各位小伙伴们随时私信交流、批评指正!我们下期见~

c3ad96b16d2e46119dd2b9357f295e3f.jpg

相关文章
|
1月前
|
算法 Linux 数据安全/隐私保护
Linux权限管理:深入理解setuid、setgid、seteuid和setegid
Linux权限管理:深入理解setuid、setgid、seteuid和setegid
138 0
|
1月前
|
Linux 数据安全/隐私保护
Linux权限管理
Linux权限管理是一种控制用户和程序对文件和文件夹的访问的方法。它使用三个主要的概念:所有者(owner)、群组(group)和其他(others)。 每个文件和文件夹都有一个所有者,这是创建该文件或文件夹的用户。所有者拥有最高的权限,可以对文件和文件夹进行更改、读取和删除。群组是一组用户,他们可以共享文件和文件夹的权限。其他用户是除所有者和群组以外的其他用户。 Linux使用三个主要的权限:读、写和执行。读权限允许用户查看文件或文件夹的内容,写权限允许用户更改文件或文件夹的内容,执行权限允许用户运行文件或文件夹中的程序。是一种控制用户和程序对文件和文件夹的访问的方法。它使用三个主要的概念:
17 1
|
8天前
|
网络协议 Linux 数据安全/隐私保护
【Linux操作系统】权限管理和粘滞位
【Linux操作系统】权限管理和粘滞位
【Linux操作系统】权限管理和粘滞位
|
16天前
|
安全 Linux Shell
【Linux】权限管理
【Linux】权限管理
17 5
|
22天前
|
运维 安全 Linux
深入理解 Linux 文件系统的权限管理
【5月更文挑战第30天】 在 Linux 操作系统中,文件系统权限管理是维护系统安全与数据完整性的基石。本文旨在深入探讨 Linux 权限模型的核心概念、实现机制及其对系统安全性的影响。通过对用户身份、文件权限和访问控制列表(ACL)等关键元素的剖析,揭示权限管理在实际操作中的应用细节。文章还将讨论如何有效配置权限来优化系统性能和提升安全性,以及解决常见的权限问题的策略。
|
22天前
|
Linux PHP 数据安全/隐私保护
深入理解PHP7的返回值类型声明深入理解 Linux 文件系统的权限管理
【5月更文挑战第30天】在PHP7中,引入了返回值类型声明的特性。这一特性使得开发者可以在函数定义时指定函数应返回的值的类型。本文将详细解析返回值类型声明的用法,以及它在实际开发中的应用,帮助读者更好地理解和使用这一特性。
|
28天前
|
安全 Linux 数据安全/隐私保护
深入理解Linux文件系统的权限管理
【5月更文挑战第24天】 在Linux操作系统中,文件系统权限管理是维护系统安全和用户数据隔离的关键机制。本文将深入探讨Linux文件系统中的权限模型,包括用户、组和其他类别的读、写、执行权限。我们将分析权限位的具体含义,如何通过命令行工具修改权限,以及权限掩码(umask)的作用。此外,我们还将讨论文件系统权限在实际应用中的常见问题及其解决方案,帮助读者构建更为安全且高效的Linux工作环境。
|
1月前
|
存储 Linux 数据安全/隐私保护
【Linux修行路】权限管理
【Linux修行路】权限管理
|
1月前
|
Linux 数据安全/隐私保护
Linux权限管理
Linux权限管理是一种控制用户和程序对文件和文件夹的访问的方法。它使用三个主要的概念:所有者(owner)、群组(group)和其他(others)。 每个文件和文件夹都有一个所有者,这是创建该文件或文件夹的用户。所有者拥有最高的权限,可以对文件和文件夹进行更改、读取和删除。群组是一组用户,他们可以共享文件和文件夹的权限。其他用户是除所有者和群组以外的其他用户。 Linux使用三个主要的权限:读、写和执行。读权限允许用户查看文件或文件夹的内容,写权限允许用户更改文件或文件夹的内容,执行权限允许用户运行文件或文件夹中的程序。是一种控制用户和程序对文件和文件夹的访问的方法。它使用三个主要的概念:
21 4
|
1月前
|
Linux 数据安全/隐私保护
【Linux笔记】用户和权限管理基本命令介绍
【Linux笔记】用户和权限管理基本命令介绍