当前位置: 首页 > news >正文

【Linux】权限

Linux下用户的分类

Linux下的用户分为两类:

  • root用户/超级用户
    root用户基本不受权限的约束,可以在linux系统下做任何事情,不受限制。

  • 普通用户
    普通用户是受权限约束的,可以在linux下做有限的事情。

  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
    在这里插入图片描述
    root用户和普通用户如何切换?
    使用su指令或su - 指令
    su指令和su - 指令切换用户的区别:使用su指令切换用户,用户身份变了,但是工作目录没变。使用su - 指令切换用户,是以重新登录的方式切换用户的,不仅用户身份会变化,工作目录也会变成切换后的用户的家目录。

  • root用户切换成普通用户
    root用户可以直接切换成任意一个普通用户,无需密码。切换方式:su 目标用户名/ su - 目标用户名
    在这里插入图片描述

  • 普通用户切换成root用户或者其他普通用户
    普通用户切换成root用户或者其他普通用户,需要知道目标用户的密码。切换方式:su 目标用户名/ su - 目标用户名

普通用户切换成root用户:
在这里插入图片描述
普通用户切换成其他普通用户:
在这里插入图片描述

如何对一条指令进行提权?提权——提升当前用户权限
对一条指令进行提权,可以使用sudo指令。
sudo指令:表示以root用户的身份执行sudo后面跟的指令。

注意: 这里有一个前提,普通用户能使用sudo进行提权的前提是——普通用户被添加进了系统的信任白名单之中。

将普通用户添加到系统信任白名单的方法:

  • 登录root账号;

  • 使用vim打开/etc/sudoers配置文件;
    在这里插入图片描述
    注意: 只有管理员可以更改配置文件

  • 在配置文件中找到命令 root ALL=(ALL) ALL,将其复制粘贴到下一行,并将root改为目标用户的用户名;
    在这里插入图片描述

  • 进入底行模式,保存退出vim。

sudo对指令提权的方式:sudo 指令
在这里插入图片描述

注意:
1、sudo command只能对指令暂时提权。
2、每次执行 sudo 后,仅对当前命令赋予提权权限,执行完成后立即恢复原用户权限。
3、默认情况下,输入一次密码后,密码会在15分钟内缓存(可通过配置调整),期间再次使用 sudo 无需重复输入密码。但每次执行 sudo 仍需显式调用,权限不会自动延续到后续命令。显式调用:在每一条需要提权的命令之前都加上sudo

权限的概念

什么是权限?
在计算机系统中,权限是控制用户或程序对资源(如文件、目录、设备等)访问能力的规则。

权限既和“人”有关,也和事物的属性有关。
权限和“人”有关:权限认证的时候其实是在认证人和身份是否相符。
权限和事物的属性有关:例如,文件不能被当做面包拿来吃,因为文件不具备“可食用”这样的属性。

文件访问者的分类(人)

在Linux中,将权限身份划分为三类:

  • 拥有者
    文件属于谁
  • 所属组
    如:Linux中有10个用户,其中6个用户为一组,这6个用户可以给特定的文件或目录设定一些组级别的约束,就可以保证同一个组的人能共享某些资源。
  • 其他人
    文件不属于谁

注意 : 拥有者、所属组、其他人,这三个权限身份由root用户和普通用户扮演。如:root用户可以是一个文件的拥有者、所属组、其他人这三个身份中的任意一个,普通用户同理。如果一个用户既不是文件的拥有者,也不是文件的所属组,那么这个用户就是文件的其他人。

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

文件类型

在Windows系统中,以文件名的后缀来区分文件类型;在Linux系统中,不以文件名后缀作为文件类型的区分。

Linux中的文件类型包括:

  • d:文件夹(目录)
  • -:普通文件
    文本、可执行程序、库,基本都属于普通文件
  • l:软链接(类似Windows的快捷方式)
  • b:块设备文件(例如硬盘、光驱等)
  • p:管道文件(用来进行通信)
  • c:字符设备文件(例如屏幕等串口设备)
  • s:套接口文件

在Linux中,我们输入ll命令,显示的文件属性的第一列的第一个字符就表示文件类型。
在这里插入图片描述
上图中文件属性的解析如下:
在这里插入图片描述

访问权限

文件具有r(可读)、w(可写)、x(可执行)这三种访问权限。

普通文件的rwx权限:
r:读取文件内容
w:修改文件内容
x:执行文件
-:表示对应权限的位置没有权限

目录文件的rwx权限:
r:是否允许查看指定目录下的文件内容
w:是否允许在当前目录下进行创建、修改、删除
x:是否允许用户进入对应的目录
-:表示对应权限的位置没有权限

在Linux中,输入ll命令之后,显示的文件属性的第一列的第2位到第10位为权限位。在这9个权限中,以3个权限位为一组进行划分。第2到第4位表示文件拥有者的权限,第5到第7位表示文件所属组的权限,第8到第10位表示文件其他人的权限。
在这里插入图片描述
在这里插入图片描述
注意:
对于基本权限(rwx来说)
1、每一个权限位表示什么权限,是固定的;
2、每一个权限位只能表示对应权限的有无。

文件权限值的表示方法

方法一:字符表示法

