【Linux】权限管理-权限的概念,umask,粘滞位

news2025/7/9 18:05:19

文章目录

    • shell命令以及运行原理
    • Linux权限的概念
      • 用户间的权限切换
        • su和su -的区别
      • 仅提升当前指令的权限
    • Linux权限管理
      • 文件访问者的分类(人)
      • 文件类型和访问权限(事物属性)
      • 文件权限值的表示方法
        • 字符表示方法
        • 8进制数值表示方法
      • 文件访问权限的相关设置方法
        • 改变文件的访问权限: chmod指令
        • 改变文件的拥有者 chown指令
        • 改变文件的所属组 chgrp指令
    • 修改文件的掩码 umask指令
      • file指令
    • 目录的权限
    • 粘滞位
    • 关于权限的总结

shell命令以及运行原理

广义上:Linux发行版 = Linux内核 + 外壳程序 狭义上:Linux = Linux内核

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel,而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通.如何理解?为什么不能直接使用kernel?

从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含

  • 将使用者的命令翻译给核心(kernel)处理.同时,将核心的处理结果翻译给使用者.
image-20220313192231410

对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)

shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核.反馈结果在通过内核运行出结果,通过shell解析给用户.

image-20220313150515772

帮助理解:如果说你是一个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的且有让你心动的MM小花.你看上了小花,但是有不好意思直接表白,那就让你你家人找媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给小花,而我们找到媒婆姓王,所以我们叫它王婆,它对应我们常使用的bash


Shell的好处:

  • 传递请求指令,让OS执行命令 保护内核

Shell运行原理:
1)创建子进程,让子进程进行命令行解释. 2)子进程出现任何问题,都不影响父进程Shell.

注意: Shell只是所有外壳程序的统称,例如在centos 7当中的外壳程序名叫bash.程序运行起来就是一个进程,Shell本身就是一个进程


Linux权限的概念

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

  • 超级用户root:可以再linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限的事情.具有一般权限,需要受权限约束的
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
image-20220313151044962

用户间的权限切换

命令:su 用户名 功能:切换用户.

例如

要从root用户切换到普通用户user,则使用 su user. 从root切到普通用户不需要输入密码,要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的密码.

普通用户如何更改密码: password 超级用户更改密码: password 用户名


注意:

  • 从普通账号切换为root账号时,指令当中的root可省略,因为root账号只有一个.
  • 该指令也可以从一个普通用户切换为另一个普通用户,输入待切换用户的账号密码即可.
  • 切换用户后,若想切回上次的用户,可通过Ctrl+D 或者输入exit实现.

su和su -的区别

二者都可以切成超级用户,但是su切换后当前路径不变, 而 su -路径会发生改变,变成根目录

image-20220313195146994

仅提升当前指令的权限

语法: sudo 指令 功能: 临时提升当前指令的权限,以root身份执行

普通用户想使用sudo.需要被超级用户添加到信任列表后,才能拥有提升当前指令的权限

方法: 1.在root用户下:用vim打开 /etc/sudoers文件

image-20220404165116197

2.使用基本的vim操作,在底行模式中,先打开行号 :set nu,大概在100行左右,然后把自己添加到信任列表中用户名 ALL=(ALL) ALL

image-20220404165515574

3.然后我们的用户就可以使用sudo命令了

image-20220404165659048

当我们想要改密码时: 直接:sudo passwd 用户名


Linux权限管理

理解什么是权限:一件事情是否允许被特定的人做

权限约束的是人 和 文件本身具有的天然的权限属性: r + w + x (权限 = 人 + 事物的属性), 所以权限的操作只分两类: 1.修改人 2.修改文件的属性


文件访问者的分类(人)

  • 文件和文件目录的所有者:u—User (文件拥有者)
  • 文件和文件目录的所有者所在的组的用户:g—Group (文件所属组的人)
  • 其它用户:o—Others (其他人)

注意:
1)对于某一文件而言,其拥有者、所属组和other就是由超级用户(root)和普通用户所扮演

