Linux权限详解

Linux权限

文章目录

  • Linux权限
      • 一、root账号与普通账号
      • 二、Linux权限管理
      • 三、权限权值表示方法
      • 四、文件访问权限的设置方法
      • 五、粘滞位
      • 六、权限总结

前言:

  我们在学习Linux的时候,我们知道在Linux下一切皆文件,而不同的文件对于不同的用户有不同的操作权限,有些重要的东西不能让别人随意修改,所以我们就需要给文件加上权限,保证文件的私密性,那么话不多说,开启我们今天的主题!

在这里插入图片描述


一、root账号与普通账号



  在Linux下有两种用户:一种是 超级用户(root),一种是 普通用户

区别 超级用户普通用户
操作范围可以在Linux系统下做任何事情在Linux系统下做有限的事情
命令行提示符‘#’‘$’

在这里插入图片描述

  如果我们当前账号是root账号,想要切换为普通用户,我们只需要这个命令:

su 普通用户名//登录普通用户

在这里插入图片描述

  这样就能切换用户了,但是如果我们当前用户是普通用户,我们想要切换到root账户只需要:

su root//使用后要加上密码

在这里插入图片描述

  我们从普通用户切换为root账号时,需要输入root的密码,且在输入密码的时候,我们是看不到密码的。当密码输入完成时,回车就可以切换为root账号了。

  我们还有一种方法可以从普通用户切换为root账号:

su -//切换root账号

在这里插入图片描述

  在普通账号中,我们只能查看操作自己的工作目录,我们不能看到别人账号下的工作目录,同样,更不能查看root账号的工作目录。

在这里插入图片描述
  如果我们并不想要在root账号下执行命令,但是我们还想要root账号的权限,这个时候我们就可以使用:

sudo 命令//进行root级别权限的指令

在这里插入图片描述
  但是sudo命令在普通账号下并不是默认就有的,需要在root账号下添加可使用sudo命令的成员名单。这个部分目前我们有所了解即可,以后我们会详谈。

总结:

  1、Linux下账号分为root用户和普通用户,root用户的权限最大,可以做任何事情,而普通用户只能做有限的事情。
  2、root切换普通用户使用su + 用户名,普通用户切换为root账号时,需要su root或者su - 然后输入root密码回车即可切换。
  3、普通用户想执行更高权限的命令需要在使用命令前加上sudo


二、Linux权限管理


  • Linux当中,权限的类型一般有r(读),w(写),x(执行)
  • 日常生活中不同身份的人干不同的事,在Linux当中,有着 拥有者,所属组,其他组 三类用户对象,每个文件都可以对这三类用户设置不同的权限。

在这里插入图片描述

  为了区分这个文件属于谁,在我们圈出来的地方,第一个表示拥有者第二个就表示所属组。但是这里并没有显示other组,这是因为我们不清楚other是谁,如果将来有用户来访问我的文件,那么在这个文件当中other就会显示出来。

  一般我们在详细查看系统文件的时候会很容易发现这些:

在这里插入图片描述

  其实前面的这些字母与-就是一个 文件的属性,表示 文件的类型和访问权限,属性的 第一位表示文件类型

  文件属性的第2-10位,表示 文件的权限,权限的前三位 表示文件所有者的权限,权限的 中间三位 表示文件所属组的权限,而权限的最后三位表示其他用户的权限。

在这里插入图片描述

文件类型分类:

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


三、权限权值表示方法


文件的基本权限:

1、读权限(r),r也就是READ的首字母,具有读取文件内容的权限;对于目录来说,具有浏览该目录信息的权限。
2、写权限(w),w也就是WRITE的首字母,具有修改文件内容的权限;对于目录来说具有删除移动目录内文件的权限。
3、执行权限(x),Execute的第二个字母,具有执行文件的权限;对目录来说具有进入目录的权限。
4、“ - ”表示不具有该权限。

我们知道了权限三三为一组,一般权限分为如下几种情况:

  • r-- 表示只读
  • --x 表示仅可执行
  • -wx 表示可写可执行
  • rwx 表示可读可写可执行
  • -w- 表示仅可写
  • rw- 表示可读可写
  • r-x 表示可读可执行
  • --- 表示无权限

  文件的权限也可以用二进制来表示,比如一个文件的权限为:rw-,那么该权限对应的二进制就是110。权限为rwx那么二进制就是111,无权限二进制表示为000。而3位比特位也可以使用8进制来表示一位数,那么我们也可以根据不同权限列出不同进制的表示方式:

权限符号八进制二进制
r4100
w2010
x1001
rw6110
rx5101
wx3011
rwx7111
---0000

  有了以上这些我们就能很轻易的分析出我们对一个文件拥有哪些权限。从而可以做具体的事情了。


四、文件访问权限的设置方法



  有一些文件我们不想让别人看到,或者不想让别人对本文件进行操作,也就是说,我们想要对文件的权限进行更改,达到我们想要的效果。其实在Linux当中有这样一条命令:

chmod命令

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

常用选项:

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

用户标识符与权限字符:

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

我们有如下文件:

在这里插入图片描述

  现在我们想要对file.txt的other组的可读权限给删除,我们只需要:

chmod o-r file.txt//将其他组的可读权限删除

在这里插入图片描述
  如果我们又想要将other组的可读权限恢复,且还想加上可执行权限,我们只需要:

chmod o+rx file.txt

在这里插入图片描述

  这时我们突然又想要将file.txt文件所有权限都置为空,我们只需要:

chmod u-rw,g-rw,o-rx file.txt

在这里插入图片描述

  我们想要恢复权限,仅仅将上面命令的-改为+即可。

  如果我们要对一个文件的三个组有相同的权限管理请求,则我们可以使用a选项来进行批量处理文件权限:

chmod a+r file.txt

在这里插入图片描述

  我们看到所有文件都具有是否可执行这个选项,那么我们的文件拥有了可执行权限就一定能执行吗?我们将file.txt文件属性全部开放,再对该文件写入一些内容:

在这里插入图片描述

  那么我们执行这个文件:

在这里插入图片描述

  我们会发现文件并不能执行,所以我们可以得出结论:一个文件具有可执行的权限,但是这个文件并不一定是可执行的,还需要保证这个文件是一个可执行程序。

  除此之外,我们还可以使用8进制来对一个文件的权限进行管理,按照上面给出的8进制数进行对文件的权限的管理:

在这里插入图片描述


  如果我们需要修改一个文件的拥有者,我们就需要用到下面的命令了:

一、chown命令

功能:修改文件或目录的所属组
格式:chown [参数] 用户组名 文件名

  使用方法也很简单,只需要:

sudo chown 用户组名 文件名

在这里插入图片描述

注意: 普通用户在使用chown命令时,需要使用sudo命令。原因也很简单,我们想要将自己的文件给别人,别人也是需要确认的,不然怎么知道你给的是不是什么病毒?但是你是root账号或者使用sudo命令可以强制将文件 拥有者更改。

二、chgrp命令

功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名

常用选项:

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

在这里插入图片描述

  要更改所属组也需要进行sudo或者在root账号下使用该命令。

  我们有对应的更改所属组与拥有者的命令,但是并没有更改other组的命令,这是因为我们在更改拥有者与所属组的同时,other是在不断变化的,说白了,其实更改拥有者与所属组就已经将other更改,所以不需要更改other的命令。

如果我们感觉一个一个更改拥有者与所属组很麻烦,我们也可以使用:

chown 拥有者:所属组 文件名

在这里插入图片描述
  这样更改就方便了许多。

  我们前面说了,文件属性的首尾表示文件的类型,但是文件的类型这么多,可能会记混,有没有什么办法能详细查看该文件到底是什么文件的命令呢?Linux下有一个file命令:

file命令

功能:查看文件类型的详细信息
格式:file [选项] 文件或目录

常用选项:

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

在这里插入图片描述

  使用file命令就可以显示文件的详细类型。


五、粘滞位

  关于Linux的权限问题,我们有这样三个问题:

一、对于一个目录而言,如果要进入一个目录,需要什么权限?

答案:

  • x决定我们是否可以进入目录。
  • r决定我们是否可以对目录信息进行查看。
  • w决定是否可以在目录下新建和删除文件。

二、为什么我们创建的普通文件默认权限不是777而是664,目录文件默认权限不是777而是775?

  我们在创建一个普通文件时,我们的默认权限转化为8进制就是664,当我们创建一个目录文件时,我们的默认权限是775,为什么他们的默认权限不是777?

在这里插入图片描述

  这是因为我们系统根据不同种类的文件进行了分类,有些文件不需要的属性就不会去加,或者由其他应用程序来加,或者由用户需要时自己添加,一般我们的普通文件里是不需要进行可执行的,所以在创建普通文件时就默认没有这个选项,目录同理。

  那么按理来说,我们的普通文件的权限应该是666,目录文件权限应该是777,但是我们看到的目录文件权限是775,普通文件权限是664啊。其实这是因为Linux存在一种叫做权限掩码————umask

umask命令

功能:
  查看或修改文件掩码
  新建文件夹默认权限=0666
  新建目录默认权限=0777
  但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是:mask & ~umask
格式: umask 权限值(8进制)

注意将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。

  实际上,起始权限去掉umask值,就是我们的默认权限了,这里的去掉并不是单纯的减法,而是 按位与运算(&)

在这里插入图片描述
  当然,umask值是可变的,可调整的,直接使用:

umask 3位8进制数

在这里插入图片描述
  我们将两个新建文件属性翻译为8进制对比,也就说明了umask的值修改成功。

  我们将一个普通文件全部的权限置为0,再将文件拥有者和所属组全部置为root,但是我们在普通用户下却能将root的文件给删除了:

在这里插入图片描述
  我们发现居然可以删除这个文件,普通用户可以删除root文件,这是很严重的问题,这很不科学。
  为了解决这个问题,在Linux中引入了粘滞位:

粘滞位:

  给目录中的other设置的一个权限位,具有x的意义,同时也进一步对目录权限就进行特殊限定:
给目录的文件,只有root或者文件的拥有者有权利进行删除,其他人一概不允许。

  使用形式:

chmod +t 目录名

  如果我们想要将粘滞位删除,我们只需要将+改为-即可:

chmod -t 目录名

六、权限总结

  • 目录的可执行权限是表示你可否在目录下执行命令。
  • 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  • 如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

在这里插入图片描述
  如果对你有帮助的话,还望能留下三连支持一下博主~~

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

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

相关文章

模块一——双指针:202.快乐数

文章目录 题目描述简单证明补充知识算法原理代码实现 题目描述 题目链接:202.快乐数 为了方便叙述,将对于⼀个正整数,每⼀次将该数替换为它每个位置上的数字的平方和这⼀个操作记为x操作; 题目告诉我们,当我们不断重…

Java解决岛屿周长问题

Java解决岛屿周长问题 01 题目 给定一个 row x col 的二维网格地图 grid ,其中:grid[i][j] 1 表示陆地, grid[i][j] 0 表示水域。 网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围&am…

JS生成用户登录图形验证码

生成用户登录图形验证码的过程可以通过几个步骤来实现&#xff0c;包括创建画布&#xff0c;生成随机验证码文本&#xff0c;将验证码文本绘制到画布上&#xff0c;以及添加一些噪点和线条来增加复杂性。 HTML 首先&#xff0c;在HTML文件中创建一个<canvas>元素和一个…

动态规划_最小花费爬楼

//给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 // // 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 // // 请你计算并返回达到楼梯顶部的最低花费。 …

Springboot获取jar版本方法

Springboot获取jar版本方法 方案一: 通过jar的pom.properties文件获取 获取demo Properties properties new Properties(); try {properties.load(RakicAppInfo.class.getResourceAsStream("/META-INF/maven/com.rakic.framework/rakic-app-springboot-start/pom.pro…

理解基于 Hadoop 生态的大数据技术架构

转眼间&#xff0c;一年又悄然而逝&#xff0c;时光荏苒&#xff0c;岁月如梭。当回首这段光阴&#xff0c;不禁感叹时间的匆匆&#xff0c;仿佛只是一个眨眼的瞬间&#xff0c;一年的旅程已成为过去&#xff0c;而如今又到了画饼的时刻了 &#xff01; 基于 Hadoop 生态的大数…

13.触发器

目录 1、创建触发器 1、创建只有一个执行语句的触发器 2、创建有多个执行语句的触发器 2、查看触发器 1、通过SHOW TRIGGERS查看触发器: 2.在triggers 表中查看触发器信息 3、使用触发器 4、删除触发器 1、创建触发器 MySQL 的触发器和存储过程一样&#xff0c;都是嵌…

详解ZNS SSD基本原理

ZNS SSD的原理是把namespace空间划分多个zone空间&#xff0c;zone空间内部执行顺序写。这样做的优势&#xff1a; 降低SSD内部的写放大&#xff0c;提升SSD的寿命 降低OP空间&#xff0c;host可以获得更大的使用空间 降低SSD内部DRAM的容量&#xff0c;降低整体的SSD成本 降…

【利用二手车数据进行可视化分析】

利用二手车数据进行可视化分析 查看原始数据去除重复数据需求分析1.统计全国总共有多少量二手车&#xff0c;用KPI图进行展示2.统计安徽总共有多少量二手车&#xff0c;用KPI图进行展示3.统计合肥总共有多少量二手车&#xff0c;用KPI图进行展示4.取最贵的10辆二手车信息&#…

【Table/SQL Api】Flink Table/SQL Api表转流读取MySQL

引入依赖 jdbc依赖 flink-connector-jdbc mysql-jdbc-driver 操作mysql数据库 <!-- Flink-Connector-Jdbc --><dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-jdbc_${scala.binary.version}</artifactId>…

金融行业文件摆渡,如何兼顾安全和效率?

金融行业是数据密集型产业&#xff0c;每时每刻都会产生海量的数据&#xff0c;业务开展时&#xff0c;数据在金融机构内部和内外部快速流转&#xff0c;进入生产的各个环节。 为了保障基础的数据安全和网络安全&#xff0c;金融机构采用网络隔离的方式来隔绝外部网络的有害攻击…

苹果IOS在Safari浏览器中将网页添加到主屏幕做伪Web App,自定义图标,启动动画,自定义名称,全屏应用pwa

在ios中我们可以使用Safari浏览自带的将网页添加到主屏幕上&#xff0c;让我们的web页面看起来像一个本地应用程序一样&#xff0c;通过桌面APP图标一打开&#xff0c;直接全屏展示&#xff0c;就像在APP中效果一样&#xff0c;完全体会不到你是在浏览器中。 1.网站添加样式 在…