Linux操作系统从入门到实战(五)详细讲解Linux权限概念

Linux操作系统从入门到实战(五)详细讲解Linux权限概念

  • 前言
  • 一、Linux中两种用户
    • 1.1 超级用户(root)
    • 1.2 普通用户
    • 1.3 切换用户命令
  • 二、Linux权限管理
    • 2.1 文件访问者的分类:谁能访问文件?
    • 2.2 文件类型
    • 2.3 基本权限:能对文件做什么?
    • 2.4 权限的“长相”:
    • 2.5 为什么需要权限?
  • 三、文件访问权限的相关设置方法与命令
    • 1. chmod:
    • 2. chown:
    • 3. chgrp:
    • 4. umask:
    • 5. file指令:
    • 6. 使用 sudo 分配权限
  • 四、粘滞位


前言

  • 在之前的内容里,我们深度解析了操作系统的本质,一步步搭建起 Linux 环境,还系统掌握了 Linux 基础指令的运用。
  • 但要想真正玩转 Linux 系统,其权限管理机制是绕不开的核心关键。
  • 从今天起,就让我们切入 Linux 权限这一重要模块,层层拆解其概念与逻辑,为全面掌握 Linux 系统的管理与运用筑牢根基,开启更深入的 Linux 探索之旅

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Linux知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12879535.html?spm=1001.2014.3001.5482


一、Linux中两种用户

  • 我们平时用的Linux操作系统里有两种⽤⼾:超级⽤⼾(root)、普通⽤⼾

1.1 超级用户(root)

  • 就像家里“大权在握”的大当家,在 Linux 系统里想干啥就干啥,没有限制
  • 比如随意修改系统设置、安装或删除软件、查看所有文件等,甚至可以删除自己。
  • 它的命令提示符是 #,只要看到 #,就知道现在是超级用户
    在这里插入图片描述

1.2 普通用户

  • 类似家里的其他成员,能做的事有限。
  • 比如只能用自己的东西(访问自己权限内的文件),不能随便动系统关键设置或别人的文件。它的命令提示符是 $,看到 $ 就知道是普通用户在操作。
    在这里插入图片描述

1.3 切换用户命令

  • 从超级用户切到普通用户:比如从 root 切到普通用户 user,输 su user不用输密码,直接切换。就像大当家想找普通成员做事,一叫就来。
  • 从普通用户切到超级用户:输 su(或 suroot),这时系统会让你输 root 的密码,验证通过才能切换。好比普通成员想变成大当家,得先证明自己有这个资格(输对密码)。
    在这里插入图片描述

二、Linux权限管理

2.1 文件访问者的分类:谁能访问文件?