2)在Linux当中,所有用户都要隶属于某一个组,哪怕这个组只有你一个人(此时该组就以你的用户名为组名)

  • 拥有者,所属组,other :指的是角色身份
  • root和普通用户 : 指的是具体的一个人

为什么存在所属组的概念?

假如某公司存在两个小组,二者是竞争关系,在同一个Linux服务器进行着同一款项目的开发,如果没有所属组的概念

  • 那么当你创建了一个文件后,要么就是只有你自己(拥有者)能看到,要么就是其他人(other)也都能看到.
  • 而你所希望的是你自己和你的小组成员能看到,剩下的人看不到.于是就有了所属组这个概念,这时你就可以将文件设置为拥有者和所属组可见,而other不可见.所以所属组的存在是为了更灵活的进行权限配置,满足团队协作.

可以通过ll 或者ls -l指令查看具体的信息

image-20220313155246217

所属组: 自己看到&&同组的人看到,不想让其他人看到


文件类型和访问权限(事物属性)

image-20220313155514641

权限涉及到某个具体的事物来说,我们还需要讨论事物本身的属性.对于文件来说,我们应该讨论其文件类型,以及是否具有可读、可写和可执行的属性.

image-20220313155452922

通过指令ll,我们可以看到前面有一串字符,这串字符实际上就代表着该文件的类型和属性.


其中第一个字符代表该文件的类型,共10个字符

image-20220313155739966

不同的字符开头表示不同的文件类型

  • d:文件夹(目录文件) -:普通文件(文本,各种动,静态库,可执行程序,源程序)
  • l:软链接(类似Windows的快捷方式) b:块设备文件(例如硬盘、光驱等)
  • p:管道文件 : 通信 c:字符设备文件(例如屏幕等串口设备, 键盘与显示器) s:套接口文件

注意:Linux当中,文件类型和文件后缀无关


剩下的字符,每三个分为一组,分别代表该文件相对于其拥有者、所属组以及other是否拥有某种属性.

image-20220313155940442

每一组的三个字符的解析: 第一个字符代表该文件是否具有可读属性r,第二个代表是否具有可写属性w,第三个代表是否具有可执行属性x


基本权限:

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

-表示不具有该项权限


对于目录:

读取权限r:查看这个目录的内容 如:ls 写入权限w:向这个目录下创建文件或者创建普通目录 可执行权限x:进入目录 如:cd


例如

image-20220313160205957


文件权限值的表示方法

字符表示方法

通过ll指令显示文件权限值时的表示方法就是字符表示法

字符表示法说明
r - -仅可读
- w -仅可写
- - x仅可执行
r w -可读可写
r - x可读可执行
- w x可写可执行
r w x可读可写可执行
- - -无权限

8进制数值表示方法

字符表示法中,每一个字符所在位置所表示的结果只有两种可能,要么为真,要么为假, 所以我们可以用三个二进制位表示这三个字符,转化为一个八进制位进行表示:

字符表示法二进制八进制数值表示法说明
r - -1004仅可读
- w -0102仅可写
- - x0011仅可执行
r w -1106可读可写
r - x1015可读可执行
- w x0113可写可执行
r w x1117可读可写可执行
- - -0000无权限

文件访问权限的相关设置方法

改变文件的访问权限: chmod指令

语法: chmod 选项 权限 文件名或目录名 功能:设置文件的访问权限

常用选项: R 递归修改目录文件的权限


chmod命令权限值的格式

格式1: 用户表示符 +/-= 权限字符

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

用户符号: u:拥有者 g:拥有者同组用(所属组) o:其它用户 a:所有用户

image-20220313193252716

若要同时设置不同类用户的访问权限,则需用逗号隔开.

image-20220313193519977

格式2:三位8进制数字 将对应的八进制数转换为二进制,进而设置对应权限值.

image-20220313194216612

说明:只有文件的拥有者和root才可以改变文件的权限 , 这种修改权限是永久修改,重启之后不恢复 注意:root权限基本不受约束

