【Linux】Linux 的 权限

news2024/9/26 21:46:17



在这里插入图片描述



一、 Linux 权限的概念


Linux下有两种用户:超级用户(root)、普通用户。
  • 超级用户:可以在 linux 系统下做任何事情,不受限制
  • 普通用户:在 linux 下做有限的事情。
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”


通俗解释:

超级用户:一般账号名为 root,该用户也叫超级管理员,相当于一款游戏的开放管理者,什么事都能做(比如删除某个游戏账号,将某个游戏账号的某些数值更改)

普通用户:相当于游戏服中的每个普通玩家账号,每个用户都管理着自己的文件目录,互不干涉




【命令】 su :切换用户

命令:su [用户名]
功能:切换用户。


例如:当前我们系统中有两个用户(超级用户 root、普通用户 mine)

1、要从超级用户 root 切换到 普通用户 mine,则使用 su mine。
在这里插入图片描述

2、要从普通用户 mine 切换到 超级用户 root,则使用 su root(root可以省略),此时系统会提示输入 root 用户的账户密码。
在这里插入图片描述

(因为超级用户是”无敌的“,切换任何普通用户都不需要密码,而其他用户切换操作则需要)


二、Linux 权限管理


本节将从普通用户 mine 的目录底下文件讲解:我们通过命令”ls -l“ 将目录的文件列表及其文件属性打印出来,如下

mine 用户一共有一个目录 text_dir、一个文件 text.txt
在这里插入图片描述


下面文件目录前面的各部分文件属性都是什么意思?
在这里插入图片描述


根据这张图:初步认识各个部分是什么意思
在这里插入图片描述


在这里插入图片描述

下面我们将对一部分概念进行一一解释:文件大小和文件最新修改时间不用解释

(注:连接数这里暂不讨论)


关于 文件类型

文件类型为 d:代表为 目录文件,如 text_dir
文件类型为 -: 代表为 普通文件,如 text.txt
在这里插入图片描述



关于 文件访问者的分类


对于 文件或文件目录 来说:有三种访问者身份
  • 拥有者:只有一个,即文件的创建者,拥有者
  • 所属组:只有一个组
  • other:代表其他访问用户(为什么上面没有记录:其他人可以有很多个,因此没必要记录在上面)


何为 所属组:即为文件权限白名单

举个例子:

我们一个开发小组组长创建一个文件目录,创建者为文件的拥有者:组长,具有最高权限

整个小组共同开发,本组中开发的数据都放到该文件目录中

此时就涉及到访问权限的问题:要想实现共同开发,就必须将权限赋给小组的成员,此时小组成员用户相当于 “other 其他人”,其他人想要访问该文件目录,就必须有相应的权限允许,

若想要让 other 访问一个文件,文件拥有者就需要将权限开放,但是这样就会将自己的文件完全暴露于世;

这种情况可以将该 other 用户添加进 所属组:所属组就类似白名单,你存在文件所属组中,就可以拥有操作某文件的权限,而无需将文件完全暴露在外


拥有者、所属组、other 都是一种身份,而 root、mine、zhangsan 都是一个个具体用户,具体用户有了前面某种身份,才能拥有对应的权限,有了权限才能做想要的事




关于 文件的访问权限

在这里插入图片描述
这里的 9 个字符代表着 文件的访问者 对文件的操作权限,每 3 个字符为一组,分别代表 文件拥有者的权限、所属组的权限、other 其他人的 权限

例如上图第一行:
在这里插入图片描述



符号 " r、w、x、- " 什么意思?


  • 读 r :Read 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  • 写 w :Write 对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  • 执行 x :execute 对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  • 横杠 “-” : 表示不具有该项权限

每组字符表示方法:

在这里插入图片描述



文件访问权限的相关设置方法

文件的的访问权限是可以修改的,通过下面几条命令


认识 拥有者、所属组、other 的缩写代号:

拥有者:user,缩写 u
所属组:group,缩写 g
其他人:other,缩写 o



【命令】 chmod:修改用户对文件的访问权限


全称:Change mode 更改权限

功能:设置文件的访问权限

格式:chmod [参数] 权限 文件名

常用选项:

R -> 递归修改目录文件的权限

