【Linux】Linux基础之权限

news2024/12/31 5:00:49

目录

  • 一、Linux中的用户
    • 1.1 用户之间的身份切换
    • 1.2 指令提权
  • 二、权限管理
    • 2.1 文件权限
    • 2.2 权限操作
    • 2.3 chown和chgrp
  • 三、文件类型
  • 四、目录文件的权限操作
  • 五、权限掩码
  • 六、粘滞位

一、Linux中的用户

Linux中主要有两种用户:

  • root,超级用户
  • 非root,普通用户(xxx)

一般情况下root只有一个,但是可以有多个普通用户
在这里插入图片描述

1.1 用户之间的身份切换

指令1:su -

在这里插入图片描述

指令2:su

普通用户,切换成超级用户:
在这里插入图片描述
输入密码时,密码不显示。

超级用户切换成普通用户:
在这里插入图片描述

普通用户切换为另一个普通用户:
在这里插入图片描述
用户的身份切换后,可以用两种方式返回到原来切换前的用户:

  • 输入exit
  • ctrl + d

在这里插入图片描述
在这里插入图片描述

1.2 指令提权

当要执行一条指令,必须是超级用户的身份才行,但是又不想切换成超级用户,还是普通用户的身份,只是可以拥有超级用户的权限去执行这条指令,使用指令:

sudo + 操作指令

比如我想以超级用户的权限去执行一条指令:
在这里插入图片描述
如何添加配置文件:

vim /etc/sudoers

配置完普通用户可以使用sudo
在这里插入图片描述
第一次需要普通用户的密码,后面再使用sudo不需要密码。

二、权限管理

2.1 文件权限

Linux下一切皆是文件,文件权限主要分为群体和操作对象的属性。权限的出现是用来限制用户的,这里的用户可以是root超级用户、普通用户。Linux中的群体更多代表的是角色,有——拥有者、所属组、other。用户是否受权限的限制在于这个用户的角色是否有相应的文件权限属性,文件权限属性有——r(读)、w(写)、x(执行)。比如小明是某小学的校长,那么他就有管理这个学校的权限,换句话说小明可以管理这个学校,是因为他叫小明,还是因为他是这个学校的校长呢?很明显,因为小明是这个学校的校长,所以他才能管理整个学校,但是他没有管理其他学校的权限。

在这里插入图片描述

有r代表可读,有w代表可写,有x代表可执行,是横线说明没有该权限

2.2 权限操作

权限的属性是可以修改的:

  • 指令:chmod
  • 拥有者——user——u
  • 所属组——group——g
  • 其他用户——other——o

具体操作如下:
在这里插入图片描述

+代表可以增加权限,-代表可以去掉权限

如果一个一个操作太麻烦了,可以使用a+或者a-来操作,a代表所有角色
在这里插入图片描述

除此之外,还可以使用二进制的形式来操作,每个角色都有三种权限,有是1,没有是0。有3个1转换成八进制是7,只有读的权限转换成八进制是4,只有写的权限转换成八进制是2,只有执行的权限转换成八进制是1。可输入3个数,这3个数字分为是拥有者、所属组、other的权限。

在这里插入图片描述

有对应的权限才能有对应的操作
在这里插入图片描述
增加上读写的权限
在这里插入图片描述

读写的权限我们已经知道了,现在看看执行权限是怎么回事
在这里插入图片描述
file.txt有执行权限,但是不能被执行,因为Linux的文件可执行必须有两个条件,缺一不可:

  • 有可执行的权限(x)
  • 必须是一个可执行的程序

file.txt文件虽然有可执行的权限但是它不是可执行的程序,所以不能运行。看可以被运行的:
在这里插入图片描述

特殊的情况:
普通用户查看一个文本文件,该拥有者必须要有 r 读的权限
在这里插入图片描述
如果把拥有者的读权限去掉,会发生什么:
在这里插入图片描述
操作不被允许,但是我们发现它的所属组有 r 的权限,为什么不行呢?因为系统只识别拥有者是否有可读权限,也就是说,这个文件是yss创建的,同时目前的身份是yss,那么它就只看yss拥有者是否有可读的权限,只以第一次的识别为标准,后面的所属组是否有 r 它就不看了。

