复习之linux系统中的权限管理

news2024/11/26 4:30:11

1.权限的查看及读取

(1)权限的查看

# ls  -l   file  : 查看文件的权限

# ls  -ld  dir :查看目录权限

 (2)权限的读取

文件的属性叫做文件的元数据。

元数据Metadata),又称中介数据中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。"一种元数据用1个byte来记录内容",则以下文件元数据共占用8个字节(byte)。

# 文件权限信息

 -  |  rw-rw-r--   |   .     |   1   |   westos  |    westos   |   0    |    May  29  10:22  |    westosfile

[1]        [2]            [3]      [4]         [5]                [6]            [7]                   [8]                        [9]

# 对于每一位的详细解释

[1] : 文件类型

#  -  : 普通文件  # d :目录   # l :软连接 # b : 快设备 # c :字符设备 # s : socket套接字 # p 管道 |

[2] : 用户权限

# rw- : 读,写,执行

[3] : 系统的selinux开启,安全上下文

#  ls  -Z  file  : 查看安全上下文

[4] : #  对于目录:目录中子目录的个数

 #对于文件: :文件内容被系统记录的次数(硬链接个数)

每一个文件都有一个硬链接数,它表示有多少个文件指向它。当一个文件创建时,它的硬链接数被设置为1。当一个新的硬链接被创建时,它的硬链接数就会增加1。

#  ln  file  file1 :  创建硬链接 (ps: 硬连接建立的文件与原文件是同一个文件,节点号相同)

[5] : 文件拥有者

[6] : 文件拥有组

[7] :  # 对于文件 : 文件内容大小

 # 对于目录:目录中子文件/子目录的元数据(属性)大小

 [8 ]# 对于目录 : 目录中子目录/子文件属性修改的时间,文件内容修改也改变。

  # 对于文件: 文件内容被修改的时(文件属性修改时间不变)

[9] : 文件名

2.文件中用户和组的修改

# 实验环境设置:在/mnt下新建文件并建立监控

 (1)修改文件的所有人所有组

# chown  用户名  文件名:修改文件的所有人

# chgrp 组名 文件名 :修改文件的所有组

 #  chown  用户名 . 组名  文件名 :同时修改文件的所有人和所有组

# chown  用户名 :组名  文件名 :同时修改文件的所有人和所有组

 (2)修改目录的所有人所有组

# chown   用户名  目录 :修改目录的所有人

# chgrp  组名  目录 :修改目录的所有组

# chown  用户名 . 组名  目录 :同时修改目录的所有人和所有组

# chown  用户名  :组名  目录 :同时修改目录的所有人和所有组

ps: 注意以上只要修改了目录的所有人所有组,并未修改目录下文件的所有人所人组

# chown   -R  用户名  目录 :修改目录及目录下文件的所有人

# chgrp  -R  组名  目录 :修改目录及目录下文件的所有组

# chown   -R   用户名 . 组名  目录 :同时修改目录及目录下文件的所有人和所有组

# chown  -R   用户名  :组名  目录 :同时修改目录及目录下文件的所有人和所有组

 3.普通权限的类型

(1)用户对文件的身份

# u : 文件的拥有者

#  g : 文件的拥有组

# o :  既不是拥有者也不是拥有组成员的其他用户的通称

(2)权限类型

# r  :可读                  # 对于文件:可以读取文件内容   #对于目录:可以ls列出目录中的文件

# w  : 可写                   # 对于文件:可以更改文件内容   #对于目录 : 可以在目录中新建或删除文件

# x : 可执行       # 对于文件 :可以用文件名称调用文件内记录的程序 #对于目录 :可以进入目录中

 4. 文件权限管理

# chmod   设定文件权限

(1)复制文件权限

# chmod --reference=/mnt/westosdir    /mnt/westosfile1    复制/mnt/westosdir目录的权限到文件/mnt/westosfile1上

#chmod -R --reference=/mnt/westosfile1 /mnt/westosdir  复制/mnt/westosfile1文件的权限到/mnt/westosdir及#目录中的子文件上 -R 代表第归操作

 (2)利用字符设定权限

# chmod    <  a  |  u  |  g  |  o  ><  +  |  -  |  =  ><  r  |  w  |  x  >    file     : 利用字符设定权限

