Linux--权限问题(2)

目录

前文

前言

1. 文件的权限 

1.1 文件的访问者分类

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

 2. 如何修改文件的权限

 3.对比权限有无的表现

4.修改用户角色

5.修改权限的第二种做法 

 6.目录的权限

7.默认权限


前文

Linux--权限问题(1)-CSDN博客

前言

在权限问题(1)中,我们了解到:权限= 用户角色(具体的人)+文件权限的属性。    

本章我们将对用户角色和文件权限属性展开更加深入的解读。

1. 文件的权限 


1.1 文件的访问者分类

  • 文件和文件目录的所有者: u---User
  • 文件和文件目录的所有者所在的组的用户: g---Group
  • 其它用户: o---Others 

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

Windows中是如何区分文件类型的?后缀名

但Linux不是通过后缀区分文件类型!

证明:

        我们gcc生成了可执行文件a.out 我们执行它打印出了hhh,我们将a.out mv到a.sdsadsa,执行这个文件它同样可以正常执行,因此可以说明,inux不是通过后缀区分文件类型。

Linux是通过第一个属性列来区分文件类型。但是Linux上面的工具可能区分(eg:gcc)

文件类型:

  •         d:目录文件(文件夹)
  •         -:普通文件(文本文件,可执行程序,库等)
  •         l:软链接(类似Windows的快捷方式)
  •         b:块设备文件(例如硬盘、光驱等)

  •         p:管道文件
  •         c:字符设备文件(例如屏幕等串口设备)

在xshell中显示器文件一般都在,/dev/pts中,下面的0和1就是表示我们开了两个终端,序号为0和序号为1的终端

在Linux中一切皆文件,我们可以像访问文件一样去访问显示器这样的硬件设备

  •         s:套接口文件

基本权限:

三三为一组,分别对应:拥有者,所属组,other。

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

eg:

        test.txt文件,他的拥有者有读写权限,但没有可执行权限,他的所属组有读写权限,但没有可执行权限,other只有读权限。


 2. 如何修改文件的权限

我们想修改一个人的权限,这时我们要用到一个指令:chmod


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

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

chmod命令权限值的格式

① 用户表示符+/-=权限字符

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限
  • 用户符号:
  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

eg:去掉testr.txt中ugo的所有权限

如图(testr.txt中ugo的所有权限都被去掉了)

        加回testr.txt中ugo的所有权限

如图(testr.txt中ugo的所有权限都被加回了)

        上面的这种方式适合对1种或者2种角色的权限进行修改,如果想修改所有人的权限,这里有更简便的方法

如图(a就代表所有人了)


 3.对比权限有无的表现

        我们可以看到,此时test.txt的拥有者拥有文件的读写权限,我们成功的向test.txt中写入了“hello”,从文件中成功的读出了“hello”。

        这时我们删掉了test.txt拥有者读写的条件,对文件进行读写操作,结果发现无权限。

        这说明,普通用户要受到对应的权限约束,即使这个文件时自己的。

我们su,进入root账户下,结果发现仍然可以进行读写操作。

        说明 root账户不会受到权限的约束。但除了root以外其他的普通用户都是可以被限制的。

权限存在的意义:是为了保护普通用户的文件的一般安全性。


        这里有个小细节:在上面操作中我们发现,拥有者和所属组都是light,我们把拥有的权限修改了, 结果发现light所属组的身份并没有起到作用。

        这是因为,Linux进行身份匹配的时候,对用户身份进行识别,只识别一次。(light已经和test.txt文件的拥有者身份匹配过了,在当前指令下就不会在进行第二次匹配了)

我们来证明一下:我们先把拥有者改成root,改成root后,light就只是所属组了,就有权限对test.txt进行读写操作了。

这里我们要介绍两个指令:chown&&chgrp

chown
功能:修改文件的拥有者
格式: chown [参数] 用户名 文件名

chgrp
功能:修改文件或目录的所属组
格式: chgrp [参数] 用户组名 文件名
1. 将拥有者修改成root

2. 切换回light,尝试对test.txt进行读写

(发现权限并没有被限制)


*****关于可执行权限与可执行

eg:我们给test.c中拥有者加上了可执行权限,但是这个文件并不可以执行,原因是这个文件不是一个可执行的文件。

我们gcc test.c 生成可执行文件 a.out。只是后才可以执行

现在我们去掉可执行文件a.out拥有者的可执行权限,这时候文件就不能执行了。

所以,在这里我们可以得出一个结论:

        可以执行=有文件的执行权限+该文件是一个可执行文件


4.修改用户角色

我们在权限问题的第一章有谈到过:权限= 用户角色(具体的人)+文件权限的属性

