当前位置: 首页 > news >正文

Linux的权限详解

在Linux系统中,权限与分组是实现多用户安全隔离、资源管控的核心机制。其设计理念是“最小权限原则”——即每个用户/进程仅获得完成任务所需的最小权限,从而保障系统稳定与数据安全。下面将从核心概念、用户组、权限模型、命令操作到实战案例,全面讲解Linux权限与分组。

一、核心基础:Linux的“用户-组-其他”模型

Linux是多用户多任务操作系统,所有文件/目录的权限都围绕3类主体设计,形成“用户→组→其他”的三层管控体系:

  • 用户(User):系统中每个账号对应一个独立用户(如rootalice),每个用户有唯一的UID(用户ID)标识。
  • 组(Group):多个用户的集合(如dev组、admin组),用于批量管理权限(避免对每个用户单独设置权限),每个组有唯一的GID(组ID)。
  • 其他(Other):既不是文件所有者,也不属于文件所属组的所有用户,是“默认兜底”的权限对象。

二、用户与用户组详解

要理解权限,需先掌握用户与组的分类、管理逻辑及配置文件。

1. 用户类型(按UID划分)

Linux通过UID(User ID)区分用户身份,不同UID范围对应不同用户类型:

用户类型UID范围作用说明
超级用户(root)UID=0拥有系统最高权限,可操作所有文件/命令(如删除系统文件、修改其他用户权限)
普通用户UID 1000~60000由管理员创建,仅拥有自身目录(/home/用户名)及授权资源的操作权限
系统用户UID 1~999系统服务(如nginxmysql)专用,无登录权限,仅用于运行服务进程

2. 用户组类型(按关联方式划分)

每个用户至少属于一个组,最多可属于多个组,分为两类:

  • 主组(Primary Group):用户默认所属的组,创建用户时自动生成(默认与用户名同名),用户的所有新文件默认属于主组。
    例:创建用户alice时,会自动创建alice组作为其主组。
  • 附加组(Supplementary Group):用户额外加入的组,用于获取该组的权限(如加入dev组以访问开发目录)。
    例:alice的主组是alice,附加组是dev,则她同时拥有alice组和dev组的权限。

3. 关键配置文件(用户/组信息存储)

用户与组的信息存储在以下3个系统文件中,直接修改文件需谨慎(建议用命令管理):

配置文件路径作用说明
/etc/passwd存储所有用户的基础信息(用户名、UID、主组GID、家目录、登录shell等)
/etc/group存储所有组的信息(组名、GID、组内用户列表)
/etc/shadow存储用户的加密密码、密码过期时间等敏感信息(仅root可读取)

三、文件/目录的权限模型

Linux中所有文件/目录都有明确的权限属性,权限分为“对象”和“操作类型”两部分,通过ls -l命令可查看。

1. 权限的3个核心对象

权限始终针对以下3类对象设置,简称“u/g/o”:

  • u(Owner):文件/目录的所有者(创建者默认是所有者,可通过命令修改)。
  • g(Group):文件/目录的所属组(默认是所有者的主组,可修改)。
  • o(Other):除“所有者”和“所属组”外的所有其他用户
  • (扩展)a(All):表示“u+g+o”,即所有用户。

2. 3种基础权限类型(r/w/x)

每种对象可拥有“读、写、执行”3种权限,不同权限对文件目录的意义不同(这是高频混淆点,需重点区分):

