Linux的权限管理

发布于:2024-05-04 ⋅ 阅读:(170) ⋅ 点赞:(0)

文件权限

对于每个LInux文件,如果用ll指令查看的话,可以发现每个文件前面都有一串类似的字符:
在这里插入图片描述
这里总共有十个字符,其中第一个字符表示文件的类型,后面九个字符表示文件访问者的权限。

文件类型

LInux的文件类型分为以下几种:

  1. d:文件夹
  2. l:软链接(类似Windows的快捷方式)
  3. b:块设备文件(例如硬盘、光驱等)
  4. p:管道文件
  5. c:字符设备文件(例如屏幕等串口设备)
  6. s:套接口文件
  7. -:普通文件

显然我们上面那个文件就是一个文件夹。
此外,在众多文件类型中,最常见的是文件夹类型和普通文件类型。

文件访问者的分类

在Linux操作系统中,我们通常将访问者分为三类;

  1. 文件的所有者:u---User
  2. 文件所在的组:g---Group
  3. 其他用户:o---Others

值得注意的是root用户凌驾于所有访问者之上。root不受权限的约束。

文件权限的类型

一个文件的权限共有三个:

  1. r---读权限
  2. w---写权限
  3. x---执行权限

前面提到的十个字符,第一个表示的是文件的类型。剩下的九个字符中,前三个是u的权限,中间三个是g的权限,后面三个是o的权限。

  • 也就是说,三个字符代表了访问者的三个权限。三个权限的顺序为rwx。如果没有这个权限即为-。
  • 例如:r--为只读权限;rw-为读写权限;---为无权限。
  • 关于执行权限需要特别说明一下:文件被执行需要满足的条件,访问者具有执行权限,文件是可执行文件

文件访问权限的设置

chmod [参数] 权限 文件名

常用选项:

  • R->递归修改目录文件的权限。
  • 注意:只有文件拥有者和root才能修改文件的权限。

我们可以通过u/g/o/a(所有人) +-= rwx来修改权限。
在这里插入图片描述
# chmod u+x test.c
在这里插入图片描述
# chmod u=rw test.c
在这里插入图片描述
此外,如果将有权限看成1,无权限看成0.则rwx对应了111这样一个三位的二进制数。我们可以通过输入对应的十进制数来设置访问权限。
# chmod 000 test.c
在这里插入图片描述
# chmod 664 test.c
在这里插入图片描述
其中,6对应的二进制是110,对应的权限为rw-;4对应的二进制为100,对应的权限为r--。

chown [参数] 用户名 文件名

能够改变文件的拥有者。

chgrp [参数] 用户组名 文件名

能够修改文件的所属组。

umask 权限值

  • 单独使用umask时,能够查看文件掩码。
  • 加上权限值时,能够设置文件掩码

我们新建的文件默认权限为0666,目录的权限为0777.
但细心的读者可以发现,我们平时新建的普通文件权限明明就是-rw-rw-r--,新建文件夹的权限是drwxrwxr-x。
这似乎和我们的默认权限不太吻合啊!
实际上新建文件时设置的权限,会消掉umask(文件掩码)对应的权限。
普通用户umask的默认值为0002,root用户umask的默认值为0022.
这就是为什么当我们用普通用户创建一个普通文件时,权限为-rw-rw-r--,因为others的权限中的w被掩码给过滤掉了。

file [选项] 文件

能够辨识文件类型。
常用选项:

  • -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
  • -z 尝试去解读压缩文件的内容。

# file test.c
在这里插入图片描述
# file -c test.c
在这里插入图片描述

此外,我们还可以使用sudo来分配权限。

目录的权限

  • 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
  • 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
  • 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.

换言之,我们只需要拥有文件夹的w权限就能随意删除文件夹里面的文件,即使这些文件的所有者不是我们。这显然对所有者来说时不公平的。
为了解决这个问题。

Linux引入了粘滞位的概念。

chmod +t 目录名

经过上面的指令操作,就可以将目录加上粘滞位。
那么一个目录被设置了粘滞位,那么这个目录下的文件只能由

  1. root
  2. 目录user
  3. 文件user

删除。


网站公告

今日签到

点亮在社区的每一天
去签到