当前位置:首页>Linux>Linux 权限体系全解:基础权限、特殊权限与 ACL

Linux 权限体系全解:基础权限、特殊权限与 ACL

  • 2026-10-11 07:28:41
Linux 权限体系全解:基础权限、特殊权限与 ACL

一、文件权限九宫格,看懂这一行就够了

使用 ls -l 查看文件详情,第一列就是权限位,共11个字符,但核心是中间的9个(第2-10位)。
bash
$ ls -l myfile.txt
-rwxr-xr-- 1 root root1234 Mar 10 10:00 myfile.txt
九宫格拆解(3组 × 3个权限):

位置

含义

字符示例

权限说明

第1位

文件类型

- (普通文件)  / d (目录) / l (链接)

不属于权限位

第2-4位

所有者 (User)

rwx

文件拥有者的权限

第5-7位

所属组 (Group)

r-x

文件所属组成员的权限

第8-10位

其他人 (Other)

r--

既不是所有者也不在组中的其他人

权限字符含义:

字符

对文件的含义

对目录的含义

r (读)

可查看文件内容

可列出目录内容(需要 x 配合)

w (写)

可修改/删除文件

可在目录中创建/删除文件(需要 x 配合)

x (执行)

可运行文件(脚本/程序)

可进入目录(cd)

一句话记忆:文件看内容,目录看路径。目录没有 x,r 和 w 都废了。

二、怎么改权限:chown / chmod 两板斧

1.chown — 更改所有者/所属组

bash

只改所有者

chown alice file.txt

同时改所有者和组

chown alice:developers file.txt

只改组(也可以用 chgrp)

chown :developers file.txt

递归修改目录下所有文件

chown -R alice:developers /project/

2.chmod — 更改权限

符号方式(直观):
bash
chmod u+x script.sh#所有者增加执行权限
chmod g-w file.txt#组去掉写权限
chmod o=r file.txt#其他人设为只读(覆盖原权限)
chmod a+x script.sh#所有人增加执行权限(a = u+g+o)
数字方式(高效):每个权限位对应一个数字:r=4, w=2, x=1
bash
chmod 755 script.sh

rwxr-xr-x(所有者全权,组和其他人读+执行)

chmod 644 config.conf

rw-r--r--(所有者读写,其他人只读)

chmod 600 secret.txt

rw-------(仅所有者读写)

数字

权限

适用场景

755

rwxr-xr-x

可执行程序、脚本目录

644

rw-r--r--

普通配置文件

600

rw-------

私密文件(密钥、密码)

777

rwxrwxrwx

极不推荐,任何用户都可改

三、三个特殊权限:SUID / SGID / Sticky

1. SUID (Set User ID) — 4xxx

作用:执行程序时,进程以文件所有者的身份运行,而非执行者。
典型例子:/usr/bin/passwd(用户改密码时需要写入 /etc/shadow,但 shadow 只有 root 可写)
设置:chmod u+s file 或 chmod 4755     file
权限位显示:rwsr-xr-x(原 x 位置变成 s)

2. SGID (Set Group ID) — 2xxx

对文件:执行时进程以文件所属组身份运行。
对目录:在该目录下新建的文件/子目录,自动继承父目录的所属组(非常适用于团队协作目录)。
设置:chmod g+s dir 或 chmod 2755     dir
权限位显示:rwxr-sr-x 或 rwx--S---

3. Sticky Bit — 1xxx

作用:在 sticky 目录下,只有文件所有者、目录所有者或root才能删除/改名文件,其他人即使有写权限也不行。
典型例子:/tmp(任何人都能写,但不能删别人的临时文件)
设置:chmod o+t dir 或 chmod 1777     dir
权限位显示:rwxrwxrwt(原 x 位置变成 t)
组合使用示例:
bash
chmod 6770 shared_dir     #SUID + SGID +目录权限rwxrws---

四、umask — 控制新建文件的默认权限

umask是一个权限掩码,决定新文件/目录创建时去掉哪些权限。
bash
$ umask
0022
计算规则:
文件初始权限 = 666(rw-rw-rw-)减去 umask
目录初始权限 = 777(rwxrwxrwx)减去 umask

