Linux:权限篇

news2025/2/23 6:54:20

文章目录

  • 前言
  • 1.用户
  • 2.文件的权限管理
    • 2.1 修改文件的权限
    • 2.2 修改文件的拥有者
    • 2.3 修改文件的所属组
  • 3.file指令
  • 4.umask指令
  • 4.目录的权限管理
  • 总结

前言

  Linux权限在两个地方有所体现,一种是使用用户:分为root超级用户员与普通用户。另一个是体现在文件的访问权限上,比如有的可读不可写等等。

1.用户

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

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

  普通用户可以通过su命令+root账号的密码来切换为root,root可以通过su user切换为指定的user普通用户。
  普通用户切换为root用户:
在这里插入图片描述  root用户切换为普通用户:
在这里插入图片描述
  而如果我们仅仅只是对一条指令需要通过root来执行,那么切换账号就比较麻烦了。我们可以直接用sudo来对某一条指令进行提权。
在这里插入图片描述
  这里输入自己的密码就可以了,那么就有人会问了,自己输入自己的密码就可以有用root的权限,那这是不是有些违规了呢?其实并不是的,在Linux中还有一个sudoers的文件,里面保存了可信任用户的名单,只有在这份名单的人才可以使用sudo来进行提权,而只有管理员root才能修改这个文件中的名单,而能被root记录在此文件中的人也一般都是可信任的。

2.文件的权限管理

  权限是什么?权限本质上其实就是你是否被允许做某事。在Linux中,每个文件都有权限方面的属性,属于是伴生于文件的,一般包含 “r” 可读、“w” 可写、“x” 可执行。
  而这些都是文件本身的属性,对于使用者同样是有区分的,就比如上面所说的普通用户和root用户,在使用者方面分为三者:文件和文件目录的所有者:u—User,文件和文件目录的所有者所在的组的用户:g—Group,其它用户:o—Others 。打个比方:你是和小王是一个小组成员,共同使用一个编写一个项目,你在编写项目时创建了一个文件。在这其中你就是user,小王就是Group,你们两个其他干其他工作的人就属于other。

在这里插入图片描述

  我们可以看到一共是有十列,除去第一列,后面九个三三为一组,分别代表着user、group、other的权限, 第一列表示的是文件类型。后面的则分别代表user、group、other是谁,而当你所在组的成员只有你一个人时,那么user和group自然也就是一个人。other显示为0,这是因为除了你和你的所属组之外都是other,是无法穷举的,因此显示为0。
  第一列代表着文件类型,那么它有什么含义呢?在windows中,区分文件的类型是根据文件的后缀来分别的,而在Linux中,区分文件的类型是与后缀无关的!!!它和文件是否具有可执行权限有关。那么在Linux中后缀还有什么意义呢?虽然Linux并不依靠后缀,但是有了后缀更容易方便我们来区别,因此一般情况下还是要加后缀的。同时我们所说的仅仅是Linux不对后缀进行区分,不代表着某些软件不区分,比如gcc,它只会编译以.c为后缀的文件。
  那么在Linux中的文件类型具体都有什么呢?

以-开头的:普通文件,如源代码、可执行程序、库等
d:目录文件
c:字符设备文件
b:块设备文件
l:链接文件
p:管道文件

2.1 修改文件的权限

  那么如何修改一个文件的权限呢?我们可以使用chmod指令。
  chmod
  功能:设置文件的访问权限
  格式:chmod [参数] 权限 文件名
  常用选项:

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

在这里插入图片描述
  这样我们就发现一个原本不具有可执行权限的文件现在具有了可执行权限。

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限

用户符号:

  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

  但是我们要注意,只有这个文件的user才能更改文件的权限。当然root是超级用户,即使不是文件的拥有者,一样可以进行修改,root用户是不受权限限制的。

在这里插入图片描述

  但是我们发现虽然我把自己的权限都删除了,但是我还是所属组的成员,所属组的权限还在,为什么我不能访问了呢?这是因为在匹配时,它是以user、group、other的顺便进行匹配的,只会匹配一次,在匹配成功后就不会继续向后匹配了,它只会认定你是user,所以即使你也是所属组的,但是系统会认为你是user,会根据user的权限来限制你。

  同时在修改权限时还可以通过以下方式修改,每一个权限都可以拿一个二进制进行表示。
在这里插入图片描述
  6也就是110,对于rw-,三个6分别对应user、group、other,这样就可以将三者的权限都改成了rw-。

在这里插入图片描述

2.2 修改文件的拥有者

  chown
  功能:修改文件的拥有者
  格式:chown [参数] 用户名 文件名