Linux 把文件的“访问者”分成三类,就像家里的文件被不同人使用:

  1. 所有者(User,缩写 u

    • 就像文件的“主人”,比如你创建了一个文件,你就是它的所有者。
    • 权限最大,能决定谁能看、谁能改这个文件。
  2. 所属组用户(Group,缩写 g

    • 比如你和同学组成一个小组,小组里的成员就是“所属组用户”。
    • 组内成员共享一些权限,方便团队协作(比如一起修改小组作业文件)。
  3. 其他用户(Others,缩写 o

    • 既不是所有者,也不在所属组里的人,比如陌生人。
    • 权限最小,通常只能看文件内容,不能随便改

2.2 文件类型

Linux 里的文件“长相”用第一个字符表示,常见类型:

  • d(目录,文件夹):像一个抽屉,里面可以装很多文件和子目录(比如 ~/Documents)。
    在这里插入图片描述

  • -(普通文件):就是普通的文件,比如文档(.txt)、图片(.jpg)、脚本(.sh)等。
    在这里插入图片描述

  • l(软链接):类似 Windows 的快捷方式,指向另一个文件或目录(比如 ln -s 目标文件 快捷方式名)。

  • b(块设备文件)c(字符设备文件):和硬件相关,比如硬盘(/dev/sda)、键盘、鼠标(不用太纠结,记住是硬件就行)。

  • 其他类型(ps):暂时用得少,先记住前三个最常用的!

2.3 基本权限:能对文件做什么?

每种用户(所有者/组/其他用户)都有三种“操作权限”,用 rwx 表示,对应数字 421

  1. 读权限(r,数字 4

    • 对文件:可以查看文件内容(比如用 cat 文件名 查看)。
    • 对目录:可以查看目录里有哪些文件(比如用 ls 目录名 列出内容)。
      例子:你可以看一本书的内容,就是有“读”权限。
      在这里插入图片描述
  2. 写权限(w,数字 2

    • 对文件:可以修改文件内容(比如用 nano 文件名 编辑)。
    • 对目录:可以在目录里新建、删除、重命名文件(注意!是改目录里的内容,不是目录本身的名字)。
      例子:你可以在笔记本上写字,就是有“写”权限。
  3. 执行权限(x,数字 1

    • 对文件:可以运行这个文件(比如脚本 .sh 文件,需要 x 权限才能用 ./脚本名 运行)。
    • 对目录:可以进入这个目录(比如用 cd 目录名 进入)。
      例子:你能打开一个抽屉(进入目录),或者启动一个程序(运行文件),就是有“执行”权限。

如果没有某个权限,就用 - 表示,比如 r-- 表示只有读权限,没有写和执行权限。

2.4 权限的“长相”:

当你用 ls -l 查看文件时,会看到类似这样的结果:

在这里插入图片描述

-rwxr-xr-- 1 user group 1024 Jan 1 00:00 文件名
  • 第一个字符是文件类型(这里是 -,表示普通文件)。
  • 接下来 9 个字符分成三组,每组 3 个:
    • 第一组(前 3 位):所有者(u)的权限(这里 rwx,表示可读、可写、可执行)。
    • 第二组(中间 3 位):所属组(g)的权限(这里 r-x,表示可读、可执行,不可写)。
    • 第三组(最后 3 位):其他用户(o)的权限(这里 r--,表示只读)。

也可以用数字表示权限,比如 rwx4+2+1=7r-x4+0+1=5,上面的例子权限就是 754

2.5 为什么需要权限?

假设你有一个笔记本:

  • 所有者(你自己):可以随便看、写、甚至烧掉它(rwx)。
  • 所属组(家人):可以看里面的内容,也可以打开笔记本(进入目录),但不能随便修改(r-x)。
  • 其他用户(陌生人):只能远远看一眼封面(只读,r--),不能打开或修改。

三、文件访问权限的相关设置方法与命令

1. chmod:

基本功能与格式

chmod 命令用于设置文件的访问权限,其基本格式是 chmod [参数] 权限 文件名。要注意,只有文件的拥有者和超级用户 root 才有权力改变文件的权限。

常用选项

-R 这个选项很实用,当你要修改一个目录下所有文件和子目录的权限时,使用 -R 就可以递归地进行修改。

权限值格式
  • 用户标识符 + / - / = 权限字符

    • + :为权限范围添加权限代号所代表的权限。
    • - :从权限范围中移除权限代号所代表的权限。
    • = :给权限范围赋予权限代号所代表的权限。
    • 用户符号:
      • u :文件拥有者。
      • g :拥有者所在组的用户。
      • o :其他用户。
      • a :所有用户。
    • 实例:
      • chmod u++ a.txt :给文件 a.txt 的拥有者添加写权限。
      • chmod o+x a.txt :移除文件 a.txt 其他用户添加写权限。
      • chmod a=x a.txt :给文件 a.txt 的所有用户都只赋予执行权限。
        在这里插入图片描述
  • 三位 8 进制数字
    每个 8 进制数字对应一种用户的权限,从左到右依次是拥有者、所属组、其他用户。比如读权限是 4,写权限是 2,执行权限是 1。

    • 实例:
      • chmod 664 a.txt :拥有者和所属组用户有读写权限,其他用户只有读权限。
        在这里插入图片描述

      • chmod 640 a.txt :拥有者有读写权限,所属组用户只有读权限,其他用户没有任何权限。

2. chown:

chown 命令用来修改文件的拥有者,格式为 chown [参数] 用户名 文件名

  • 实例:
    • chown user1 f1 :把文件 f1 的拥有者修改为 user1
    • chown -R user1 filegroup1 :使用 -R 递归地将目录 filegroup1 及其下面所有文件和子目录的拥有者都修改为 user1

3. chgrp:

chgrp 命令用于修改文件或目录的所属组,格式是 chgrp [参数] 用户组名 文件名。常用选项 -R 可递归修改文件或目录的所属组。

  • 实例:
    • chgrp users /abc/f2 :把文件 /abc/f2 的所属组修改为 users

4. umask:

功能
`umask` 可以用来查看或修改文件掩码。新建文件默认权限是 0666(即所有用户都有读写权限),新建目录默认权限是 0777(所有用户都有读写执行权限)。不过实际创建的文件和目录权限往往不是这些默认值,这是因为创建时会受到 `umask` 的影响。实际创建出来的文件权限是默认权限 `mask` 与 `~umask` 按位与的结果。
格式与说明
格式为 `umask 权限值`,超级用户默认掩码值是 0022,普通用户默认是 0002。将现有的存取权限减去权限掩码后,就得到创建文件时的预设权限。 - 实例: - `umask 755` :设置文件掩码为 755。 - `umask` :查看当前的文件掩码。 - `umask 044` :将文件掩码设置为 044。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b72141e5ec1342c6a07122388b0138a1.png)

5. file指令:

file 指令用于识别文件类型,语法是 file [选项] 文件或目录...

常用选项
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/22c7bf029a554dc7adc57d89a4a9d9ca.png)
  • -c :详细显示指令执行过程,方便排查错误或分析程序执行情况。
    在这里插入图片描述

  • -z :尝试解读压缩文件的内容。

6. 使用 sudo 分配权限

修改 /etc/sudoers 文件
  • 可以通过修改 /etc/sudoers 文件来分配权限。
  • /etc/sudoers 文件定义了哪些用户可以使用 sudo 命令以超级用户权限执行特定命令。
  • 不过修改这个文件要格外小心,因为一旦配置错误,可能导致系统出现问题
  • 通常使用 visudo 命令来编辑该文件,它会在保存时检查语法错误。比如,你可以在文件中添加一行,让某个用户可以使用 sudo 执行特定命令,像这样 username ALL=(ALL) ALL ,这就表示用户 username 可以在任何主机上以任何用户身份执行任何命令。

在这里插入图片描述

使用 sudo 调用授权的命令

格式:sudo –u 用户名 命令

  • sudo:获取临时超级用户权限的命令。
  • -u 用户名:指定以哪个用户身份执行命令。
  • 命令:具体要执行的操作。
    实例 sudo -u root /usr/sbin/useradd u2 :表示当前用户借助 sudo,以 root 身份执行 /usr/sbin/useradd u2 命令(即创建用户 u2)。这要求当前用户在 /etc/sudoers 中被授予了相关权限,否则会提示权限不足。

简单总结:先通过修改 /etc/sudoers 文件设定用户能以什么身份执行哪些命令,再用 sudo -u 来实际调用这些授权的命令,实现权限的灵活分配,既保证安全又方便普通用户执行特定管理任务。

四、粘滞位

在我们刚刚的讲解中

  • 可执行权限(x)
    想象目录是一个房间,可执行权限(x)就像“开门的钥匙”。

    如果没这把钥匙(目录无 x 权限),你连房间都进不去(无法 cd 进入目录),更别说做其他操作了。

  • 可读权限(r)
    进了房间(有 x 权限)后,可读权限(r)就像“房间里的灯”。

    如果没灯(目录无 r 权限),虽然你人在房间里(能 cd 进入),但啥也看不见(无法用 ls 等命令查看目录里有什么文件)。

  • 可写权限(w)
    可写权限(w)相当于“在房间里放置或拿走东西的权力”。

    只要有这个权力(目录有 w 权限),不管房间里的东西(文件)是谁的,你都能在房间里创建新东西(新建文件),或者把别人的东西拿走(删除文件)

这就像:张三在房间里放了个盒子(文件),李四只要有房间的 w 权限,就能把张三的盒子拿走(删除文件),这看起来是不是不太合理?

为了让目录里的文件不被随意删除,Linux 引入了粘滞位。给目录加上粘滞位(用 chmod +t)后,这个目录就像被上了一把“特殊的锁”,规定:只有以下三种人能删除目录里的文件

  1. 超级管理员(root):超级管理员有最高权限,能处理任何文件。
  2. 目录的所有者:目录就像一个“私人领地”,领地的主人(目录所有者)有权力管理里面的东西。
  3. 文件的所有者:自己的东西(文件),自己当然能决定是否删除。

举个例子:

  • /home 目录加粘滞位(chmod +t /home)后,用户 litao 就不能随便删除 root 或其他人创建的文件了。原本 litao 能删 rootroot.c 文件(因为 /home 目录有 w 权限),但加了粘滞位后,系统会检查删除者是否是超级管理员、目录所有者或文件所有者,不满足就不让删,这样就保证了文件的安全性。

以上就是这篇博客的全部内容,下一篇我们将继续探索Linux的更多精彩内容。

我的个人主页
欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Linux知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12879535.html?spm=1001.2014.3001.5482

非常感谢您的阅读,喜欢的话记得三连哦

在这里插入图片描述

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

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

相关文章

91.首次使用Maui的体验与建议 C#例子 Maui例子

最近我开始接触Maui,记录一下我的首次使用体验,希望能给大家提供一些参考。 安装与创建项目 首次接触Maui,其实遇到了不少疑惑。首先,通过Visual Studio的安装器安装Maui开发环境。安装过程还算顺利,但需要注意的是&…

【家政平台开发(100)】终结篇,破局·拓新:家政平台未来发展的战略蓝图

本【家政平台开发】专栏聚焦家政平台从 0 到 1 的全流程打造。从前期需求分析,剖析家政行业现状、挖掘用户需求与梳理功能要点,到系统设计阶段的架构选型、数据库构建,再到开发阶段各模块逐一实现。涵盖移动与 PC 端设计、接口开发及性能优化,测试阶段多维度保障平台质量,…

小程序滚动条隐藏(uniapp版本)

单独指定页面隐藏&#xff08;找到对应的scroll-view&#xff09; <style> /* 全局隐藏滚动条样式 */ ::-webkit-scrollbar { display: none; width: 0; height: 0; color: transparent; background: transparent; } /* 确保scroll-view组件也隐藏滚动条 */ …

5月3日日记

上午睡到自然醒&#xff08;其实六点多被我爸叫起来抢火车票&#xff0c;发现明天中午的软卧候补上了&#xff0c;挺好的&#xff09;然后继续睡到快10点。 中午吃的什么来着&#xff0c;好像是西红柿炒鸡蛋和藜麦饭&#xff0c;有个鱼不是很想吃就没吃 中午打了两把吃鸡&…

【Spring】Spring中8种常见依赖注入使用示例

在 Spring 中&#xff0c;IoC 注入可以通过多种方式实现&#xff0c;涵盖不同场景的依赖管理。以下是 8 种常见场景的详细示例及说明&#xff0c;结合 XML、注解和 Java 配置类三种方式。 1. 构造器注入&#xff08;推荐方式&#xff09; 通过构造器传递依赖&#xff0c;确保对…

蓝桥杯 摆动序列

摆动序列 原题目链接 题目描述 如果一个序列的奇数项都比前一项大&#xff0c;偶数项都比前一项小&#xff0c;则称为一个摆动序列。 即对于任意整数 i&#xff08;i ≥ 1&#xff09;满足&#xff1a; a₂ᵢ < a₂ᵢ₋₁&#xff0c;a₂ᵢ₊₁ > a₂ᵢ 小明想知道&…

REINFORCE蒙特卡罗策略梯度算法详解:python从零实现

&#x1f9e0; 向所有学习者致敬&#xff01; “学习不是装满一桶水&#xff0c;而是点燃一把火。” —— 叶芝 我的博客主页&#xff1a; https://lizheng.blog.csdn.net &#x1f310; 欢迎点击加入AI人工智能社区&#xff01; &#x1f680; 让我们一起努力&#xff0c;共创…

深入了解Linux系统—— 操作系统

一、冯诺依曼体系结构 现在我们常见的计算机&#xff08;笔记本电脑等&#xff09;和不常见的计算机&#xff08;服务器&#xff09;它们都满足冯诺依曼体系。 我们可以把计算机理解成一个个硬件组成的 输入设备&#xff1a;键盘、鼠标、摄像头、网卡、磁盘等输出设备&#xf…

RPG7.准备GAS的工作

1.启动项目&#xff0c;为项目添加gameplayability插件 2.添加abilitysystemcomponent的c类 3.添加attributeset的c类 4.往build.cs内添加模块 5.进入CharacterBase内&#xff0c;添加gameplayasystem和attributbeset&#xff0c;覆写PossessedBy()和GetAbilitysystemcomponent…

使用gitea发布软件包

1、新建hello工程 &#xff08;1&#xff09;HelloApplication.java package cn.ac.trimps.sv;import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplicati…

从请求到响应:初探spring web

引入&#xff1a; 首先小编想分享下一些开发小知识 2000年——手写servlet/JSP时代 在这个阶段中&#xff0c;那时候写后端代码&#xff0c;可谓是个麻烦事。 毕竟什么都要自己干 发来的请求都要写extends HttpServlet的类&#xff0c;手动在web.xml配置 <servlet>…

Redis从入门到实战实战篇2

面试重点&#xff1a;本篇包含悲观锁&#xff0c;乐观锁&#xff0c;多线程以及分布式锁的知识 目录 3.优惠卷秒杀 3.1 -全局唯一ID 3.2 -Redis实现全局唯一Id 3.3 添加优惠卷 3.4 实现秒杀下单 3.5 库存超卖问题分析 3.6 乐观锁解决超卖问题 3.7 优惠券秒杀-一人一单 …

LabVIEW实验室项目中使用类模块与仿真

在 LabVIEW 程序开发过程中&#xff0c;借鉴面向对象的类思想进行模块化架构设计&#xff0c;并结合仿真功能&#xff0c;能够高效应对不同场景的开发需求。 ​ 以实验室场景为例&#xff0c;LabVIEW 开发常面临设备种类繁多、调试周期漫长&#xff0c;且硬件难以一次性到位的情…

ES6入门---第二单元 模块三:对象新增、

一&#xff1a;对象简洁语法&#xff1a; 1、变量简洁 <script>let name Strive;let age 18;let json {name, //name:name,age //age:age};console.log(json);</script> 2、函数简洁 let json {name, //name:name,age, //age:age/* showA:functi…

Python创意:AI图像生成——用代码绘制未来艺术

当代码邂逅艺术:AI图像生成的革命 在数字艺术领域,一场由Python和AI技术引领的革命正在悄然发生。无需专业绘画技巧,仅凭几行代码,普通人也能创造出令人惊叹的艺术作品。AI图像生成技术打破了艺术创作的门槛,让想象力成为唯一的限制。 核心技术方案 1. 技术架构 我们采…

一、Shell 脚本基础

一、Shell 简介 1.Shell 的定义与作用 Shell&#xff0c;通常被称为命令行解释器 (Command Line Interpreter)&#xff0c;是用户 &#x1f464; 与 Linux/Unix 操作系统内核进行交互 ↔️ 的“桥梁” &#x1f309;。它扮演着翻译官 &#x1f5e3;️ 的角色&#xff1a; 接…

青少年编程与数学 02-018 C++数据结构与算法 21课题、机器学习与人工智能算法

青少年编程与数学 02-018 C数据结构与算法 21课题、机器学习与人工智能算法 一、线性回归算法二、逻辑回归算法三、K近邻算法&#xff08;K-Nearest Neighbors, KNN&#xff09;四、决策树算法五、支持向量机&#xff08;SVM&#xff09;六、神经网络算法七、聚类算法八、降维算…

【数据结构】——单链表练习(1)

一、移除链表元素 题目链接&#xff1a; 移除链表元素 那么根据题目的要求我们大致明白这道题要做什么&#xff0c;就是将一个链表中&#xff0c;和指定的值相等的元素的节点删除&#xff0c;然后返回删除后的新的链表&#xff0c;然后题目给我们传入的参数是链表的头节点和指…

AI大模型基础设施:主流的几款开源AI大语言模型的本地部署成本

以下是对目前主流开源AI大语言模型&#xff08;如DeepSeek R1、LLaMA系列、Qwen等&#xff09;本地部署成本的详细分析&#xff0c;涵盖计算机硬件、显卡等成本&#xff0c;价格以美元计算。成本估算基于模型参数规模、硬件需求&#xff08;GPU、CPU、RAM、存储等&#xff09;以…

AI生成视频检测方法及其相关研究

目录标题 【1】AI-Generated Video Detection via Spatio-Temporal Anomaly Learning【2】DeCoF: Generated Video Detection via Frame Consistency【2.1】Spatiotemporal Convolutional Neural Networks (STCNN) rely on spatial artifacts【2.2】Capturing Universal Spatia…