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

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

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

在这里插入图片描述

相关文章:

  • Python Django基于小波变换的数字水印技术实现系统【附源码、文档说明】
  • Docker —— 技术架构的演进
  • Linux实验课二(重点:动态链接库,makefile使用)
  • 经典算法 求解台阶问题
  • 【RocketMQ NameServer】- NettyEventExecutor 处理 Netty 事件
  • 软件测试 - 绪论
  • 【计算机网络-应用层】解析HTTP会话保持:Cookie与Session的原理与实践
  • 昇腾的昇思MindSpore是什么?跟TensorFlow/PyTorch 等第三方框架有什么区别和联系?【浅谈版】
  • 机器学习中的分类和回归问题
  • 网络安全系列--《文章1:网络安全基础与核心概念》
  • LeetCode Hot100题解
  • Dubbo(92)如何在微服务架构中应用Dubbo?
  • 电脑RGB888P转换为JPEG方案 ,K230的RGB888P转换为JPEG方案
  • 【C++重载操作符与转换】赋值操作符
  • 虚幻引擎入门笔记
  • 虚幻基础:角色朝向
  • 伊甸园之东: 农业革命与暴力的复杂性
  • 面试现场“震”情百态:HashMap扩容记
  • Java面试趣事:从死循环到分段锁
  • Vue 3 异步组件
  • 宋涛就许历农逝世向其家属致唁电
  • 日本来信|劳动者的书信④
  • 德国巴斯夫:关税政策加剧全球市场不确定性,间接影响已显现
  • 解放日报:人形机器人新赛道正积蓄澎湃动能
  • 网警查处编造传播“登顶泰山最高可得3万奖金”网络谣言者
  • 航海王亚洲巡展、工厂店直销……上海多区推出“五五购物节”活动