0


[Linux]文件系统权限与访问控制

​⭐作者介绍:大二本科网络工程专业在读,持续学习Java,输出优质文章
⭐作者主页:@逐梦苍穹
⭐所属专栏:Linux基础操作。本文主要是分享一些Linux系统常用操作,内容主要来源是学校作业,分享出来的同时自己也得到复习。
⭐如果觉得文章写的不错,欢迎点个关注一键三连😉有写的不好的地方也欢迎指正,一同进步😁

目录

Linux文件系统的权限和访问控制是系统安全的关键组成部分之一。
本文将深入探讨Linux文件系统权限和访问控制的重要性、权限类型以及如何设置和管理文件系统权限。

1、文件系统权限和访问控制的重要性

  在Linux系统中,每个文件和目录都有一个所有者和一组访问权限。这些权限用于限制用户对文件和目录的访问和操作,以保护系统和数据的安全性。如果没有正确的权限设置和访问控制,用户可能会访问和更改他们没有权限访问的文件和目录,从而导致系统和数据的损坏或泄漏。

2、常见命令

命令说明

chmod

修改文件或目录的权限

chown

修改文件或目录的所有者

chgrp

修改文件或目录的所属组

ls

列出当前目录下的文件和子目录

id

显示当前用户的用户ID和组ID

umask

设置新创建文件的默认权限

sudo

以超级用户身份运行命令

su

切换用户身份

passwd

修改用户密码

useradd

添加新用户

usermod

修改用户属性

groupadd

添加新组

groupmod

修改组属性
在这里插入图片描述

3、权限类型

Linux文件系统的权限分为三个主要类型:

  1. 用户权限:文件和目录的所有者对文件和目录有特定的访问权限,包括读、写和执行权限。
  2. 组权限:文件和目录的所属组对文件和目录也有特定的访问权限,包括读、写和执行权限。用户可以属于多个组。
  3. 其他用户权限:除了所有者和所属组之外的所有其他用户都属于其他用户,也有一组特定的访问权限,包括读、写和执行权限。

4、权限设置和管理

  使用chmod命令更改权限:chmod命令是用于更改文件和目录权限的最常用命令之一。使用chmod命令可以更改文件和目录的读、写和执行权限。例如,chmod 755 filename将文件filename的所有者设置为可读、写和执行,所属组和其他用户设置为可读和执行。

  使用chown命令更改文件所有者:chown命令用于更改文件和目录的所有者。例如,chown user filename将文件filename的所有者更改为用户user。

  使用chgrp命令更改文件所属组:chgrp命令用于更改文件和目录的所属组。例如,chgrp groupname filename将文件filename的所属组更改为组groupname。

  使用umask命令设置默认权限:umask命令用于设置新文件和目录的默认权限。例如,umask 022将设置新文件的默认权限为644,新目录的默认权限为755。

5、基本权限和归属


权限管理命令
1、更改文件或目录权限命令: chmod
2、改变文件或目录所有者命令: chown
3、改变文件或目录所属组命令: chgrp
4、显示、设置文件的默认权限命令:umask

在Linux文件系统中,每个文件和目录都有一个所有者和一个所属组,并且设置了一组基本权限。
这些权限控制了谁能访问该文件或目录以及他们可以执行的操作。
文件和目录的基本权限通常用3个数字表示,每个数字代表一个不同的用户组:所有者、所属组和其他用户。

基本权限包括读、写和执行权限,分别用数字4、2和1表示。每个用户组可以使用这些数字来指定他们对文件或目录的访问权限。例如,如果一个文件设置了权限为644,那么它的所有者有读、写权限,所属组和其他用户只有读权限。

在这里插入图片描述

6、特殊权限

在这里插入图片描述
除了基本的文件权限和文件所有权之外,Linux文件系统还支持特殊权限,包括SetUID、SetGID和Sticky Bit。
权限类型对文件的影响setUID文件执行时,以拥有者的权限执行getUID文件执行时,以执行者的权限执行Sticky Bit仅对目录起作用,只有文件所有者或超级用户可以删除该目录中的文件
  SetUID是一种特殊权限,可以设置在可执行文件上。
  当一个用户运行该文件时,该文件会以文件所有者的身份运行,而不是以运行用户的身份运行。这可以使某些程序在运行时获得更高的权限,例如运行passwd程序以更改用户密码。
在默认情况下,SetUID仅适用于可执行文件,并且只对二进制文件有效。

  SetGID也是一种特殊权限,可以设置在目录上。当一个用户在该目录下创建文件或目录时,新创建的文件或目录将继承该目录的组所有权,而不是用户的组所有权。
  这可以使多个用户可以共享访问同一个目录或文件,而无需每个用户都设置相同的组所有权。

  Sticky Bit是另一种特殊权限,可以设置在目录上。当Sticky Bit被设置在一个目录上时,只有文件所有者和超级用户才能够删除该目录中的文件。
  这可以防止用户意外删除其他用户的文件。Sticky Bit通常被用于公共目录,例如/tmp,以确保文件仅被创建者或管理员删除。

以下是一个简单的图示,说明了文件权限和所有权的概念:
在这里插入图片描述

7、ACL权限