这里先使用一下chown修改拥有者:
在这里插入图片描述
如果把身份改为yyy,是否还能查看呢?
在这里插入图片描述

以上的权限管理只是对于普通用户,root超级用户不受权限控制:
在这里插入图片描述

2.3 chown和chgrp

  • chown——修改拥有者
  • chgrp——修改所属组

注意:使用这两个指令必须是root或者是以root的权限才能操作

在这里插入图片描述

操作一:使用sudo
1️⃣修改拥有者:
在这里插入图片描述

2️⃣修改所属组:
在这里插入图片描述

操作二:切换为root用户
1️⃣修改拥有者:
在这里插入图片描述

2️⃣修改所属组:
在这里插入图片描述
操作三:一次性修改
在这里插入图片描述

三、文件类型

windows下的文件,一般是以后缀来区分的;Linux下文件是以第一个字符来区分:

  • 横线(-)——普通文件(文本、图片、视频等等)
  • d——目录文件
  • b——块设备文件
  • c——字符设备文件
  • l——链接文件
  • p——管道文件

常见的是普通文件和目录文件:
在这里插入图片描述
Linux的文件是可以有后缀的,比如上图的.txt和.c。既然都用第一个字符来识别文件类型,那么有后缀的意义何在呢?这里演示一下:
在这里插入图片描述
说明了一件事,我们在操作的时候,后缀不管是怎样的,系统不会因为后缀名就不做相应的工作。但是,系统里的工具需要识别后缀名是否对应,比如是gcc和g++,使用gcc就要是.c后缀。所以,为了方便操作,以及看得清楚什么文件做什么,文件的后缀名尽量不要乱用。

除了看第一个字符来区分文件类型外,还可以使用一个指令来查看文件类型:

file + 文件名

在这里插入图片描述

四、目录文件的权限操作

前面的权限操作都是对普通文件,目录文件的权限操作又是一回事

1️⃣进入目录文件的权限
拥有者需要x可执行的权限
在这里插入图片描述

2️⃣查看目录文件信息的权限
需要r可读的权限
在这里插入图片描述
在这里插入图片描述

3️⃣在目录文件新建和删除文件的权限
需要w可写的权限
在这里插入图片描述
在这里插入图片描述
以上就是目录文件的权限管理,但还是只针对普通用户,超级用户不受影响。
在这里插入图片描述

五、权限掩码

我们创建一个目录文件或者普通文件时,对应的权限目录文件是775,普通文件是664(有的人可能不同),为什么不是777呢?
在这里插入图片描述
这与权限掩码有关,每个文件都有一个起始权限,普通文件的起始权限是666,目录文件的起始权限是777

指令 :umask——定制一个文件被创建时的默认权限

在这里插入图片描述

计算:起始权限 & (~umask)= 最终权限

在这里插入图片描述
权限掩码是可以修改的
在这里插入图片描述
在这里插入图片描述

六、粘滞位

假如一个超级用户,在一个普通用户的家目录里创建一个文件,这个文件的拥有者和所属组都是root
在这里插入图片描述
此时普通用户是可以读root创建的文件的内容
在这里插入图片描述
如果root不想让别人读文件的内容,去掉该文件的所有权限
在这里插入图片描述
普通用户既读不了,也不能写入
在这里插入图片描述
但是可以删除这个root创建的文件
在这里插入图片描述
root创建的文件的权限没有w,为什么普通用户还能删除呢?因为删除一个文件不在于文件本身,而在于该文件的目录的拥有者是否有w写的权限。很明显,这个文件的所处的目录是普通用户yss的,它的拥有者具有w写的权限,所以可以对它目录下的文件进行删除,不管那个文件是谁的。
在这里插入图片描述
还有一个问题,为什么别人要在我家里创建文件呢?能不能有一个公共区域共享文件,答案是有的。
在这里插入图片描述
tmp目录的权限有一个t,先以root身份把这个t去掉,来验证下公共区域tmp里的文件共享
在这里插入图片描述
再切换为另一个普通用户
在这里插入图片描述
有读的权限,可以看文件的内容