如:test.txt对任何用户都没有任何权限,但是root依然可以写入数据,读取数据

image-20220313194623191

改变文件的拥有者 chown指令

语法: chown 选项 用户名 文件名或目录名 功能:修改文件的拥有者 常用选项: -R 递归修改目录文件的拥有者.

image-20220404200438616

注意: 修改文件的拥有者需要root用户进行操作,若是普通用户则需要进行权限提升.

使用chown可以同时修改文件所属组和文件拥有者 将拥有者和所属组的用户名用冒号隔开即可

image-20220404200758440

改变文件的所属组 chgrp指令

语法: chgrp 选项 用户名 文件名或目录名 功能: 修改文件的所属组. 常用选项: -R 递归修改目录文件的所属组.

image-20220404200602677

注意: 修改文件的所属组也需要进行权限提升. 如果文件属于你,但是所属组不是你,可以不经过root,直接把所属组改成自己

image-20220404201043938

除了拥有者和所属组之外的人都是其它人 如果更改了拥有者和所属组,那么对其它人的定义也发生变化


一个事物的创建者是不是就是这个事物的拥有者? 不是 ! 创建者!=拥有者

image-20220404202508971

修改文件的掩码 umask指令

我们查看新建的文件和目录,它们都有自己默认的权限.

新建文件夹(普通文件)默认权限(起始权限)为: 666 对应二进制:110 110 110 对应字符表示方法 : rw- rw- rw-
新建目录(目录文件)默认权限(起始权限)为: 0777 对应二进制:111 111 111 对应字符表示方法 : rwx rwx rwx

image-20220313195610131

语法: umask 权限值 功能: 查看或修改文件掩码.

image-20220313195705640


但实际上你所创建的文件和目录,看到的权限往往不是上面这个值.原因就是创建文件或目录的时候还要受到umask的影响.假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask

权限掩码: 凡是在umask中出现的,都应在起始权限中去掉

image-20220313201709626


image-20220313201923632

凡是在umask中出现的权限位,都不能在最终权限中出现


我们也可以通过修改umask来设置文件的访问权限

image-20220313202216044

超级用户默认掩码值为0022,普通用户默认为0002. 去掉所有人的写权限和可执行权限(即去掉wx) -> umask 0333

注意:自定义出来的权限只在本次登陆有效


file指令

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

image-20220313202431934

常用选项:

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

目录的权限

可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
可写权限: 如果目录没有可写权限, 则无法通过一系列指令在目录中创建文件, 也无法在目录中删除文件.

可执行权限: 如果目录没有可执行权限, 则无法cd到目录中


产生问题: 只要用户拥有某目录的可写权限,就可以删除该目录当中的文件,而不论该用户是否拥有该文件的可写权限,这显然是不合理的.

image-20220313203240356

为了解决这个不科学的问题, Linux引入了粘滞位的概念.


粘滞位

语法: chmod o+t 目录名 功能: 给目录加上粘滞位

只能对目录设置,一般是限制other权限的,对设置了粘滞位的目录,在该目录下,只能文件的拥有者和root可以删除,其它人不能删除

image-20220313203624847

此时就算其它用户有该目录的可写权限,也无法删除该目录下的文件

注意:

  • 如果目录本身对other具有w权限,则other可以删除任何的目录下的文件
  • 如果目录本身对other没有w权限,other不可以删除文件
image-20220404204624665

这样就可以满足某种需求:通过设置粘滞位,other可以在特定的目录下创建文件,并写入,但是不想让任何人删掉自己的文件


应用场景:

有时候,有多个人,或者系统会有很多的临时数据,所有的临时文件都放在系统的/tmp目录下,需要把所有的权限放开,但是只想让文件的拥有者自己删除自己的文件,->设置粘滞位

image-20220404203739331


例子:

为TEST目录创建粘滞位,这就保证了别人可以在这个目录下可以创建文件;可以删,但是只能删自己的,不能删别人的

image-20220404204858298
image-20220404205019836

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

一、超级管理员删除 二、该目录的所有者删除 三、该文件的所有者删除