说明:只有文件的 拥有者 和 root 才可以改变文件的权限,其他任何用户都不能修改


使用 chmod 命令修改权限的符号:

加号 +:向权限范围 增加 权限代号所表示的权限
减号 -:向权限范围 取消 权限代号所表示的权限
等号 =:向权限范围 赋予 权限代号所表示的权限

用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户


使用演示:

对 user 修改权限:u-x,去掉 执行权限 x
在这里插入图片描述


对 group 修改权限:g-rw,去掉 读写权限 rw
在这里插入图片描述


对 other 修改权限:o+w,增加 写权限 w
在这里插入图片描述


多条命令可以合并写,使用逗号隔开
在这里插入图片描述


使用 a 同时代表三种身份:a-r 表示三种身份用户都减去 读权限 r
在这里插入图片描述


简单来说:chmod 命令可以通过 加减 来对指定身份 增加或删除 某些权限



8 进制表示文件权限值

因为是否拥有权限是两种状态,可以使用 0 和 1 来表达,如一个身份拥有 rw- 的权限,则二进制表示为 110 即为 6,因此设置权限也可以直接使用八进制的形式

在这里插入图片描述


8 进制形式可以同时设置所有身份的权限:

输入命令 “chmod 777 text_dir”,将所有用户的权限都设置成 rwx
在这里插入图片描述




【命令】chown :修改拥有者(移交拥有权)

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

当你是超级用户 root 时:

chown root ./text.txt  // 将文件 text.txt 的拥有者修改成 root

在这里插入图片描述


当你是普通用户 mine 时:

chown root text.txt  // 将文件 text.txt 的拥有者修改成 root

在这里插入图片描述


这里报错了:因为 普通用户无法直接移交自己文件的拥有权
只有超级用户 root 才有权力调整文件的 拥有权
普通用户只能通过使用 sudo 命令, “借助超级用户的力量”来达成上述目的



【命令】chgrp:修改所属组

功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组
实例
该命令的用法和相关限制 与上面的 命令 chown 差不多

1、使用格式相同:

chgrp root text.txt  // 将文件 text.txt 的所属组修改成 root

在这里插入图片描述

2、普通用户不能直接修改,超级用户可以直接修改

chgrp root text.txt  // 将文件 text.txt 的所属组修改成 root

在这里插入图片描述
普通用户使用 chgrp 命令修改时直接报错:该操作未被允许




【命令】umask:查看权限掩码

Linux 中新建一个文件或目录的默认权限是:

  • 对于目录,默认权限为 777:表示 rwx rwx rwx
  • 对于文件,默认权限为 666:表示 rwx- rw- rw-(文件默认无执行权限)

但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到 权限掩码 umask 的影响。


1、查看默认权限掩码:

umask

在这里插入图片描述


超级用户默认掩码值为 0022,普通用户默认为 0002。


2、修改默认权限掩码:

umask 数值

在这里插入图片描述


3、最终权限值计算与演示


假设默认权限是 mask,则实际创建的出来的文件权限是: 最终权限 = mask - umask

普通用户 mine 创建新文件:最终权限为 664(即 rw-rw-r-- = 666-2 = 665 )
在这里插入图片描述


超级用户 root 创建新文件:最终权限 655(即 rw-r–r-- = 666-22 = 655 )
在这里插入图片描述


关于 目录的权限


对于一个普通文件来说:读文件即读取该文件的内容、写文件即添加修改文件内容、执行文件即运行该文件
对于一个目录来说呢?


(1)可执行权限: 如果目录没有可执行权限, 则无法 cd 到目录中.(决定是否可以切换到该目录)
(2)可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容(决定是否可以查看文件列表)
(3)可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件(决定是否可以在该目录下创建/删除/重命名 文件与目录)


注意:文件和目录的权限要分清楚!

若没有该目录的 rw 读写权限,表示我们不能在目录中 ls 查看目录的文件列表 与 不能在该目录下创建/删除/重命名 文件与目录,但是可以进入该目录里面的子目录和子文件中进行符合权限的操作(目录权限限制的是 目录 这一层面,不限制目录的子文件目录)

如现在有一个 mydir 目录,该目录中有一个文件 test.txt

