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.mfbz.cn/a/234185.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

119场双周赛复盘

这周没有打比赛&#xff0c;玩老头环乐&#xff08;玩物丧志&#xff09;&#xff0c; 所以是补题了 第一题 100130找到俩个数组中的公共元素 class Solution {public int[] findIntersectionValues(int[] nums1, int[] nums2) {HashMap<Integer,Integer>map1new Has…

深度优先遍历(DFS)

时间复杂度与深搜一致&#xff1b;

解决 Xshell 无法使用 root 账户远程登录 Linux 的问题

文章目录 问题描述问题原因解决办法 笔者出问题时的运行环境&#xff1a; Red Hat Enterprise Linux 9.2 x86_64 Xshell 7 问题描述 笔者在新安装的 Red Hat Enterprise Linux 中发现一个问题。在 RHEL 安装完之后&#xff0c;无法在 Xshell 中使用 root 账户远程登录此 Lin…

ReLU(Rectified Linear Unit)和Sigmoid激活函数

ReLU&#xff08;Rectified Linear Unit&#xff09;和Sigmoid都是神经网络中常用的激活函数。 特点&#xff1a; ReLU是一种简单而有效的激活函数。它对于正数部分直接返回输入&#xff0c;对于负数部分返回零。这种非线性转换有助于网络学习更复杂的表示。ReLU在许多深度学习…

【开源】基于JAVA语言的数字化社区网格管理系统

项目编号&#xff1a; S 042 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S042&#xff0c;文末获取源码。} 项目编号&#xff1a;S042&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、开发背景四、系统展示五、核心源码5…

scala变量与变量类型

1.6 变量与类型&#xff08;重点&#xff09;1.6.1 变量推断1.6.2 多变量定义1.6.3 var和val的区别 1.6.3.1 是否可变 1.6.3.2 延迟加载 1.6 变量与类型&#xff08;重点&#xff09; val修饰的变量&#xff0c;相当于Java中final修饰的变量; // 定义常量s1&#xff0c;使用…

阿里内部教程Jmeter 性能测试常用图表、服务器资源监控

性能测试常用图表 插件安装 步骤 1&#xff1a;安装插件管理器 在 Jmeter 官网上下载插件管理器 Plugins-manager-1.3.jar将 jar 包放入到 lib\ext 目录下重启 Jmeter&#xff0c;可以在选项下看到 Plugins Manager 选项 步骤 2&#xff1a;安装指定的插件 打开 Plugins Ma…

T曲线速度控制与S曲线速度控制

梯形速度控制曲线&#xff08;T曲线&#xff09; 所谓梯形速度曲线&#xff0c;也称为直线加减速或T型加减速。 其算法十分简易&#xff0c;规划周期耗时短&#xff0c;有利于缩减系统的连续运行时间&#xff0c;从而提高系统的运动控制速度&#xff0c;实施起来比较易&#x…

四元数,欧拉角,旋转矩阵,旋转向量

四元数&#xff0c;旋转矩阵&#xff0c;旋转向量&#xff0c;欧拉角 一、欧拉角 1、欧拉角是表达旋转的最简单的一种方式&#xff0c;形式上它是一个三维向量&#xff0c;其值分别代表物体绕坐标系三个轴(x,y,z轴&#xff09;的旋转角度&#xff0c;默认旋转正向为逆坐标轴逆…

Unity DOTS中的baking(一) Baker简介

Unity DOTS中的baking&#xff08;一&#xff09; Baker简介 baking是DOTS ECS工作流的一环&#xff0c;大概的意思就是将原先Editor下的GameObject数据&#xff0c;全部转换为Entity数据的过程。baking是一个不可逆的过程&#xff0c;原先的GameObject在运行时不复存在&#x…

VSCode如何设置Vue前端的debug调试