在这里插入图片描述
Access Control Lists(ACLs)是Linux文件系统的一种访问控制机制,允许在基本的文件权限之上为特定用户或组添加额外的权限。ACLs允许管理员在文件或目录上定义多个访问控制项,并赋予不同的用户或组不同的权限,从而提供更细粒度的访问控制。

ACLs是Linux扩展文件系统中的一种特性。支持ACL的文件系统包括ext3、ext4、XFS和ReiserFS等。ACLs由ACL条目组成,每个ACL条目包括一个或多个访问者、一个或多个访问权限,以及一个可选的默认访问权限。访问者可以是用户或组。

在使用ACL之前,需要确保文件系统已经挂载并且支持ACL。可以通过运行命令mount来检查文件系统是否挂载了ACL支持。如果支持ACL,文件系统选项中将会包含acl选项。

要添加ACL权限,可以使用setfacl命令。例如,下面的命令将为用户jane添加对文件/home/user/file.txt的读取和写入权限:

setfacl -m u:jane:rw /home/user/file.txt

这将创建一个新的ACL条目,将用户jane添加为访问者,并授予读取和写入权限。要查看文件的ACL权限,可以使用getfacl命令:

getfacl /home/user/file.txt

输出将包括基本权限和任何ACL权限。要删除ACL权限,可以使用setfacl命令的-x选项。例如,下面的命令将删除用户jane对文件/home/user/file.txt的ACL权限:

setfacl -x u:jane /home/user/file.txt

除了setfacl和getfacl命令,还有其他一些与ACL相关的命令。例如,chacl命令可以用于更改ACL权限,ls命令可以用于显示文件的ACL权限等等。

需要注意的是,ACLs是一个强大的工具,但也很容易被误用。过度使用ACLs可能导致混乱的权限结构,难以维护和管理。因此,在使用ACLs时,需要仔细考虑哪些用户或组需要哪些访问权限,并尽量保持权限结构的简单性和一致性。

8、思考题

①假设test1,test2,test3同属于testgroup组,请说明下面两个文件的所有者及相关用户的权限?

-rw-r–r-- 1 root root 238 Jun 18 17:22 test.txt
-rwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 exam.txt

对于第一个文件 “test.txt”,所有者为 root 用户,所属组也是 root 组。权限位是 “-rw-r–r–”,依次表示所有者、所属组和其他用户对该文件的读、写、执行权限。因此,所有者 root 用户对该文件具有读写权限,所属组和其他用户只有读取权限。
对于第二个文件 “exam.txt”,所有者为 test1 用户,所属组为 testgroup 组。权限位是 “-rwxr-xr–”,依次表示所有者、所属组和其他用户对该文件的读、写、执行权限。因此,所有者 test1 用户对该文件具有读、写、执行权限,所属组 testgroup 组的用户对该文件具有读、执行权限,其他用户只有读取权限。

②有以下目录,请问testgroup这个群组的成员与其他人(others)是否可以进入本目录?

drwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 groups/

对于这个目录 “groups”,所有者是 test1 用户,所属组是 testgroup 组,权限位是 “drwxr-xr–”。因此,所有者 test1 用户可以进入该目录,并访问其中的文件,因为他拥有读取目录的权限。所属组 testgroup 的用户也可以进入该目录,并访问其中的文件,因为他们拥有该目录的读取和执行权限。而其他用户(others)则不能进入该目录,因为他们没有该目录的执行权限。

③如果有些文件你不希望被其他人看到,那么应该将文件的权限设定为?
可以将该文件的权限设置为只有你自己的用户可以读、写和执行,而其他用户则没有权限。可以使用命令 “chmod” 来修改文件的权限。这样设置权限后,其他用户就无法看到该文件,但是管理员用户仍然可以访问该文件,因为管理员用户拥有最高权限

④drwxr–r-- 3 root root 4096 Jun 25 08:35 .ssh 用户whj能否切换到该目录?
该目录的权限位是 “drwxr–r–”。由于该目录的所有者为 root 用户,所属组也是 root 组,因此:所有者 root 用户对该目录有读、写和执行权限;所属组 root 组的用户只对该目录有读权限;其他用户对该目录没有任何权限。因此,用户 “whj” 不能切换到该目录,因为他没有该目录的执行权限。

⑤假设有个账号名称为whj,家目录在/home/whj/,whj对此目录具有[rwx]的权限。若在此目录下有个名为root.data的文件,该文件的权限如下

-rwx------ 1 root root 4365 Sep 19 23:20 root.data

请问whj对此文件的权限为何? 可否删除此文件?
由于该文件的所有者为 root 用户,所属组也是 root 组,因此:所有者 root 用户对该文件具有读、写和执行权限;所属组 root 组的用户没有任何权限;其他用户也没有任何权限。因此,用户 “whj” 对该文件没有任何权限,不能读取、写入或者执行该文件,也不能删除该文件。

9、总结

  在Linux系统中,文件系统的权限和访问控制对系统和数据的安全至关重要。
  通过正确设置和管理文件和目录的权限,可以确保用户只能访问他们被授权访问的文件和目录,从而保护系统和数据的安全。
  熟练掌握Linux文件系统权限和访问控制的知识,是每个Linux系统管理员必备的技能之一。


本文转载自: https://blog.csdn.net/qq_60735796/article/details/130381285
版权归原作者 逐梦苍穹 所有, 如有侵权,请联系我们删除。

“[Linux]文件系统权限与访问控制”的评论:

还没有评论