权限符号数字值对文件的作用对目录的作用
r(Read)4可读取文件内容(如catless可列出目录内的文件(如ls
w(Write)2可修改文件内容(如vimecho可创建/删除/重命名目录内的文件
x(Execute)1可执行文件(如./script.sh可进入目录(如cd

注意:

  • 目录的w权限不代表修改目录本身,而是修改目录内的文件(如删除test.txt);
  • 若要进入目录并查看文件,需同时拥有目录的x(进入)和r(列出)权限。

3. 权限的两种表示方法

权限有“符号表示法”和“数字表示法”两种,前者直观,后者简洁,实际操作中两者都会用到。

(1)符号表示法(直观易读)

通过rwx的组合表示权限,格式为:[文件类型][u权限][g权限][o权限]
例:-rw-r--r-- 拆解如下:

  • 首字符-:文件类型(-=普通文件,d=目录,l=软链接);
  • rw-:所有者(u)权限:可读、可写、不可执行;
  • r--:所属组(g)权限:可读、不可写、不可执行;
  • r--:其他用户(o)权限:可读、不可写、不可执行。

常见符号权限组合:

  • rwxr-xr-x:所有者可读写执行,组和其他用户可读执行(常用于可执行程序/脚本);
  • rw-rw-r--:所有者和组可读写,其他用户可读(常用于团队共享文档);
  • rwxr-----:仅所有者和组可读写执行,其他用户无权限(常用于敏感目录)。
(2)数字表示法(简洁高效)

r=4w=2x=1视为数值,通过“累加”得到每个对象的权限值,格式为:[u数值][g数值][o数值]
例:rw-r--r-- 对应数字权限:

  • u权限:r+w = 4+2 = 6;
  • g权限:r = 4;
  • o权限:r = 4;
  • 最终数字权限:644

常见数字权限对应关系:

符号权限数字权限适用场景
rwxr-xr-x755可执行程序、脚本、公共目录
rw-r--r--644普通文档(如txt、md)
rwxr-----740敏感目录(仅所有者和组访问)
rwxrwxrwt1777公共临时目录(如/tmp

四、权限与分组的核心操作命令

掌握以下命令,即可完成“查看-修改-管理”全流程操作,命令均需root权限或文件所有者权限。

1. 查看权限与分组信息

(1)查看文件/目录权限:ls -l

最常用的命令,可查看文件的权限、所有者、所属组等信息:

# 示例:查看当前目录下的文件权限
ls -l
# 输出格式解析(以 "-rw-r--r-- 1 alice dev 1024 Aug 10 14:30 test.txt" 为例)
# 1. 权限:-rw-r--r--  2. 硬链接数:1  3. 所有者:alice  4. 所属组:dev
# 5. 文件大小:1024字节  6. 修改时间:Aug 10 14:30  7. 文件名:test.txt
(2)查看当前用户所属组:groups
# 查看当前登录用户的所属组(主组在前,附加组在后)
groups
# 示例输出:alice : alice dev (主组alice,附加组dev)# 查看指定用户的所属组
groups bob

2. 修改文件/目录的所有者与所属组

(1)修改所有者:chown(Change Owner)

语法:chown [选项] 新所有者[:新所属组] 目标文件/目录

  • 选项-R:递归修改(用于目录,修改目录及所有子文件/子目录);
  • 若仅修改所有者,可省略“:新所属组”;若仅修改所属组,可写成“:新所属组”(但更推荐chgrp)。

示例:

# 1. 将test.txt的所有者改为bob
chown bob test.txt# 2. 将test.txt的所有者改为bob,所属组改为dev
chown bob:dev test.txt# 3. 递归修改docs目录及其子内容的所有者为alice
chown -R alice docs/
(2)修改所属组:chgrp(Change Group)

语法:chgrp [选项] 新所属组 目标文件/目录
(功能与chown :新组一致,更专注于组修改)

示例:

# 将test.txt的所属组改为dev
chgrp dev test.txt# 递归修改docs目录的所属组为admin
chgrp -R admin docs/

3. 修改权限:chmod(Change Mode)

chmod支持符号模式数字模式两种修改方式,灵活度极高。

(1)符号模式(适合局部调整)

语法:chmod [对象][操作符][权限] 目标文件

  • 对象u(所有者)、g(所属组)、o(其他)、a(所有);
  • 操作符+(添加权限)、-(移除权限)、=(覆盖权限);
  • 权限rwx

示例:

# 1. 给test.sh的所有者添加执行权限(x)
chmod u+x test.sh# 2. 给docs目录的所属组移除写权限(w)
chmod g-w docs/# 3. 给test.txt的所有用户设置权限为“读+写”(覆盖原有权限)
chmod a=rw test.txt# 4. 给script.sh的所有者读+写+执行,组读+执行,其他无权限(组合写法)
chmod u=rwx,g=rx,o=- script.sh
(2)数字模式(适合整体设置)

直接用3位数字指定权限,语法:chmod [数字权限] 目标文件

示例:

# 1. 将test.sh设置为755(rwxr-xr-x)—— 可执行程序常用
chmod 755 test.sh# 2. 将note.md设置为644(rw-r--r--)—— 普通文档常用
chmod 644 note.md# 3. 递归将data目录设置为740(rwxr-----)—— 敏感目录常用
chmod -R 740 data/

4. 用户组管理命令(创建/删除/添加用户)

要实现分组权限,需先创建组并添加用户,核心命令如下:

命令功能说明示例
groupadd 组名创建新组groupadd dev(创建dev开发组)
useradd 用户名创建新用户(默认创建同名主组)useradd alice(创建用户alice)
usermod -aG 组名 用户名将用户添加到附加组(-aG=append Group)usermod -aG dev alice(alice加入dev)
groupdel 组名删除空组(组内有用户时需先移除用户)groupdel old_group
userdel -r 用户名删除用户并删除家目录(-r=移除家目录)userdel -r bob
passwd 用户名给用户设置密码(必须设置密码才能登录)passwd alice(输入密码时隐藏)

五、特殊权限(SUID/SGID/Sticky Bit)

除了基础的rwx,Linux还有3种“特殊权限”,用于解决特定场景下的权限问题(如普通用户执行passwd修改密码)。

特殊权限符号表示作用说明典型应用场景
SUIDs(u位置)普通用户执行该程序时,临时拥有程序所有者的权限(仅对可执行文件有效)passwd命令(所有者是root,普通用户执行时临时获root权限修改/etc/shadow
SGIDs(g位置)1. 对文件:执行时临时拥有文件所属组权限;2. 对目录:新文件继承目录的所属组开发目录(如/dev/project,新文件自动属于dev组)
Sticky Bitt(o位置)仅对目录有效:目录内的文件仅所有者可删除(其他用户即使有w权限也无法删除)公共临时目录/tmp(权限rwxrwxrwt,避免用户删除他人文件)

示例:

# 给/tmp目录添加Sticky Bit(确保用户仅删除自己的文件)
chmod +t /tmp# 给/dev/project目录添加SGID(新文件继承目录的dev组)
chmod g+s /dev/project

六、常见问题与注意事项

  1. 目录必须有x权限才能cd进入:即使有r权限(能ls),无x权限也无法进入目录。
  2. root用户不受普通权限限制root可读写/删除任何文件(除非设置了特殊权限如immutable),操作需谨慎。
  3. 递归修改权限用-R:修改目录时若忘记-R,仅目录本身权限变化,子文件/子目录不变。
  4. 避免过度开放权限:如777(所有用户可读写执行)会导致安全风险,除非是临时测试,否则禁止使用。
http://www.xdnf.cn/news/1459189.html

相关文章:

  • 一次死锁的排查
  • 激活函数:神经网络的“灵魂开关”
  • 阅读论文神奇Zotero下载安装教程以及划词翻译(Translate for Zotero)的配置
  • 动态内存管理柔性数组
  • Vue 中绑定样式的几种方式
  • Process Explorer 学习笔记(第三章3.1.1):度量 CPU 的使用情况详解
  • 【Unity知识分享】Unity接入dll调用Window系统接口
  • 无限时长视频生成新突破!复旦联合微软、腾讯混元推出StableAvatar,仅需1张照片+1段音频实现真人说话视频
  • hutool的EnumUtil工具类实践【持续更新】
  • 揭秘23种设计模式的艺术与技巧之行为型
  • 美联储计划召开稳定币和代币化创新会议
  • 大数据框架Doris全面解析
  • 期权平仓后权利金去哪了?
  • 基于STM32的智能家居语音控制系统设计
  • Pycharm终端pip install的包都在C:\Users\\AppData\Roaming\Python\解决办法
  • 手写Spring框架
  • 前端跨域终极指南:3 种优雅解决方案 + 可运行 Demo
  • 解密注意力机制:为何它能在Transformer中实现高效并行计算?
  • STM32G4 速度环开环,电流环闭环 IF模式建模
  • 如何在Linux上部署1Panel面板并远程访问内网Web端管理界面
  • Kafka 开启 SASL_PLAINTEXT 双监听器认证(内网/外网)
  • 如何减少文档冗余和重复劳动
  • vite_react 插件 find_code 最终版本
  • MVCC是如何工作的?
  • bash自带的切片操作
  • 解锁“桐果云”的全链路能力矩阵,技术人必看的企业级数据应用方案
  • 阿里云轻量应用服务器部署WordPress与配置SSL 证书
  • 英飞凌ASIL-D级无刷电机驱动芯片TLE9189守护汽车安全
  • 第三方网站测试:WEB安全测试中DOM型XSS漏洞的检测
  • [Windows] PDF工具箱 PDF24 Creator 11.28.0