【Linux】权限的理解和使用

在这里插入图片描述

👦个人主页:Weraphael
✍🏻作者简介:目前正在学习c++和算法
✈️专栏:Linux
🐋 希望大家多多支持,咱一起进步!😁
如果文章有啥瑕疵,希望大佬指点一二
如果文章对你有帮助的话
欢迎 评论💬 点赞👍🏻 收藏 📂 加关注😍


目录

  • 一、Linux下用户的分类
      • 1.1 用户切换
  • 二、用户和用户组
      • 2.1 文件拥有者(概念)
      • 2.2 用户组(概念)
      • 2.3 其他人(概念)
  • 三、文件权限
      • 3.1 文件属性
      • 3.2 修改文件权限
        • 3.2.1 数字类型修改文件权限
        • 3.2.2 符号类型修改文件权限
      • 3.3 修改文件所属组
      • 3.4 修改文件拥有者
      • 3.5 默认权限
        • 3.5.1 权限掩码
  • 四、目录权限
  • 五、粘滞位
      • 5.1 引入
      • 5.2 如何设置粘滞位

一、Linux下用户的分类

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

  • 超级用户:基本不权限的约束。命令提示符是#
  • 普通用户:受权限的约束。命令提示符是$

1.1 用户切换

  • 普通用户 ->超级用户

【命令】 su / su -
【说明】

  1. 输入的密码是超级用户的密码
  2. 退回普通用户exit or 热键Ctrl + d

在这里插入图片描述

  • 超级用户 -> 普通用户

【命令】 su 普通用户名
【说明】 不要密码,从这可以看出超级用户基本不权限的约束

在这里插入图片描述

  • 普通用户 -> 另一个用户

【命令】 su 另一个用户名
【说明】 密码需要输入另一个用户的密码

