Linux——对权限的理解

news2024/10/6 14:32:59

文章目录

  • 总述
  • Linux权限的概念
  • Linux 权限管理
    • Linux对文件访问者的分类
    • 文件类型和访问权限
      • a.文件类型
      • b.基本权限
      • 文件权限修改的相关方法
  • 其他问题
    • 在首次创建时文件的权限属性是固定的吗?
    • 目录的权限
    • 粘滞位

总述

本篇博客将主要讲解linux系统中权限的概念,权限的表示形式以及如何管理权限。


Linux权限的概念

Linux用户可以分为两种用户:超级用户(root),普通用户

  • 超级用户:可以在linux系统下做任何事件,基本没有任何限制
  • 普通用户:受到权限的限制

通过su命令可以实现用户之间的切换。
命令: su [用户名]

假如从root账户转换为用户user只需要输入 su user即可,而若要从普通用户切换到root账户只需要输入su即可,不需要输入其他东西
这里大家会发现,从root转换为普通用户不需要输入密码,而从普通用户转换为root用户不需要输入密码。
(输入密码的过程不会回显,只需要全部输完按下回车即可)

在这里插入图片描述

Linux 权限管理

在Linux下,一切皆为文件,所以对文件操作的权限管理是非常重要的一部分。
那么什么是权限呢?

  • 权限认证的是“身份”(也就是和此时要使用这个文件的人的身份)
  • 权限也跟“事物的属性”有关

对于一个文件来说,权限有是否能被读,是否能被写(修改),是否能被执行

Linux对文件访问者的分类

  • 该文件或者目录的创建者(所有者)u – (user)
  • 该文件或目录的所属组 g – (group)
  • 其他人 o – (other)

文件类型和访问权限

我们可以用指令ll来看文件的属性,如下:

在这里插入图片描述
这里的每一类都代表了一种文件属性:
在这里插入图片描述

如上所示,第一行的第一个字母代表的是文件属性,也就是说在linux系统中后缀名对文件类型的意义不大,下面是一些常见的文件类型:

a.文件类型

d ~~文件夹

  • ~~ 普通文件
    l ~~ 软链接(类似于Windows的快捷方式)
    b ~~ 块设备文件(例如键盘,光驱等)
    p ~~管道文件
    c ~~字符设备文件(例如屏幕等串口设备)
    s ~~套接口文件

b.基本权限

读(r): 具有读取文件内容的权限
写(w) : 具有修改文件内容的权限
执行(x) : execute 具有执行文件的权限

  • : 代表不具备该权限

也就是说,在文件类型之后的9个字符就是代表各种用户的权限,从左到右三三为一组,分别是对于所有者(u),所属组(g),其他人(o)对该文件所拥有的权限

例如:-rw-rw-r--就表示

  • 对于所有者来说拥有对该文件的读和写权限
  • 对于所属组来说具有对该文件的读和写权限
  • 对于其他人来说只右对该文件的读权限

同时,文件权限值不仅可以用字符表示,也可以用八进制表示,也就是说一个八进制数代表对于一种用户是否有读,写和执行权限,同样举个例子:

例如: drwxrwxr-x这段权限,我们可以先用二进制位表示每个位置是否有对应权限,
所以上面的权限就相当与 111 111 101,三三为一组转换为八进制数字就是775

文件权限修改的相关方法

既然我们已经初步理解了文件权限,那么当然要知道如何修改文件权限了!
在Linux系统中,修改文件权限同样也是用指令进行的。

chmod
功能: 设置文件的访问属性
格式:chmod [参数] 权限 文件名
常用选项:

R : 递归修改目录文件的文件属性
注意:只有用户的所有者和root用户才有权利修改文件的权限

使用格式:

+: 对权限范围增加权限代号所表示的权限
-:对权限范围减去权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户分类:

  • u:所有者用户
  • g:所属组用户
  • o:其他用户

示例:(同时处理多种用户对该文件的权限,需要用逗号隔开)
在这里插入图片描述

另外,我们刚才说了文件权限可以用八进制数字表示,因此我们也可以使用八进制数字来进行权限的数字。

例如: 662转换为权限表示就是:rw-rw–w-,因此用662去设置权限就可以成功修改。
在这里插入图片描述

可以看到,结果确实如我们所预测的那样。

当然,不仅可以修改文档权限,同时也可以修改文件的拥有者和所属组。

chown(修改文件所有者):
只能使用root超级用户来进行修改,这是系统的规定!
格式: chown [参数] 用户名 文件名
例如:chown user1 f1

chgrp(修改文件或目录的所属组)
chgrp [参数] 用户组名 文件名

-R 递归修改文件或目录的所属组

其他问题

关于权限的知识讲到这里就有一个大致了解了,但还剩下一些小细节,接下来的篇章将为大家讲述一下这些小细节。

在首次创建时文件的权限属性是固定的吗?

经过实际操作之后,答案是确实是固定的,在centos7.x下,根据我们刚才对权限的理解,默认新创建出来的文件权限属性是664,而默认新创建出来的目录属性是775,为什么呢?