若该文件的创建者yss把这个文件的所有权限去掉
在这里插入图片描述
既然不让其他用户看到文件的内容,那么其他用户是否可以把这个文件删除?
在这里插入图片描述
确实可以删除,可是回到最开始的问题,既然我(一个普通用户)创建的一个文件放在公共区域里,可以让别人读或者写,也有权利不让别人读或者写,但是防不住别人删了这个文件,该怎么办?所以有一个新的权限可以介绍了——粘滞位(t)

还是yss普通用户在tmp里创建一个文件,同时把tmp的粘滞位加上
在这里插入图片描述
切换为另一个普通用户看是否可以删除该文件
在这里插入图片描述
此时就不行,粘滞位t有x的性质,但同时它又对目录权限进行特殊限定,其他用户不能删除该目录下的文件,只要root超级用户和该文件的的拥有者可以删除。

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

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

相关文章

x-cmd pkg | trdsql - 能对 CSV、LTSV、JSON 和 TBLN 执行 SQL 查询的工具

目录 简介首次用户技术特点竞品和相关作品进一步阅读 简介 trdsql 是一个使用 sql 作为 DSL 的强大工具: 采用 SQL 对 CSV、LTSV、JSON 和 TBLN 文件执行查询与 MySQL,Postgresql,Sqlite 的 Driver 协同,可以实现对应数据库的表与文件的 JO…

Python Asyncio网络编程方法全面解析与实战应用!

更多Python学习内容:ipengtao.com Python的asyncio库是一种强大的异步编程工具,它使得编写高效的网络应用程序变得更加容易。在本文中,我们将深入探讨使用asyncio进行网络编程的方法,包括异步IO、协程、事件循环等方面的内容&…

Long类型转换精度丢失问题解决

问题: 启动前端项目 页面传递的ID 和数据库保存的ID不一致 原因:给前端返回的id为long类型,在转换json传递到前端以后精度丢失,所以前端给我们的id也是丢失精度的id,不能查询数据。 因为js数字类型最大长度为16位,而java的long类…

【强力推荐】GitCode AI开源搜索,面向开发者的专业AI搜索

一、GitCode AI开源搜索是什么? GitCode AI开源搜索 是面开发者的 AI 开源搜索工具,目的是为了帮助开发者快速寻找开源项目代码、解决开发问题和快速寻找答案,帮助开发者提升效率的同时利用代码仓托管能力建立自己个人知识库。 二、GitCode…

如何才能成长为一个架构师?

很多技术小伙伴都在问我,架构师是不是很牛逼,那么为什么自己不能成长为一名优秀的架构师呢?而总是作为工程师资源被项目打包带走,并周而复始的完成领导的业务开发需求任务。 架构师的工作职责? 为了方便技术小伙伴理…

带修莫队 P1903 题解

Part # 0. 前言 \text{Part \# 0. 前言} Part # 0. 前言 这个蒟蒻刚学带修莫队,所以 介绍带修莫队的部分比较简略,大家可以去参考一下 OI-wiki 或者其他大佬的博客:) 本文参考了洛谷题解。 Part # 1. 带修莫队 \text{Part \# 1.…

OSPF 路由协议原型系统设计与实现

1.题目描述 参考计算机网络教材 164 页 OSPF 路由协议工作原理,在此基础上,实现一个简单的原型系统。主 要完成工作有:路由节点泛洪发布本地节点的链路信息,其它节点接收信息,构造网络拓扑,然后利 用 Dijk…

Linux第18步_安装“Ubuntu系统下的C语言编译器GCC”

Ubuntu系统没有提供C/C的编译环境,因此还需要手动安装build-essential软件包,它包含了 GNU 编辑器,GNU 调试器,和其他编译软件所必需的开发库和工具。本节用于重点介绍安装“Ubuntu系统下的C语言编译器GC&a…

