跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

Linux Shell 运行原理及权限管理详解

Linux Shell 作为内核外壳提供命令行交互。介绍 Linux 用户分类(root 与普通用户)、文件权限结构(所有者、组、其他)及读写执行含义。详细讲解权限管理命令 chmod、chown、chgrp 及 umask 掩码计算原理,并说明粘滞位在公共目录中的应用规则,帮助理解 Linux 文件系统安全机制。

落日余晖发布于 2026/3/16更新于 2026/10/2392 浏览
Linux Shell 运行原理及权限管理详解

一、Shell 命令及运行原理

Linux 严格意义上来说属于操作系统,我们称之为'核心(kernel)'。

一般用户无法直接使用 kernel,而是通过 kernel 的外壳,也就是 Shell,完成交互。

为什么不能直接入手 kernel?例如 Windows 的 GUI:我们操作 Windows 不是直接操作 Windows 内核,而是通过图形点击,从而完成我们的操作(比如进入 D 盘的操作,通常是双击 D 盘盘符或者运行起来一个应用程序)。

但其实这只是将 Linux 指令图形化界面了,通过操作图形化界面让 Linux 执行对应指令,那这中间就有一个命令转换:Shell 的最简单定义——命令行解释器(command Interpreter)。

二、Linux 权限的概念

Linux 的权限一般分为两种:

超级用户(root):可以在 Linux 系统下做任何事情,不受限制,超级用户的命令提示符是"#"。

普通用户:在 Linux 下做有限的事情,普通用户的命令提示符是"$"。

权限用户的切换:su 或者 su -,后面接用户名:root 或者 普通用户名。 (root->普通用户不需要密码,普通用户->root 需要密码)

三、Linux 权限管理

我们知道,Linux 之下一切皆文件!

Linux 操作的是文件,那么上面说的 Linux 权限分类可以这么理解:对操作文件权限的分类。

操作文件的身份在 Linux 里面我们可以分为以下三类:

所有者:文件和文件目录的所有者(u),可理解为创造者

所属组:文件和文件目录的所有者所在的组的用户(g),可理解为使用者

other:其它用户(o),可理解为除了上面两类之外的

例如:在 Linux 操作的文件是有显示文件的各种信息的,下面我们来重点讨论几个信息!

(1)文件类型

**-**开头的属于文件

d 开头的属于目录

(2)权限分布与解释

除了开头的文件类型,后面九个每三个为一组分别代表:所有者、所属组、other 权限。

怎么理解三个权限对象?

所有者:文件的创造对象

所属组:可以理解为多个人集中管理一个文件,那这多个人就在一个组里面

other:除了上面两种之外的统一解释为 other

如何成为所属组成员?

所属组权限对象由 文件所有者 和 root 操控

(1)查看文件所在的所有组

(2)分配给所属组 -a:表示'追加'(避免覆盖你原有的所属组)-G:指定要加入的组(这里是文件的所属组 dev_group)

(3)检查

如果自己是文件的创造者或者 root,那么没有了 rwx 权限,还可以操作吗?

如果是 root 用户,是不受权限的约束:

如果修改所有者,所有者会受到影响:但是可以自己操作文件权限改回来

对文件权限简称的解释:

读(r/4):Read 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限

写(w/2):Write 对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限

执行(x/1):execute 对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限

'—'表示不具有该项权限

(3)文件权限的设置
(1)chmod 指令

作用:设置文件的访问权限

选项:-R 递归修改文件的权限

格式:用户表示符 +/-= 权限字符

  • :向权限范围增加权限代号所表示的权限
  • :向权限范围取消权限代号所表示的权限

= :向权限范围赋予权限代号所表示的权限

用户符号:

u:拥有者

g:拥有者同组用户

o:其它用户

a:所有用户

(2)chown 指令

功能:修改文件的拥有者

选项:-R 递归修改文件的权限

格式:chown [参数] 用户名 文件名

例如:

chown user1 f1
chown -R user1 filegroup1
(3)chgrp 指令

功能:修改文件或目录的所属组

格式:chgrp [参数] 用户组名 文件名

常用选项:-R 递归修改文件或目录的所属组

实例:chgrp users /abc/f2

(4)umask 指令

作用:修改/查看文件掩码

何为文件掩码?

文件的权限掩码(umask)即当文件/目录出生时,根据掩码屏蔽掉该文件/目录的部分权限,即完成一个文件/目录的出厂设置!

如何根据掩码计算文件出厂权限?(了解)

权限掩码的计算不是简单的'数值减法',而是基于二进制的按位操作。具体步骤如下:

(1)明确'基础权限'(系统固定值)

