news 2026/4/20 14:31:17

Linux 权限管理完全指南:从 chmod到 SUID 和 ACL

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux 权限管理完全指南:从 chmod到 SUID 和 ACL

继文件操作、Vim 编辑器和用户管理之后,我们深入学习 Linux 的权限体系。本文将详细讲解如何查看文件/目录的权限和归属,使用chownchmod修改它们,理解umask对默认权限的影响,以及掌握 SUID、SGID、Sticky 三种特殊权限。这些是 Linux 系统安全和权限控制的基石。

前言

在 Linux 系统中,一切皆文件,而文件的权限管理是系统安全的核心。无论是日常的文件操作、多用户环境的权限隔离,还是渗透测试中的权限维持与提权分析,理解 Linux 的权限模型都是必修课。

本文将从最基础的ls -l输出解析开始,逐步讲解chownchmod(符号模式和数字模式)、umask等基本命令,然后深入介绍 SUID、SGID、Sticky 三种特殊权限的用途与风险,最后带你掌握 ACL(getfacl/setfacl)实现更精细的访问控制。文章配有大量实验命令和截图位置提示。

一、查看权限与归属:ls -lls -ld

命令格式ls -l [文件/目录]ls -ld [目录]

  • ls -l:以长格式显示文件或目录的详细信息(若参数是目录,默认显示目录内的内容)。

  • ls -ld:显示目录本身的信息,而不是目录内的内容。

使用ls -l查看文件或目录的详细属性,ls -ld专门查看目录本身(而非目录内的内容)。

[root@svr223 ~]# ls -ld /home
drwxr-xr-x. 4 root root 4096 Mar 20 10:00 /home

1. 输出格式解析

drwxr-xr-x为例,共 10 个字符:

位置含义
第 1 个字符文件类型:d目录,-普通文件,l符号链接
第 2-4 个字符属主(user)权限:r读,w写,x执行。无权限为-
第 5-7 个字符属组(group)权限:同上
第 8-10 个字符

其他用户(other)权限:同上

使用ls命令加上-ld参数就可以显示出目录的详细信息,前面的十个字符就代表权限,第二个到第十个字符三个一组分别对应属主、数组、其他用户的权限。

