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.rhkb.cn/news/299181.html

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

相关文章

在Java中对SQL进行常规操作的通用方法

SQL通用方法 一、常规方法增删改查二、具体优化步骤1.准备工作2.getcon()方法,获取数据库连接对象3.closeAll()方法,关闭所有资源4.通用的增删改方法5.通用的查询方法6.动态查询语句 总结 一、常规方法增删改查 在常规方法中,我们在Java中对…

数据库排错记录

目录 一、 规范二、 优化查询1) 通过执行计划 三、 排查故障1) 网络断连2) 超时登录已断开3) 死锁4) 实例错误 一、 规范 尽量不要用select *,select 语句最好加上with(nolock)数据量大的表必须要有主键,可以是自增ID查询语句的条件里面的字段&#xff…

勒索病毒最新变种.rmallox勒索病毒来袭,如何恢复受感染的数据?

导言: 随着信息技术的飞速发展,网络安全问题日益突出,其中勒索病毒便是近年来备受关注的网络安全威胁之一。在众多勒索病毒中,.rmallox勒索病毒以其独特的传播方式和强大的加密能力,给广大用户带来了极大的困扰。本文…

11-pyspark的RDD的变换与动作算子总结

目录 前言 变换算子动作算子 前言 一般来说,RDD包括两个操作算子: 变换(Transformations):变换算子的特点是懒执行,变换操作并不会立刻执行,而是需要等到有动作(Actions)…

索引的概念

索引的概念    1.索引是一种可选的与表相关的数据库对象,用于提高数据的查询效率。    2.索引是一种有序的数据结构。    3.如果一个表没有创建索引,则对该表进行查询时需要进行全表扫描;如果创建了索引,则在有条件查询时…

thinkphp6入门(21)-- 如何删除图片、文件

假设文件的位置在 /*** 删除文件* $file_name avatar/20240208/d71d108bc1086b498df5191f9f925db3.jpg*/ function deleteFile($file_name) {// 要删除的文件路径$file app()->getRootPath() . public/uploads/ . $file_name; $result [];if (is_file($file)) {if (unlin…

C刊级 | Matlab实现GWO-BiTCN-BiGRU-Attention灰狼算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测

C刊级 | Matlab实现GWO-BiTCN-BiGRU-Attention灰狼算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测 目录 C刊级 | Matlab实现GWO-BiTCN-BiGRU-Attention灰狼算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测效果一览基本介绍程序设计参考…

【IEEE STD 1801】——Introduction

Introduction 本标准的目的是提供便携、低功耗的设计规范,这些规范可以在整个电子系统设计、分析、验证和实现流程中与各种商业产品一起使用。 当电子设计自动化(EDA)行业在20世纪80年代开始创建用于指定、仿真和实现数字电子电路的功能规范的标准时,主…

Midjourney艺术家分享|By Moebius

Moebius,本名让吉拉德(Jean Giraud),是一位极具影响力的法国漫画家和插画师,以其独特的科幻和幻想风格而闻名于世。他的艺术作品不仅在漫画领域内受到高度评价,也为电影、时尚和广告等多个领域提供了灵感。…

练习 16 Web [极客大挑战 2019]LoveSQL

extractvalue(1,concat(‘~’, (‘your sql’) ) )报错注入,注意爆破字段的时候表名有可能是table_name不是table_schema 有登录输入框 常规尝试一下 常规的万能密码,返回了一个“admin的密码”: Hello admin! Your password is…

2023年港澳台联考中的招生大户武汉大学

导读 随着小米集团雷军近期的热度不断上升,很多家长开始关注到武汉大学这样一所历史悠久的亚洲知名大学。小米集团的董事长雷军就是毕业于武汉大学的校友。今天我们一起来看一下,2023年港澳台联招中的武汉大学! 学校简介 武汉大学是一所位于湖…

Redis(性能管理、主从复制、哨兵模式)概述及部署

目录 一、性能管理 1、查看Redis内存使用 2、内存碎片率 3、跟踪内存碎片率 4、内存使用率 5、内回收key 二、Redis集群有三种模式 三、Redis主从复制 1、主从复制的概念 2、主从复制的作用 3、主从复制的流程 4、搭建Redis主从复制 1.环境准备 2.安装Redis&#…

SV学习笔记(六)

文章目录 覆盖率类型写在前面代码覆盖率断言覆盖率功能覆盖率漏洞率曲线 功能覆盖策略收集信息而非数据只测量需要的内容验证的完备性 覆盖组写在前面在类里定义covergroup 数据采样写在前面coverpoint和binbin的创建和应用命名coverpoint和bin条件覆盖率翻转覆盖率wildcard覆盖…

Linux——线程控制

目录 前言 一、线程创建 1.创建线程 2.线程传递结构体 3.创建多线程 4.收到信号的线程 二、线程终止 三、线程等待 四、线程分离 五、取消线程 六、线程库管理的原理 七、站在语言角度理解pthread库 八、线程的局部存储 前言 前面我们学习了线程概念和线程创建&…

C语言实现快速排序算法

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

C和C++内存管理

目录: 一:C和C内存分布 二:C动态内存管理方式 三:C动态内存管理方式 四:operator new与operator delete函数 五:new和delete的实现原理 六:定位new表达式(placement-new) 七&#xff1…

ubuntu-server部署hive-part2-安装hadoop

参照 https://blog.csdn.net/qq_41946216/article/details/134345137 操作系统版本:ubuntu-server-22.04.3 虚拟机:virtualbox7.0 安装hadoop ​​​​​​下载上传 下载地址 https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/ 以root用…

用C/C++加Easyx实现俄罗斯方块游戏(爆肝4万字,完全免费)

前言 相信大家一定玩过俄罗斯方块这款小游戏,简单容易上手是老少皆宜的小游戏,今天大家就跟着我来实现这个小游戏吧!让自己学的C语言有用武之地。 为了让俄罗斯方块的开发更为简单些,图像更为丰富,在这里就利用了Easyx…

设计模式总结-原型设计模式

原型设计模式 模式动机模式定义模式结构模式分析深拷贝和浅拷贝原型模式实例与解析实例一:邮件复制(浅克隆)实例二:邮件复制(深克隆) 模式动机 在面向对象系统中,使用原型模式来复制一个对象自…

vue使用iview导航栏Menu activeName不生效

activeName不生效 一、问题一、解决方案, 一、问题 根据ivew官网的提示,设置了active-name和open-names以后,发现不管是设置静态是数据还是设置动态的数据,都不生效 一、解决方案, 在设置动态名称的时候&#xff0c…