在上面我们主要对文件的属性进行了操作,现在我们谈谈对用户角色的操作。

        在3.中,我们在root下将test.txt的拥有者改成了root,那么现在,我们在light下将test.txt的拥有者改成root

发现我们并没有权限修改。这相当于把文件给别人,在Linux中把文件给别人,这个动作也是需要权限的,因为Linux无法识别文件的好坏,这样可以有效的保护用户。

        那么我们如何将文件给别人呢,这里就要用到sudo,将指令提权,这就可以无视权限,将文件给别人了。(只有被root用户添加到信任列表里面的人才可以用sudo命令,这种方式一般常用于公司里面,现阶段我们用不到sudo,可以直接使用su变成root账户来模拟操作),实际上就是变相的把判断文件好坏的这一部分交给了人来做。

eg:将拥有者变成root

eg:将所属组也改成root

eg:简便方法,将所属组和拥有者一次性都改成light


5.修改权限的第二种做法 

8进制数值表示方法

        拥有者,所属组,other都是三三为一组。

我们把是由否有权限:是用1代替,否用0代替。

那么rw,我们就可以对应的写成110,那么转成八进制就是6,所以6就等于rw的效果。

rg:如果想表示文件的全部权限(u--rw ,g--rw,o--r)

rw6 rw6 w4来表示。


 6.目录的权限

文件=内容+属性

目录也是文件,目录的内容就是:该目录里面的所有的文件信息详情数据。

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


可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.


可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.


在目录里删除一个文件是和目标文件是没有关系的!!!

       之和它所在的目录有关,目录的权限有多大,那么就决定了用户对目录中文件权限的大小。一个普通用户是一个目录的拥有者,并且拥有该目录的最大权限,该目录中如果有root创建的文件,那也是可以最该文件进行任意操作的!


7.默认权限

新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。

我们可以看到新建目录的默认权限是0776,新建文件的默认权限是0664。

这是为什么呢?

        原因就是创建文件或目录的时候还要受到umask的影响。

mask
功能:查看或修改文件掩码

假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask

通过查看我们发现,Linux系统文件掩码默认值是0002

eg: 创建文件默认权限是0666,那么0666还要  按位与 上取反的umask的值

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

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

相关文章

云原生之深入解析Kubernetes本地持久化存储方案OpenEBS LocalPV的最佳实践

一、K8s 本地存储 K8s 支持多达 20 种类型的持久化存储,如常见的 CephFS 、Glusterfs 等,不过这些大都是分布式存储,随着社区的发展,越来越多的用户期望将 K8s 集群中工作节点上挂载的数据盘利用起来,于是就有了 loca…

一种用于心音分类的轻量级1D-CNN+DWT网络

这是由National Institute of Technology Rourkela, Central University of Rajasthan发布在2022 ICETCI的论文,利用离散小波变换(DWT)得到的多分辨率域特征对1D-CNN模型进行心音分类训练。 预处理& DWT 由于FHS和各种病理声的频率范围在500hz以下[5]&#xff…

像素、分辨率、频率、精度、延迟,关于光学动作捕捉镜头参数的那些事

精准度、分辨率、频率、延迟等参数是影响光学动作捕捉效果和还原度的关键因素。下面逐一介绍NOKOV度量动作捕捉系统的基础参数。 NOKOV度量动作捕捉系统的核心产品是光学动作捕捉镜头,用于捕捉被测物表面反光标记点的三维坐标数据。 从表中可以看到,不同…

电阻的运用

本文引注 https://baijiahao.baidu.com/s?id1749115196647029942&wfrspider&forpc 一、零欧电阻 在电子电路设计时经常用到的一种元件就是电阻,我们都知道电阻在电路中起到分压限流的作用。然而,实际使用时会用到一种特殊的电阻:零…

用Kotlin抓取微博数据并进行热度预测

闲来无事,逛逛微博,看着每条热度很高的博文趣事,心想能否通过爬虫抓取微博热度并进行趋势分析,说干就干,这里需要注意的问题我会一一标注。 爬虫ip信息的设置是在爬虫程序中进行的。爬虫ip信息可以帮助爬虫程序在访问…

使用React实现随机颜色选择器,JS如何生成随机颜色

背景 在标签功能中,由于有「背景色」属性,每次新增标签时都为选择哪种颜色犯难。因此,我们思考如何通过JS代码生成随机颜色,提取一个通用的随机颜色生成工具,并基于React框架封装随机颜色选择器组件。 实际效果 原理…

Parade Series - Message Interaction

