Linux:权限篇

文章目录

  • 前言
  • 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.mzph.cn/news/795960.shtml

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

相关文章

【数据结构与算法】力扣 24. 两两交换链表中的节点

题目描述 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1: 输入: head [1,2,3,4] 输出&#…

IDEA2023创建SpringMVC项目

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 开发环境篇 ✨特色专栏: M…

Linux使用docker集群部署

目录 一,环境准备 1.1.安装docker 1.2.配置镜像就加速器 二,docker部署 2.1.创建网络 ​编辑 2.2.安装redis 2.3.安装MySQL 2.4.安装JDK,TomCat及部署后台项目 2.5.安装Nginx及配置静态资源 一,环境准备 1.1.安装docker 安装yum-u…

Spring Boot-01-通过一个项目快速入门

官方参考文档:Spring Boot Reference Documentation 0. 概述 Spring的缺点: 1. 配置繁琐:虽然Spring的组件代码是轻量级,但它的配置却是重量级的。 2. 依赖繁琐:项目的依赖管理也是一件耗时耗力的事情。分析要导入哪…

动手学深度学习 | Jupyter Notebook 打开指定目录

目录 1 下载课件代码 2 在目录中打开 3 展示目录失败 3.1 问题分析 3.2 问题解决 ⚠️ 写在前面: 无语子,打开个目录花了我一天时间下文中提到的 “d2l-zh” 和 “pytorch” 均为目录名jupyter notebook 的安装请参考其它博客 1 下载课件代码…

计算机出现msvcr110.dll丢失是什么意思?七种方法解决msvcr110.dll丢失

msvcr110.dll文件是一个动态链接库(DLL)文件,由Microsoft Corporation开发。它是Visual C Redistributable for Visual Studio 2012的必要部分,包含了C运行时库函数的代码,这些函数为执行C/C应用程序提供了基础服务。这…

基于Socket简单的TCP网络程序

⭐小白苦学IT的博客主页 ⭐初学者必看:Linux操作系统入门 ⭐代码仓库:Linux代码仓库 ❤关注我一起讨论和学习Linux系统 TCP单例模式的多线程版本的英汉互译服务器 我们先来认识一下与udp服务器实现的不同的接口: TCP服务器端 socket()&…

设置你的第一个React应用

目录 一、React入门 1.1 你好React 1.2 创建React 1.3 应用结构 二、总结 2.1 定义组件 2.2 组件源码 三、组件详解 注意事项 3.1 组件三部曲 3.2 组件通信 —— props 3.3 对象数组迭代 —— map() 3.4 事件处理 3.5 钩子函数 —— useState() 初次学习最终效果…

wireshark数据流分析学习日记day3-从 Pcap 导出对象

从 HTTP 流量导出文件 过滤http请求 发现get请求上传了两个文件 保存即可 也可以保存网页 点击保存 改文件名为html结尾以便于访问 请谨慎使用此方法。如果从 pcap 中提取恶意 HTML 代码并在 Web 浏览器中查看它,则 HTML 可能会调用恶意域,这就是为什么…

HTML——5.表单、框架、颜色

一、表单 HTML 表单用于在网页中收集用户输入的数据&#xff0c;例如登录信息、搜索查询等。HTML 提供了一系列的表单元素&#xff0c;允许用户输入文本、选择选项、提交数据等。 <!DOCTYPE html> <html lang"en"> <head> <meta charset&q…

01.IDEA中出现Cannot resolve symbol ‘SpringApplication异常

试了很多次&#xff0c;看了这篇文章终于发现了问题。IDEA解决springboot工程中Cannot resolve symbol SpringApplication异常-CSDN博客 我存在的问题在于Maven home path有误&#xff0c;改正之后就没有问题&#xff0c;不标红了。

C语言实现快速排序算法

1. 什么是快速排序算法 快速排序的核心思想是通过分治法&#xff08;Divide and Conquer&#xff09;来实现排序。 算法的基本步骤是: 1. 选择一个基准值&#xff08;通常是数组中的某个元素&#xff09;&#xff0c;将数组分成两部分&#xff0c;使得左边的部分所有元素都小于…

RabbitMQ3.13.x之六_RabbitMQ使用场景

RabbitMQ3.13.x之六_RabbitMQ使用场景 文章目录 RabbitMQ3.13.x之六_RabbitMQ使用场景1. 为什么选择 RabbitMQ&#xff1f;1. 可互操作2. 灵活3. 可靠 2. 常见用户案例1. 服务解耦2. 远程过程调用3. 流处理4. 物联网 1. 为什么选择 RabbitMQ&#xff1f; RabbitMQ 是一个可靠且…

C语言 | Leetcode C语言题解之第8题字符串转换整数atoi

题目&#xff1a; 题解&#xff1a; int myAtoi(char * s){int i0;int out0;int pol1;int lenstrlen(s);if(len0) return 0;while(s[i] ) i; //删除空格if(s[i]-){ //判断正负pol-1;i;}else if(s[i]){pol1;i;}else{pol1;}while(s[i]!\0){if(s[i]<0||s[i]>9){ /…

【智能算法】跳蛛优化算法(AOA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2021年&#xff0c;H Peraza-Vzquez等人受到跳蛛狩猎行为启发&#xff0c;提出了跳蛛优化算法&#xff08;Jumping Spider Optimization Algorithm&#xff0c;JSOA&#xff09;。 2.算法原理 2.1…

【Kaggle】练习赛《鲍鱼年龄预测》(上)

前言 上一篇文章&#xff0c;讲解了《肥胖风险的多类别预测》机器学习方面的文章&#xff0c;主要是多分类算法的运用&#xff0c;本文是一个回归的算法&#xff0c;本期是2024年4月份的题目《Regression with an Abalone Dataset》即《鲍鱼年龄预测》&#xff0c;在此分享高手…

C++数据结构与算法——回溯算法组合问题

C第二阶段——数据结构和算法&#xff0c;之前学过一点点数据结构&#xff0c;当时是基于Python来学习的&#xff0c;现在基于C查漏补缺&#xff0c;尤其是树的部分。这一部分计划一个月&#xff0c;主要利用代码随想录来学习&#xff0c;刷题使用力扣网站&#xff0c;不定时更…

特征增强自蒸馏卷积神经网络

目录 1.1 模型总体架构 1.2 特征增强金字塔模块 1.3 辅助分类器 1.1 模型总体架构 与自然图像相比&#xff0c;遥感场景图像地物较为复杂&#xff0c;具有类间相似度高和类内差异大的特点&#xff0c;这导致常用的网络模型难以有效学习遥感场景图像的表征特征。此外&#xf…

springboot之mybatisPlus多表查询及分页查询

文章目录 一、多表查询二、mybatis-plus条件查询三、分页查询 一、多表查询 可能会用到的注解 这里的场景是&#xff0c;查询每个用户及其所有的订单。就是查询你的id号的同时&#xff0c;把你所有的历史订单信息都拉出来。 表结构这样 CREATE TABLE User ( id INT PRIMARY…

【可靠性】陷阱电荷对TDDB影响的多尺度模拟

【From Accelerated to Operating Conditions: How Trapped Charge Impacts on TDDB in SiO2 and HfO2 Stacks】 文章总结&#xff1a; 本研究深入探讨了在SiO2和HfO2介质堆叠中&#xff0c;陷阱电荷对时间依赖介电击穿&#xff08;TDDB&#xff09;现象的影响。通过引入载流子…