实验:

#  chmod  a+x   /mnt/westosfile2  :   所有权限增加可执行权限

# chmod   ug-r    /mnt/westosfile1   : 所有人所有组减去可读权限

#  chmod  u-w,g+wx,o=rwx   /mnt/westosfile3

 (3)利用数字设定权限

权限转换为八进制数字为:

- - - : 000

- - x : 001 = 1

- w - : 010 = 2

- w x : 011 = 3

r - - : 100 = 4

r - x : 101 = 5

r w - : 110 = 6

r w x : 111 = 7

5.系统默认权限设定

当建立文件或目录时,系统默认分配的权限并不是777

# umask表示系统保留权力

文件默认权限 = 777-umask-111
目录默认权限 = 777-umask

# umask    查看保留权力

 系统本身存在的意义共享资源
#从安全角度讲系统共享的资源越少,开放的权力越小系统安全性越高
#既要保证系统安全,又要系统创造价值,于是把应该开放的权力默认开放,把不安全的权力默认保留

(1)临时设定系统保留权力

# umask  权限 : 临时设定系统预留权力

ps:后三位是设定的权限,第一位是特殊权限位,umask值越大系统安全性越高

 重新打开一个shell,查看保留权力发现还是022,因为刚刚只是临时设定!

 (2)永久设定系统保留权力

要想永久修改系统保留权力,需要编辑两个文件:/etc/bashrc  (shell系统配置文件 )和 /etc/profile(系统环境配置文件)且 立即生效!

#vim /etc/bashrc  (75行左右)

 #  vim /etc/profile  (60行左右)

 两个文件编辑完成后,查看系统保留权力,发现还是没有变化!

此时利用source 使文件立即生效

#  source /etc/bashrc
#  source /etc/profile

此时系统保留权力已立即更改!

6.特殊权限

(1)粘滞位(stickybit)----  SBIT(o的x位置上使用一个t)

粘滞位(stickybit),又称黏着位,是Linux文件系统权限的一个特殊权限。默认情况下,如果一个目录o上有w和x权限,则任何人可以在此目录中建立与删除文件。一旦目录上设置了冒险位,则表示在此目录中,只有文件的拥有者、目录的拥有者与系统管理员可以删除文件。其他用户则不能。

实验如下:

root用户建立一个新目录,修改目录权限为777。

两个普通用户(westos , lee)进入该目录建立文件,

用户lee可以删除westos建立的文件,这显然不符合常理!

 因此必须设置粘滞位,只有目录内文件的所有者或者root才可以删除或移动文件

设置粘滞位的方法:

# chmod  o+t  /mnt/pub/ 

# chmod  1XXX /mnt/pub :XXX为目录原权限

ps: chmod  o-t  /mnt/pub:恢复原权限

注意:当目录没有执行权限时,设置粘滞位,最后一位会变成T。

此时无法进入目录。

(2)强制位(set gid) --  SGID(在g的x位置上使用一个s)

针对目录:目录中新建的文件自动归属到目录的所属组中,默认情况下,用户建立的文件夹属于用户当前所在的组,但是设置了SGID后,表示在此目录中,任何人建立的文件,都会属于目录所属的组,但是用户还是属于创建的用户。

设定方法:

# chmod  2XXX /mnt/pub

# chmod  g+s  /mnt/pub

ps : chmod  g-s  /mnt/oub  : 恢复原权限

针对二进制的可执行文件(c程序):当运行二进制可执行文件时都是用文件拥有者身份运行,和执行用户无关

实验:

# watch -n 1 "ps ax -o comm,user,group | grep cat "watch : 设置监控cat程序

/bin/cat 程序本身所有组是root用户,但当westos用户执行/bin/cat时,进程显示所有组是westos.

#当运行二进制可执行文件时都是用执行用户身份运行

 设置强制位,可以保证#当运行二进制可执行文件时都是用文件拥有者身份运行,和执行用户无关

 (3)冒险位(set uid) --- SUID(在u的x位置上使用一个s)

Suid是让执行者临时拥有属主的权限,仅对二进制文件(命令)生效。