如何解决找不到mfc100u.dll无法运行程序问题,分享四种靠谱的方法

在日常使用电脑的过程中,我们可能会遇到各种问题,其中之一就是找不到mfc100u.dll的困扰。这个问题主要是因为mfc100u.dll是Microsoft Foundation Class(MFC)库中的一个版本特定的DLL文件,它是Visual Studio 2010及更早…

java 音乐会售票平台系统Myeclipse开发mysql数据库struts2结构java编程计算机网页项目

一、源码特点 java 音乐会售票平台系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助struts2框架开发mvc模式,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发 环境为TOCAT7.0,Myeclipse8.5开发,数据…

Video classification with UniFormer基于统一分类器的视频分类

本文主要介绍了UniFormer: Unified Transformer for Efficient Spatial-Temporal Representation Learning 代码:https://github.com/Sense-X/UniFormer/tree/main/video_classification UNIFormer 动机 由于视频具有大量的局部冗余和复杂的全局依赖关系&#xf…

企业一线员工定岗定编全解析

引言:在生产制造企业中,由于一线员工工作内容单一,与产量线性关系明显,因此针对一线员工的定编方法最简单有效的就是通过数据计算的方式。人力资源专家——华恒智信根据多年以来对生产制造企业定岗定编的关注与研究得出的经验&…

第7章-第5节-Java中的比较器comparator和泛型的简单说明

1、 引入 上个章节中我们在使用TreeSet保存自定义数据类型的时候,类必须要实现Comparable这个接口,然后重写CompareTo这个方法,这个必须是在具体的自定义类内部去写,有时不方便,每遇到一个都要在那个类内部去写这个Co…

如何把电脑中的项目快速传进Github中?

一、打开GitHub网站:https:github.com 登录自己的个人账号 1.新建一个项目 2.用鼠标直接拖拽电脑中的项目文件夹与文件到新创建的项目中点击保存即可。

Xfs文件系统磁盘布局

目录 一,CentOS下Xfs文件系统的安装 二,准备工作 三,AG结构 四,AG超级块 五,AG空闲磁盘空间管理 六,ABTB的Btree 七,ABTB/ABTC的节点块管理 八,inode节点管理 九&#xff0…

Redis 键中冒号的用途是什么?可以使匹配查询更快吗?

Redis 键中冒号的用途是什么在Redis中,冒号(:)用作键的分隔符,它的主要作用是创建层次结构和命名空间。通过在键中使用冒号,可以将键分为多个部分,从而更好地组织和管理数据。 以下是冒号在Redis键中的用途…

PyTorch|构建自己的卷积神经网络——卷积层

在构建我们的网络时,我们需要用到卷积层提取特征,来看到一些特别的东西,当图片经过卷积层,图片尺寸一般会变化。 当我们构建网络时,我们需要确定各个层的参数,而这些参数,则是要提前计算的&…

【Python常用函数】一文让你彻底掌握Python中的numpy.append函数

大数据时代的到来,使得很多工作都需要进行数据挖掘,从而发现更多有利的规律,或规避风险,或发现商业价值。而大数据分析的基础是学好编程语言。本文和你一起来探索Python中的append函数,让你以最短的时间明白这个函数的原理。也可以利用碎片化的时间巩固这个函数,让你在处…

【数据分享】2024年我国主要城市地铁站点和线路数据

地铁站点与线路数据是我们经常会用到的一种基础数据。去哪里获取该数据呢? 今天我们就给大家分享一份2024年1月采集的全国有地铁城市的地铁站点与线路数据,数据格式为shp,数据坐标为wgs1984地理坐标。数据中不仅包括地铁,也包括轻…

软件测试|深入理解SQL RIGHT JOIN:语法、用法及示例解析

引言 在SQL中,JOIN是一种重要的操作,用于将两个或多个表中的数据关联在一起。SQL提供了多种JOIN类型,其中之一是RIGHT JOIN。RIGHT JOIN用于从右表中选择所有记录,并将其与左表中匹配的记录组合在一起。本文将深入探讨SQL RIGHT …