当前位置: 首页 > article >正文

【Linux】Linux 的 权限



在这里插入图片描述



一、 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.kler.cn/a/321097.html

相关文章:

  • C++各类函数评点+详解
  • ubuntu 22.04 shell
  • git上传文件到远程仓库
  • Elasticsearch retrievers 通常与 Elasticsearch 8.16.0 一起正式发布!
  • MFC程序崩溃时生成dmp文件
  • core 文件
  • 钉钉 钉钉打卡 钉钉定位 2024 免费试用 保用
  • 【运维】微软官方包管理器winget的使用, 对比scoop/choco(含常用软件清单,本地镜像源自建,静默安装教程)
  • Spring Boot 中整合 Kafka
  • EAGLE——探索混合编码器的多模态大型语言模型的设计空间
  • BOE(京东方)重磅亮相世界制造业大会 科技创新引领现代化产业体系建设新未来
  • Tengine 容器
  • HTML开发指南
  • web基础:域名、网页、HTML、web版本
  • Excel--DATEDIF函数的用法及参数含义
  • 根据软件架构设计与评估的叙述开发一套机器学习应用开发平台
  • jsonschema - 校验Json内容和格式
  • Python知识点:如何使用Python进行区块链开发
  • dockercompose指定配置文件
  • 分布式中间件-Pika一个高效的分布式缓存组件
  • MySQL数据库(基础)
  • Linux中部署Docker环境;Docker常用操作
  • 三.python入门语法1
  • redis安装(以6.0.13为例)
  • 金融领域的人工智能——Palmyra-Fin 如何重新定义市场分析
  • 【解密 Kotlin 扩展函数】自定义函数(十二)