这里就不为大家演示了

  • 对某条指令提权(不用转化root

【命令】 sudo 某条指令
【说明】输入的是普通用户的密码

大家可能会有疑问,我们对指令进行提权,为什么输入的是普通用户的密码?

大家可以先在自己的命令行解释器输入sudo 随便一个指令,其实目前我们普通用户没办法执行sudo,因为系统默认不信任你。除非未来将普通用户添加到系统的信任名单里。由于目前知识有限,后期带领大家配置。

二、用户和用户组

2.1 文件拥有者(概念)

初次接触Linux的同学会觉得很怪异,为什么Linux会有这么多用户,还分什么用户组?

其实这个“用户与用户组”的功能可是相当健全并且好用的一个安全防护措施。这是因为Linux是一个多人多任务的系统,因此可能有很多人同时使用同一个服务器来进行开发,这就涉及到每个人的隐私权,有的人不喜欢把自己写的代码给别人看(因为自己写的代码时常会有bug,就像每个人的内裤一样,有漏洞就不喜欢给别人看),因此文件拥有者的角色就显得相当重要。

2.2 用户组(概念)

用户组是最有用的功能之一,就是当你在团队进行协同开发的时候。举例来说,假设你和你的舍友一起进入到腾讯实习。你在项目A组,而你的舍友在项目B组。这两个组的项目是王者荣耀,哪个组写的好就采用哪个组。假设某一天,你的老板要检查你们组的代码写的怎么样,但不能让项目B组看到你们组的文件内容,此时该如何是好?

因此,是不是可以将老板拉入你们组(用户组),这样老板能看到整个组的开发进度,而别的组看不到,很方便吧!

这样说可能还不容易理解。再举一个例子,假设有一家人,爸爸叫张三,家里有三兄弟,三个人都有自己的房间,并且拥有一个客厅。

  • 用户的意义:由于三兄弟都有自己各自的房间。所以他们不能闯入别人的房间窥视他人的隐私。
  • 用户组的概念:由于客厅是共用的,三兄弟可以在客厅做任何事情,因为大家都是一家人。

这样说大家应该有点了解了吧!张三家就是所谓的用户组,至于三兄弟就是用户,而这三个用户是在同一个用户组里。而三个用户虽然在同一个用户组内,但是有各自的私人空间,而设置用户组共享,则可让大家共同分享。

2.3 其他人(概念)

有一个叫李逵,它是三兄弟中张飞的同班同学,那么李逵就可以通过张飞进入张三的家,也可以通过张飞的同意进入他的房间。因此,李逵就是所谓的其他人(Others

因此,我们可以知道,在Linux里面,任何一个文件都具有用户(User)、所属组(Group)以及其他人(Other)三种身份,我们可以将以上的说明用下面的图来解释

在这里插入图片描述

不过,这里有一个特殊的人物要介绍,那就是神父。神父具有神力,它想干嘛就可以干嘛。不打哑谜了,这个人其实在Linux中担任root。所以要小心,这个root可是神父!

三、文件权限

3.1 文件属性

在上篇博客讲过,查看文件属性的指令是ls -al或者是ll

在这里插入图片描述

现在我们来拆分,以上字符串到底是什么意思

在这里插入图片描述

第一栏代表文件的类型和权限。这个地方最需要注意,仔细看的话,你应该可以发现这一栏其实有十个字符。

  • 第一个字符代表这个文件是目录或文件等。其中a.out的第一个字符是-,因此是文件。
    在这里插入图片描述

  • 接下来的字符中,以三个位一组,且均为[rwx]的三个参数的组合。其中,[r]代表可读、[w]代表可写、[x]代表可执行。要注意的是这三个权限的位置不会改变,如果没有权限,就会出现减号[-]而已。

在这里插入图片描述

  • 实际例子

以下我在普通用户wj中创建普通文件test.c并往里头写你好 testUser,并且文件的拥有者和所属组都是wj,那么另一个普通用户testUser能否看文件呢?

在这里插入图片描述

答案是可以的,首先testUser不是拥有者,也不是所属组,那就是其他人,而文件test.c对于其他人的权限只有r--,因此是可以读的,但是不能写

在这里插入图片描述

那么现在还有一个问题,超级用户root可以读和写吗?

在这里插入图片描述

通过以上实验我们发现,超级用户可以既可以查看、也可以修改(其实也可以执行,这里就不演示了)。那有的人就很奇怪,root既不是拥有者,也不是所属组,怎么可能可以做得到?

别忘了,超级用户root可是神父,具有神力,可以掌握一切!

3.2 修改文件权限

文权限修改使用的命令是chmod(change mode)。但是,权限的设置方法有两种,分别可以使用数字或者符号来进行权限修改。

3.2.1 数字类型修改文件权限

Linux文件的基本权限就只有9个,分别是拥有者(owner)、所属组(group)、其他人(others)三种身份各有自己的读(read)、写(write)、执行(execute)权限。假设现在有一个文件权限字符是[rwxrwxrwx],这9个权限是三个三个一组。其中,我们可以使用数字来代表各个权限,各权限的数组对照表如下:

r:4  (2^2)
w:2  (2^1)
x:1  (2^0)

每种身份(ownergroupothers)各自的三个权限(rwx)数字是需要累加的,例如当权限为[rwxrwx---],数字则是:

owner = rwx = 4 + 2 + 1 = 7
group = rwx = 4 + 2 + 1 = 7
others = --- = 0 + 0 + 0 = 0

所以等下我们设置权限时,该文件的权限数字就是770,修改权限的命令chmod的语法是:

chmod [权限数字] [文件或目录]

举个例子:假设现在有一个普通文件的权限是[rw-rw-r--],现在我要让每种身份的人都可以执行此文件[rwxrwxr-x],那么权限数字就是775

在这里插入图片描述

3.2.2 符号类型修改文件权限

因为九个权限分别是usergroupothers三种身份,那么我们就可以借ugo来代表三种身份的权限。此外,a则代表all,也就是全部人的身份。那么读写的权限就可以写成rwx。因此,符号类型修改文件权限的语法如下:

chmod [身份] [设置符号] [权限] [文件或目录]
// 身份选项:u、g、o
// 设置符号:+(加入)、-(移除)
// 权限:r、w、x

我们可以来实践一下,假设有一个文件test.txt的权限为[-rwx---r-x],那我现在我想让所属组和其他人都具有rwx权限,那么命令应该为chmod g+rwx,o+rwx test.txt

在这里插入图片描述

接下来我再假设所有人(包括拥有者)都不许对test.txt有读、写和可执行权限

在这里插入图片描述

3.3 修改文件所属组

修改文件拥有者的基本指令是chgrp(change group)。注意,要被修改的组名必须在/etc/group文件中存在才行

在这里插入图片描述

假现将text.txt文件的所属组改为tempuser(此用户我已经创建好了)

在这里插入图片描述

奇怪,为什么提示说“操作不被允许”?我们知道:你拿一个东西需要征得别人的允许,同样的,你给别人一个东西也需要征得别人的允许。因此,现在有一个暴力的方法,将自己提升为神父root,别人不要也得要

在这里插入图片描述

3.4 修改文件拥有者

修改文件拥有者的基本指令是chown(change owner),要注意的是,用户必须是已经存在系统中的账号,也就是在/etc/passwd这个文件中有记录的用户名称才能被修改

在这里插入图片描述
假设你已经是root身份了,现将text.txt文件的拥有者改为tempuser(此用户我已经创建好了)

在这里插入图片描述

那么现在我要将拥有者和所属组全部改回wj,又该怎么做呢?难道要分别使用两个指令来更改?会不会麻烦了些?

在这里插入图片描述

3.5 默认权限

无论是创建文件还是创建目录,系统都会分配默认权限

首先给出结论

  • 系统默认给普通文件的起始权限是666,即[rw-rw-rw-]
  • 默认给目录的起始权限是777,即[rwxrwxrwx]

在这里插入图片描述

奇怪?那么为什么创建出来的默认权限和我们说的不一样?

3.5.1 权限掩码

这是因为Linux存在权限掩码umask

在这里插入图片描述

CentOS 7.6中,默认的权限掩码为0002,平台不同,权限掩码可能存在差异

  • 需要注意的是:umask的数字指的是该默认值需要减掉的权限

什么意思呢?以文件为例:在上面我们说过了,系统默认给普通文件的起始权限是666,转换为二进制1010011010,默认的权限掩码转换为二进制0000000010。由于umask的数字指的是该默认值需要减掉的权限,因此666的二进制从右向左的第二个1需要去掉,因此最后的结果是110110100,转换为权限rw-rw-r--,这下刚刚好也解释完了

但是默认权限的计算方式是以下这样的:

  • 默认权限的计算方式:默认权限 = 起始权限 & (~umask)

在这里插入图片描述

目录默认权限的计算也是一样的这里就不为大家演示了

四、目录权限

目录的基础权限也是:r(读) w(写) x(可执行)

  • r:是否允许查看该目录中的内容

在这里插入图片描述

  • w:是否允许当前目录进行创建、更改、删除

在这里插入图片描述

  • x:是否允许用户进入当前目录

在这里插入图片描述

五、粘滞位

5.1 引入

大家想想:有多个人在一个共享目录里分享文件,那么里头的人是否能删除你的文件呢?

在这里插入图片描述

竟然可以删除!!那这就很可怕了。

假设一个公司有一个共享目录,供多个员工存储和共享文件。如果没有粘滞位,某个员工误删了其他员工的文件,那么对于其他员工来说,他们将无法恢复自己的文件,也无法确定是谁删除了自己的文件,这会导致很大的不便和困扰。

因此才有了粘滞位:一般是给共享目录设置,当一个目录被设置粘滞位了后,只有文件所有者和超级用户root才能够删除或重命名该目录下的文件,其他用户则不能进行这些操作。

5.2 如何设置粘滞位

使用chmod命令可以设置和取消目录的粘滞位。对于一个目录,设置粘滞位的命令为:

chmod +t [共享目录]

取消粘滞位的命令为:

chmod -t [共享目录]

在这里插入图片描述

以后在这种共享目录中,别的用户就无法删除里头的文件。

在这里插入图片描述

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

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

相关文章

【MySQL--->事务】

文章目录 [TOC](文章目录) 一、基本概念二、事务的操作1.设置全局事务隔离级别2.设置事务提交方式3.事务操作 三、事务隔离性1.隔离性概念2 .隔离级别设置 四、MVCC多版本控制2. read view 一、基本概念 事务是由若干条具有逻辑相关性的SQL语句组成的,用来完成某种任务的**逻辑…

C语言--判断年月日是否合理

一.题目描述 比如输入2001,2,29,输出: 不合理 。因为平年的二月只有28天 比如输入2000,6,31,输出:不合理。因为6月是小月,只有30天。 二.思路分析 本题主要注意两个问…

强化学习--多维动作状态空间的设计

目录 一、离散动作二、连续动作1、例子12、知乎给出的示例2、github里面的代码 免责声明:以下代码部分来自网络,部分来自ChatGPT,部分来自个人的理解。如有其他观点,欢迎讨论! 一、离散动作 注意:本文均以…

如何使用SD-WAN提升物流供应链网络效率

案例背景 本次分享的物流供应链企业是一家国际性的大型企业,专注于提供全球范围内的物流和供应链解决方案。案例用户在不同国家和地区均设有多个分支机构和办公地点,以支持客户需求和业务运营。 在过去,该企业用户使用传统的MPLS网络来连接各…

OceanBase:04-单机在线转分布式部署

目录 1.当前部署情况 2.单Zone多OBServer模式 3.多Zone多OBServer模式 3.1 集群规划 3.2 安装OBServer程序 3.3 新增Zone 3.4 启动Zone 3.5 向Zone新增OBserver节点 3.6重复3.2~3.5新增其他Zone 4.扩充资源 OceanBase 数据库为单机分布式一体化架构,支持单…

纯干货丨电脑监控软件有哪些(三款电脑监控软件大盘点)

电脑监控软件在日常生活和工作中的应用越来越广泛。这些软件可以帮助我们监控电脑的使用情况,保护电脑的安全,提高工作效率。本文将介绍一些高人气的电脑监控软件,并分享一些纯干货。 1、 域之盾软件----电脑监控系统 是一款功能强大的电脑监…

Linux输入设备应用编程(触摸屏获取坐标信息)

上一章学习了开发板外接键盘并获取键盘的的输入 Linux输入设备应用编程(键盘,按键)-CSDN博客 本章编写触摸屏应用程序,获取触摸屏的坐标信息并将其打印出来 目录 一 触摸屏数据分析(触摸,点击&#xff…

采用connector-c++ 8.0操作数据库

1.下载最新的Connector https://dev.mysql.com/downloads/connector/cpp/,下载带debug的库。 解压缩到本地,本次使用的是带debug模式的connector库: 注:其中mysqlcppconn与mysqlcppconn8的区别是: 2.在cmakelist…

请简要说明 Mysql 中 MyISAM 和 InnoDB 引擎的区别

“请简要说明 Mysql 中 MyISAM 和 InnoDB 引擎的区别”。 屏幕前有多少同学在面试过程与遇到过类似问题, 可以在评论区留言:遇到过。 考察目的 对于 xxxx 技术的区别,在面试中是很常见的一个问题 一般情况下,面试官会通过这类…

SpringBoot监听器解析

监听器模式介绍 监听器模式的要素 事件监听器广播器触发机制 SpringBoot监听器实现 系统事件 事件发送顺序 监听器注册 监听器注册和初始化器注册流程类似 监听器触发机制 获取监听器列表核心流程: 通用触发条件: 自定义监听器实现 实现方式1 实现监听器接口: Order(1) …

[操作系统]进程和线程

目录 1.什么是进程 1.1进程控制块抽象 1.2 CPU 分配 —— 进程调度(Process Scheduling) 1.3内存分配 —— 内存管理(Memory Manage) 1.4进程间通信(Inter Process Communication) 2.线程 2.1概念 2.2为什么要有线程 2.3线…

论文阅读 Forecasting at Scale (二)

最近在看时间序列的文章,回顾下经典 论文地址 项目地址 Forecasting at Scale 3.2、季节性 3.3、假日和活动事件3.4、模型拟合3.5、分析师参与的循环建模4、自动化预测评估4.1、使用基线预测4.2、建模预测准确性4.3、模拟历史预测4.4、识别大的预测误差 5、结论6、致…

【Python】重磅!这本30w人都在看的Python数据分析畅销书更新了!

Python 语言极具吸引力。自从 1991 年诞生以来,Python 如今已经成为最受欢迎的解释型编程语言。 【文末送书】今天推荐一本Python领域优质数据分析书籍,这本30w人都在看的书,值得入手。 目录 作译者简介主要变动导读视频购书链接文末送书 pan…

【计算机方向】通信、算法、自动化、机器人、电子电气、计算机工程、控制工程、计算机视觉~~~~~合集!!!

◆本文为大家梳理了近期可投的EI国际会议,涵盖计算机各个学科方向,均可EI检索 本期EI会议汇总合集涵盖领域:计算机视觉、物联网、算法、通信、智能技术、人工智能、人机交互、机器人、电子电气等众多领域! 本期所推荐的EI会议有…

ros2不同机器通讯时IP设置

看到这就是不同机器的IP地址,为了避免在路由器为不同的机器使用DHCP分配到上面的地址,可以设置DHCP分配的范围:(我的路由器是如下设置的,一般路由器型号都不一样,自己找一下) 防火墙设置-----&…

Leetcode—13.罗马数字转整数【简单】

2023每日刷题(三十七) Leetcode—13.罗马数字转整数 算法思想 当前位置的元素比下个位置的元素小,就减去当前值,否则加上当前值 实现代码 int getValue(char c) {switch(c) {case I:return 1;case V:return 5;case X:return 1…

wpf使用CefSharp.OffScreen模拟网页登录,并获取身份cookie

目录 框架信息&#xff1a;MainWindow.xamlMainWindow.xaml.cs爬取逻辑模拟登录拦截请求Cookie获取 CookieVisitorHandle 框架信息&#xff1a; CefSharp.OffScreen.NETCore 119.1.20 MainWindow.xaml <Window x:Class"Wpf_CHZC_Img_Identy_ApiDataGet.MainWindow&qu…

22LLMSecEval数据集及其在评估大模型代码安全中的应用:GPT3和Codex根据LLMSecEval的提示生成代码和代码补全,CodeQL进行安全评估

LLMSecEval: A Dataset of Natural Language Prompts for Security Evaluations 写在最前面主要工作 课堂讨论大模型和密码方向&#xff08;没做&#xff0c;只是一个idea&#xff09; 相关研究提示集目标NL提示的建立NL提示的建立流程 数据集数据集分析 存在的问题 写在最前面…

使用Python画一棵树

&#x1f38a;专栏【不单调的代码】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 &#x1f970;欢迎并且感谢大家指出我的问题 文章目录 &#x1f339;Turtle模块&#x1f384;效果&#x1f33a;代码&#x1f6f8;代码…

【tomcat】java.lang.Exception: Socket bind failed: [730048

项目中一些旧工程运行情况处理 问题 1、启动端口占用 2、打印编码乱码 ʮһ&#xfffd;&#xfffd; 13, 2023 9:33:26 &#xfffd;&#xfffd;&#xfffd;&#xfffd; org.apache.coyote.AbstractProtocol init &#xfffd;&#xfffd;&#xfffd;&#xfffd;: Fa…