这里就要首先说明一下,linux下默认给普通文件的起始权限是666,而给目录文件的起始权限是777。

那为什么实际创建出来的文件和目录,权限不是上面那个值呢?原因就是创建文件或目录的时候还要受到umask(权限掩码)的影响,假设默认权限是mask,则创建出来的文件权限是:mask&(~umask)

注意,这里的&和~是位操作

**权限掩码:**由三个八进制位组成,分别代表三个身份的权限掩码,凡是在umask中出现的权限,不会在最终生成的文件权限中出现。

一般,默认的权限掩码是 0002(这里第一个0可以看作是表示后面三个位是八进制位)

因此,666&( ~002 )就得到了664
777&(~002)就得到了775,这就是新创建的文件和目录默认权限产生的由来。

另外,权限掩码是可以进行修改的。
umask 权限值 即可修改权限掩码,例如nmask 755,将权限掩码修改成755.

目录的权限

另外一个问题就是,普通文件的可读和可写,可执行功能我们很好理解,那目录的r,w,x又该如何理解呢?
下面我们进行解释:

  • 可执行权限:如果目录没有可执行权限,则无法进入目录(无法cd)
  • 可读权限:如果目录没有可读权限,则无法用ls等命令查看目录中的文件内容
  • 可写权限: 如果目录没有可写权限,则无法在目录中创建目录,也无法在目录中删除目录

粘滞位

这里有一个场景,假设张三和李四共享了一个目录,而他们两个人都对目录具有写权限,那么如果李四想要删除张三 在这个文件夹内创建的文件,是否可行呢?
答案是可行!,这是由于文件夹内的文件是否能被删除是根据用户是否具有存放该文件的目录的写权限来决定的,就算该用户对这一文件没有写权限也可以,那么大家想想,这是不是非常的不合理呢?
那么,有没有办法做到在共享文件夹内各个用户只能删除自己创建的文件,而不能删除其他用户创建的文件呢?

这时,粘滞位就闪亮登场了!
通过使用 命令 chmod o+t 目录名,就可以对该目录添加粘滞位,就可以完美满足上面的需求了。
创建粘滞位之后,会发现目录权限属性中的x变成了t,说明t是一种特殊的x权限。

对于被设置成粘滞位的目录,该目录下的文件只能由

  • 超级管理员删除(root)
  • 该文件的所有者删除

以上就是关于权限的全部内容啦!如果还有哪里有不懂的,或者对博主写的哪些地方有不同看法,觉得博主所写有误的化,欢迎大家提出哦,我们可以一起探讨!

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

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

相关文章

Sort练习题

sort 练习 练习题 题目&#xff1a;浮点数排序 #define _CRT_SECURE_NO_WARNINGS #include <cstdio> #include <algorithm> //sort()排序 #include <cmath> //round()来找最近的整数 using namespace std; const double EPSILON 1e-6; //两个浮点…

web框架:Iris快速入门

web框架&#xff1a;Iris快速入门 1 介绍及安装 介绍 Iris是一款用Go开发的web应用框架&#xff0c;被称为速度最快的Go后端开发框架。官网地址&#xff1a;https://www.iris-go.com/中文教程地址&#xff1a;http://www.codebaoku.com/iris/iris-index.html 安装 环境要求&a…

QTableView编程——Model/View架构(单元格随意拖拽交换)

QTableView编程——Model/View架构 基础知识 添加表头 //准备数据模型QStandardItemModel *student_model new QStandardItemModel();student_model->setHorizontalHeaderItem(0, new QStandardItem(QObject::tr("Name")));student_model->setHorizontalHea…

【Redis】Redis位图(bitmap)介绍和在签到场景的应用

文章目录 一、前言二、redis位图相关指令setbit命令getbit命令bitcount命令bitfield命令bitpos命令bitop命令 三、应用场景累计签到应用场景连续签到应用场景日期签到场景应用详情 一、前言 基本原理&#xff1a; 《Redis设计与实现》中对位图的实现描述是&#xff1a;Redis使…

做软件测试我该如何快速摸清一家公司的基本情况?

当你准备进入一家新的公司作为软件测试人员时&#xff0c;了解公司的基本情况对于你快速适应新环境和工作非常重要。下面是几个方面可以帮助你快速摸清一家公司的基本情况&#xff1a; 如果你想学习软件测试&#xff0c;我这边给你推荐一套视频&#xff0c;这个视频可以说是B站…

8. 高性能业务表结构设计和索引知识深化

MySQL性能调优 1. 数据库表设计1.1 范式化设计1.1.1 什么是范式&#xff1f;1.1.2 第一范式&#xff08;1NF&#xff09;1.1.2 第二范式&#xff08;2NF&#xff09;1.1.3 第三范式&#xff08;3NF&#xff09; 1.2 反范式设计1.2.1 什么叫反范式化设计 1.3 范式化和反范式总结…

分析SpringBoot 底层机制【Tomcat 启动分析+Spring 容器初始化+Tomcat 如何关联Spring 容器之源码分析

