【云边有个小卖部】上新《探秘Linux》第二章 Linux权限管理

news2024/10/6 0:29:39

🕺作者: 主页

我的专栏
C语言从0到1
C++初阶
C++进阶
数据结构从0到1
探秘Linux
菜鸟刷题集

😘欢迎关注:👍点赞🙌收藏✍️留言

🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!!

Linux权限的概念

在讲述Linux权限管理之前,我们要了解什么是权限?

在生活中最常见的权限相关的例子就是给视频网站充会员,没有会员就不让看,只能试看3分钟,而且就算是会员还有铂金和白金之分,这里面体现的权限的意思就是:一件事是否允许被你做,权限认证的是你的身份(是否是会员),而且也和事物的“属性”相关(不同的属性需要不同的权限、身份)。

在Linux下有两种用户,分别是:

  • 超级用户 root :它可以在Linux系统下做任何事情,不受限制,命令提示符是“#”。
  • 普通用户:它只能在Linux下做有限的事情,命令提示符是“$”。

怎么切换用户?

命令:su [用户名]

举例 :
我的用户名是venus,要从root用户切换到普通用户venus,则使用 su venus。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。

在这里插入图片描述
那么普通用户能不能使用root的权限呢?

假设我们要暂时对普通用户的一条命令进行提权

它的指令规范是:sudo command

我们假设对ls进行提权

它显示的是这样的

在这里插入图片描述

需要输入root的密码可以理解,毕竟要使用它的权限嘛,但是后面一行是什么意思呢?

venus 不在 sudoers 文件中。此事将被报告。

怎么理解?

这是因为我们目前的用户是adduser新建的用户,没有颁发执行sudo,系统不信任你,除非未来将普通用户添加到系统的信任白名单里面

怎么添加?(了解即可)

要授予用户执行 sudo 命令的权限,需要以具有管理员权限的用户登录,并编辑 /etc/sudoers 文件。使用以下命令打开 sudoers 文件:

sudo visudo

sudoers 文件中,找到以下行:

## Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