在这里插入图片描述
  这里是需要进行提权操作的,因为你将一个文件给别人,那是否需要整得别人的同意呢?别人都忙不过来了,你还给人家事情做,当然是不行的,但是我们经过提权后,我管你同不同意,直接就硬塞给人家。

2.3 修改文件的所属组

  chgrp
  功能:修改文件或目录的所属组
  格式:chgrp [参数] 用户组名 文件名
  常用选项:-R 递归修改文件或目录的所属组
在这里插入图片描述
  当然拥有者和所属组也是可以一起更改的:
在这里插入图片描述

3.file指令

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

-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容
在这里插入图片描述

  这就说明/usr/lib64/libz.so.1是一个链接文件。

4.umask指令

  可能有人会觉得为什么新建一个文件的权限就是rw-,这其实与Linux中的掩码有关。
  umask功能:查看或修改文件掩码
  新建文件夹默认权限=0666
  新建目录默认权限=0777
  但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
  格式:umask 权限值
  说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。
在这里插入图片描述
  我们发现当umask改变时,对应创建的新文件的权限也会发生改变。实际上002的意思就是—>000 000 010,分别对应user、group、other,也就是凡是在权限掩码中出现的权限,最终都要在起始权限中去掉。起始权限为666(不同平台是不一样的),可以将umask设置为0000来看(最终权限 = 起始权限 & (~umask) )。
  比如当权限掩码为777时。也就是111 111 111,那么创建出来的文件的权限应该就是什么都没有了。
在这里插入图片描述

4.目录的权限管理

在这里插入图片描述

  rwx权限在文件与目录中的含义是不一样的,我们知道x是执行,那么目录怎么执行呢?

  • 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  • 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  • 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  • “—”表示不具有该项权限

  缺少r权限,我们可以进去目录,但是无法查看目录的内容。
在这里插入图片描述
  缺少w权限,我们可以进去目录,也可以查看目录的内容,但无法在目录中创建新的文件。
在这里插入图片描述
  缺少x权限,我们无法进入该目录。
在这里插入图片描述
  于是, 问题来了,换句话来讲,就是只要用户具有目录的写权限,用户就可以删除目录中的文件,而不论这个用户是否有这个文件的写权限。这好像不太科学啊,我张三创建的一个文件,凭什么被你李四可以删掉?为了解决这个不科学的问题, Linux引入了粘滞位的概念。
在这里插入图片描述
  当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由超级管理员删除、该目录的所有者删除、该文件的所有者删除。

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

总结

  关于权限的内容,主要还是理解谁能干什么,不能干什么,并不涉及难以理解的知识,更多的还是需要继续熟悉Linux环境下的各个操作。
  如果大家发现有什么错误的地方,可以私信或者评论区指出喔。我会继续深入学习Linux,希望能与大家共同进步,那么本期就到此结束,让我们下期再见!!觉得不错可以点个赞以示鼓励!!

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

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

相关文章

nest路由参数

当你需要接受动态数据作为接口请求的一部分时(例如:GET请求 /cats/1 获取 id 为 1 的数据) 可以在路径中添加路由参数的标记 :参数名 ,捕捉该位置的动态值 将Param()装饰器加在函数接收参数的位置中,然后使用 1. 写法…

基于SSM+Jsp+Mysql的个性化影片推荐系统

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

红黑树平衡艺术:最大化与最小化红色结点比值的策略与实现

红黑树平衡艺术:最大化与最小化红色结点比值的策略与实现 一、 最大比值的红黑树构造1.1 伪代码示例:1.2 C代码示例: 三、最小比值的红黑树构造3.1 伪代码示例:3.2 C代码示例: 四、结论 红黑树是一种自平衡的二叉搜索树…

计算机网络——34LANs

