《初阶 Linux 工具学习:Shell运行原理以及Linux权限讲解》

《初阶 Linux 工具学习:Shell运行原理以及Linux权限讲解》
前引:本文并非简单罗列工具命令,而是以 “技术原理 + 实战场景” 为核心:一方面拆解工具的底层实现逻辑(如 htop 如何通过读取 /proc 文件系统获取进程信息),另一方面结合企业级需求(如高并发服务的性能瓶颈排查、大规模日志的高效分析),讲解工具的组合使用技巧与进阶参数配置。无论你是 Linux 运维工程师、后端开发人员,还是需要深入掌握系统工具的技术学习者,都能通过本文建立 “工具原理 - 场景需求 - 优化方案” 的完整技术认知,真正实现从 “会用” 到 “精通” 的跨越!

目录

【一】Shell命令及运行原理

【二】Linux权限的概念

【三】Linux权限管理

(1)文件类型

(2)权限分布与解释

(3)文件权限的设置

(1)chmod指令

(2)chown指令

(3)chgrp指令

(4)umask指令

【四】粘滞位

(1)粘滞位解释

(2)粘滞位使用


【一】Shell命令及运行原理

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

我们一般用户是无法直接使用“kemel”的,而是通过“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(二进制 100w(写)=2(二进制 010x(执行)=1(二进制 001)无权限(-)=0(二进制 000

例如:rwx = 4+2+1 = 7(二进制 111rw- = 4+2 = 6(二进制 110r-- = 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

Read more

Flutter 三方库 random_name_generator 全系自动化环境鸿蒙适配导引:高速灌注大规模高质量仿生身份信息源数据池,攻克严苛测试流无序仿真阻断难题(适配鸿蒙 HarmonyOS

Flutter 三方库 random_name_generator 全系自动化环境鸿蒙适配导引:高速灌注大规模高质量仿生身份信息源数据池,攻克严苛测试流无序仿真阻断难题(适配鸿蒙 HarmonyOS

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 random_name_generator 全系自动化环境鸿蒙适配导引:高速灌注大规模高质量仿生身份信息源数据池,攻克严苛测试流无序仿真混沌阻断难题 在开发社交、游戏或自动化测试脚本时,快速生成真实的名称(而非随机乱码)是提升系统真实感和测试覆盖率的关键。random_name_generator 是一个轻量级的人名合成库。本文将详解该库在 OpenHarmony 环境下的适配与实战。 前言 什么是 random_name_generator?它并不是简单地随机拼接字符,而是内置了丰富的西方(如英语、西班牙语)命名习惯库。在鸿蒙操作系统蓬勃发展的今天,无论是为单机游戏生成 NPC 名称,还是在测试鸿蒙 HAP 模块时批量造“用户”,该库都能提供高质量、符合直觉的文本输出。 一、原理解析 1.1 基础概念

By Ne0inhk
Apache IoTDB产品介绍与Kubernetes 1.24集群安装部署深度指南

Apache IoTDB产品介绍与Kubernetes 1.24集群安装部署深度指南

引言 在物联网(IoT)与工业互联网蓬勃发展的今天,时序数据管理已成为企业数字化转型的核心挑战。Apache IoTDB作为专为物联网场景设计的开源时序数据库,凭借其高性能、低成本、易扩展的特性,在智能制造、车联网、能源监控等领域得到广泛应用。本文将深度解析IoTDB v1.3.3.2的产品架构与核心优势,并基于Kubernetes 1.24集群环境提供完整的安装部署方案,包含从环境准备到验证测试的全流程操作,确保读者可复制部署并投入生产使用。 一、Apache IoTDB产品深度解析 1.1 物联网时序数据管理痛点 传统关系型数据库在处理海量时序数据时面临显著瓶颈:高频率采样导致写入压力激增,乱序数据插入引发性能下降,长期存储成本高昂,多维度分析需求复杂。IoTDB针对这些痛点进行专项优化,通过以下技术创新实现突破: * 分层存储架构:采用内存缓存+磁盘持久化的混合存储模式,支持数据冷热分级存储,历史数据自动归档至低成本存储介质。 * TsFile存储引擎:自主研发的列式存储格式,通过时间戳-值对压缩算法实现5-10倍存储空间节省,支持时间分区与数据版本管理。 *

By Ne0inhk
2026最新|国内可用 Docker 镜像加速源大全(2月持续更新):DockerHub 镜像加速与限速避坑全指南(适配 Windows / macOS / Linux / containerd /

2026最新|国内可用 Docker 镜像加速源大全(2月持续更新):DockerHub 镜像加速与限速避坑全指南(适配 Windows / macOS / Linux / containerd /

2026最新|国内可用 Docker 镜像加速源大全(2月持续更新):DockerHub 镜像加速与限速避坑全指南(适配 Windows / macOS / Linux / containerd / k3s / BuildKit) 摘要:本指南面向国内服务器与办公网络用户,系统梳理 2026年2月可用 DockerHub 镜像加速源,覆盖 Docker Desktop、dockerd、containerd、k3s、BuildKit 等场景的一键配置、多源回退与测速排障方案,帮助规避 429/Too Many Requests 与拉取超时问题。 最后更新:2026-2 适用对象:国内云服务器/办公网络拉取 DockerHub 镜像慢、易触发限速(429/“Too Many Requests”)的场景 用途:一键配置镜像加速、

By Ne0inhk
OpenClaw多设备协同:手机+电脑分布式节点,跨端任务自动化

OpenClaw多设备协同:手机+电脑分布式节点,跨端任务自动化

文章目录 * 当"用手机修电脑"不再是段子 * 架构揭秘:Gateway是大脑,Nodes是手脚 * 动手实战:把你的手机变成AI的外挂设备 * 第一步:确认Gateway处于"远程模式" * 第二步:手机端配对流程 * 第三步:验证节点能力 * 场景实战:那些只有多设备协同才能干成的活儿 * 场景一:移动端触发,PC端执行(Mobile-to-Desktop) * 场景二:PC端决策,移动端采集(Desktop-to-Mobile) * 场景三:多节点并行任务(Swarm模式) * 技术原理:MCP协议让万物互联成为可能 * 避坑指南:别让你的分布式系统变成"分布死"系统 * 网络连通性是第一要义 * 权限管理要精细 * 电池与性能考虑 * 未来展望:从"多设备"到&

By Ne0inhk