if (true) {Swal.fire("节目发布", "发布完毕", "success");event.preventDefault(); } if (false) {Swal.fire("节目发布", "发布失败", "error");event.preventDefault(); }if (true) {for (var i 0; i < b…

AI日报:OpenAI向新用户重新开放ChatGPT Plus订阅

欢迎订阅专栏 《AI日报》 获取人工智能邻域最新资讯 文章目录 总览Chatgptplus重新开放订阅#暂停原因功能 OpenAI的1000万美元安全人工智能拨款拨款初衷学术捐赠 总览 ChatGPT Plus再次向新用户开放&#xff0c;但目前每三小时限制发送40条消息。 OpenAI还宣布拨款1000万美元…

数据结构-07-二叉树

前面学习的栈、队列等等都是线性表结构。树是一种非线性表结构&#xff0c;比线性表的数据结构要复杂。 1-树tree “树”这种数据结构类似我们现实生活中的“树”&#xff0c;这里面每个元素我们叫作“节点”&#xff1b;用来连线相邻节点之间的关系&#xff0c;我们叫作“父子…

云端赋能大湾区:华为云照亮数字化转型之路

编辑&#xff1a;阿冒 设计&#xff1a;沐由 在中国的经济版图上&#xff0c;大湾区是极其重要的增长引擎。这块富有活力和创新力的经济区域里&#xff0c;荟聚了大量的高新技术企业&#xff0c;以及一批创新孵化器和科研机构&#xff0c;产业升级和技术创新的氛围格外浓烈。 1…

山峰个数 - 华为OD统一考试

OD统一考试 分值: 100分 题解: Java / Python / C++ 题目描述 给定一个数组,数组中的每个元素代表该位置的海拔高度。0表示平地,>=1时表示属于某个山峰,山峰的定义为当某个位置的左右海拔均小于自己的海拔时,该位置为山峰。数组起始位置计算时可只满足一边的条件。 …

lv12 linux内核的安装与加载

目录 1 tftp加载Linux内核及rootfs 1.1 uboot内核启动命令 1.2 uboot自启动参数环境变量 1.3 实验 2 EMMC加载Linux 内核及rootfs ​编辑 2.1 emmc中写入uimage ​编辑 2.2 emmc中写入dtb 2.3 emmc中写入根文件系统 2.4 设置环境变量 3 tftp加载Linux内核nfs挂载ro…

centos 手动编译安装git

原因 由于centos自带的git版本太低&#xff0c;使用git的时候会出现很多问题&#xff0c;但是尝试了各种办法无法直接更新git版本&#xff0c;所以最后自己手动编译安装git 在github下载源码&#xff0c;下载解压之后&#xff0c;上传到服务器&#xff0c;我上传到 /home/user…

探索多功能SQL数据库编辑器 - Richardson Software RazorSQL

在当今数字化时代&#xff0c;SQL数据库的管理和编辑是许多企业和开发人员必不可少的任务。为了提高生产力和简化数据库操作&#xff0c;Richardson Software推出了一款强大而多功能的SQL数据库编辑器 - RazorSQL。 RazorSQL是一款功能全面的数据库管理工具&#xff0c;可适用…

LeetCode(61)删除链表的倒数第 N 个结点【链表】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 删除链表的倒数第 N 个结点 1.题目 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例…

【STM32独立看门狗(IWDG) 】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、看门狗是什么&#xff1f;1.简介2. 主要功能3.独立看门狗如何工作4.寄存器写保护5.看门狗 看门时间 二、使用步骤1.开启时钟2.初始化看门狗3.开启看门狗4.喂…

ACL和NAT

文章目录 ACL和NAT一、ACL概述及产生背景1、ACL访问控制列表2、ACL工作原理3、ACL种类4、ACL命令配置步骤4.1 ACL命令配置4.1 ACL配置步骤 二、NAT&#xff08;网络地址转换&#xff09;1、NAT概述2、NAT类型2.1 静态NAT与动态NAT 3、NATPT&#xff08;端口映射&#xff09;4、…

详解—【C++】lambda表达式

目录 前言 一、lambda表达式 二、lambda表达式语法 2.1. lambda表达式各部分说明 2.2. 捕获列表说明 三、函数对象与lambda表达式 前言 在C98中&#xff0c;如果想要对一个数据集合中的元素进行排序&#xff0c;可以使用std::sort方法。 #include <algorithm> #i…

服务器被攻击宕机的一些小建议

现在网络攻击屡有发生&#xff0c;任何网站服务器都面临这样的危险&#xff0c;服务器被攻击造成的崩溃宕机是损失是我们无法估量的。网络攻击我们无法预测&#xff0c;但做好防御措施是必须的&#xff0c;建议所有的网站都要做好防范措施&#xff0c;准备相应的防护预案&#…

maven jar sort

1&#xff09;往常项目结构lib包排序 2&#xff09;maven的默认是没有排序的