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.rhkb.cn/news/214354.html

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

相关文章

回味童年经典游戏的项目

目录 1.超级玛丽2.坦克大战3.吃豆人游戏4.贪吃蛇游戏 1.超级玛丽 项目地址:超级马里奥游戏源码 在线试玩网址在资源描述中 在线试玩:http://martindrapeau.github.io/backbone-game-engine/super-mario-bros/index.html 主要语言:JavaScript…

《ReactJS实践入门》:引领JavaScript前端开发的革新之旅

在当今的软件开发世界中,ReactJS无疑是最为引人注目的JavaScript库之一。对于初学者来说,如何深入理解并掌握这一强大的前端工具,进而应用到实际开发中,一直是他们所面临的问题。而《ReactJS实践入门》一书,正是为了解…

使用Caliper对Fabric地basic链码进行性能测试

如果你需要对fabric网络中地合约进行吞吐量、延迟等性能进行评估,可以使用Caliper来实现,会返回给你一份网页版的直观测试报告。下面是对test-network网络地basic链码地测试过程。 目录 1. 建立caliper-workspace文件夹2. 安装npm等3. calipe安装4. 创建…

type property can‘t be changed 报错问题解决

问题 在使用 jQuery的 attr 方法对 input 输入框的 type 类型进行修改的时候报 type property can’t be changed 这个错误。 $psd.attr(type,text)原因 jQuery 的版本问题,当前使用的 jQuery 版本不允许修改 input 的 type属性所以报错。 解决方法 换原生 js …

使用消息队列遇到的问题—kafka

目录 1 分区2 消费者3 Kafka 如何保证消息的消费顺序?3.1 方案一3.2 方案二 4 消息积压 在项目中使用kafka作为消息队列,核心工作是创建生产者—包装数据;创建消费者----包装数据。 欠缺一些思考,特此梳理项目中使用kafka遇到的一…

15、lambda表达式、右值引用、移动语义

前言 返回值后置 auto 函数名 (形参表) ->decltype(表达式) lambda表达式 lambda表达式的名称是一个表达式 (外观类似函数),但本质绝非如此 语法规则 [捕获表] (参数表) 选项 -> 返回类型 { 函数体; }lambda表达式的本质 lambda表达式本质其实是一个类…

列表标签的介绍与使用

列表的作用&#xff1a; 整齐、整洁、有序&#xff0c;它作为布局会更加自由和方便。 根据使用情景不同&#xff0c;列表可以分为三大类&#xff1a;无序列表、有序列表和自定义列表 无序列表 <ul> 标签表示 HTML 页面中项目的无序列表&#xff0c;一般会以项目符号呈…

小黑子——springBoot基础

springBoot简单学习 一、SpringBoot简介1.1 springBoot快速入门1.1.1 开发步骤1.1.2 对比1.1.3 官网构建工程1.1.3 SpringBoot工程快速启动 1.2 springBoot概述1.2.1 起步依赖I. 探索父工程II. 探索依赖III. 小结 1.2.2 程序启动1.2.3 切换web服务器-jetty 二、配置文件2.1 配置…

Multisim电路仿真软件使用教程

安装直接参考这篇文章&#xff1a;Multisim 14.0安装教程 软件管家公众号里有很多软件&#xff0c;需要的可以去找下然后安装&#xff0c;这里用的是14.0版本。 这里有个大神的详细教程&#xff0c;可以参考&#xff1a; Multisim软件使用详细入门教程&#xff08;图文全解&…

DiffiT

本文首发于AIWalker&#xff0c;欢迎关注。 https://arxiv.org/abs/2312.02139 https://github.com/NVlabs/DiffiT 扩散模型以其强大的表达能力和高样本质量在许多领域得到了新的应用。对于样本生成&#xff0c;这些模型依赖于通过迭代去噪生成图像的去噪神经网络。然而&#x…

es6 相关面试总结

1、es6 是什么 新一代的js 语言标准&#xff0c;对其核心做了升级优化&#xff0c;更加适合大型应用开发。 2、箭头函数优缺点 优点&#xff1a; 1.代码优化 2.this 指向不会变动&#xff0c;永远指向其父元素 缺点&#xff1a; 1.没有arguments 参数 2.不能通过 appl…

2023年11月10日 Go生态洞察:十四年Go的成长之路

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

[山东大学操作系统课程设计]实验四+实验五

0.写在前面&#xff1a; 为什么这次把两个实验放在一起写了&#xff0c;因为实验五的要求就是在实验四的基础上完成实现的。但是我得实现说明&#xff0c;我的实验四虽然完成了要求&#xff0c;但是无法在我自己的实验四的基础上完成实验五&#xff0c;这是一个很大的问题&…

免费的SEO外链发布工具,提升排名的利器

互联网已经成为信息传播和商业发展的重要平台。而对于拥有网站的个人、企业来说&#xff0c;如何让自己的网站在搜索引擎中脱颖而出&#xff1f;SEO&#xff08;Search Engine Optimization&#xff09;作为提高网站在搜索引擎中排名的关键手段. 什么是SEO外链&#xff1f; S…

class064 Dijkstra算法、分层图最短路【算法】

class064 Dijkstra算法、分层图最短路【算法】 算法讲解064【必备】Dijkstra算法、分层图最短路 code1 743. 网络延迟时间 // Dijkstra算法模版&#xff08;Leetcode&#xff09; // 网络延迟时间 // 有 n 个网络节点&#xff0c;标记为 1 到 n // 给你一个列表 times&…

Linux(centos)学习笔记(初学)

[rootlocalhost~]#:[用户名主机名 当前所在目录]#超级管理员标识 $普通用户的标识 Ctrlshift放大终端字体 Ctrl缩小终端字体 Tab可以补全命令 Ctrlshiftc/V复制粘贴 / &#xff1a;根目录&#xff0c;Linux系统起点 ls&#xff1a; #list列出目录的内容&#xff0c;通常用户查看…

Word插件-好用的插件-一键设置字体--大珩助手

常用字体 整理了论文、公文常用字体 整理了常用的论文字体&#xff0c;可一键设置当前节或选择的文字的字体 字体设置 包含字体选择、字体颜色 特殊格式 包含首字下沉、段落分栏、统一宽度、双行合一、上标切换、下标切换、转为全角、转为半角、挖词填空、当前日期、大写金…

思科最新版Cisco Packet Tracer 8.2.1安装

思科最新版Cisco Packet Tracer 8.2.1安装 一. 注册并登录CISCO账号二. 下载 Cisco Packet Tracer 8.2.1三. 安装四. 汉化五. cisco packet tracer教学文档六. 正常使用图 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新…

uniApp项目的创建,运行到小程序

一、项目创建 1. 打开 HBuilder X 2. 右击侧边栏点击新建&#xff0c;选择项目 3. 填写项目名&#xff0c;点击创建即可 注&#xff1a;uniapp中如果使用生命周期钩子函数&#xff0c;建议使用哪种 ?(建议使用Vue的) 二、运行 1. 运行前先登录 2. 登录后点击 manifest.js…

YOLOv8 目标过线计数

使用 Ultralytics YOLOv8 进行目标计数 🚀 实际应用场景 物流水产养殖使用 Ultralytics YOLOv8 进行传送带包裹计数使用 Ultralytics YOLOv8 在海中进行鱼类计数请使用最新代码(2023年12月8日后),旧版本不支持! 示例 “目标计数示例” 目标计数 from ultralytics