注意: 虽然目录被加上了粘滞位,但如果用户有该目录的可写权限,则不影响其在该目录下创建文件


关于权限的总结

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

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

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

相关文章

前端项目中资源请求顺序和dom结构顺序不一致,资源启动器有(索引)解析器和脚本

红色框资源是在组件1中 绿色框资源是在组件2中 在页面 DOM 结构中组件顺序是,从上到下:组件1->组件2 但是查看 chrome调试工具的网络请求,发现绿色资源先请求,并且像是请求完才会去请求红色资源,它们启动器那一栏…

C++语法——make_heap、push_heap、pop_heap、sort_heap使用介绍

目录 一.make_heap(...) 二.push_heap(...) 三.pop_heap(...) 四.sort_heap(...) 这三个函数位于<algorithm>头文件中。 可以看这篇文章了解堆排序&#xff1a;手把手教你堆排序 一.make_heap(...) 这是该函数的官方定义&#xff1a; 这个函数用于建立堆。 前两个…

Linux日志管理logrotate日志轮转

文章目录 前言 日志轮转简介 工作原理 配置文件种类 观察主文件和子文件 主配置文件介绍 yum日志轮转示例 配置轮转规则 rotate 3演示 总结 前言 上篇文章学习了系统日志管理&#xff0c;对于日志来讲他是占内存的&#xff0c;当有大量的日志产生的时候&#xff0c;会…

一个简单HTML5期末考核大作业,学生个人html静态网页制作代码

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

m基于PSO粒子群优化的第四方物流的作业整合算法matlab仿真,对比有代理人和无代理人两种模式下最低运输费用、代理人转换费用、运输方式转化费用和时间惩罚费用

