Linux系统核心概念:用户、权限、环境变量与软硬链接
Linux系统核心概念用户、权限、环境变量与软硬链接命令背了一堆但遇到Permission denied还是懵看到软链接硬链接还是分不清。问题出在概念没吃透。本文把Linux最核心的四个概念一次讲清楚。一、Linux用户系统1.1 用户与用户组Linux是一个多用户多任务操作系统这意味着多个用户可以同时登录、各自独立工作。每个用户有唯一的身份标识——UIDUser ID。Linux用户分为三类用户类型UID范围说明超级用户root0拥有最高权限不受任何限制系统用户1~999系统服务运行的身份如www-data、sshd普通用户1000日常登录使用的用户每个用户可以属于一个或多个用户组组也有唯一标识GIDGroup ID。用户组的作用是方便批量管理权限——把几个人放进同一个组给组授权即可。1.2 用户相关配置文件/etc/passwd # 用户信息所有用户可读 /etc/shadow # 密码哈希仅root可读 /etc/group # 用户组信息看一行/etc/passwd的内容user:x:1000:1000:User,,,:/home/user:/bin/bash │ │ │ │ │ │ │ │ │ │ │ │ │ └─ 登录Shell │ │ │ │ │ └─ 家目录 │ │ │ │ └─ 用户全名/备注 │ │ │ └─ GID主组ID │ │ └─ UID │ └─ 密码占位符实际密码在shadow中 └─ 用户名1.3 用户管理命令# 添加用户sudouseradd-m-s/bin/bash newuser# -m创建家目录-s指定Shellsudopasswdnewuser# 设置密码# 添加用户的更推荐方式交互式会自动创建家目录sudoadduser devuser# 删除用户sudouserdel-rdevuser# -r同时删除家目录# 修改用户属性sudousermod-aGsudodevuser# 将用户加入sudo组获得管理员权限sudousermod-aGdialout devuser# 加入dialout组串口设备访问权限sudousermod-s/bin/zsh devuser# 修改登录Shell# 查看用户信息id# 查看当前用户的UID/GID/组信息iddevuser# 查看指定用户groups# 查看当前用户所属的组whoami# 查看当前用户名嵌入式场景开发板上串口设备通常是/dev/ttyUSB0或/dev/ttyACM0默认只有root能访问。把当前用户加入dialout组即可免sudo操作串口sudo usermod -aG dialout $USER重新登录后生效。1.4 sudo与su# sudo以管理员权限执行单条命令需要输入自己的密码sudoaptinstallvim# su切换到其他用户su- root# 切换到root需要root密码su- devuser# 切换到devuser# sudo -i / sudo -s获取root交互式Shellsudo-i# 进入root的登录Shell加载root环境变量sudo-s# 进入root的非登录Shell# 退出rootexitsudo与su的区别特性sudosu需要的密码当前用户密码目标用户密码权限范围单条命令整个会话安全性较高有日志审计较低使用场景临时执行管理员命令完整切换用户身份二、Linux权限模型2.1 权限的基本表示Linux中每个文件和目录都有三组权限分别对应三种身份rwx rwx rwx ──┬── ──┬── ──┬── │ │ │ │ │ └─ 其他用户Others │ └─ 所属组Group └─ 所有者User/Owner三种权限的含义权限文件目录r读查看文件内容列出目录中的文件名w写修改文件内容在目录中创建/删除文件x执行运行文件进入目录cd关键区别对目录来说r权限只能看到文件名列表要进入目录必须有x权限。所以目录的默认权限通常是755rwxr-xr-x而不是644。2.2 数字表示法r 4, w 2, x 1, - 0 常见权限值 7 (421) rwx 读写执行 6 (420) rw- 读写 5 (401) r-x 读执行 4 (400) r-- 只读 0 (000) --- 无权限常用组合速查数字字母含义典型用途755rwxr-xr-x所有者全权限其他人读执行目录、可执行程序644rw-r–r–所有者读写其他人只读普通配置文件600rw-------仅所有者读写私密文件如SSH密钥777rwxrwxrwx所有人全权限临时调试用不安全2.3 特殊权限位除了基本的rwxLinux还有三个特殊权限位SUIDSet User ID— 4# 最经典的例子passwd命令ls-l/usr/bin/passwd# -rwsr-xr-x 1 root root ... /usr/bin/passwd# ↑ s表示SUID位已设置SUID的作用普通用户执行该程序时临时获得文件所有者root的权限。passwd命令能修改/etc/shadow只有root能写就是因为SUID。# 设置SUIDsudochmodus myprogram# 或数字方式4755sudochmod4755myprogramSGIDSet Group ID— 2对目录设置SGID后目录中新建的文件会自动继承目录的所属组而不是创建者的主组。这在团队共享目录中非常有用。sudochmodgs /opt/shared# 或数字方式2775sudochmod2775/opt/sharedSticky Bit — 1设置Sticky Bit的目录用户只能删除自己创建的文件。/tmp目录就是典型例子ls-ld/tmp# drwxrwxrwt ← 末尾的t表示Sticky Bitsudochmodt /mydir# 或数字方式1777sudochmod1777/mydir2.4 umask — 默认权限控制umask决定新创建文件和目录的默认权限umask# 查看当前umask值通常为022计算规则目录默认权限 777 - umask 文件默认权限 666 - umask umask 022时 目录777 - 022 755 (rwxr-xr-x) 文件666 - 022 644 (rw-r--r--)# 临时修改umaskumask027# 目录750文件640# 永久修改写入 ~/.bashrcechoumask 027~/.bashrc三、环境变量3.1 什么是环境变量环境变量是操作系统中存储配置信息的键值对进程启动时会继承这些变量。你每次在终端输入命令时Shell怎么知道ls在哪就是通过PATH环境变量找到的。3.2 查看环境变量# 查看所有环境变量envprintenv# 查看单个变量echo$PATHecho$HOMEecho$USERecho$SHELL# 查看Shell变量含环境变量和局部变量set3.3 常用环境变量变量名含义示例值PATH命令搜索路径/usr/bin:/bin:/usr/local/binHOME用户家目录/home/userUSER当前用户名userSHELL当前Shell路径/bin/bashPWD当前工作目录/home/user/projectLANG系统语言en_US.UTF-8LD_LIBRARY_PATH动态库搜索路径/usr/local/lib3.4 设置环境变量# 临时设置仅当前终端有效exportMY_VARhelloexportPATH$PATH:/opt/mytoolchain/bin# 追加路径到PATH# 查看是否生效echo$MY_VARecho$PATH# 删除变量unsetMY_VAR3.5 永久设置环境变量根据生效范围不同写入不同文件文件生效范围说明~/.bashrc当前用户每次打开终端时加载最常用~/.bash_profile当前用户登录时加载/etc/environment所有用户系统级环境变量/etc/profile所有用户所有用户登录时加载/etc/profile.d/*.sh所有用户模块化配置推荐方式# 方式一写入 ~/.bashrc推荐echoexport ARM_TOOLCHAIN/opt/gcc-arm/bin~/.bashrcechoexport PATH$PATH:$ARM_TOOLCHAIN~/.bashrcsource~/.bashrc# 立即生效# 方式二写入 /etc/profile.d/系统级推荐sudovim/etc/profile.d/toolchain.sh# 写入以下内容# export ARM_TOOLCHAIN/opt/gcc-arm/bin# export PATH$PATH:$ARM_TOOLCHAIN# 方式三修改 /etc/environment系统级简单# PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/mytoolchain/bin嵌入式场景安装交叉编译工具链后必须把工具链的bin目录加入PATH否则系统找不到arm-linux-gnueabihf-gcc命令。四、软链接与硬链接4.1 什么是链接链接Link让一个文件有多个入口。Linux中有两种链接方式硬链接和软链接符号链接。4.2 inode理解链接的前提Linux文件系统中每个文件有一个唯一的inode索引节点存储文件的元数据权限、大小、数据块位置等。文件名只是指向inode的一个别名。文件名 ──→ inode ──→ 数据块 file1.c ──→ inode #12345 ──→ 磁盘数据一个inode可以被多个文件名指向这就是硬链接的本质。4.3 硬链接# 创建硬链接lnoriginal.txt hardlink.txt硬链接的特点多个文件名指向同一个inode它们地位平等删除其中一个其他文件仍然可以访问数据只有当所有硬链接都被删除时数据才真正被释放不能跨文件系统不能给不同分区的文件创建硬链接不能对目录创建硬链接系统限制# 实验验证echohellofile.txtlnfile.txt hardlink.txtls-lifile.txt hardlink.txt# 输出# 12345 -rw-r--r-- 2 user user 6 ... file.txt# 12345 -rw-r--r-- 2 user user 6 ... hardlink.txt# ↑ inode号相同 ↑ 硬链接数为2# 修改一个另一个也变因为指向同一数据echoworldhardlink.txtcatfile.txt# 输出hello world# 删除原文件硬链接仍然可用rmfile.txtcathardlink.txt# 输出hello world数据还在4.4 软链接# 创建软链接符号链接ln-soriginal.txt softlink.txtln-s/opt/toolchain/bin/arm-gcc /usr/local/bin/arm-gcc软链接的特点软链接是一个独立的文件有自己的inode内容是指向目标文件的路径类似Windows的快捷方式可以跨文件系统可以对目录创建软链接如果目标文件被删除软链接变为悬空链接dangling link无法访问# 实验验证echohellofile.txtln-sfile.txt softlink.txtls-lifile.txt softlink.txt# 输出# 12345 -rw-r--r-- 1 user user 6 ... file.txt# 67890 lrwxrwxrwx 1 user user 8 ... softlink.txt - file.txt# ↑ inode号不同 ↑ l表示软链接# 删除原文件软链接失效rmfile.txtcatsoftlink.txt# cat: softlink.txt: No such file or directory4.5 两种链接对比特性硬链接软链接inode与原文件相同独立的inode跨文件系统不支持支持链接目录不支持支持原文件删除后仍可访问数据失效悬空链接占用空间几乎不占占少量存路径创建命令ln 源 链接ln -s 源 链接类比同一个人的多个名字快捷方式4.6 嵌入式开发中的实际应用# 场景1工具链版本切换# 通过软链接指向当前需要的版本切换时只改链接ln-s/opt/gcc-arm-10.2 /opt/gcc-arm-current# 以后PATH中只需加 /opt/gcc-arm-current/bin# 切换版本时rm/opt/gcc-arm-currentln-s/opt/gcc-arm-12.1 /opt/gcc-arm-current# 场景2库文件版本管理ln-slibfoo.so.1.2.3 libfoo.so.1# SONAME链接ln-slibfoo.so.1 libfoo.so# 开发链接# 场景3配置文件统一管理ln-s/mnt/nfs/shared_config.conf /etc/app.conf五、总结用户系统决定你是谁权限模型决定你能做什么环境变量决定程序怎么运行软硬链接决定文件怎么组织。这四个概念构成了Linux系统管理的核心知识体系。理解了inode和权限模型很多以前遇到的报错都能自己解释清楚了。