对文件作用:
默认情况下,用户执行一个指令,会以该用户的身份来运行进程。当一个文件设置了SUID后,所有用户执行这个文件时都是以这个文件的所有者的权限来执行。即可以让对此文件没有执行权限的用户执行此文件。

设定方法:

# chmod  u+s  /bin/cat

# chmod 4XXX /bin/cat :XXX是文件的原权限

ps: chmod  u-s /bin/cat : 恢复原权限

 7.ACL访问控制列表

访问控制列表(Access Control Lists,ACL)可以对文件的权限进行细分。

(1)ACL的基本使用方法

1) ACL列表的开启与关闭

# setfacl   -m   o::r   /mnt/pub/ (随意输入一条acl设定命令)

权限后出现“ +  ”号表示acl列表成功开启!

 # setfacl  -b  /mnt/pub  :  关闭acl列表

 2)ACL列表权限读取
# getfacl  目录/文件:当ACL列表权限开启后,可以通过此命令显示文件的列表权限。

显示内容分析:

# file: mnt/pub   :文件名
# owner: root     :所有人
# group: root      :  所有组
# flags: -s-          :特殊权限(这里开启了强制位)
user::r--               :所有人的权限

user:lee:rw-        : 特殊指定用户权限
group::rw-           :所有组的权限

group:westos:---  :特殊指定组权限

mask::rw-            : 能够赋予特殊用户和特殊用户组的最大权限阀值
other::---              :其他的权限

3)ACL权限设定

# setfacl -m  u:lee:rx   /mnt/pub/  :指定用户lee的权限为rx

# setfacl   -m    g:lee:rx    /mnt/pub/ :特殊指定组lee的权限为rx

 

# setfacl -m   u::r    /mnt/pub/  :设定文件所有人的权限

 

# setfacl -m g::rw /mnt/pub/  : 设定文件所有组的权限

 

# setfacl   -m   o::0   /mnt/pub/ :设定其他人的权限

 

# setfacl -x   u:lee   /mnt/pub/  : 删除lee用户

setfacl  -x    g:westos    /mnt/pub/  :删除westos这个组

 

 Ps: 注意只能删除特殊指定的用户或组,不能删除所有人,所有组!

(2)ACL的优先级匹配

拥有者 > 特殊指定用户 > 权限多的组 >权限少的组 > 其他

实验:

1)拥有者 > 特殊指定用户

在/mnt下建立westosfile文件-->所有者改为westos---->acl设定特殊用户westos权限为0------>

查看acl列表------>用户westos在westosfile文件里写东西------> 成功写入------>拥有者权限>特殊指定用户

2)特殊指定用户>特殊指定组

特殊指定用户lee权限改为rw------>设定lee用户所属的wheel组的权限为0-----> 用户lee在westosfile文件里写东西------> 写入成功------>特殊指定用户>特殊指定组

3)权限多的组>权限少的组

建立用户linux,设置附加组为westos -----> 设定所有组权限为0------>设定westos为特殊指定组,权限为rw------->用户linux在文件写东西----->写入成功!

设定所有组权限为rw------>设定westos为特殊指定组,权限为0------->用户linux在文件写东西----->写入成功!

因此总结:权限多的组>权限少的组

(3)Mask权限

mask是能够赋予指定用户或组权限的最大阀值,它将用户或群组所设定的 ACL 权限限制在 mask 规定的范围内,超出部分直接失效。

设定mask方法:

# setfacl   -m   m:权限  文件

 (4)默认权限列表

设定用户lee对目录/mnt/westodir的权限为rwx

1)针对已存在的文件生效

#  setfacl   -m      u:lee:rwx       /mnt/westosdir/ : 只对于/mnt/westosdir目录本身生效

#  setfacl    -Rm   u:lee:rwx   /mnt/westosdir/ :对于/mnt/westosdir目录和目录中已经存在的内容生效

 

此时在目录中新建westosfile4 ,设定的权限不会生效!因此,此命令只针对已存在的文件!

 

 2)针对新建文件生效

#  setfacl   -m  d:u:lee:rwx   /mnt/westosdir/  :针对新建的文件生效,已存在的文件没用!

 8.attr权限

attr权限限制所有用户,包括超级用户!