目录 1.算法概述 2.仿真效果预览 3.核心MATLAB程序 4.完整MATLAB程序 1.算法概述 粒子群优化 (PSO)算法是通过模拟鸟群觅食过程中的迁徙和群聚行为而提出的一种基于群体智能的全局随机搜索算法。PSO是将群体(swarm)中的个体看作是在D维搜索空间中没有质量和体积的粒子(part…

Paddle入门实战系列(一):基于PaddleOCR的车牌识别

✨写在前面&#xff1a;强烈推荐给大家一个优秀的人工智能学习网站&#xff0c;内容包括人工智能基础、机器学习、深度学习神经网络等&#xff0c;详细介绍各部分概念及实战教程&#xff0c;通俗易懂&#xff0c;非常适合人工智能领域初学者及研究者学习。➡️点击跳转到网站。…

MySQL十秒插入百万条数据

mysql数据库准备 private String Driver "com.mysql.cj.jdbc.Driver";private String url "jdbc:mysql://localhost:3306/mp?serverTimezoneAsia/Shanghai&rewriteBatchedStatementstrue";private String user "root";private String pa…

Pycharm 翻译插件失效(transaction) 问题解决【包括安装视频教程】

嗨害大家好鸭&#xff01;我是小熊猫❤ 最近有很多朋友反应 翻译插件用不了了(不想看文章的朋友 可以直接点击文章最下方QQ群 领取视频版教程) 那么今天&#xff01;&#xff01;&#xff01; 教大家如何快速解决这个问题 点击文件(file) —> 设置(setting) 点击工具(t…

【附源码】计算机毕业设计JAVA家庭园艺服务平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven Vue 等等组成&#xff0c;B/…

【Node.js】 第四章 模块化

目录 1. 模块化的概念 1.1 模块化的概念 1.2 模块化规范 2. Node.js中的模块化 2.1 模块分类 2.2 模块加载 2.3 模块作用域 2.4 向外共享模块成员 2.5 exports对象 2.6 Node.js中的模块化规范 1. 模块化的概念 1.1 模块化的概念 按照模块指定规则&#xff0c;把一…

什么是智能合约?新手入门指南

智能合约&#xff0c;也称为数字合约&#xff0c;在计算机网络中使用区块链技术来履行预编程的合约当合同的条件得到满足时&#xff0c;智能合同就会执行&#xff0c;例如向合同的一方发送付款。 智能合约之所以具有吸引力有多种原因&#xff1a; 不信任。由于智能合约及其条…

【c++ 】 对象与类中方法的调用关系。类中常方法,普通方法,静态方法之间互相的调用关系

对象与类中方法的调用关系。类中常方法&#xff0c;普通方法&#xff0c;静态方法之间互相的调用关系1.对象与方法之间的调用1.常对象只能调用常成员方法2.普通对象既可以调用普通成员方法&#xff0c;也可以调用常成员方法&#xff0c;当两个同名的常成员方法和普通成员方法重…

你安全吗?丨秦淮到底是哪种黑客?你猜对了吗?

作者&#xff1a;黑蛋 大家都知道黑客&#xff0c;但是黑客也分很多种类&#xff0c;那么秦淮属于哪种黑客呢&#xff0c;我们先来看一看黑客的种类&#xff1a; 1、白帽黑客&#xff1a;白帽黑客是指通过实施渗透测试&#xff0c;识别网络安全漏洞&#xff0c;为政府及组织工…

蓝桥杯入门即劝退(九)罗马数字

“为什么你没有变强&#xff0c;因为你最近一直过得太舒服” ----------持续更新蓝桥杯入门系列算法实例------------- 如果你也喜欢Java和算法&#xff0c;欢迎订阅专栏共同学习交流&#xff01; 你的点赞、关注、评论、是我创作的动力&#xff01; -------希望我的文章对你有…

数字孪生3d智慧核电可视化场景应用展示,包括:智能计算,智能运维

最近几年来&#xff0c;数字孪生技术已被应用于核电领域&#xff0c;并且国内已有一些公司在具体实践过程中&#xff0c;通过数字孪生赋能核电更加经济、灵活、高效运维。 北京智汇云舟科技有限公司成立于2012年&#xff0c;专注于创新性的“视频孪生&#xff08;实时实景数字孪…

c++ 正则表达式

文章目录正则表达式基本语句regex_matchregex_searchregex_token_iteratorregex_replace示例匹配电话号码匹配QQ号码匹配IP地址正则表达式 什么是正则表达式&#xff1f; 正则表达式(regular expression)描述了一种字符串匹配的模式&#xff08;pattern&#xff09;&#xff0…

GENERALIZATION THROUGH MEMORIZATION: NEAREST NEIGHBOR LANGUAGE MODELS

Abatract 我们引入了kNN-LMs&#xff0c;它扩展了一个预先训练的神经语言模型&#xff08;LM&#xff09;&#xff0c;通过与k个最近邻&#xff08;kNN&#xff09;模型线性插值。最近邻是根据预先训练好的LM嵌入空间中的距离进行计算的&#xff0c;并可以从任何文本集合中提取…

45-命令行基础操作

45-命令行基础操作LInux命令行基础LInux命令基础知识Linux的Gul与CLI为什么使用Linux命令行Linux命令语法格式Linux命令分类LInux基础命令登录命令电源管理命令电源命令1: shutdown电源命令2: halt电源命令3: reboot文件管理命令Linux文件目录结构(1)Linux文件路径帮助命令目录…

Vue+Vite+TS

目录#、基础配置1、安装Node.js2、修改npm镜像源3、配置vscode一、创建项目二、Ref全家桶三、computed计算属性js中数组使用的高阶函数四、watch监听器#、基础配置 1、安装Node.js 下载地址&#xff1a;https://nodejs.org/zh-cn/download/ 安装成功&#xff0c;查看版本node …

vue create 创建项目的时候遇到使用nvm切换node后 提示‘vue‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件

前景:我是用的是nvm切换的node版本&#xff0c;不是直接安装高级版本node,有nvm同样困惑的可以用以下方式解决问题&#xff0c;加油&#xff01;&#xff01;&#xff01; 报错: ‘vue’ 不是内部或外部命令,也不是可运行的程序 或批处理文件 解决方法: 1.检查node和npm nod…