news 2026/9/5 10:02:15

Linux 文件权限与用户管理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux 文件权限与用户管理

文章目录

    • 1. 用户角色与提权机制(root / 普通用户 / sudo)
      • 1.1 root 用户(超级管理员 / God Mode)
      • 1.2 普通用户(Standard User)
      • 1.3 sudo 命令(SuperUser Do)
    • 2. 用户与用户组(User & Group)
      • 2.1 关键系统文件
      • 2.2 用户与组管理命令实操
    • 3. 深入理解 Linux 文件权限
      • 3.1 权限位(r, w, x)的含义
    • 4. 修改权限与所有者
      • 4.1 修改文件权限:`chmod`
        • 1. 数字表示法(最常用)
        • 2. 符号表示法
      • 4.2 修改文件所有者与所属组:`chown`
    • 5. 生产环境常见安全实战
      • 场景:部署一个部署脚本 `deploy.sh`
    • 6. 总结

在 Linux 系统中,权限与用户管理是保证系统安全与稳定运行的基石。

Linux 是一个天然的多用户、多任务操作系统。不同的用户拥有不同的身份,而系统通过一套严密的文件权限机制,精确控制每个用户能够对文件或目录执行哪些操作(读取、修改还是执行)。

本文将带你理清用户/用户组模型,并掌握文件权限的查看、修改与实战运用。

1. 用户角色与提权机制(root / 普通用户 / sudo)

在深入具体的权限位之前,我们需要先搞清楚 Linux 中三种核心的用户身份与协作关系。这三者构成了 Linux 权限体系的基础框架,理解它们之间的区别与联系,是掌握整个权限管理的前提。

┌─────────────────────────────────────────┐ │ root 用户 (超级管理员) │ │ UID = 0, 拥有绝对掌控权 │ └────────────────────┬────────────────────┘ │ (通过 sudo 授权高危命令) │ ┌────────────────────▼────────────────────┐ │ 普通用户 (受限环境) │ │ UID >= 1000, 仅能修改自己的家目录与文件 │ └─────────────────────────────────────────┘

1.1 root 用户(超级管理员 / God Mode)

  • 标识:用户 ID(UID)固定为0,命令行提示符通常是#。这是系统中最特殊的用户,UID 为 0 意味着它拥有对所有文件和进程的完全控制权。
  • 权限无限权限。可以读取、修改、删除系统中的任何文件,可以强行终止任何进程,甚至可以一条命令抹掉整个系统。无论是系统配置文件、其他用户的私有数据,还是内核级别的操作,root 都可以执行。
  • 风险:没有"撤销"按钮。敲错一个空格(如rm -rf / tmp/)就可能导致生产环境彻底崩溃。更严重的是,如果 root 账号被黑客攻破,攻击者将获得整个系统的完全控制权,可以植入后门、窃取数据、破坏服务,后果不堪设想。
  • 使用建议:在日常操作中应尽量避免直接使用 root 登录。即使是系统管理员,也建议通过普通用户身份配合sudo来执行需要特权的命令,这样既能完成任务,又能保留操作审计记录。

1.2 普通用户(Standard User)

  • 标识:UID 通常>= 1000,命令行提示符通常是$。系统安装时创建的第一个用户通常就是普通用户,后续添加的用户也默认属于此类。
  • 权限受限权限。默认只能在其家目录(如/home/alex)和/tmp目录下自由创建/修改文件。无法修改系统核心配置(如/etc)、无法安装全局软件、无法重启系统服务。这些操作都需要通过sudo提权才能完成。
  • 目的:实现环境隔离,防止单个用户的误操作或恶意行为破坏整个操作系统。在多用户服务器上,每个用户都拥有独立的家目录和私有文件,彼此之间互不干扰,这大大提升了系统的稳定性和安全性。
  • 实际场景:在开发环境中,普通用户可以在自己的家目录下自由安装开发工具、创建项目文件、运行测试程序,而不会影响系统其他部分。即使某个用户的操作导致其家目录损坏,也不会影响其他用户和系统核心功能。