2. 目录权限的特殊说明

  • 读权限(r:允许列出目录内容(如ls)。

  • 写权限(w:允许在目录内创建、删除、重命名文件(需要同时有x权限)。

  • 执行权限(x:允许进入目录(cd)以及访问目录内的文件。

权限对文件的作用对目录的作用
读(r)可以查看文件内容(如catlessvim只读打开)可以列出目录内容(如ls),但无法进入目录
写(w)可以修改文件内容、追加数据、截断文件可以在目录内创建、删除、重命名文件(需要同时有执行权限 x
执行(x)可以执行该文件(如果是脚本或二进制程序)可以进入目录(cd),以及访问目录内的文件(路径解析需要)

示例:对目录只有r没有x,则只能看到文件名列表,但无法进入或访问文件内容。

二、修改文件归属:chown

命令格式chown [选项] 用户名[:组名] 文件...

  • 用户名:指定新的属主。

  • 组名:可选,前面加冒号表示同时修改属组。

  • 常用选项:-R递归修改目录及其所有子文件。

chown用于修改文件或目录的属主和属组。

# 修改属主
chown kunkun /home/zhangsan

# 只修改属组
chown :kunkun /home/kunkun
# 同时修改属主和属组(使用冒号分隔)
chown kunkun:kunkun /home/kunkun

这里我们来尝试将kunkun的家目录进行属主、属组的更改。

从截图中可以看到,我们执行完命令后,使用ls命令查看,发现目录的属主变成了zhangsan,现在kunkun就变成了属组,我们可以看到属组是三条 - ,表示没有任何权限,然后我们跳转到kunkun用户,发现他根本都进不了他的家目录了,他回不了家了,使用cd命令和ls命令,都显示权限不够。

那么是怎么确定修改的是属主还是属组的呢?其实很简单,要修改属组的话在前面加上:就行了。

我们首先执行ls命令看看现在是什么样的,发现属主是zhangsan属组是kunkun,然后我们执行完命令后再次使用ls命令查看,发现属组也变成了zhangsan 。

其实可以同时更改属主和属组的,很简单有冒号的和没有冒号的接着写就行了。下面我们来使用命令将属主和属组重新改回kunkun。

我们执行完命令后使用ls命令查看,发现属主和属组又变成了kunkun,然后我们用su命令切换到kunkun用户,现在能cd进去了使用pwd命令也看到确实可以进去了,现在kunkun用户对他的家目录又有权限了,他可以回家了。

三、修改权限:chmod

命令格式chmod [选项] 模式 文件...

模式有两种形式:

  • 符号模式:[ugoa][+-=][rwx]

  • 数字模式:三位八进制数(如 755)

chmod用于修改文件或目录的权限,支持符号模式和数字模式。

1. 符号模式

对象符号含义
uuser属主
ggroup属组
oother其他用户
aall所有(u+g+o)
操作符号含义
+添加权限
-移除权限
=覆盖(设置精确权限)
权限符号
r
w
执行x

示例

# 移除属主的写权限
chmod g-w file.txt
# 设置其他用户只有读权限
chmod o=r file.txt
# 同时设置多个,每个用逗号隔开就行了
chmod u+rwx,g+rx,o-rwx file.txt

下面我们来尝试给kunkun家目录进行权限的修改,我们给属主减少w权限、给属组增加r和x权限、给其他用户增加r和x权限。

执行完命令后可以看到权限一步到位就变成了我们想要的样子了,直接用=就很方便,可以不用看更改之前的权限分布。

2. 数字模式(八进制)

更改权限还可以通过数字模式进行更改

每个权限位对应一个数字:r=4w=2x=1。三位数字分别表示属主、属组、其他。

chmod 755 file.txt # 属主 rwx,属组 r-x,其他 r-x
chmod 644 file.txt # 属主 rw-,属组 r--,其他 r--
chmod 600 secret.txt # 属主 rw-,属组 ---,其他 ---

  • 权限数值对照表
权限二进制数值
r(读)1004
w(写)0102
x(执行)0011
-(无权限)0000
  • 权限组合的计算方法

将某个用户类别拥有的权限对应的数值相加,得到该类别的一位数字。

权限组合计算数值
rwx4+2+17
rw-4+2+06
r-x4+0+15
r--4+0+04
-wx0+2+13
-w-0+2+02
--x0+0+11
---0+0+00
  • 三位数字的含义

chmod 755 file中的三位数字分别代表:

  • 第一位(7):属主(user)权限 =rwx

  • 第二位(5):属组(group)权限 =r-x

  • 第三位(5):其他用户(other)权限 =r-x

因此755等价于-rwxr-xr-x

下面我们试试通过数字模式来进行权限的修改。我们将/home/kunkun的属主权限改为rwx,属组改为rw-其他用户改为r-x 。

我们通过chmod 765成功更改权限分布像我们想的那样,这个方法还是很方便。

四、特殊权限:SUID

SUID(Set User ID)

设置格式chmod u+s 文件名chmod 4755 文件名

  • 作用:只对可执行文件有效。普通用户执行该文件时,进程获得文件属主的权限。

  • 典型例子/usr/bin/passwd(属主 root,权限rws),普通用户可修改自己的密码。

  • 查看:属主的x位变为s(若原无执行权限则为S)。

安全风险:SUID 程序可能被利用提权。

我们可以使用cp命令复制/usr/bin/vim 并命令为.vim linux中万物皆文件,我们使用的命令也不例外,这些命令一般都可以在bin中找到对应的文件,我们就可以复制出一个除了名字不一样外其他功能一样的vim。

由于点开头的文件是隐藏文件,所以查询的时候要加-A参数,执行完查询命令后可以看到我们成功复制出了一个.vim文件,可以将他当作vim来使用,功能是一样的。下面我们来给.vim添加s权限。

可以看到,我们成功添加了s权限,这个权限是占x权限位的。

在/etc/hosts文件中,存放着DNS信息,我们可以来看看这个文件的权限

可以看到这个文件属主只有rw权限,属组和其他用户都只有r权限,也就是说只有属组是有写入权限的,kunkun用户现在是其他用户,他没有写入权限。我们不妨来验证一下kunkun用户能不能写入。

我们在hosts文件中尝试写入192.168.10.223 www.baidu.com 这个意思就是把这个baidu的域名解析成这个ip,写入后我们用wq!来强制保存,发现强制保存也是失败的,说明没有写入权限确实不能成功写入。下面我们来试试使用.vim呢,这个文件是有s权限的。

使用.vim输入后强制保存,并没有报错,我们使用cat命令查看发现成功写入了。我们来分析分析,这个hosts文件只有属主能够写入的,现在我们是用的kunkun用户,我们使用了有s权限的.vim命令后成功写入了,说明这个s权限可以让普通用户拥有属主的权限,如果属主是root的话,这个s权限可以让普通用户暂时拥有root权限。刚才我们更改的是DNS解析的文件,下面我们来试试访问www.baidu.com呢。

我们ping www.baidu.com是能ping通的,但是我们来看这个源ip是192.168.10.223,这肯定不是baidu的ip吧,事实上这是我们在hosts文件中写的ip,这个ip是我本机的ip,试想一下,如果攻击者利用这个权限把这个ip改成钓鱼网站的ip,那么用户访问百度就会跳转到攻击者的钓鱼网站,这就很危险了。所以这个权限就是一个很经典的后门,攻击者只要拿到了一次root,然后建立了一个这样的后门,以后就算拿不到root了也可以通过这个后门来获得root权限。

五、精细权限控制:ACL(Access Control List)

传统的chmod只能为属主、属组、其他三类用户设置权限。ACL 可以为任意指定的单个用户或用户组设置独立权限,更灵活。

1. 查看 ACL:getfacl

命令格式getfacl 文件/目录

# 查看文件的 ACL
getfacl /root

执行完这个命令可以看到这个和ls查看的差不多,只不过是竖着显示的。

2. 设置 ACL:setfacl

命令格式setfacl [选项] 规则 文件/目录

  • -m:修改或添加 ACL 条目

  • -x:删除指定 ACL 条目

  • -b:清除所有扩展 ACL

  • -R:递归设置(对目录)

为指定用户添加权限

bash

# 为用户 alice 添加读写权限
setfacl -m u:kunkun:rw file.txt

为指定组添加权限

bash

# 为组 dev 添加读和执行权限
setfacl -m g:dev:r-x /root

删除指定用户的 ACL

bash

setfacl -x u:kunkun /root

递归设置目录的默认 ACL(新文件继承)
清除所有扩展 ACL

bash

setfacl -b /root

再用getfacl查看详细信息。

下面我们来进行一些操作示例。

可以看到我们可以成功setfacl加上-m参数给指定用户添加额外权限。还可以使用-x参数对额外权限进行删除。

使用-x参数后可以看到kunkun的额外权限没有了,同时也可以使用-d参数对所有的额外权限进行清除,这里就不一一展示了,如果要对组进行额外权限的操作就把u改成g就行了,有了这个命令后对于权限的操作就更加灵活了。

六、总结

命令/概念作用常用格式
ls -l查看权限ls -l [文件]ls -ld [目录]
chown修改属主/属组chown [用户][:组] 文件
chmod修改权限chmod [ugoa][+-=][rwx] 文件chmod 755 文件
SUID执行时获得属主权限chmod u+s 文件4755
getfacl查看 ACLgetfacl 文件
setfacl设置 ACLsetfacl -m u:用户:权限 文件

掌握这些权限知识,你就能理解 Linux 多用户环境下的安全模型,并能进行权限维持和提权分析。


原创作者:浅了

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

3步实现专业级照片批量水印与EXIF数据自动化提取

3步实现专业级照片批量水印与EXIF数据自动化提取 【免费下载链接】semi-utils 一个批量添加相机机型和拍摄参数的工具,后续「可能」添加其他功能。 项目地址: https://gitcode.com/gh_mirrors/se/semi-utils 在数字摄影时代,摄影师和摄影爱好者经…

作者头像 李华
网站建设 2026/4/20 14:30:15

逆变器电流环PI参数设计实战:从理论到仿真一步到位

逆变器电流环PI参数设计实战:从理论到仿真一步到位 在电力电子领域,逆变器的性能直接影响着整个系统的稳定性和效率。作为核心控制环节之一,电流环的PI参数设计一直是工程师们关注的焦点。本文将带您深入理解电流环控制的本质,并通…

作者头像 李华
网站建设 2026/4/20 14:30:12

用HC-08蓝牙模块做智能小车?从选型、配对到STM32代码实现的完整指南

用HC-08蓝牙模块打造智能小车:从硬件选型到STM32控制的全流程实战 蓝牙遥控智能小车是嵌入式开发者入门的经典项目,而HC-08模块以其稳定的性能和简单的操作成为众多创客的首选。本文将带你从零开始,完成一个完整的蓝牙遥控智能小车项目。 1. …

作者头像 李华