Linux —— 权限的理解

发布于:2022-10-21 ⋅ 阅读:(404) ⋅ 点赞:(0)

1. Linux权限的概念

Linux下有两种用户:超级用户(root)、普通用户。

超级用户:可以在Linux系统下做任何事情,不受限制;
普通用户:在Linux下做有限的事情;
超级用户的命令提示符是 “#”,普通用户的命令提示符是**“$”;**
在这里插入图片描述
在这里插入图片描述
命令:su [用户名]
功能:切换用户;
例如:要从root用户切换到普通用户zjm,则使用su zjm。 要从普通用户zjm切换到root用户则使用su root(root可省略),此时系统会提示输入root用户的密码;
在这里插入图片描述

2. Linux权限管理

2.1 文件访问者的分类

文件和文件目录的所有者:u —— User;
文件和文件目录的所有者所在的组(所属组)的用户 : g —— Group;
其他用户: o —— Others;

下面我举个例子来说明这三者之间的关系:
假设现在学校要求每个学生都要参加一项比赛(完成某项特定任务),可以单人参加也可以多人参加;你一开始决定一人参加,并完成了一个作品打算提交,但这时候你的舍友们决定来蹭下你的作品,想加入你的团队,你答应了;此时你的作品就相当于这里的文件,而你就是文件的User,你的舍友们就是Group,他们可以讨论交流并对你的作品进行修改,其他不是你组里的人就是Others;

用一句来概括就是:User是这个文件的主人,Group是User钦定的搭档,Others就是除前两者外的所有人;

2.2 文件类型和访问权限(事物属性)

我们在Linux系统中,常常能看见每个文件和文件夹前面总有一串长长的东西,那些都是什么呢?下面我们就来揭开它们的面纱!
在这里插入图片描述
它们的具体含义如下:
在这里插入图片描述
其中第一个字符代表文件类型,后9个字符每三个为一组,分别代表User、Group、Others的权限;
文件类型:

d:文件夹
- :普通文件
l :软连接(类似windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

基本权限:

  • 读权限(r / 4): read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限;
  • 写权限(w / 2): write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录文件的权限;
  • 执行权限(x / 1) : excute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限;
  • “-” 表示不具有该项权限;

注意:如果此时你是拥有者也是所属组,那么权限会优先匹配拥有者,如果拥有者没有读属性,那么就算你是所属组并且所属组拥有读属性,你也是读不到文件内容的!以下权限皆是如此;

2.3 文件权限值得表示方法

字符表示方法:
在这里插入图片描述
8进制数值表示方法:
在这里插入图片描述

2.4 文件访问权限得相关设置方法

2.4.1 chmod

指令:chmod
功能: 设置文件的访问权限;
格式: chmod [参数] 权限 文件名
常用选项:

  • R -> 递归修改目录文件的权限;

注意:只有文件的拥有者和root才可以改变文件的权限;

chmod命令权限值的格式:
1. 用户表示符 + / -= 权限字符

  • /+ :向权限范围增加的权限代号所表示的权限
  • /- :向权限范围取消权限代号所表示的权限
  • /= :向权限范围赋予权限代号所表示的权限
  • 用户符号:
  • u :拥有者
  • g :所属组
  • o :其他用户
  • a :所有用户

例子:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4.2 chown

指令:chown
功能:修改文件的拥有者
格式: chown [参数] 用户名 文件名

实例:
在这里插入图片描述
在这里插入图片描述

2.4.3 chgrp

功能: 修改文件或目录的所属组
格式: chrgp [参数] 用户组名 文件名
常用选项: -R 递归修改文件或目录的所属组

2.4.4 umask

功能: 查看或修改文件的权限掩码
新建文件夹的默认权限为:666
新建目录默认权限为:777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响;则实际创建出来的文件权限是: mask & ~umask; 为什么要这么计算呢?它的本质就是将umask中出现的权限在起始权限中去掉,在umask中出现的权限按位取反会为0,起始权限再&上umask,umask中出现的权限都会在起始权限中被置为0;

格式: umask 权限值
说明:将现有的存取权限去掉权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认掩码值为:0002

实例:
在这里插入图片描述

3. file指令

功能: 辨别文件类型
语法: fil [选项] 文件或目录
常用选项:

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

4. 目录的权限

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

如果没有可读权限:
在这里插入图片描述

如果没有写权限:
在这里插入图片描述
如果没有可执行权限:
在这里插入图片描述
注意:
目录的可执行权限是表示你可否在目录下执行命令;
如果目录没有x权限,则无法对目录执行任何命令,甚至无法cd进入目录,即使目录仍然有r权限;
而如果目录具有x权限,但没有r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读取出目录下的文档;

5.粘滞位

在某种情况下,Linux下的多个用户需要在同一个目录中进行多个文件的增删查改,此时就需要一个公共目录;这种公共目录一般由root在根目录中提供,Linux默认提供的公共目录有tmp
通过对目录权限的了解后,我们会发现这么一个问题,如果Others具有目录的写权限,那么它就可以删除掉目录中的任何文件,而不论这个用户是否具有这个文件的任何权限;
在这里插入图片描述
在这里插入图片描述

我们会发现这种情况非常的不合理,我张三写的文件凭什么被你李四给删掉!为了解决这种不科学的问题,Linux引入了粘滞位这个概念;

指令:chmod +t 目录名
功能:加上沾滞位

实例:
在这里插入图片描述

在这里插入图片描述

当一个目录被设置为粘滞位(用chmod +t),则该目录下的文件只能由:
1.超级管理者删除
2.该目录的所有者删除
3.该文件的所有者删除


网站公告

今日签到

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