. / mydir / test.txt
我们无法对 mydir 进行读写操作,但是可以对目录中的 text.txt 文件进行操作



关于 创建共享文件及其产生的问题


1、根目录不在任何一个用户的家目录下,因此根目录存放的文件与目录所有用户是共享的

当两个用户想要共享一个文件,但是不想直接进入对方的账户来查看,也不想将文件拷贝进自己账户,此时可以将文件放到根目录下,直接实现共享


2、为什么根目录上的文件与目录可以被任意用户共享使用?

我们在根目录下创建了一个文件目录 shared_fail :你可以发现前面 other 的权限是 rwx

在这里插入图片描述


3、既然根目录下的文件和目录可以全用户共享使用,岂不是某个用户可以直接删除共享文件或目录?

确实是,上面讲解过,例如共享目录 shared_fail 对于 other 的权限是 rwx,允许 读 写 执行,也就允许删除目录底下的文件或目录

一个用户直接删除掉公共数据(共享文件目录),显然不合理
那如何预防这种情况?把 other 权限中的 w 写权限去掉吗?显然不现实(一棒子打死了)

此时就需要使用粘滞位



粘滞位

当我们要实现一个共享目录 shared_fail ,允许任意用户在该目录下创建文件目录,但是不允许用户删除其他用户创建的文件目录,只允许对自己的文件目录进行操作,这就是粘滞位的概念与使用

使用命令:“chmod -t 目录” 将一个目录设置成粘滞位
在这里插入图片描述


当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

一、超级管理员删除

二、该目录的所有者删除

三、该文件的所有者删除

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

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

相关文章

每日一题|2535. 数组元素和与数字和的绝对差|数位运算

简单题。先加后减,可以剪枝。 先加后减就是对于每一个数字之间完成该数字的值-数位和,然后再去下一个数字。 特别的,对于小于10的数字,减自身就是0,没必要计算,可以跳过。 class Solution(object):def d…

C++之美:代码整洁、安全又跑得快的30个要诀(好书推荐)

在编程领域,C 以其高效性和灵活性著称,但同时也因其复杂性和易出错性而闻名。如何写出既整洁、又安全且高效的 C 代码,是每个 C 开发者都需要思考的问题。《C之美:代码整洁、安全又跑得快的30个要诀》这本书为我们提供了宝贵的指导…

git clone代码报错Permission denied (publickey)

git clone gerrit SSH的Clone with commit-msg hook代码连接,报错Permission denied (publickey). 一般在C:\Users\用户名.ssh文件夹下有一个id_rsa.pub文件 把文件里的内容复制 到gerrit网站上User Settings的SSH keys里 在New SSH key里粘贴刚刚复制的内容&…

【递归】6.LPC 44 开幕式火焰