umask

文件默认权限

目录默认权限

说明

0022

644 (rw-r--r--)

755 (rwxr-xr-x)

常见默认值

0002

664 (rw-rw-r--)

775 (rwxrwxr-x)

适合团队协作

0077

600 (rw-------)

700 (rwx------)

偏严格

bash

临时修改(仅当前会话)

umask 0002

永久修改:写入~/.bashrc 或 /etc/profile

五、ACL 权限 — 超出三元组限制的精细授权

传统权限只有「所有者、组、其他人」三档,ACL(Access Control List)可以对多个用户或组单独授权。
常用命令
bash

查看 ACL

getfacl file.txt

给用户 alice 读写权限

setfacl -m u:alice:rw file.txt

给组 developers 读+执行权限

setfacl -m g:developers:rx /project

删除某个用户的 ACL

setfacl -x u:alice file.txt

递归设置目录及其所有子文件

setfacl -Rm u:bob:rwx /shared/
检查文件系统是否支持 ACL
bash
mount | grep acl#大多数现代Linux默认开启
使用场景:某个文件需要让特定同事(不在同组)有读写权限,但又不方便把他加进组里。

六、sudo 权限委派 — 让普通用户干管理员的活

sudo允许普通用户以root(或其他用户)身份执行特定命令,通过 /etc/sudoers 文件配置(必须用 visudo 编辑)。
bash
visudo#安全编辑sudoers
常用配置示例:

配置行

含义

alice ALL=(ALL) ALL

alice 可以执行任何命令(等同于管理员)

bob ALL=(ALL) /usr/bin/systemctl

bob 只能执行 systemctl

%developers ALL=(ALL) NOPASSWD:  /usr/bin/apt

developers 组成员执行 apt 免密码

jenkins ALL=(www-data) /usr/bin/rsync

jenkins 可以以 www-data 身份执行 rsync

常用 sudo 命令:
bash
sudo -l#查看当前用户被允许执行哪些命令
sudo command#以root执行
sudo -u www-data command#以www-data用户执行

七、权限速查表

你要做什么

命令示例

查看文件权限

ls -l file

修改所有者

chown alice:group file

修改权限(数字)

chmod 755 script

修改权限(符号)

chmod u+x,g-w script

设置 SUID

chmod u+s file

设置 SGID(目录)

chmod g+s shared_dir

设置 Sticky Bit

chmod o+t /tmp

查看 umask

umask

设置 umask

umask 0027

给特定用户加 ACL 读权限

setfacl -m u:alice:r file

查看 ACL

getfacl file

允许普通用户执行 systemctl

编辑 sudoers: bob ALL=(ALL)  /usr/bin/systemctl

◆ 总结

最佳实践
最小权限原则:只授予完成任务所需的最小权限
避免 NOPASSWD: ALL:除非有特殊自动化需求
使用组而非单个用户:便于批量管理
审计日志:所有 sudo 操作都会记录在 /var/log/auth.log 或 /var/log/secure 中
Linux 权限体系层层递进,理解后就能牢牢掌控系统的访问安全:
基础权限(九宫格)—每个文件/目录的三元组(U/G/O)是根基。
两板斧(chown/chmod)—日常最常用的修改工具,数字法 755、符号法 u+x 都要熟悉。
三个特殊权限— SUID(提权)、SGID(继承组)、Sticky(保护文件不被乱删),特定场景利器。
umask—控制新文件的默认权限,影响系统默认安全性。
ACL—突破三元组限制,实现精细到人的权限控制。
sudo—权限委派的最后一块拼图,让普通用户在授权范围内完成管理任务。
掌握这些,你就能读懂 ls -l 的输出,也能设计出既安全又灵活的权限策略。
掌握这套体系,不仅能保障系统安全,还能在团队协作、服务部署等场景中游刃有余。记住核心原则:最小权限原则——只授予完成任务所必需的权限,不多也不少。
#linux系统权限
#系统管理
#ACL权限管理

最新文章

随机文章