LANs MAC地址和ARP 32bit IP地址 网络层地址用于使数据到达目标IP子网:前n - 1跳从而到达子网中的目标节点:最后一跳 LAN(MAC/物理/以太网)地址: 用于使帧从一个网卡传递到与其物理连接的另一个网卡(在同…

【C语言基础】:文件操作详解(前篇:准备知识)

文章目录 一、什么是文件以及文件的分类1.1 程序文件1.2 数据文件1.3 文件名 二、文本文件和二进制文件2.1 数据在文件中的存储 三、文件的打开和关闭3.1 流和标准流3.1.1 流3.1.2 标准流 3.3 文件指针3.5 文件的打开和关闭 一、什么是文件以及文件的分类 文件是指存储在计算机…

PHP数据类型

华子目录 数据类型PHP的八种数据类型基本数据类型,4类复合数据类型,2类特殊数据类型,2类 类型转换在PHP中有两种类型转换方式其他类型转bool类型其他类型转数值类型实例 类型判断获取和设定变量类型获取gettype(变量名)设置settype(变量名,类…

窜天猴AI直播软件功能列表

迎新点名:新进直播间的用户随机指数级自由组合话术,并播报出来 礼物/关注:用户送礼物、关注以及灯牌事件同上根据话术指数级随机组合出来评论区关键字回复:用户评论后,根据预设置的关键字进行语音回复 自动寻品&…

Redis的I/O多路复用

Redis是单线程的,为什么还那么快? 1.redis是基于内存的 2.redis使用I/O多路复用模型 关于I/O多路复用: 多路:多个客户端连接复用:使用单线程就能够实现同时处理多个客户端的连接 单线程去监控多个Socket&#xff…

多线程的入门(三)Thread的认识

线程的生命周期状态 1.Thread的构造器 Thread类的所有构造器最后都指向int方法 示例1: public Thread() {init(null, null, "Thread-" nextThreadNum(), 0); }示例2: public Thread(Runnable target) {init(null, target, "Thread-&qu…

list的使用

前言 我们前面已经对string和vector进行了学习使用,以及对他们的底层进行了模拟实现!本期我们继续学习STL的另外一个容器---list。 本期内容介绍 什么是list? list的常用接口 什么是list? 还是来看看官方的文档说明! 这里通过…

Flutter学习12 - SharedPreferences

1、shared_preferences 插件 类似于 Android 中的 SharedPreferences,键值对的形式进行本地存储 1.1、引入插件 在 pubspec.yaml 中引入 dependencies:shared_preferences: ^2.1.0在需要用到的文件中引入 import package:shared_preferences/shared_preference…

TAB标签美化 - SVG作为mask

今天觉得V3的标签不是很好看,忽然想起来之前看过Vue Admin Beautiful Pro的样式挺好的,顺手研究了一把。发现Vue Admin Beautiful是采用PNGmask css来解决的。于是乎打算把V3的标签页做点小美化,但是迁移过程发生些小插曲,在此记录…

蓝桥杯嵌入式(G431)备赛笔记——按键模块设计

cubeMX配置: 原理图 引脚配置为上拉模式 定时器 使用定时器3(通用定时器,使用外部晶振,内部时钟),分频系数为80(从0开始则为80-1),则每1s 1m次,定时评率为为10000,对应1s 1m/10000次,频率为10ms每次 一定记得开启NVIC使能中断 编写中断回调函数 void HAL_TIM_Per…

windows程序设计课程作业-1

目录 1、作业内容 2、主要思路 (1)写接口 (2)写类具体实现接口 (3)声明委托 (4)创建实例 (5)实例化委托 3、难点分析 1)想明白接口的作用 2)委托的作用 4、实现代码 5、运行结果 1、作业内容 使用 C# 编码(涉及类、接口、委托等关…

Android Studio学习10——资源res的使用

一、String,StringArray的使用 一次修改,多出生效 String StringArray 二、color的使用 颜色代码对应表 和上面的相似用法 三、Dimen(尺寸)的使用 用的少,一般直接写尺寸 四、如何写一个drawable作为背景 五、如何写一个可以改变的drawable(按钮按下…

python爬虫———post请求方式(第十四天)

🎈🎈作者主页: 喔的嘛呀🎈🎈 🎈🎈所属专栏:python爬虫学习🎈🎈 ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天…

【Qt 学习笔记】如何在Qt中打印日志 | qDebug的使用 | Assistant的使用

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 如何在Qt中打印日志 | qDebug的使用 文章编号:Qt 学习笔记…

全文更新:什么是Power Path?充电时是充电器供电还是电池供电?

原文来自微信公众号:工程师看海,与我联系:chunhou0820 看海原创视频教程:《运放秘籍》 昨天的文章误删了一部分,很多同学留言想看全文,现补充、更新如下: 前段时间,交流群里有位同学…

【群智能算法改进】一种改进的鹦鹉优化算法 鹦鹉优化器 IPO算法【Matlab代码#73】

文章目录 【获取资源请见文章第5节:资源获取】1. 原始鹦鹉优化算法PO2. 改进后的IPO算法2.1 自适应切换因子2.2 混合柯西和高斯变异 3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节:资源获取】 1. 原始鹦鹉优化算法PO 鹦鹉优化算法…

由王雅贤带你深入《DBWGLX vs Ethan_Wang》

vs是versus。 (百度收录我DBWG🙏🙏🙏) 算来篇自传吧。像自我介绍和简历我是完全没写过喵~ 2024年4月6日12:44:53書 本命王雅贤,DBWGLX我的微信号,至于什么意思,吊臂王锅的意思&am…