Linux权限机制深度解读:系统安全的第一道防线

在这里插入图片描述

文章目录

  • 前言
    • ‼️一、Linux权限的概念
    • ‼️二、Linux权限管理
      • ❕2.1 文件访问者的分类(人)
      • ❕2.2 文件类型和访问权限(事物属性)
        • ✔️1. 文件类型
        • ✔️2. 基本权限
        • ✔️3. 权限值的表示方法
      • ❕2.3 文件访问权限的相关设置方法
        • ✔️1. `chmod` 命令
        • ✔️2. `chown` 命令
        • ✔️3. `chgrp` 命令
    • ‼️三、其他权限问题
      • ❕3.1 问题一:为什么普通文件是664,目录文件是775?
        • ✔️1. umask 的作用与工作原理
        • ✔️2. umask 的计算规则
        • ✔️3. 查看和设置 umask
      • ❕3.2 问题二:目录的权限代表什么?
        • ✔️1. 读取权限(`r` - Read)
        • ✔️2. 写入权限(`w` - Write)
        • ✔️3. 执行权限(`x` - Execute)
      • ❕3.3 问题三:想要建立共享文件,但不想让其他人删除怎么办?
        • ✔️1. 粘滞位的作用
        • ✔️2. 粘滞位的表示
        • ✔️3. 设置和移除粘滞位
  • 结语


前言

在现代操作系统中,权限管理是保障安全与系统稳定运行的关键环节。Linux作为一个广泛应用的开源操作系统,其权限体系以灵活性、可扩展性和严谨性著称。无论是个人用户还是企业环境,理解并掌握Linux权限管理,既是保障信息安全的基础,也能大幅提升系统管理效率。本文将带你深入探索Linux权限体系的核心概念、常见操作以及最佳实践。


‼️一、Linux权限的概念

Linux下有两种用户:超级用户(root)、普通用户

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

命令:su [用户名]

功能:切换用户。

例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。退出用户使用 exit 或者 ctrl + d。

‼️二、Linux权限管理

❕2.1 文件访问者的分类(人)

  • 文件和文件目录的所有者:u—User(中国平民 法律问题)

  • 文件和文件目录的所有者所在的组的用户:g—Group(不多说)

  • 其它用户:o—Others (外国人)

❕2.2 文件类型和访问权限(事物属性)

在这里插入图片描述

✔️1. 文件类型

Linux 文件类型由文件的第一个字符标识,当使用命令 ls -l 查看文件列表时,可以看到类似如下的输出:

-rwxr-xr--
drwxr-xr-x
lrwxrwxrwx

第一个字符表示文件的类型,可能的取值如下:

字符文件类型
-普通文件 (Regular File)
d目录 (Directory)
l符号链接 (Symbolic Link)
b块设备文件 (Block Device)
c字符设备文件 (Character Device)
p管道 (Pipe)
s套接字 (Socket)

✔️2. 基本权限

Linux 文件权限分为三组:

  • 所有者 (Owner):文件的创建者。
  • 所属组 (Group):同组用户。
  • 其他人 (Others):非所有者或非所属组的用户。

权限有三种:

权限描述
r读 (Read)4
w写 (Write)2
x执行 (Execute)1

✔️3. 权限值的表示方法

a. 符号表示法

用字母表示文件权限,例如:-rw-r--r--

字符含义
r读权限
w写权限
x执行权限
-没有该权限

例子

  • -rw-r--r-- 表示普通文件,所有者有读写权限,组用户和其他用户只有读权限。

b. 数值表示法

每种权限的值相加表示最终权限。例如:

权限数值二进制
---0000
--x1001
-w-2010
-wx3011
r--4100
r-x5101
rw-6110
rwx7111

权限分为三组(Owner, Group, Others),组合成三位数字。例如:

  • -rwxr-xr-- 的数值表示为 754

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

✔️1. chmod 命令

chmod (Change Mode) 是用于修改 Linux 文件或目录权限的命令。权限可以用符号或八进制数表示。