# lsattr   -d   dir/  :查看目录本身的attr权限

# chattr +a dir/ :设定attr权限,a表示只能添加不能删除

ps: chattr  -a  dir :关闭该权限

# chattr +i  dir/ :设定attr权限,i 表示不能做任何修改

ps: chattr   -i   dir/ :关闭该权限

 

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

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

相关文章

chatgpt赋能python:Python为什么运行不出来?

Python为什么运行不出来&#xff1f; Python是一门高级编程语言&#xff0c;被广泛应用于科学计算、机器学习、Web开发等领域。但是&#xff0c;有时候我们在编写Python程序的过程中会遇到各种各样的问题&#xff0c;其中之一就是程序无法运行。那么&#xff0c;Python为什么会…

网页投票系统怎么做如何制作网页投票链接如何投票链接

用户在使用微信投票的时候&#xff0c;需要功能齐全&#xff0c;又快捷方便的投票小程序。 而“活动星投票”这款软件使用非常的方便&#xff0c;用户可以随时使用手机微信小程序获得线上投票服务&#xff0c;很多用户都很喜欢“活动星投票”这款软件。 “活动星投票”小程序在…

mysql版本升级导致的时区问题

背景 公司各个项目组用的mysql 版本不一样&#xff0c;有的是5.x稳定守旧版&#xff0c;有的最近喜欢用8.x高级迎新版&#xff0c;结果出了问题。 现象&#xff0c;数据库中保存的时间与java读取的时间字段不一样。 最开始数据库mysql版本为5.7.28&#xff0c;驱动为5.1 反正…

【C++】queue和priority_queue的用法及模拟实现

目录 一、queue的简介及其使用1、queue的简介2、queue的使用2、queue的模拟实现 二、priority_queue的简介及其使用1、priority_queue的简介2、priority_queue的使用3、priority_queue的模拟实现 一、queue的简介及其使用 1、queue的简介 queue是一种容器适配器&#xff0c;专…

SpringBoot 学习笔记之 “异常处理”

&#x1f34f;&#x1f350;&#x1f34a;&#x1f351;&#x1f352;&#x1f353;&#x1fad0;&#x1f951;&#x1f34b;&#x1f349;&#x1f95d; 异常处理 文章目录 &#x1f34f; 错误处理1、默认规则2、定制错误处理逻辑3、异常处理自动配置原理4、异常处…

用Python发送通知到企业微信,实现消息推送

Hi&#xff0c;大家好&#xff0c;今天就介绍如何实现自动推送消息到企业微信&#xff0c;适合告警类型通知&#xff0c;非常方便。 在华为工作了10年的大佬出的Web自动化测试教程&#xff0c;华为现用技术教程&#xff01;_哔哩哔哩_bilibili在华为工作了10年的大佬出的Web自…

C++服务器框架开发6——日志系统LogFormatter/size_t学习

该专栏记录了在学习一个开发项目的过程中遇到的疑惑和问题。 其教学视频见&#xff1a;[C高级教程]从零开始开发服务器框架(sylar) 上一篇&#xff1a;C服务器框架开发5——日志系统LogAppender/IO类“3种stream”/双感叹号 C服务器框架开发6——日志系统logFormatter/size_t学…

【Python】深度理解Class类、Object类、Type元类;

详解Class类、Object类、Type元类 1.Class类、Object类、Type元类的表面关系2.Class、Object、Type解释1.1关系详解 2.Object类的默认方法作用详解2.2.1 init2.2.2 new2.2.3 repr2.2.4 提要&#xff1a;作为普通的Python开发者来讲&#xff0c;深入理解object、type不是必要的&…

ESP32设备驱动-MSA301加速计传感器驱动

MSA301加速计传感器驱动 文章目录 MSA301加速计传感器驱动1、MSA301介绍2、硬件准备3、软件准备4、驱动实现1、MSA301介绍 MSA301 是一款具有 I2C 数字输出的三轴低 g 加速度计,适用于消费类应用。 它具有 2g/4g/8g/16g 的动态用户可选满量程范围,并允许在 1Hz 至 500Hz 的…

Lombok 的正确使用姿势

