声明:本文仅作学习交流使用,引用需标明出处。

如有谬误,敬请指正

一文搞懂:Linux 权限操作中,哪些只有 root 能做?普通用户又能做什么?

在 Linux 多用户环境下,权限操作的边界是运维新手最容易踩坑的点:明明命令语法完全正确,执行却提示「权限不够」,核心原因就在于操作权限的归属限制——root 作为超级管理员,和普通用户的权限边界泾渭分明。

本文就帮你彻底理清:Linux 权限相关操作中,哪些是 root 专属特权,哪些是普通用户可以自主操作的,一文吃透权限操作的核心规则。

一、先明确核心原则:权限操作的底层逻辑

Linux 对权限操作的管控,核心遵循两个铁律:

  1. 普通用户:仅能管控自己是所有者的资源,操作范围被严格限制在自身家目录及授权范围内,无法跨用户、跨系统修改核心配置;
  2. root 用户:不受任何资源归属、权限规则限制,可操作系统内所有资源、所有权限配置,是系统唯一的「最高权限者」。

所有权限操作的划分,都基于这个底层逻辑展开,下面分场景详细拆解。

二、root 专属操作:普通用户绝对无法执行

这类操作涉及跨用户资源管控、系统级安全配置、敏感文件操作,普通用户执行必然报错「权限不够」,是 root 的核心特权。

1. 修改任意资源的归属关系(chown)

chown 是修改文件/目录所有者、所属组的核心命令,只有 root 能修改非自身所有资源的归属,普通用户即便对文件有全部权限,也无法更改其所有者。

  • 典型操作:chown alice:test /opt/share.txtchown -R root:root /home/bak
  • 核心原因:归属关系是资源的核心属性,随意修改会打破系统用户权限隔离,存在极大安全风险。

2. 配置系统级特殊权限(SUID/SGID/粘滞位)

特殊权限涉及程序身份传递、公共目录安全管控,其中 SUID/SGID 仅 root 可配置,粘滞位虽普通用户可给自己的目录加,但系统公共目录(如/tmp)的粘滞位仅 root 可修改。

  • 典型操作:chmod 4755 /usr/bin/passwd(SUID)、chmod 2770 /team/dir(SGID)
  • 核心原因:SUID 会让普通用户临时继承程序所有者权限,滥用会导致系统提权漏洞,必须由 root 管控。

3. 修改系统级默认权限配置(umask 永久修改)

普通用户仅能临时修改自身会话的 umask,而永久修改系统全局 umask(编辑/etc/profile、/etc/bashrc) 是 root 专属操作。

  • 典型操作:在/etc/profile中添加umask 0027实现全局默认权限管控
  • 核心原因:全局 umask 影响所有用户的新建资源权限,属于系统级配置,普通用户无权限修改系统文件。

4. 操作系统敏感资源的权限

系统核心文件、root 家目录(/root)、其他用户的家目录核心资源,仅 root 可修改其权限/归属,普通用户连访问都被禁止。

  • 典型操作:修改/etc/passwd、/etc/shadow的权限,修改/root目录的ACL规则
  • 核心原因:这类资源存储系统用户信息、管理员数据,是系统安全的核心防线。

5. 跨用户配置 ACL 精细化权限

普通用户只能给自己的资源加ACL,而给普通用户开放系统敏感目录(如/root、/etc)的ACL权限,必须由 root 执行。

  • 典型操作:setfacl -m u:bob:rx /root
  • 核心原因:突破基础 ugo 权限的精细化配置,涉及系统安全边界,仅 root 可授权。

三、普通用户可操作:仅局限于自身所有资源

普通用户并非不能做权限操作,只是范围被严格限定在自己创建、自己是所有者的资源内,核心操作集中在权限调整、ACL 配置等基础场景。

1. 修改自身资源的基础权限(chmod)

只要是自己家目录内、自己为所有者的文件/目录,普通用户可自由用chmod修改权限(符号法、数字法、递归-R均可)。

  • 典型操作:chmod 700 ~/private.txtchmod -R o=- ~/workdir
  • 限制:无法修改他人所有的资源,即便对该资源有读写权限也不行。

2. 给自己的资源配置/删除 ACL

普通用户可对自身所有的资源,自由添加、删除单条ACL(-m/-x),甚至清空全部ACL(-b),实现对其他普通用户的精细化授权。

  • 典型操作:
    • 添加ACL:setfacl -m u:tom:rx ~/share_file.txt
    • 删除单条ACL:setfacl -x u:tom ~/share_file.txt
    • 清空全部ACL:setfacl -b ~/share_file.txt
  • 限制:无法修改 root 给该资源配置的ACL,无法给非自身资源加ACL。

3. 临时修改自身会话的 umask

普通用户可在当前终端会话中,临时修改 umask 值,仅影响自己本次登录后新建的资源权限,重启或重新登录后失效。

  • 典型操作:umask 0027
  • 限制:无法修改全局 umask,无法影响其他用户的权限配置。

4. 管理授权目录内的自身资源

若 root 给普通用户授权了某公共目录的读写权限(如/project),普通用户可在该目录内创建、删除、修改自己的文件,但无法操作他人创建的文件(粘滞位场景下)。

  • 典型操作:touch /project/my_file.txtrm /project/my_file.txt

四、特殊场景:普通用户的「有限权限例外」

  1. 组权限授权场景:若普通用户属于某用户组,且目录所属组为该组、组权限含 wx,可在目录内创建文件,但无法删除同组其他用户的文件(目录加粘滞位时);
  2. ACL 授权场景:root 给普通用户授予某资源的ACL权限后,用户可按授权范围操作资源,但仍无法修改该资源的归属、全局权限。

五、一文总结:root 与普通用户权限操作边界

操作类型 root 用户 普通用户
修改任意资源归属(chown) ✅ 可操作 ❌ 不可操作
配置 SUID/SGID 特殊权限 ✅ 可操作 ❌ 不可操作
永久修改系统全局 umask ✅ 可操作 ❌ 不可操作
操作系统敏感文件权限 ✅ 可操作 ❌ 不可操作
修改自身资源的基础权限 ✅ 可操作 ✅ 可操作
给自己的资源配置 ACL ✅ 可操作 ✅ 可操作
临时修改自身会话 umask ✅ 可操作 ✅ 可操作

记忆口诀

  • root:所有资源随便改,归属权限全管控,系统配置我做主;
  • 普通用户:自己资源自己管,他人资源碰不得,系统配置无权动。

吃透这个权限边界,后续在执行chown、chmod、setfacl等命令时,遇到「权限不够」的报错,就能第一时间定位原因,避免无效操作。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