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

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

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

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

相关推荐
三玖诶几秒前
理解MAC-IP映射、ARP协议与ARP欺骗及防护
网络
Web极客码12 分钟前
cPanel&WHM 的 AutoSSL
服务器·ssl·cpanel
海尔辛1 小时前
学习黑客 week1周测 & 复盘
网络·学习·web安全
云空1 小时前
《Linux macOS :GCC升级方法》
linux·运维·macos·gcc
现实与幻想~2 小时前
Linux:web服务
linux·服务器·网络
syphomn2 小时前
Win10下安装Linux-Ubuntu24.04双系统
linux·人工智能·windows·ubuntu·开源
大G哥2 小时前
用 Java 和 DL4J 实现验证码识别系统
java·linux·开发语言·前端·python
AllenLeungX2 小时前
firewall docker 冲突问题解决(亲测有效)
运维·docker·容器
SRC_BLUE_172 小时前
攻防世界 - Misc - Level 6 | Wireshark
网络·测试工具·wireshark
海尔辛2 小时前
学习黑客Linux 命令
linux·运维·学习