文章目录 1.Lombok 是什么2.安装 Lombok3.Spring Boot 集成 Lombok4.使用 Lombok4.1 注解一览表4.2 部分使用介绍Getter(lazytrue)ValueBuilderSuperBuilderSneakyThrowsSlf4jCleanupNonNullWithSynchronizedval 在 Java 开发领域中&#xff0c;Lombok 插件已经成为一个非常流行…

OpenGL蓝宝书第八章学习笔记:基元处理之几何着色器

前言 本篇在讲什么 OpenGL蓝宝书第八章学习笔记之几何着色器 本篇适合什么 适合初学OpenGL的小白 本篇需要什么 对C语法有简单认知 对OpenGL有简单认知 最好是有OpenGL超级宝典蓝宝书 依赖Visual Studio编辑器 本篇的特色 具有全流程的图文教学 重实践&#xff0c…

使用scikit-learn和pandas学习线性回归

对于想深入了解线性回归的童鞋&#xff0c;这里给出一个完整的例子&#xff0c;详细学完这个例子&#xff0c;对用scikit-learn来运行线性回归&#xff0c;评估模型不会有什么问题了。 1. 获取数据&#xff0c;定义问题 没有数据&#xff0c;当然没法研究机器学习啦。这里我们用…

buuctf re入门题目解析

目录 1.easyre 2.reverse1 3.reverse2 4.内涵的软件 1.easyre 将exe文件放入ida&#xff0c;在主函数main中找到flag&#xff0c;此题结束 2.reverse1 打开主函数main&#xff0c;发现有一个跳转函数&#xff0c;双击打开 这句命令是将str1和str2的内容比较&#xff0c;当…

「C/C++」C/C++空指针void*

✨博客主页&#xff1a;何曾参静谧的博客 &#x1f4cc;文章专栏&#xff1a;「C/C」C/C程序设计 相关术语 void指针&#xff1a;是一种通用指针类型&#xff0c;可以指向任何类型的数据或对象。它不关心指向的数据或对象的类型&#xff0c;只关心指针本身的地址。因此&#xf…

性能测试—— 基础概念

目录 一、性能测试和功能测试的区别 二、性能测试衡量指标以及名称解释 1、并发用户数、系统用户数、在线用户数 2、响应时间、平均响应时间、请求响应时间 3、事务 4、点击率 5、吞吐量 6、思考时间 7、资源利用率 三、性能测试分类 1、一般性能测试 2、负载测试 …

【Python】函数 ③ ( 函数返回值定义语法 | 函数返回多个返回值 | 代码示例 )

文章目录 一、函数返回值定义语法二、函数返回多个返回值三、函数返回值代码示例 一、函数返回值定义语法 在 Python 函数中 , 通过 return 关键字 , 可以返回一个结果给调用者 , 这个返回结果就是 函数返回值 ; def 函数名(函数参数):"""函数文档字符串&#…

【C++】---模板初阶(超详练气篇)

个人主页&#xff1a;平行线也会相交&#x1f4aa; 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【C之路】&#x1f48c; 本专栏旨在记录C的学习路线&#xff0c;望对大家有所帮助&#x1f647;‍ 希望我们一起努力、成长&…

几种神经网络整定PID参数原理剖析及simulink案例仿真

目录 前言 1 基于单神经元自适应PID Simulink仿真分析 1.1 原理简介 1.1.1 无监督的Hebb学习 ​1.1.2 有监督的Delta学习 1.1.3 有监督的Hebb学习 1.1.4 改进的有监督Hebb学习 1.1.5 总结 1.2 simulink仿真分析 1.2.1 将权值作为状态变量仿真分析 1.2.2 利用局部变量…

Day6 不要二、把字符串转换成整数

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; C/C相关题解 &#x1f383;操作环境&#xff1a; Visual Studio 2019 版本 16.11.17 文章目录 选择题1. 计算机组成原理 编程题1. 不要二2. 把字符串转换成为整数 选择题 1. 计算机组成原理 题目&#xff1a…

Atcoder beginner contest 303

A - Similar String AC代码&#xff1a; #include<iostream> #include<algorithm> #include<cstring> using namespace std; int main() {int n;cin >> n;string s, t;cin >> s >> t;bool flag true;for (int i 0; i < n; i) {if …