基本语法

chmod [选项] 模式 文件名
  • 模式:可以是符号表示法 (u+r, g-w) 或数字表示法 (755)。
  • 文件名:要更改权限的目标文件或目录。

a. 符号表示法

符号表示法适合逐步修改权限:

chmod [ugoa][+-=][rwx] 文件名
符号作用
u文件所有者 (user)
g文件所属组 (group)
o其他人 (others)
a所有用户 (all)
+添加权限
-移除权限
=直接设定权限

示例

  1. 给文件所有者添加写权限:

    chmod u+w filename
    
  2. 删除其他人的执行权限:

    chmod o-x filename
    
  3. 所有用户设定只读权限:

    chmod a=r filename
    

b. 数字表示法

数字表示法直接设定文件权限值(例如 644755)。

权限数值二进制
---0000
--x1001
-w-2010
-wx3011
r--4100
r-x5101
rw-6110
rwx7111
  1. 设置文件权限为 rwxr-xr--

    chmod 754 filename
    
  2. 设置目录权限为 rwx------

    chmod 700 directory_name
    

常用选项

选项描述
-R递归修改权限,适用于目录及其所有子目录和文件。
-v显示每个文件权限修改的详细信息。
-c仅显示被更改的文件信息。
--reference=ref_fileref_file 的权限应用到目标文件。

示例

  1. 递归修改目录及其内容的权限:

    chmod -R 755 /path/to/directory
    
  2. 使用参考文件权限:

    chmod --reference=ref_file target_file
    
✔️2. chown 命令

chown(Change Ownership)用于更改文件或目录的所有者和/或所属组。

语法

chown [选项] [所有者][:组] 文件名
  • 所有者:文件的新所有者用户。
  • :文件的新所属组。如果不指定所有者,只修改组时,可以用 : 开头。
  • 文件名:要修改的目标文件或目录。

常用选项

选项描述
-R递归更改目录及其内容的所有者和组。
-v显示更改的详细信息。
--reference=ref_file使用参考文件的所有者和组进行设置。

示例

  1. 更改文件所有者

    chown user1 filename
    

    filename 的所有者改为 user1

  2. 更改所有者和组

    chown user1:group1 filename
    

    filename 的所有者改为 user1,所属组改为 group1

  3. 仅更改组

    chown :group1 filename
    
  4. 递归更改目录和文件的所有者

    chown -R user1:group1 /path/to/directory
    
  5. 参考其他文件的所有者和组

    chown --reference=ref_file target_file
    

✔️3. chgrp 命令

chgrp(Change Group)用于更改文件或目录的所属组。

语法

chgrp [选项] [] 文件名
  • :文件的新所属组。
  • 文件名:要修改的目标文件或目录。

常用选项

选项描述
-R递归更改目录及其内容的所属组。
-v显示更改的详细信息。
--reference=ref_file使用参考文件的组进行设置。

示例

  1. 更改文件的所属组

    chgrp group1 filename
    

    filename 的所属组改为 group1

  2. 递归更改目录和文件的所属组

    chgrp -R group1 /path/to/directory
    
  3. 参考其他文件的组

    chgrp --reference=ref_file target_file
    

‼️三、其他权限问题

在这里插入图片描述

❕3.1 问题一:为什么普通文件是664,目录文件是775?

实际上:

  • 创建文件时的默认权限是 666(没有执行权限)。

  • 创建目录时的默认权限是 777(包括执行权限)。

但是:实际权限 = 默认权限 - umask

这里我们引入一个叫做umask的东西。

✔️1. umask 的作用与工作原理

umask(User File Creation Mask)是一个在 Linux 操作系统中用于控制文件和目录默认权限的命令。它定义了文件和目录创建时的权限掩码,从而决定新创建的文件或目录的最终权限。

✔️2. umask 的计算规则

实际权限 = 默认权限 - umask

注意:这里的 - 并不是简单的减,而是,默认权限 & (~umask)

