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

2023-11-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/ :关闭该权限

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

复习之linux系统中的权限管理 的相关文章

随机推荐

  • MCS51 系列单片机的最小系统

    让单片机工作的前提是为它添加必要的外围电路以构成单片机最小系统 初学者可能对 单片机最小系统感觉很神秘 其实单片机最小系统很简单 就是能使单片机工作的最少的器件构成的系统 最小系统虽然简单 但是却是大多数控制系统所必不可少的关键部分 对于
  • AGG简介

    AGG是一个开源 高效的跨平台2D图形库 AGG的功能与GDI 的功能非常类似 但提供了比GDI 更灵活的编程接口 其产生的图形的质量也非常高 自称超过GDI 使用前AGG的准备工作 下载AGG库 它的家在http www antigrai
  • 5. 使用PyTorch预先训练的模型执行目标检测

    5 使用PyTorch预先训练的网络执行目标检测 PyTorch是什么 使用PyTorch训练第一个神经网络 使用PyTorch训练第一个卷积神经网络 使用预训练网络进行PyTorch图像分类 使用预训练网络进行PyTorch目标检测 今天
  • 记录STM32各类串口中断实验

    STM32F407VG使用cubemx LL库 波特率115200 一位停止位 无校验 单片机初始化串口一 PA8高速推挽输出 使用逻辑分析仪100M采样捕获各类串口中断触发时的波形 首先是喜闻乐见的RXNE 理论是只要串口成功接收一byt
  • Cache 和 Buffer 有什么区别

    Cache 和 Buffer 有什么区别 转载 talkwithtrend https mp weixin qq com s YsEOBVS7fXgrGXnXH1I0MQ Cache和Buffer简单的说 Cache是加速 读 而buffe
  • android自定义可缩放,移动图像裁剪框

    在实际项目中 经常要制作一个简易的图像裁剪功能 即获取一张图片 并用一个遮罩层选择目标范围并截取保存的功能 如下图所示 在此分享下该自定义视图的制作过程 需求说明 整一个视图包含一个透明的遮罩层 一个透明带白色边框的矩形 要实现的功能是 点
  • oracle 问题 :Cause: java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束

    使用mysql时使用的sql语句常有 结尾的语句 但oracle中不能出现 结尾 因为oracle解析器很严谨 不支持 结尾语句解析
  • C基础day6(2023.7.6)

    一 Xmind整理 二 课上练习 练习1 循环嵌套 三个循环结构可以任意嵌套 include
  • Python爬虫分析唯品会商品数据 +数据可视化

    目录 前言 数据来源分析 1 明确需求 2 抓包分析 通过浏览器自带工具 开发者工具 代码实现步骤 发送请求 gt 获取数据 gt 解析数据 gt 保存数据 发送请求 解析数据 保存数据 数据可视化 先读取数据 泳衣商品性别占比 商品品牌分
  • Springmvc+mybatis+Dubbo+ZooKeeper+Redis+KafKa

    开发工具 1 Eclipse IDE 采用Maven项目管理 模块化 2 代码生成 通过界面方式简单配置 自动生成相应代码 目前包括三种生成方式 增删改查 单表 一对多 树结构 生成后的代码如果不需要注意美观程度 生成后即可用 技术选型 只
  • Androidstudio快捷操作之多选

    如图 想要批量复制属性名 不需要一个一个的复制 只需按住alt 鼠标左键从上往下拉 将光标定位在每个属性名的前面 再按ctrl w就可以选中所有光标后面的单词了
  • QT里使用sqlite的问题,好多坑

    1 我使用sqlite 开发机上好好的 测试机上却不行 后来发现是缺少驱动 Driver not loaded Driver not loaded 代码检查了又检查 发现应该是缺少dll文件 系统不提示 是自己使用 QMessageBox
  • c语言基础五子棋,十分的易懂理解,详细解释,容易上手

    前言 提示 经过b站和视频学习后编程 提示 以下是本篇文章正文内容 下面案例可供参考 文章目录 前言 五子棋 头文件 展示棋盘 display 下棋 PlayMove 主体函数 game 完整代码 五子棋 本篇博客主要写了关于c语言的五子棋
  • MySQL主从搭建-Centos实战

    目录 一 规划说明 二 主节点安装MySQL 1 下载MySQL和安装 2 启动Mysql 设置root密码 允许远程登录 三 副节点安装MySQL 参考主节点 四 主节点配置 1 配置my cnf 修改默认存储目录为指定目录 data 下
  • 解决SQL查询总是超时已过期

    解决SQL查询总是超时已过期 在WIN8里提示 OLE DB 或 ODBC 错误 查询超时已过期 HYT00 1 由于数据库设计问题造成SQL数据库新增数据时超时 症状 Microsoft OLE DB Provider for SQL S
  • web前端页面适配方法

    流式布局 就是百分比布局 非固定像素 内容向两侧填充 理解成流动的布局 称为流式布局 视觉窗口 viewport 是移动端特有 这是一个虚拟的区域 承载网页的 承载关系 浏览器 gt viewport gt 网页 适配要求 1 网页宽度必须
  • c++基础十一(跳转语句)

    跳转语句 1 break 2 continue 3 goto 1 break 作用 跳出循环结构和选择结构 1 switch语句中 用于终止case并跳出switch语句 2 在循环结构中 用于跳出当前循环 3 在嵌套循环语句中 跳出最近的
  • 企业微信 => 接入第三方vue应用 第三阶段:企业微信使用JSSDK

    目录 使用说明 官方文档不会告诉你的内容 都是会踩的坑 一 我采用的混入方法去使用这个官方SDK 二 可能会遇到的坑 前提 我们开发的是三方应用 不是内部应用 使用说明 所有的JS接口只能在企业微信应用的可信域名下调用 包括子域名 且可信域
  • 深度学习环境搭建( Tensorflow & PyTorch)

    前言 硬件配置 基础软件 1 安装VC redist x64 2 安装显卡驱动并确定算力 3 确认cuda版本 4 安装CUDA 配置cudnn 5 安装Anaconda 6 安装PyCharm 深度学习框架Tensorflow安装 深度学
  • 复习之linux系统中的权限管理

    1 权限的查看及读取 1 权限的查看 ls l file 查看文件的权限 ls ld dir 查看目录权限 2 权限的读取 文件的属性叫做文件的元数据 元数据 Metadata 又称中介数据 中继数据 为描述数据的数据 data about