Linux表示说明
r–只读
-w-仅可写
–x仅可执行
rw-可读可写
-wx可写可执行
r-x可读可执行
rwx可读可写可执行
无权限

方法二:八进制数值表示法
我们已经知道权限位以三三为一组,如果以“1”表示对应权限的“有”,以“0”表示对应权限的“无”,那么权限从000到111就有八种表现方式。三个二进制位对应八进制,因此我们可以用八进制来表示权限。

符号表示二进制八进制含义
r–1004只读
-w-0102仅可写
–x0011仅可执行
rw-1106可读可写
-wx0113可写可执行
r-x1015可读可执行
rwx1117可读可写可执行
0000无权限

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

一、修改文件访问权限

修改文件访问权限所用指令:chmod
格式:chmod [参数] 权限 文件名
常用选项:

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

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

chmod修改文件访问权限的方法一:chmod 用户表示符+ / - / =权限字符 文件名

  • +:增加用户读写执行权限
  • -:移除用户读写执行权限
  • =:仅保留用户的某一权限,并移除其他权限

用户符号:

  • u:拥有者
  • g:所属组
  • o:其它人
  • a:所有用户

用法示例:
在这里插入图片描述

chmod修改文件访问权限的方法二:chmod 三位八进制数字 文件名
第一位八进制数字:所有者的权限
第二位八进制数字:所属组的权限
第三位八进制数字:other的权限

示例用法:
在这里插入图片描述

二、修改文件拥有者

修改文件拥有者所用指令:chown
格式:chown [参数] 新拥有者 文件名

修改文件拥有者的两种方法:
1、root用户更改;
在这里插入图片描述

2、普通用户使用sudo指令,对命令进行提权;
在这里插入图片描述

修改文件的所属组

修改文件所属组的方法一:chgrp指令
格式:chgrp [参数] 新所属组 文件名
常用选项:

  • -R 递归修改文件或目录的所属组

注意: 普通用户必须是文件所有者且属于目标组才能使用chgrp指令修改文件所属组,其他情况下(非文件所有者或不属于目标组)则需root权限才能修改文件所属组。

用法示例:
下图中,study用户是test.c文件的拥有者,但不是目标所属组temp的成员,故切换到root用户修改所属组。
在这里插入图片描述

修改文件所属组的方法二:chown指令
格式:chown :新所属组 文件名

注意: 普通用户必须是文件所有者且属于目标组才能使用chown指令修改文件所属组,其他情况下(非文件所有者或不属于目标组)则需root权限才能修改文件所属组。
在这里插入图片描述

【补充】 chown同时修改文件的拥有者和所属组
格式:chown [选项] 新所有者:新所属组 文件名

注意: 使用chown同时修改文件的拥有者和所属组,需具有root权限。
在这里插入图片描述

umask

普通文件的默认起始权限是666(rw-rw-rw-),目录的默认起始权限是777(rwxrwxrwx)。
那么,为什么我们实际上创建出来的普通文件默认权限是664(rw-rw-r- -),目录默认权限是775(rwxrwxr-x)呢?
在这里插入图片描述
这是因为Linux中存在一个权限掩码umask。当创建一个新目录或新文件时,系统根据某种运算,去掉默认权限中在权限掩码出现的权限,最终得到的权限才是我们看到的权限。

权限计算规则:实际权限 = 默认权限 &(~umask)

  • &:按位与
  • ~:按位取反

查看当前用户的umask值:
前缀0表示该数值采用八进制表示法,从图中我们可以看出umask的值是002。
在这里插入图片描述
在这里插入图片描述
权限计算示例:
在这里插入图片描述

相关文章:

  • 如何通过API接口实现自动化上货跨平台铺货?商品采集|商品上传实现详细步骤
  • 康佳Java开发面试题及参考答案
  • NNG和DDS
  • 论文阅读:arxiv 2024 SmoothLLM: Defending LLMs Against Jailbreaking Attacks
  • bun全栈开发尝鲜:用bun-react-template实现Markdown文章展示
  • OpenHarmony外设驱动使用 (十五),USB
  • 【C/C++】从零开始掌握Kafka
  • Linux 下VS Code 的使用
  • 从AD9361 到 ADSY1100 ,中间的迭代产品历史
  • 动态规划-蓝桥杯-健身
  • 大数据学习(118)-SQL面试问题总结
  • RAG系统构建之嵌入模型性能优化完整指南
  • QML学习07Property
  • vue+js 创造动态的光晕圈
  • 8:OpenCV—仿射变换和坐标映射
  • Linux的进程控制
  • 从工程实践角度分析H.264与H.265的技术差异
  • 如何将ChatGPT添加到WordPress(新手指南)
  • 大数据与数据分析【数据分析全栈攻略:爬虫+处理+可视化+报告】
  • 华为OD机试真题—— 矩阵中非1的数量 (2025B卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • 快速做效果图的网站叫什么软件/游戏推广话术
  • 流媒体网站建设规划 所需设备/网络推广平台软件app
  • 网站建设中html下载/中国新闻
  • 网站建设后端/武汉网站排名提升
  • 宝鸡专业做网站/新闻稿范文
  • 影视公司网站模板/广告宣传费用一般多少