vscode在调试vue.代码时&#xff0c;如何进行debug? 1.安装Chrome Debug插件。 2.在launch.json中&#xff0c;将url修改成你前端项目的路径&#xff1a; 1 {2 // Use IntelliSense to learn about possible attributes.3 // Hover to view descriptions of existing att…

腾讯再推互动微短剧,游戏的风吹向了短剧

当你看剧时不再拥有上帝视角&#xff0c;处在女主的位置上&#xff0c;你又会做出什么样的选择&#xff1f; 腾讯最新上线的短剧《摩玉玄奇2》在原版之外还推出了互动版&#xff0c;就给出了这样一个新玩法。 《摩玉玄奇2》原版是普通的后宫职场微短剧&#xff0c;互动版则是…

Linux——缓冲区与实现C库的fopen,fwrite,fclose

目录 一.缓冲区 1缓冲区的概念 2.缓冲区存在的意义 3.缓冲区刷新策略 4.什么是刷新&#xff1f; C语言的缓冲区在哪里&#xff1f; ​编辑 仿写C库里的fopen&#xff0c;fclose&#xff0c;fwrite。 mystdio.h mystdio.c main.c(向文件中写入20次msg) 一.缓冲区 1…

protobuf安装教程v21.11

Linux&#xff1a; 1.安装依赖库 下载ProtoBuf前⼀定要安装依赖库&#xff1a;autoconf automake libtool curl make g unzip如未安装&#xff0c;安装命令如下: Ubuntu用户&#xff1a; sudo apt-get install autoconf automake libtool curl make g unzip -y CentOS用户&…

盘点251个Python源码Python爱好者不容错过

盘点251个Python源码Python爱好者不容错过 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 项目名称 链接&#xff1a;https://pan.baidu.com/s/1PikCn61NfHXmEzQiny8kfw?pwd6666 提取码&#xff1a;6666 dailyfreshpython-Dj…

MongoDB中的sort()排序方法、aggregate()聚合方法和索引

本文主要介绍MongoDB中的sort()排序方法、aggregate()聚合方法和索引。 目录 MongoDB的sort()排序方法MongoDB的aggregate()聚合方法MongoDB的索引 MongoDB的sort()排序方法 在MongoDB中&#xff0c;sort()方法是用来对查询结果进行排序的。sort()方法可以用于在查询语句中对指…

[NAND Flash] 1.1 闪存(NAND Flash) 学习指南

依公知及经验整理&#xff0c;原创保护&#xff0c;禁止转载。 专栏 《深入理解NAND Flash》 ​ 回首 漠然回首&#xff0c;从事存储芯片行业已多年&#xff0c;这些年宝贵的青春都献给了闪存。 我刚入行的时候&#xff0c;也是萌新一个&#xff0c;彷佛大学学的都没有和这相…

docker安装部署

1.在线安装Docker 安装Docker依赖库&#xff1a; yum install -y yum-utils device-mapper-persistent-data lvm2添加yum来源&#xff1a; yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo安装Docker&#xff1a; yum install doc…

[香橙派]orange pi zero 3 烧录Ubuntu系统镜像——无需HDMI数据线安装

一、前言 本文我们将介绍如何使用orange pi zero 3 安装Ubuntu系统&#xff0c;本文相关步骤均参考自开发手册。 二、实施准备 根据开发手册中所提到的&#xff0c;我们应该拥有如下配件: 1.orange pi zero 3 开发板 2.TF 卡——最小 8GB 容量的 class10 级或以上的高速闪迪卡。…

@德人合科技 | 数据透明加密防泄密系统\文件文档加密\设计图纸加密|源代码加密防泄密软件系统,——防止内部办公终端核心文件数据/资料外泄!

一款专业的数据防泄密管理系统&#xff0c;它采用了多种加密模式&#xff0c;包括透明加密、半透明加密和落地加密等&#xff0c;可以有效地保护企业的核心数据安全。 PC端访问地址&#xff1a; https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee …
最新文章