新文件/目录的默认权限计算,首先依赖系统预设的'基础权限'(不可修改):普通文件:基础权限为 666(对应权限字符串 -rw-rw-rw-,默认无执行权限,避免安全风险);目录:基础权限为 777(对应权限字符串 drwxrwxrwx,目录必须有执行权限才能进入,因此基础权限包含 x)。

(2)理解权限的'数字 - 二进制 - 字符'对应关系

权限由'读(r)、写(w)、执行(x)'三种基础权限组成,每组角色(所有者、组、other)的权限可转换为数字或二进制:r(读)=4(二进制 100)w(写)=2(二进制 010)x(执行)=1(二进制 001)无权限(-)=0(二进制 000)

例如:rwx = 4+2+1 = 7(二进制 111)rw- = 4+2 = 6(二进制 110)r-- = 4(二进制 100)

(3)计算步骤:按位取反 → 按位与

权限掩码的计算需通过两步二进制操作:目标权限 = 基础权限 & (~umask),推导 umask:

(1)将权限掩码(umask 值)转换为二进制后按位取反~(0 变 1,1 变 0)

(2)将'基础权限'的二进制与'取反后的掩码'进行按位与(&)(同 1 为 1,否则为 0)操作,结果即为新文件的默认权限

格式:

umask      // 查看
umask 044   // 设置

例如:现在我查看普通用户的掩码,然后修改为 rwx(000),在创建一个新文件看看默认权限。

注意:文件的基础权限是规定不包含 x 执行权限的,因此需要手动添加

四、粘滞位

(1)粘滞位解释

粘滞位仅对目录有效(对文件的作用已在现代 Linux 中废弃),典型应用场景是系统级公共临时目录 /tmp 和 /var/tmp:

(1)这些目录的默认权限是 rwxrwxrwx(所有用户都能读写执行),任何人都能在其中创建文件

(2)若没有粘滞位,普通用户 A 可以删除普通用户 B 在 /tmp 中创建的文件,存在数据安全风险

(3)加上粘滞位后,用户只能删除自己创建的文件(root 也行)避免了误删他人文件的问题

例如:A 在创建了一个目录 PS,现在 ABCD 都在这个目录 PS 下面工作,现在 A 创建了一个文件 text,按理来说这个文件只能由 A 或者 root 删除,但是实际是 BCD 都可以,所以避免这种情况,需要使用粘滞位来让 text 文件只能由 A 或者 root 删除!

启用粘滞位的目录,无论其他用户是否有写权限,都遵循以下删除/重命名规则:

(2)粘滞位使用

仅对目录生效,用 t 标识:

只有目录的所有者(owner)或 root 用户,才能为该目录设置或移除粘滞位。

格式:chmod +t 目录位置

# 为公共目录 /data/public 添加粘滞位
chmod +t /data/public

效果:目录权限的最后一位(其他用户的执行位 x)替换为 t

目录

  1. 一、Shell 命令及运行原理
  2. 二、Linux 权限的概念
  3. 三、Linux 权限管理
  4. (1)文件类型
  5. (2)权限分布与解释
  6. (3)文件权限的设置
  7. (1)chmod 指令
  8. (2)chown 指令
  9. (3)chgrp 指令
  10. (4)umask 指令
  11. 四、粘滞位
  12. (1)粘滞位解释
  13. (2)粘滞位使用
  14. 为公共目录 /data/public 添加粘滞位

更多推荐文章

查看全部
  • 大模型面试核心问题解析:Transformer 与训练优化
  • C++ 泛型编程与模板机制详解
  • Spring Cloud 微服务架构与开发实战
  • 纯 Web 架构智慧 PACS/RIS 系统技术解析
  • 大模型浪潮:是泡沫还是技术革命?
  • 网络安全从业人员:学历真的重要吗
  • OpenClaw 安装百度网页搜索技能
  • 稳健回归模型对异常值的抵御
  • 大语言模型微调指南:LoRA 原理与实践代码
  • AC-MPC:微分 MPC 赋能强化学习,实现高速无人机竞速
  • SkyWalking 与 Spring Cloud Alibaba 全链路追踪实战
  • 网络安全入门核心知识点与技能体系梳理
  • OpenClaw 多飞书机器人接入与多 Agent 团队协作实战
  • 插件式开发实战:C++ 与 C# 下的软件解耦方案
  • C++ 笔试刷题 Day 11:水果礼包、股票买卖与字符串倒置
  • 使用基础模型自动化寻找人工生命 - MIT&OpenAI&Sakana AI
  • 大数据视角下时序数据库选型:Apache IoTDB 核心优势解析
  • Stable Diffusion v1.5 Archive 跨平台效果一致性保障与复现验证
  • C++ STL list 容器详解:使用与模拟实现
  • 计算机专业女生的职业发展方向与 Python 技能路径

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online