例如:

  • 如果 umask = 022
    • 文件默认权限 = 666 - 022 = 644(rw-r–r–)
    • 目录默认权限 = 777 - 022 = 755(rwxr-xr-x)
  • 如果 umask = 027
    • 文件默认权限 = 666 - 027 = 640(rw-r-----)
    • 目录默认权限 = 777 - 027 = 750(rwxr-x–)

示例:

更改 umask: 修改为 077

umask 077
touch test3.txt
mkdir dir3

在这里插入图片描述

✔️3. 查看和设置 umask
  1. 查看当前 umask 值

运行命令:

umask

这将返回一个四位的八进制数字(前三位是有效的)。

例如:

$ umask
0022
  1. 临时设置 umask

在当前会话中临时更改:

umask 0027

此更改仅适用于当前 shell 会话。

注意事项

  • umask 不会增加权限umask 只能限制权限,而不能授予额外权限。例如,设置 umask0000 允许最大权限,但不能为文件自动添加执行权限。

❕3.2 问题二:目录的权限代表什么?

✔️1. 读取权限(r - Read)
  • 作用:
    • 允许查看目录中的文件名列表。
    • 如果没有读取权限,用户即使知道目录的路径,也无法列出其中的内容(如使用 ls 命令)。
  • 效果:
    • 如果对目录有读取权限,你可以看到该目录内的文件和子目录的名称,但不能访问其内容(如果缺少执行权限)。
✔️2. 写入权限(w - Write)
  • 作用:
    • 允许在目录中创建、删除或重命名文件。
    • 如果没有写入权限,你无法在该目录中添加新文件、删除文件或修改目录结构。
  • 注意:
    • 写入权限还受执行权限的限制(即需要同时有执行权限才能实际修改目录内容)。
✔️3. 执行权限(x - Execute)
  • 作用:
    • 允许进入该目录,也就是说,用户可以切换到该目录(使用 cd 命令)。
    • 允许访问目录中的具体文件(前提是对文件本身有合适的权限)。
  • 效果:
    • 如果对目录没有执行权限,即使有读取权限,你也无法查看目录的内容。
    • 执行权限对目录至关重要,因为它决定了目录是否可用作工作路径。

❕3.3 问题三:想要建立共享文件,但不想让其他人删除怎么办?

解决方案:设置粘滞位

粘滞位(Sticky Bit)是一种特殊的权限位,用于保护目录下的文件和子目录,使得只有文件的所有者或者目录的所有者才能删除或修改该文件,即使其他用户对目录有写权限。

✔️1. 粘滞位的作用
  • 功能:当粘滞位设置在目录上时,只有以下用户可以删除或重命名该目录中的文件或子目录:
    1. 文件所有者
    2. 目录所有者
    3. 超级用户(root)
  • 应用场景:最常见的例子是 /tmp 目录。该目录通常对所有用户开放写入权限,但由于设置了粘滞位,用户只能删除或修改自己的文件,而不能影响其他用户的文件。

✔️2. 粘滞位的表示
  1. 符号模式:在文件或目录权限的符号表示中,粘滞位通常显示为目录权限的最后一位 tT

    • 如果目录同时有执行权限,粘滞位显示为 t
    • 如果目录没有执行权限,粘滞位显示为 T。 例如:
    drwxrwxrwt  10 root root  4096 Nov 19  /tmp
    

    /tmp 目录的权限显示 t,表示粘滞位已启用,且目录具有执行权限。

  2. 八进制模式:粘滞位对应的八进制值是 1,可以通过在权限数字前加上 1 设置粘滞位。例如:

    • 1755:设置了粘滞位,并且目录权限为 rwxr-xr-x
    • 1777:设置了粘滞位,并且目录权限为 rwxrwxrwx(例如 /tmp 目录)。

✔️3. 设置和移除粘滞位

设置粘滞位

使用 chmod 命令为目录添加粘滞位:

chmod +t directory_name  # 使用符号模式添加粘滞位。
chmod 1777 directory_name  # 使用八进制模式设置权限并添加粘滞位。

移除粘滞位

chmod -t directory_name  # 使用符号模式移除粘滞位。
chmod 0777 directory_name  # 使用八进制模式移除粘滞位。

结语

Linux权限体系是一个兼具严谨与灵活的设计,其核心在于平衡安全性与实用性。通过深入理解权限管理的原理和操作,你不仅能够应对常见的安全威胁,还能更高效地管理系统资源。希望本文能为你的学习和实践提供实用参考,让你在Linux系统的使用中更加自信、游刃有余。
在这里插入图片描述

今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下,17的主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是17前进的动力!

在这里插入图片描述

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

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

相关文章

Ubuntu22.04系统源码编译OpenCV 4.10.0(包含opencv_contrib)

因项目需要使用不同版本的OpenCV,而本地的Ubuntu22.04系统装了ROS2自带OpenCV 4.5.4的版本,于是编译一个OpenCV 4.10.0(带opencv_contrib)版本,给特定的项目使用,这就不用换个设备后重新安装OpenCV 了&…

【C++】—— set 与 multiset

【C】—— map 与 set 1 序列式容器和关联式容器2 set 系列的使用2.1 set 和 multiset 参考文档2.2 set 类的介绍2.3 set 的迭代器和构造2.4 set的增删查2.4.1 insert2.4.2 find 与 erase2.4.3 count 2.5 lower_bound 与 upper_bound2.6 multiset 与 set 的差异2.6.1 不再去重2…

华为、华三交换机纯Web下如何创关键VLANIF、操作STP参数

华为交换机WEB操作 使用的是真机S5735,目前主流的版本都适用(V1R5~V2R1的就不在列了,版本太老了,界面完全不一样,这里调试线接的console口,电脑的网络接在ETH口) 「模拟器、工具合集」复制整段内…

学习threejs,使用canvas更新纹理

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️Texture 贴图 二、&#x1…

Redis设计与实现读书笔记

Redis设计与实现读书笔记 Redis设计与实现[^1]简单动态字符串SDS的基础定义与C字符串的差别常数获取长度杜绝缓冲区溢出减少修改字符串时带来的内存重分配次数二进制安全函数兼容 链表链表和链表节点的实现 字典字典的实现哈希表定义哈希表节点定义字典定义 哈希算法解决键冲突…

【笔记】离散数学 1-3 章

1. 数理逻辑 1.1 命题逻辑的基本概念 1.1.1 命题的概念 命题(Proposition):是一个陈述句,它要么是真的(true),要么是假的(false),但不能同时为真和假。例如…

SQL SERVER 2016 AlwaysOn 无域集群+负载均衡搭建与简测

之前和很多群友聊天发现对2016的无域和负载均衡满心期待,毕竟可以简单搭建而且可以不适用第三方负载均衡器,SQL自己可以负载了。windows2016已经可以下载使用了,那么这回终于可以揭开令人憧憬向往的AlwaysOn2016 负载均衡集群的神秘面纱了。 …

浅谈——Linux命令入门之前奏

目录 一、备份操作系统 1、快照 2、克隆 二、操作系统的使用注意 1、Linux严格区分大小写 2、Linux 文件“扩展名” 3、Linux 中所有的内容以文件的形式进行保存 4、Linux 中所有的存储设备都必须挂载之后才能使用 5、Linux 系统文件目录的结构 6、Linux 系统文件的目…

matlab中disp,fprintf,sprintf,display,dlmwrite输出函数之间的区别

下面是他们之间的区别: disp函数与fprintf函数的区别 输出格式的灵活性 disp函数:输出格式相对固定。它会自动将变量以一种比较直接的方式显示出来。对于数组,会按照行列形式展示;对于字符串,直接原样输出并换行。例如…

计算机视觉——相机标定(Camera Calibration)