相关新闻

LyricsX:macOS智能歌词同步终极指南 - 打造完美音乐体验

LyricsX:macOS智能歌词同步终极指南 - 打造完美音乐体验

LyricsX:macOS智能歌词同步终极指南 - 打造完美音乐体验 【免费下载链接】LyricsX 🎶 Ultimate lyrics app for macOS. 项目地址: https://gitcode.com/gh_mirrors/ly/LyricsX 在macOS上寻找一款真正智能的歌词同步工具?LyricsX为你带…

2026/7/14 1:33:29阅读更多 →
编程启蒙|Scratch 转 Python 系列第 7 天:猜数字大挑战·升级版实战(AI 出题 + 二分查找最优解 + 完整命令行游戏)

编程启蒙|Scratch 转 Python 系列第 7 天:猜数字大挑战·升级版实战(AI 出题 + 二分查找最优解 + 完整命令行游戏)

阶段 B 游戏实战开篇之作。 还记得第 3 天我们用 if/else 做过一个最简单的猜数字吗?今天我们要把它做成一个完整、耐玩、还带最优解法的真游戏——这是"从写代码"到"做产品"的第一步。 一、本节课学习目标 复习并串联 input()、random、while…

2026/7/14 1:33:28阅读更多 →
基于YOLOv8的工业罐头缺陷检测系统实战