目录 分析SpringBoot 底层机制【Tomcat 启动分析Spring 容器初始化Tomcat 如何关联Spring 容器之源码分析 搭建SpringBoot 底层机制开发环境 创建Maven 项目wyx-springboot 修改pom.xml , 导入相关依赖 创建MainApp.java 启动项目ok, 大家注意Tomcat 也启动了[这里思考, …

机器学习期末复习 BP神经网络的推导,4X4X3,激活函数变为Logistic函数,其他不变

刚写完了bp神经网络的实验课代码&#xff0c;对这个比较熟悉&#xff08;后面给出实现代码&#xff09; Logistic函数也就是sigmod函数&#xff0c;表达式是这样的&#xff1a; def sigmod(x):return 1/(1math.exp(-x)) sigmod函数是隐层和输出层的激活函数&#xff08;sigmo…

如何本地搭建Plex私人影音云盘教程,实现Plex家庭影音中心,打造超级多媒体中心

文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 转发自CSDN远程穿透的文章&#xff1a;免费搭建Plex家庭影音中心 - 打造超级多媒体中心【公网远程访问…

WEBPACK、VITE 常用配置(对照)及迁移指南

文中 Webpack 版本为 5.x&#xff0c;Vite 版本为 4.3.x webpack 是新一代构建工具里面的老大哥了&#xff0c;从 2013 年发布已经持续升级 10 年&#xff0c;形成完备的生态环境。vite 则是下一代前端开发与构建工具&#xff0c;2019年发布&#xff0c;最新发布版本 4.3.3&…

文件操作安全之-文件上传告警运营篇

本文从文件上传的定义&#xff0c;文件上传的IDS规则&#xff0c;文件上传的示例&#xff0c;文件上传的告警研判&#xff0c;文件上传的处置建议等几个方面阐述如何通过文件上传类型的告警的线索&#xff0c;开展日常安全运营工作&#xff0c;从而挖掘有意义的安全事件。 文件…

rtl仿真器-iverilog icarus安装和测试

Icarus Verilog是一个轻量、免费、开源的Verilog编译器&#xff0c;基于C实现&#xff0c;开发者是 Stephen Williams &#xff0c;遵循 GNU GPL license 许可证&#xff0c;安装文件中已经包含 GTKWave支持Verilog/VHDL文件的编译和仿真&#xff0c;命令行操作方式&#xff0c…

C语言函数大全-- _w 开头的函数(1)

C语言函数大全 本篇介绍C语言函数大全-- _w 开头的函数 1. _waccess 1.1 函数说明 函数声明函数功能int _waccess(const wchar_t* path, int mode);用于测试文件或目录是否存在&#xff0c;并检查程序是否具有对它们的访问权限 参数&#xff1a; path &#xff1a; 待测试的…

Elasticsearch(三)

Elasticsearch(三) 数据聚合 聚合的分类 文档&#xff1a;https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html 聚合可以实现对文档数据的统计、分析、运算。聚合常见的有三类&#xff1a; 桶聚合&#xff1a;用来对文档做分组 Te…

【P22】JMeter 调试后置处理程序(Debug PostProcessor)

&#xff08;1&#xff09;、测试计划右键 <<< 添加 <<< 线程&#xff08;用户&#xff09;<<< 线程组 默认参数即可 &#xff08;2&#xff09;、线程组右键 <<< 添加 <<< 取样器 <<< 调试取样器 默认参数即可 &…

SQL复习(一)——安装

1 mysql卸载 reference&#xff1a;https://blog.csdn.net/m0_67392273/article/details/126066580 Step1:停止MySql服务 在卸载之前&#xff0c;先停止MySQL8.0的服务 搜索“服务”&#xff0c;找到“MySQL”&#xff0c;右键点击选择“停止” Step2&#xff1a;软件的卸…

Unittest自动化测试之unittestunittest_生成测试报告

unittest_生成测试报告 测试报告为测试结果的统计即展示&#xff0c;是自动化测试不可或缺的一部分&#xff0c;利用unittest 可以生成测试报告 方式一、使用第三方 HTMLTestRunner 执行测试用例集&#xff0c;生成网页版测试报告&#xff08;推荐&#xff09; HTMLTestRunn…

5年软测经验去面试25k测试岗,看到这样的面试题我还是心虚了....

我是着急忙慌的准备简历——5年软件测试经验&#xff0c;可独立测试大型产品项目&#xff0c;熟悉项目测试流程...薪资要求&#xff1f;5年测试经验起码能要个25K吧 我加班肝了一页半简历&#xff0c;投出去一周&#xff0c;面试电话倒是不少&#xff0c;自信满满去面试&#…

系统掌握入河排污口设置论证技术、方法及报告编制框架

在短时间内较系统的掌握入河排污口设置论证技术、方法及报告编制框架&#xff0c;学习内容以城镇生活污水厂、造纸项目、石化项目、制药项目案例为线索&#xff0c;系统讲解入河排污口设置论证报告书编制过程&#xff0c;并以水质模型为手段&#xff0c;讲解水质影响预测模型的…