文章目录 1. 简介2. 原理3. 相机模型3.1 四大坐标系3.2 坐标系间的转换关系3.2.1 世界坐标系到相机坐标系3.2.2 相机坐标系到图像坐标系3.2.3 像素坐标系转换为图像坐标系3.2.4 世界坐标转换为像素坐标 3.3 畸变3.3.1 畸变类型3.3.1.1 径向畸变(Radial Distortion&a…

纯粹直播 1.7.7 |手机版和TV版,聚合六大直播平台,原画播放

纯粹直播是一款开源的应用程序,支持兴趣化主题的游戏直播、户外直播和才艺直播节目。目前可以观看斗鱼、B站、虎牙和抖音等六大直播平台的内容。该应用适配了安卓手机和电视盒子平台使用,并且软件无广告,提供原画质播放体验。 大小&#xff…

【论文复现】隐式神经网络实现低光照图像增强

📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ 隐式神经网络实现低光照图像增强 引言那么目前低光照图像增强还面临哪些挑战呢? 挑战1. 不可预测的亮度降低和噪声挑战2.度量友好…

算法第一弹-----双指针

目录 1.移动零 2.复写零 3.快乐数 4.盛水最多的容器 5.有效三角形的个数 6.查找总价值为目标值的两个商品 7.三数之和 8.四数之和 双指针通常是指在解决问题时,同时使用两个指针(变量,常用来指向数组、链表等数据结构中的元素位置&am…

JAVA-平台模块系统原理

菜鸟为了巩固所写 目录 菜鸟为了巩固所写 代码之间的依赖性 绘制类型依赖图 扩展到包之间的依赖关系 进一步延伸到jar包之间的依赖性 组件依赖图 JAVA技术领域中的两个著名的“擦除” Java类型的“大泥球” JAVA模块解析 模块解析的过程 模块路径明确模块的搜索与…

Keil5配色方案修改为类似VSCode配色

1. 为什么修改Keil5配色方案 视觉习惯:如果你已经习惯了VSCode的配色方案,尤其是在使用ESP-IDF开发ESP32时,Keil5的默认配色可能会让你感到不习惯。减少视觉疲劳:Keil5的默认背景可能过于明亮,长时间使用可能会导致视…

微服务监控prometheus+Grafana

目录 Prometheus 概述 核心组件 特点 使用场景 Grafana 概述 功能特点 使用场景 PrometheusGrafana组合 部署和配置 一、准备工作 二、部署Prometheus 三、部署Grafana 四、创建监控仪表盘 五、验证和调优 总结 微服务监控是确保微服务架构稳定运行的关键环节…

⭐Java---反射--获取类信息⭐

目录 三种获取类信息的方式: 一个输入类名字获取类信息的类: 一个测试类: 测试结果 三种获取类信息的方式: 对象.getClass()类.classClass.forname("类的路径") People p; Class c1p.getClass();//将对象&#xff…

等差数列末项计算

等差数列末项计算 C语言代码C 代码Java代码Python代码 💐The Begin💐点点关注,收藏不迷路💐 给出一个等差数列的前两项a1,a2,求第n项是多少。 输入 一行,包含三个整数a1,a2&#x…

PETRv2: A Unified Framework for 3D Perception from Multi-Camera Images

全文摘要 本文介绍了一种名为PETRv2的统一框架,用于从多视图图像中进行三维感知。该框架基于先前提出的PETR框架,并探索了时间建模的有效性,利用前一帧的时间信息来提高三维物体检测效果。作者在PETR的基础上扩展了三维位置嵌入(…

【最新免费PPT制作并下载】Kimi PPT助手:智能化演示文稿生成,职场效率的革命性提升

最新免费PPT制作方法在这里!下面我想向大家介绍一款能够极大提升我们工作效率的工具——Kimi PPT助手。 Kimi PPT助手:智能化演示文稿生成 Kimi PPT助手是由Moonshot AI推出的一款革命性产品,它通过人工智能技术,实现了PPT的一键…