基于YOLOv8的工业罐头缺陷检测系统实战

1. 项目概述:基于YOLOv8的工业级罐头检测系统这套罐头检测系统是我在食品包装质检领域落地的一个工业视觉项目,核心采用YOLOv8目标检测算法实现自动化缺陷识别。相比传统人工抽检,系统将检测速度提升至200帧/秒,准确率达到99.3%&a…

2026/7/14 1:28:28阅读更多 →
昆山工厂线上获客新思路:豆顶顶GEO实现豆包搜索精准曝光

昆山工厂线上获客新思路:豆顶顶GEO实现豆包搜索精准曝光

2026年AI搜索在B端采购决策中的占比已经突破47%,昆山作为长三角制造产业核心高地,大量工厂正从传统竞价、短视频推广转向生成式引擎优化布局,试图在豆包等主流AI平台抢占精准流量。但市场上GEO服务商鱼龙混杂,不少企业踩过“通用模…

2026/7/14 14:30:12阅读更多 →
从理论到实践:Boogu-Image-0.1-Edit-4bit背后的数学原理与实现细节

从理论到实践:Boogu-Image-0.1-Edit-4bit背后的数学原理与实现细节

从理论到实践:Boogu-Image-0.1-Edit-4bit背后的数学原理与实现细节 【免费下载链接】Boogu-Image-0.1-Edit-4bit 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/Boogu-Image-0.1-Edit-4bit Boogu-Image-0.1-Edit-4bit是一款专为Apple Silicon…