1 题目描述 题目链接:开幕式火焰 2 解答思路 递归分为三步,接下来就按照这三步来思考问题 第一步:挖掘出相同的子问题 (关系到具体函数头的设计) 第二步:只关心具体子问题做了什么 (关系…

那些年我和 ChatGPT 合谋摸鱼的日子

文章目录 那些年我和 ChatGPT 合谋摸鱼的日子1 序个言2 说正事3 这次是真正的正事4 总个结 那些年我和 ChatGPT 合谋摸鱼的日子 1 序个言 看到 CSDN 出这个活动有段时间了,奈何俗务缠身,一直没静下心来想想怎么写。今天碰巧赶上了,就顺便聊聊…

【Linux扩容根分区】LVM分区扩容过程踩坑记录

最近想要给自己使用的Linux操作系统的根分区进行扩容,解决完发现,原来问题如此简单。 特此记录,希望能帮助到有需要的人。 通过df -Th查看系统磁盘分区情况 通过vgdisplay 查看内容 实操过程中,原来红框中,Free PE …

2024年双十一买啥最划算?双十一好物推荐闭眼入!

一年一度的双十一购物狂欢节已悄然临近,这不仅是一场消费者的盛宴,更是各大品牌竞相展示实力、推出优惠的绝佳时机。在这个全民狂欢的日子里,数码产品作为科技与生活的桥梁,相信已经有不少朋友想要大买特买了。无论是追求极致性能…

《python语言程序设计》2018版第8章18题几何circle2D类(下部)

前言、从9.20激动发言到现在一直没有克制住的心情中,回到编程 比如删掉我设计的导入第二个园的x,y,radius的函数我做了之前设计的变化.建立了两个可以将x,y拿出来的函数out计算两个坐标之间的距离利用已知的两个坐标之间的距离来比对第1个园里的半径,看第2个园的坐标是否在第一…

Linux文本内容管理命令_2

find:-查找命令执行文件 which 命令 whereis 命令 type 命令----查看命令类型 alias (命令别名) cat 查看文件--更新文件时间,再次cat,时间不会改变 touch--会更新所有属性的时间,文件诞生时间不会改变 …

求n的阶乘的相反数(c语言)

1./请编写函数fun,其功能是:计算并输出下列多项式的值: // s11/1!1/2!1/3!1/4!1/5!1/6!1/7!...1/n! //例如,在主函数中从键盘给n输入15,则输出为:s 2.718282。 //注意:要求n的值大于1但不大于100。 2.我们先输入数字n,然后先讲n!的阶乘计算…

NMOS的原理

NMOS(N型金属氧化物半导体场效应晶体管)是常见的场效应晶体管(FET)的一种,其主要电极包括D极(Drain)、S极(Source)和G极(Gate),每个电…

JavaSE——lombok、juint单元测试、断言

一、lombok的使用 默认jvm不解析第三方注解,需要手动开启 链式调用 二、juint单元测试 下载juint包 public class TestDemo {// 在每一个单元测试方法执行之前执行Beforepublic void before() {// 例如可以在before部分创建IO流System.out.println("befor…

【数据结构】栈和队列(Stack Queue)

引言 在对顺序表,链表有了充分的理解之后,现在让我们学习栈和队列!!! 【链表】 👈链表 【顺序表】👈顺序表 目录 💯栈 1.栈的概念及结构 2.栈的实现 ⭐初始化栈 ⭐入栈 ⭐…

【C++】入门基础知识-1

🍬个人主页:Yanni.— 🌈数据结构:Data Structure.​​​​​​ 🎂C语言笔记:C Language Notes 🏀OJ题分享: Topic Sharing 目录 前言: C关键字 命名空间 命名空间介…

【论文翻译】AFLGuard: Byzantine-robust Asynchronous Federated Learning

提示:该论文标题为AFLGuard: Byzantine-robust Asynchronous Federated Learning,我将对其进行部分翻译,便于后续阅读。 文章目录 AFLGuard:拜占庭鲁棒的异步联邦学习一、摘要二、引言三、知识前提拜占庭鲁棒联邦学习 四、问题表述…

JVM(HotSpot):程序计数器(Program Counter Register)

文章目录 一、内存结构图二、案例解读三、工作流程四、特点 一、内存结构图 二、案例解读 我们使用javap对字节码进行反编译,来看下程序计数器怎么体现的。 IDEA写一个简单的Java代码 反编译命令 javap -verbose InitTest.class $ javap -verbose InitTest.clas…

解决Typora图片复制到CSDN无法查看问题

下载安装picgo 山东大学镜像源:https://mirrors.sdu.edu.cn/github-release/Molunerfinn_PicGo 开通阿里云对象存储oss 选择创建 填入内容 购买资源包 创建AccessKey 配置PicGo 设定bucket填入创建bucket名称 注意:设定存储区域只需要填写到区域前缀即…

变电站设备检测系统源码分享

变电站设备检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

C++ 继承:打破代码冗余,提升开发效率

目录 继承的概念和定义 继承的概念 继承的定义 定义格式 继承关系和访问限定符 继承基类成员访问方式的变化 基类和派生类对象赋值转换 继承中的作用域 派生类的默认成员函数 构造函数 拷贝构造 赋值运算符重载 析构函数 继承与友元 继承与静态成员 菱形继承与…

数据库——sql语言学习 查找语句

一、什么是sql SQL是结构化查询语言(Structured Query Language)的缩写,它是一种专门为数据库设计的操作命令集,用于管理关系数据库管理系统(RDBMS)。 二、查找相关语句 ‌‌首先,我们已经设…