LINUX的权限概念
Linux 系统通过读(r)、写(w)、执行(x)三种权限控制用户对资源的访问:
-
读权限 r
-
文件:可查看内容
-
目录:可查看目录内文件列表(用 ls 命令)
-
-
写权限 w
-
文件:可修改内容
-
目录:可创建/删除文件或子目录(删除文件需同时拥有目录的写权限)
-
-
执行权限 x
-
文件:可运行程序/脚本(如启动软件)
-
目录:可进入目录(用 cd 命令)并访问内部文件
-
权限设计像三道锁,分别控制"能否看内容"、"能否改内容"、"能否进目录/运行程序",保护系统安全。
用户的身份
在 Linux 权限体系中,用户对文件的访问身份分为三类:
-
u (user):文件的主人,即创建/拥有该文件的用户
-
g (group):文件所属的"家庭",即与文件绑定的特定用户组
-
o (other):文件权限的"局外人",即既不是主人、也不在所属用户组内的其他所有用户
相当于:
主人(自己) → 家庭成员(同组) → 陌生人(其他人)
三者的权限逐层外扩,形成权限保护圈
组成模式
查看权限
ls -l 文件
ls -d 目录
种类
文件
目录
chmod
权限同步操作说明
使用chmod命令
1.同步单目录权限
chmod --reference=/tmp /mnt/gu
2.递归同步目录及子内容权限
chmod -R --reference=/tmp /mnt/westosdir
作用:
-R
表示递归操作,像"连锁反应"一样
先复制 /tmp
的权限到 /mnt/westosdir
目录本身
再将同样的权限规则逐层传递给该目录下的所有子文件、子目录
通俗理解:
--reference
➜ "照抄模板"
-R
➜ "不仅改表面,还要渗透到内部每一层"
文件归属权管理命令速记
1.更改文件主人
chown 新主人账号 文件名
2.更改文件归属团队
chown 新主人:新团队 文件名
3.批量归属权继承(适用于目录)
chown -R 用户或组 目录名
chgrp -R 用户或组 目录名
功能:
-R
激活递归模式,如同"权限基因复制"
不仅修改目录自身归属,还会让目录内所有子文件/子目录继承相同的归属设置
比喻:
单层操作 ➜ 只换外套的标签
递归操作 ➜ 给整个衣柜(含所有衣物)统一更换标签
系统默认权限设定
系统默认权限的核心逻辑
系统如同一个智能管家,在安全与功能间寻求平衡:
-
安全性优先
-
默认"收缩权限":关闭非必要访问权限(如限制写操作)
-
像守门员一样,只允许基础读/执行等低风险操作
-
-
功能性妥协
-
对必要功能(如临时文件目录
/tmp
)保留基础共享权限 -
确保常用服务能正常运行,但严格控制权限范围
-
本质:
最小权限原则 ➜ 用户默认获得完成基础任务的最低权限
风险隔离设计 ➜ 危险操作(如修改系统文件)需手动授权
开放与封闭的博弈 ➜ 用 umask
等机制自动过滤敏感权限(如他人写权限)
比喻:系统像一家博物馆——
游客(普通用户)可观赏展品(读文件)
但触碰展品(修改文件)或进入后台(系统区域)需特殊许可
Linux 特殊权限
-
SUID(4)
-
作用:执行文件时,临时拥有文件主人的权限
-
例子:
passwd
命令修改密码时,普通用户能临时获得 root 权限 -
符号:
-rwsr-xr-x
(s 表示 SUID)
-
-
SGID(2)
-
作用:目录下新建的文件,自动继承目录的所属组
-
场景:团队共享目录,保证文件归属统一
-
符号:
drwxrwsr-x
(s 表示 SGID)
-
-
Sticky Bit(1)
-
作用:目录中只能删除自己的文件
-
例子:公共临时目录
/tmp
-
符号:
drwxrwxrwt
(t 表示 Sticky Bit)
-
数字记忆法:
chmod 4777
→ 4(SUID) + 常规权限
chmod 2777
→ 2(SGID) + 常规权限
chmod 1777
→ 1(Sticky) + 常规权限
SUID
本质:给程序开一个"特权体验卡"
触发时机:当用户运行带有 SUID 标记的程序时
效果:
程序运行时,自动切换成文件主人的身份(如 root)
结束后立刻恢复用户原本身份
chmod u+s file
su - gu
ps ax -o user,group,comm | grep cat gu gu cat
用root身份
chmod u+s /bin/watch
su - gu
/bin/cat
ps ax -o user,group,comm | grep cat root gu cat
SGID
核心作用:给程序或目录颁发"团队通行证"
对程序 → 运行时切换为文件所属组身份
对目录 → 新建内容自动归入目录所属团队
chmod 2源文件权限 project
chmod g+s project
Sticky Bit
核心作用
给目录加一个"防误删护盾",确保:
自己文件自己管 → 用户只能删除/重命名自己创建的文件
他人文件禁触碰 → 即使目录有写权限,也不能动别人的文件
chmod 1原始权限 dir
chmod o+t dir
关键规则:
仅对目录有效(文件设置无意义)
需配合目录的写权限使用
ACL权限
作用:可以针对单个用户或组设置独立的读、写、执行权限
比喻:
传统权限 → 三把固定钥匙(主人/家庭/陌生人)
ACL → 可自由配发任意数量的钥匙,精确控制谁能开哪扇门
ACL开启标识
-rw-rw---- 未开启
-rw-rw----+ 已开启
查看ACL权限
getfacl 文件名
设定ACL
setfacl 参数 文件名
参数
-m
→ 添加/修改规则
-x
→ 删除单条规则
-b
→ 清空所有 ACL
-d
→ 设置继承规则
-k
→ 清除继承规则
ACL权限优先级
拥有者 > 特殊指定用户 > 权限多的组 >权限少的组 > 其他
mask
本质:Mask 是 ACL 系统的"权限天花板",用于限制除文件主人和 others 之外的所有用户/组的最高权限
即使给用户/组设置了 rwx
,若 Mask 是 r-x
,实际生效权限为 r-x
设置用户gu有 rwx,但 mask为r-x
setfacl -m u:gu:rwx file
setfacl -m m::rx file
实际权限gu只能读和执行
Mask 的直观比喻
传统权限模型 → 房间内有三盏灯(主人/家庭/陌生人),开关独立控
ACL + Mask → 新增一个总闸(mask),限制家庭和额外添加用户的灯光亮度上限
总闸亮度调低时,所有依赖它的灯都会变暗
但主人的灯(所有者权限)不受总闸影响
ACL列表的默认权限
范围:仅对目录有效
核心功能:
自动继承 → 在该目录下新建的文件/子目录,自动复制父目录的默认 ACL 规则
权限预配置 → 省去手动为每个新文件单独设置 ACL 的繁琐操
setfacl -m d:u:alice:rwx/mnt/gu 只对于/mnt/gu目录本身生效
attr权限
核心概念
给文件/目录穿"防弹衣",在传统权限之外添加隐藏保护层,实现:
防删除防篡改
强制追加模式
安全锁死文件
i 不能做任何更改
a 能添加不能删除
lsattr dir|file 查看attr权限
chattr +i|+a|-i|-a dir|file 设定attr权限
attr权限限制所有用户