2026/7/14 14:30:12阅读更多 →
Wand-Enhancer完整指南:解锁游戏修改器高级功能的终极方案深度解析

Wand-Enhancer完整指南:解锁游戏修改器高级功能的终极方案深度解析

Wand-Enhancer完整指南:解锁游戏修改器高级功能的终极方案深度解析 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 在单机游戏体验日益…

2026/7/14 14:30:12阅读更多 →
AMD Ryzen AI混合推理实战:Qwen-2.5_1.5B_Instruct_rai_1.7.1_hybrid性能优化指南

AMD Ryzen AI混合推理实战:Qwen-2.5_1.5B_Instruct_rai_1.7.1_hybrid性能优化指南

AMD Ryzen AI混合推理实战:Qwen-2.5_1.5B_Instruct_rai_1.7.1_hybrid性能优化指南 【免费下载链接】Qwen-2.5_1.5B_Instruct_rai_1.7.1_hybrid 项目地址: https://ai.gitcode.com/hf_mirrors/amd/Qwen-2.5_1.5B_Instruct_rai_1.7.1_hybrid Qwen-2.5_1.5B_In…

2026/7/14 14:30:12阅读更多 →
如何在3分钟内开始你的岛屿设计?Happy Island Designer完全指南

如何在3分钟内开始你的岛屿设计?Happy Island Designer完全指南

如何在3分钟内开始你的岛屿设计?Happy Island Designer完全指南 【免费下载链接】HappyIslandDesigner "Happy Island Designer (Alpha)",是一个在线工具,它允许用户设计和定制自己的岛屿。这个工具是受游戏《动物森友会》(Animal …

2026/7/14 14:30:11阅读更多 →
5步重构YimMenu游戏增强工具架构的终极指南

5步重构YimMenu游戏增强工具架构的终极指南

5步重构YimMenu游戏增强工具架构的终极指南 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu YimMenu是一款…

2026/7/14 14:25:11阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/14 4:56:14阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/14 2:55:05阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/14 6:17:41阅读更多 →
【Cursor数据库安全红线】:自动执行SQL前必须校验的6项权限策略,金融级项目已强制落地

【Cursor数据库安全红线】:自动执行SQL前必须校验的6项权限策略,金融级项目已强制落地

更多请点击: https://intelliparadigm.com 第一章:Cursor数据库安全红线概览 Cursor 作为一款基于 AI 的智能编程助手,其本地数据库(SQLite 存储)承载着用户代码片段、会话历史、自定义规则及敏感上下文信息。理解其安…

2026/7/14 0:03:18阅读更多 →
【Notion AI写作避坑白皮书】:基于127份真实用户失败案例,总结6大致命误用陷阱

【Notion AI写作避坑白皮书】:基于127份真实用户失败案例,总结6大致命误用陷阱

更多请点击: https://codechina.net 第一章:Notion AI写作辅助的底层能力边界认知 Notion AI 并非通用大语言模型的直接封装,而是基于 Llama 系列与自研微调模型构建的轻量化推理服务,其输入上下文窗口严格限制在 8192 token&…

2026/7/14 0:03:18阅读更多 →
AI Agent数据越界行为如何被精准溯源?——基于GDPR/CCPA双合规的5层审计框架实战指南

AI Agent数据越界行为如何被精准溯源?——基于GDPR/CCPA双合规的5层审计框架实战指南

更多请点击: https://kaifayun.com 第一章:AI Agent数据越界行为的合规性挑战与溯源必要性 AI Agent在自主执行任务过程中,可能因提示注入、上下文污染或权限配置缺陷,无意或有意访问、缓存、传输受保护数据(如PII、G…

2026/7/14 0:03:18阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/13 4:21:17阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/14 4:45:36阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/14 2:42:17阅读更多 →