1.3 sudo 命令(SuperUser Do)

  • 定位:一种安全提权机制。它架起了普通用户与 root 权限之间的桥梁,让系统管理变得更加灵活和安全。
  • 作用:允许被授权的普通用户,以root(或其他特权用户)的身份来执行某一条特定的命令,而无需知道 root 的真实密码。这意味着你可以精确控制哪些用户能执行哪些特权命令,而不是把所有 root 密码告诉所有人。
  • 安全机制:执行sudo时,系统提示输入的是普通用户自己的密码,且密码在一定时间内(默认 15 分钟)会被缓存,无需频繁重复输入。这个超时时间可以通过修改/etc/sudoers文件中的timestamp_timeout参数来调整。
  • 权限控制:通过编辑/etc/sudoers文件(建议使用visudo命令),管理员可以精细控制每个用户的 sudo 权限。例如,可以只允许某个用户执行特定的命令,而不授予其完整的 root 权限。
  • 审计追踪:所有sudo执行的操作都会被记录在系统日志中(如/var/log/auth.log),管理员可以随时查看谁在什么时候执行了什么特权操作,这为安全审计提供了重要依据。

最佳实践:在生产环境中,“平时用普通用户,敏感操作用 sudo,禁用 root 直接远程登录”是最核心的安全准则。具体来说:日常开发、文件操作使用普通用户;需要安装软件、修改系统配置时使用sudo;同时修改 SSH 配置(/etc/ssh/sshd_config)中的PermitRootLogin no,彻底禁止 root 远程登录,从源头上降低安全风险。

2. 用户与用户组(User & Group)

Linux 将访问系统的个体划分为三种主体角色:

  • 用户(User / Owner):文件的拥有者,通常是创建该文件的用户。
  • 用户组(Group):具有相同权限需求的多个用户的集合。将权限赋予用户组,可以方便地进行批量权限管理。
  • 其他人(Others):既不是文件拥有者,也不属于该文件所属用户组的系统其他所有用户。

除此之外,系统中还有一个最高特权身份:root(超级管理员)root拥有系统的绝对控制权,可以跨越绝大多数普通权限限制。

2.1 关键系统文件

Linux 将用户和组的信息存储在以下配置文件中:

  • /etc/passwd:存储用户账号的基本信息(用户名、UID、默认 Shell 等)。
  • /etc/group:存储用户组的信息(组名、GID、组成员等)。
  • /etc/shadow:存储加密后的用户密码(仅root可读)。

2.2 用户与组管理命令实操

实操案例 1:创建用户并将其加入开发组

# 1. 创建一个新的用户组:devteamsudogroupadddevteam# 2. 创建新用户 alex,并将其加入 devteam 组,同时为其创建家目录sudouseradd-m-gdevteam alex# 3. 为 alex 设置密码sudopasswdalex# 4. 查看 alex 的身份信息(UID、GID 及所属组)idalex# 输出示例: uid=1001(alex) gid=1001(devteam) groups=1001(devteam)# 5. 将 alex 赋予 sudo 权限(将其加入 sudo 组)sudousermod-aGsudoalex

3. 深入理解 Linux 文件权限

使用ls -l命令查看文件或目录时,输出的第一列就是权限字符串

ls-l/var/www/html/index.html# 输出: -rwxr-xr-- 1 alex devteam 2048 Aug 27 10:00 /var/www/html/index.html

将权限字符串-rwxr-xr--拆解如下:

- rwx r-x r-- │ │ │ └── [第 7-9 位] 其他人 (Others) 的权限: 可读 (r) │ │ └─────── [第 4-6 位] 所属组 (Group) 的权限: 可读 (r)、可执行 (x) │ └───────────── [第 1-3 位] 所有者 (User/Owner) 的权限: 可读 (r)、可写 (w)、可执行 (x) └────────────────── [第 0 位] 文件类型: - 表示普通文件, d 表示目录, l 表示软链接

3.1 权限位(r, w, x)的含义

读(r)、写(w)、执行(x)在普通文件目录上的含义完全不同,这是初学者最容易混淆的地方:

权限符号对应数值对普通文件的含义对目录的含义
r(Read)4可以查看文件内容(如catless可以列出目录内的文件列表(如ls
w(Write)2可以修改文件内容(如vim可以在目录内创建、删除、重命名文件
x(Execute)1可以作为程序/脚本执行(如./script.sh可以进入该目录(如cd),以及访问其内部文件的属性

⚠️重要细节:如果对一个目录只有r权限而没有x权限,你能看到目录下的文件名,但无法进入该目录,也无法查看文件的具体属性或内容。

4. 修改权限与所有者

4.1 修改文件权限:chmod

修改权限有两种常用方式:数字法字母法

1. 数字表示法(最常用)

r=4, w=2, x=1相加,算出每一组的权值(范围 0~7):

  • rwx= 4 + 2 + 1 =7(全权限)
  • rw-= 4 + 2 + 0 =6(读写)
  • r-x= 4 + 1 + 0 =5(读与执行)
  • r--= 4 + 0 + 0 =4(只读)
# 将 index.html 设置为:所有者可读写执行(7),所属组可读执行(5),其他人只读(4)chmod754index.html# 常用:将脚本设置为所有者可读写执行,其他人可读执行chmod755deploy.sh# 常用:将私钥文件设置为仅所有者可读写,其他人无任何权限(SSH 私钥硬性要求)chmod600id_rsa
2. 符号表示法
  • 角色:u(user),g(group),o(others),a(all)
  • 操作:+(增加),-(减少),=(赋予)
# 为文件所有者增加执行权限chmodu+x build.sh# 移除其他人对该文件的写权限chmodo-w config.json# 递归(-R)将整个项目目录的所有者权限设为读写,其他人无权限chmod-Ru=rwX,go=project/

4.2 修改文件所有者与所属组:chown

只有文件所有者或root用户才能修改文件的属主或属组。

实操案例 2: Web 服务器目录权限重置

# 1. 将 /var/www/html 目录及其内部所有文件的所有者改为 www-data,所属组改为 devteamsudochown-Rwww-data:devteam /var/www/html# 2. 仅修改所属组为 devteamsudochown:devteam /var/www/html/index.html

5. 生产环境常见安全实战

场景:部署一个部署脚本deploy.sh

当你新建一个 Shell 脚本时,默认通常是没有执行权限的:

touchdeploy.shls-ldeploy.sh# 输出: -rw-r--r-- 1 alex devteam 0 Aug 27 10:15 deploy.sh# 此时直接运行会报错: Permission denied (权限被拒绝)./deploy.sh# 赋予执行权限并再次运行chmod+x deploy.sh ./deploy.sh# 运行成功

6. 总结

需求场景推荐命令 / 权限值说明
赋予脚本执行权限chmod +x script.shchmod 755保证当前用户或所有人能够直接./script.sh运行
保护敏感配置文件/密钥chmod 600 id_rsa/chmod 640 config.env防止敏感数据被其他人或组外成员读取
修改网站静态资源归属sudo chown -R www-data:www-data /var/www让 Nginx/Apache 进程拥有对网页目录的访问权限
解决 Permission denied排查ls -l查看当前身份对应的r/w/x权限优先通过chmodchown精确赋权,**切忌盲目chmod 777**

💡安全提示:不要给生产环境的文件随意使用chmod 777(这会让所有用户都具备读、写、执行权限)。按需赋权、最小权限原则才是保障 Linux 安全的核心。


🚀 感谢阅读!想了解更多?

📖 我的博客网站 | 记录思考,分享干货
🏡 我的个人主页 | 关于我、开源项目


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 8:06:32

PaddleOCR数据合成:3步做出训练数据

PaddleOCR数据合成:3步做出训练数据 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and LLMs. Supports 100 languages. 项目地址…

作者头像 李华
网站建设 2026/9/2 11:20:12

如何科学验证AI编程提效?从任务设计到度量指标全指南

从“感觉变快了”到“真的变快了”:怎么科学验证 AI 提效是否成立? 过去一年,几乎每个技术团队都听过同一句话:“用 AI 写代码,效率翻倍。” 但你如果去问 CTO 和一线开发,得到的回答往往很分裂。有人会说…

作者头像 李华
网站建设 2026/9/2 7:43:15

数学建模竞赛数据清理实战:从脏数据到可用数据的系统化方法

1. 项目概述:从“脏数据”到“可用数据”的必经之路 搞数学建模,尤其是参加校赛、国赛这类限时竞赛,最让人头疼的往往不是模型多复杂、算法多高深,而是第一步——数据清理。你拿到的数据,很少是那种规规矩矩、拿来就能…

作者头像 李华
网站建设 2026/9/1 7:01:56

无视觉实操指导AI:基于大模型API与知识库的分步教学应用开发

在很多人印象里,大模型做“实操教学”有一个硬伤:模型没有眼睛,看不到用户当前的状态。但这恰恰是最值得研究的地方——如果一个没有视觉能力的AI,能把“戴美瞳”这种极度依赖手感和眼睛反馈的操作讲明白、讲到位,说明…

作者头像 李华
网站建设 2026/9/1 8:06:32

基因组语言模型如何生成噬菌体:原理、复现与验证全解析

斯坦福大学等团队最近在 Science 上发表了一项工作:用基因组语言模型直接生成新型噬菌体,并且通过实验验证了这些自然界里原本不存在的合成噬菌体,确实具备感染细菌的能力。这件事把“生成式 AI”和“合成生物学”正式接到了一起。在此之前&a…

作者头像 李华