确保 %sudo 行处于注释符号(#)之外。如果该行已经被注释掉,将其取消注释。

另外,如果想要单独授权用户 “venus” 执行 sudo 命令,可以添加以下行到 sudoers 文件中:

venus   ALL=(ALL:ALL) ALL

请注意,在进行任何修改之前,务必小心并确保对文件进行适当的备份,以避免不必要的问题。

编辑完成后,保存并关闭文件。现在,用户 “venus” 应该能够使用 sudo 命令并输入其密码来执行特权操作。

Linux权限管理

文件访问者的分类

  • 文件和文件目录的所有者:u–>user
  • 文件和文件目录的所有者所在的组的用户:g—Group
  • 其它用户:o—Others

这里有一个问题:

拥有着(user)、所属组(group)、其他人(others)和前面所说的 root 、普通用户之间的关系是什么?

如下图:
在这里插入图片描述

拥有着(user)、所属组(group)、其他人(others)表示的是身份或者说角色

root 、普通用户则表示的是“人”

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

在这里插入图片描述
文件类型包括哪些?

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

那Linux中文件名后缀的含义是什么?

Linux系统中文件名后缀没有直接意义,当然,不代表不用,那该如何看待呢,那就要看用户需求了

在Linux系统中,文件名后缀没有直接的意义,这意味着文件的后缀名并不决定文件的类型或内容。

文件名后缀在Linux系统中通常用来表示文件的类型或格式,以便用户和应用程序能够更容易地识别和处理文件。例如,一个以.txt为后缀的文件通常被认为是文本文件,而以.jpg为后缀的文件通常是JPEG图像文件。

然而,Linux系统并不依赖于文件名后缀来确定文件的类型。事实上,文件类型是由文件的内容和元数据来确定的,而不是由文件名后缀来决定的。这种设计使得文件在更改后缀或没有后缀的情况下仍然可以正确识别和处理。

对于用户来说,文件名后缀可以作为一个视觉提示,帮助他们更方便地辨认和组织文件。此外,部分应用程序可能会使用文件名后缀来选择适当的工具或默认操作。

虽然文件名后缀在Linux系统中并非决定性因素,它主要作用在于有助于用户根据需求进行文件分类、识别和处理。

文件的基本权限有哪些?

i.读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限

ii.写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限

iii.执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限

iv.“—”表示不具有该项权限

括号里面的r、w、x可以理解,那么4、2、1是什么意思?

举个例子:
假设有这么一个文件
在这里插入图片描述

拥有者的权限是 rw-
r对应在二进制里面的位置在100,也就是4
w对应在二进制里面的位置在010,也就是2
x对应在二进制里面的位置在001,也就是1
这也是我们下面要讲的文件权限值的表示方法

文件权限值的表示方法

字符表示方法

也就是r、w、x这种方式
在这里插入图片描述

8进制数值表示方法

在这里插入图片描述
了解了文件权限的相关表示方法以后,有个问题:
**怎么设置文件访问权限呢?**毕竟我们也会遇到要修改权限的情况,别急,接着看下去

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

1.chmod

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

R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限

chmod命令权限值的格式

① 用户表示符+/-=权限字符

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

举个栗子

在这里插入图片描述
前面还讲过可以用八进制数字来表示权限,这就是第二中方法了

②三位8进制数字

举个栗子
在这里插入图片描述

chown

功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
常用选项:-R 递归修改文件或目录的拥有者
示例:

# chown user1 f1
# chown -R user1 filegroup1

chgrp

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

chgrp users /abc/f2

好了,前面讲了这么多,假如没有权限会有什么现象呢?—无法读、无法修改…

在这里插入图片描述

umask

这是我之前创建的文件
在这里插入图片描述
为什么它们的默认权限是我们看到的那样?

普通文件:644
目录文件:755

在回答这个问题之前有些知识你需要了解:

  1. 默认给普通文件的起始权限是666
  2. 默认给目录文件的起始权限是777

想出来的吗?

其实这里有个权限掩码的东西,你一开始看到的并不是真的

最终权限 = 起始权限 & (~umask)

先看一下我这台虚拟机上的umask等于多少

在这里插入图片描述

在这里插入图片描述
在 Linux 中,umask 的值是一个八进制数,用于设置默认的文件和目录权限。umask 的格式为 4 位数字,其中第一个数字表示特殊权限(setuid、setgid、sticky bit),而后面的三个数字分别表示所有者、所在组和其他用户的权限。

对于 umask 值 0022,第一个数字 0 意味着不设置特殊权限。特殊权限包括 setuid(s)、setgid(s)和 sticky bit(t)。如果第一个数字为 1,则表示启用 setuid,如果为 2,则表示启用 setgid,如果为 3,则表示同时启用 setuid 和 setgid。在这里,0 表示不启用任何特殊权限。

后面的三个数字 022 表示文件和目录权限的掩码。它们用于从默认的权限中屏蔽掉特定的权限位。每个数字都代表一组权限:

  • 第一个数字 0 表示所有者权限的掩码。在此示例中,它是 0,表示不屏蔽所有者权限。
  • 第二个数字 2 表示所在组权限的掩码。在此示例中,它是 2,表示屏蔽了写权限。
  • 第三个数字 2 表示其他用户权限的掩码。在此示例中,它是 2,表示屏蔽了写权限。

通过将掩码值从默认权限中屏蔽,在创建新文件或目录时,umask 值会影响所创建的文件和目录的默认权限。在这个例子中,具体的权限是:

  • 文件的默认权限为 -rw-r--r--(owner 可读写,group 和 others 只可读)。
  • 目录的默认权限为 drwxr-xr-x(owner 可读写执行,group 和 others 只可读执行)。

请注意,umask 的值可以在不同的用户环境中有所不同,并且可以通过更改 umask 值来调整默认权限。
比如
在这里插入图片描述
功能
查看或修改文件掩码
新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。

file指令:

功能说明:辨识文件类型。
语法:file [选项] 文件或目录…
常用选项

  • -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
  • -z 尝试去解读压缩文件的内容。
    使用 sudo分配权限
    (1)修改/etc/sudoers 文件分配文件
# chmod 740 /etc/sudoers
# vi /etc/sudoe

格式:接受权限的用户登陆的主机 =(执行命令的用户) 命令

(2)使用 sudo 调用授权的命令

$ sudo –u 用户名 命令

实例:

$sudo -u root /usr/sbin/useradd u2

目录文件的权限

在这里插入图片描述
在这里我们可以发现:

  1. 普通用户自己的家目录的权限是700,也就是说我在我家目录下创建的文件,别人都看不到
  2. 但是有时候我们多个用户想进行文件数据的共享
    ========
    这两点就说明了我们所建立的共享文件不能在任何一个人的家目录下
  3. 一个文件是否能删除并不由文件本身决定,而由这个文件所处的目录决定,如果该目录没有w权限,它目录里面的文件无论是什么情况都没有w权限,相当于覆盖

接下来介绍一下目录文件权限的具体内容:

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

于是, 问题来了~~
换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.

这好像不太科学啊, 我张三创建的一个文件, 凭什么被你李四可以删掉? 我们用下面的过程印证一下.

[root@localhost ~]# chmod 0777 /home/
[root@localhost ~]# ls /home/ -ld
drwxrwxrwx. 4 root root 35  7月 27 20:10 /home/
[root@localhost ~]# touch /home/root.c
[root@localhost ~]# ls -l /home/
总用量 4
-rw-r--r--.  1 root     root        0  7月 27 20:21 root.c
drwx------. 15 venus    venus    4096  7月 25 15:16 venus
drwx------.  4 zhangsan zhangsan   92  7月 27 20:16 zhangsan
[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ rm /home/root.c
rm:是否删除有写保护的普通空文件 '/home/root.c'?y
[zhangsan@localhost ~]$ exit
注销
[root@localhost ~]# cd /home
[root@localhost home]# ll
总用量 4
drwx------. 15 venus    venus    4096  7月 25 15:16 venus
drwx------.  4 zhangsan zhangsan  113  7月 27 20:22 zhangsan

为了解决这个不科学的问题, Linux引入了粘滞位的概念.

粘滞位

[root@localhost ~]# chmod +t /home/         	# 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 4 root root 35  7月 27 20:22 /home/
[root@localhost ~]# touch /home/abc.c
[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ rm /home/abc.c
rm:是否删除有写保护的普通空文件 '/home/abc.c'?y		# zhangsan不能删除别人的文件
rm: 无法删除 '/home/abc.c': 不允许的操作

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

关于权限的总结

目录的可执行权限是表示你可否在目录下执行命令。

如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这
个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)

而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读
权限,在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

题外话:如何新建用户?

在 Linux 虚拟机中创建新用户可以通过以下步骤进行:

  1. 以超级用户身份登录虚拟机,或者使用 sudo 执行以下步骤。

  2. 打开终端或命令行界面。

  3. 使用 useradd 命令创建新用户。例如,要创建一个名为 “newuser” 的用户,可以运行以下命令:

    sudo useradd newuser
    
  4. 设置新用户的密码。可以使用 passwd 命令来设置用户密码。运行以下命令并按照提示输入密码:

    sudo passwd newuser
    
  5. (可选) 如果需要为新用户创建自定义的家目录,可以运行以下命令:

    sudo mkdir /home/newuser
    sudo chown newuser:newuser /home/newuser
    
  6. 新用户已创建成功。现在可以切换到新用户账户进行测试:

    su - newuser
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/800931.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mac下安装vue cli脚手架并搭建一个简易项目

目录 1、确定本电脑下node和npm版本是否为项目所需版本。 2、下载vue脚手架 3、创建项目 1、下载node。 如果有node,打开终端,输入node -v和npm -v , 确保node和npm的版本,(这里可以根据自己的需求去选择,如果对最新版本的内容有…

JVM | 类加载是怎么工作的

类加载是怎么工作的 引言类加载器工作原理 | 城市建设过程1. 类加载器加载类前过程JVM进程启动 | 建筑工程立项Bootstrap类加载器创建扩展和应用类加载器 | 高级工程师的两位得力助手 2. 类加载器加载类后过程应用类加载器加载Building链接过程(验证,准备…

Huge and Efficient! 一文了解大规模预训练模型高效训练技术

本文分为三部分介绍了大模型高效训练所需要的主要技术,并展示当前较为流行的训练加速库的统计。文章也同步发布在AI Box知乎专栏(知乎搜索 AI Box专栏),欢迎大家在知乎专栏的文章下方评论留言,交流探讨! 引…

计算机图形学十四路径追踪与渲染方程

路径追踪(Path Tracing)与渲染方程(Render Equation) 简介 利用路径追踪我们可以实现比whitted-style ray tracing更好的全局光照(GI)效果。它的理论基础是渲染方程,最开始由吉姆卡吉亚&#…

066、故障处理之热点问题

为什么要解决热点 分布式架构中各个组件的理想状态:资源利用率相对均衡 形成写热点的原因 高频访问的小表SQL执行计划不合理具有顺序增长属性的索引扫描 数据组织模型 例如数据是序列递增,则有可能数据全部都集中一个region上 ,或者集中…

什么是等保定级?

TOC 一、等保评测介绍 1.1 等保定级目的 网络安全等级保护介绍:目的就是涉及民生问题的信息系统,要按照影响,提前划定等级 实施网络安全保护 信息系统:就是保护的系统,比如 魔幻的 健康码系统安全产品:健…

【lesson5】linux常见权限问题

文章目录 目录权限umask粘滞位 目录权限 先来思考一个问题: 进入一个目录需要什么权限呢? 由上图我们可以得知,进入目录需要x权限,那么没有r和w权限是什么情况呢? 从图中我们可以得知没有r权限不能查看目录里面的内容&#xff…

基于STM32设计的智能教室管理系统

前言 本文介绍了一个智慧教室的设计,该设计由电器设备控制系统、环境检测系统和考勤系统三大模块构成。通过使用STM32微处理器和物联网电器设备控制中心,实现对教室内风扇、照明灯和窗帘等电器设备的智能化统一控制与运行。同时,环境检测系统可以实时监测环境光强、温度、湿…

模型调参及优化

调参 调权重参数,偏置参数 训练数据集用来训练参数w,b 调超参数 验证数据集用来选择超参数学习率lr,隐藏层大小等 如何调参 当泛化误差和训练误差都没有降下去说明欠拟合;当训练误差降下去,但泛化误差出现上升形式&…

33. 本地记事本

本地记事本 html部分 <button class"add"><i class"iconfont icon-jiahao"></i> </button>css部分 *{margin: 0;padding: 0; } body{background-color: #7bdaf3;display: flex;padding-top: 3rem;flex-wrap: wrap; } .add{pos…

Vue2基础一、快速入门

零、文章目录 Vue2基础一、快速入门 1、Vue 概念 &#xff08;1&#xff09;为什么学 前端必备技能 岗位多&#xff0c;绝大互联网公司都在使用Vue 提高开发效率 高薪必备技能&#xff08;Vue2Vue3&#xff09; &#xff08;2&#xff09;Vue是什么 **概念&#xff1a;…

第二届“鼎信杯”榜单发布,麒麟信安荣获“优秀技术支撑奖”

由中国电子信息产业发展研究院、北京市海淀区人民政府主办&#xff0c;中国软件评测中心&#xff08;工业和信息化部软件与集成电路促进中心&#xff09;、中关村科学城管委会和北京市国际技术贸易协会承办的“2023 鼎信杯信息技术发展论坛”日前在北京举办。麒麟信安受邀参加主…

和鲸 ModelWhale 与麒麟系统适配认证,打造自主安全、性能可靠的信创 AI 基础软件

发展信创&#xff0c;解决核心技术的自主可控问题&#xff0c;是我国产业升级和数字经济发展过程中的重要命题。信创产业链主要由基础硬件、基础软件、应用软件、信息安全及云计算平台等几部分组成&#xff0c;拥抱信创国产化需要各厂商聚力共创生态&#xff0c;增强自身产品的…

JSONPath提取器案例详解

jsonpath语法 $ 表示根节点&#xff0c;也是所有jsonpath表达式的开始 . 表示获取子节点 .. 表示获取所有符合条件的内容 * 代表所有的元素节点 [] 表示迭代器的标示&#xff08;可以用于处理下标等情况&#xff09; [,] 表示多个结果的选择 ?() 表示过滤操作 表示当前节点一…

【QT】Day1

1. 收到实现登录框 要求&#xff1a; 1、登录窗口更改标题、图标 2、设置固定尺寸、并给定一定的透明度 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDebug> //信息调试类&#xff0c;用于打印输出的 #include <QIcon>…

windows命令行

参考:https://blog.csdn.net/u014419722/article/details/130427423 1、 创建文件夹&#xff08;mkdir或md&#xff09; 创建单个文件&#xff1a;mkdir cmd_test 创建二级文件&#xff1a;mkdir cmd_test\456\123 创建多个文件&#xff1a;mkdir cmd_test\000 cmd_test\111 2…

【js】javascript中base64转file、file压缩图片:

文章目录 一、效果图:二、实现代码: 一、效果图: 二、实现代码: /*** base64转file* param {string} urlData base64格式图片* returns */ export function base64ConvertFile(urlData) {if (typeof urlData ! string) {this.$toast("urlData不是字符串")return;}va…

IDEA 模块不加载依旧是灰色 没有变成小蓝色的方块

Settings > Build, Execution, Deployment > Build Tools > Maven > Ignored Files下降对应的模块勾选掉 但通常在Maven的配置中&#xff0c;您会找到一个名为“ignoredFiles”的列表&#xff0c;其中包含被忽略的文件和目录。您可以通过取消选中所需的文件或目录…

腾讯云—自动挂载云盘

腾讯云&#xff0c;稍微麻烦了点。 腾讯云服务器&#xff0c;镜像为opencloudos 8。 ### 1、挂载云盘bash #首先通过以下命令&#xff0c;能够看到新的数据盘&#xff0c;如果不能需要通过腾讯云控制台卸载后&#xff0c;重新挂载&#xff0c;并重启服务器。 fdisk -l#为 /dev…

【iVX】低代码未来发展趋势

未来低代码开发将更加注重用户体验、集成能力、自动化水平和移动支持。同时&#xff0c;应用场景也将进一步扩展&#xff0c;安全与可靠性也将得到更大程度的关注和加强。这些发展方向将进一步推动低代码开发在各个行业和领域的广泛应用和发展。 增强设计能力&#xff1a;低代码…