news 2026/4/16 10:52:21

《Linux权限》Linux权限机制傻傻分不清?一篇带你搞定文件访问限制的终极奥秘!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《Linux权限》Linux权限机制傻傻分不清?一篇带你搞定文件访问限制的终极奥秘!
一. 先理清:Linux 权限的核心逻辑

Linux 作为多用户操作系统,通过“谁能操作”和“能做什么操作”两大维度控制文件访问,核心是 “按角色(身份)分配权限”

1.1 两类用户(人):超级用户与普通用户

Linux 中用户分为两种,权限差异极大

  • 超级用户(root):命令提示符为#,可执行系统中任何操作(如删除系统文件、修改权限),不受限制;
  • 普通用户:命令提示符为$,仅能操作自己权限范围内的文件(如修改自己的文档),受严格限制。

代码语言:javascript

AI代码解释

[root@VM-4-4-centos lesson5]# adduser yhr [root@VM-4-4-centos lesson5]# passwd yhr Changing password for user yhr. New password: Retype new password: passwd: all authentication tokens updated successfully.

通过su**,**su-命令可切换用户,示例:

  • su:只进行“身份切换”,不改变当前的工作环境(环境变量、工作目录等)。
  • su -:进行“完整的登录切换”,会模拟一次完整的登录过程,包括切换工作目录和加载目标用户的环境变量

代码语言:javascript

AI代码解释

# 普通用户whb切换到root(需输入root密码) [whb@bite-alicloud ~]$ su root Password: [root@bite-alicloud ~]# whoami # 验证当前用户 root # root切换到普通用户whb(无需密码) [root@bite-alicloud ~]# su whb [whb@bite-alicloud ~]$ whoami whb #su [zhangsan@server ~]$ pwd /home/zhangsan [zhangsan@server ~]$ su Password: # 输入root密码 [root@server zhangsan]# pwd # 注意:提示符显示还在zhangsan的目录 /home/zhangsan #su- [zhangsan@server ~]$ pwd /home/zhangsan [zhangsan@server ~]$ su - Password: # 输入root密码 [root@server ~]# pwd # 已经切换到root的家目录 /root

当然还有个指令是sudo,这个是不用切换用户,短暂的对普通用户进行提权,但是前提是该用户在白名单里(很好的解决了权限滥用的问题,想要使用提权操作必须root授权,这样其实也方便快速找到是谁出了问题)

sudo vs su 主要区别对比:

特性

sudo

su

认证方式

使用当前用户密码

使用目标用户密码

权限粒度

可精细控制每个命令

获得完整的目标用户会话

日志记录

有详细的命令日志

只有切换用户记录

默认行为

执行单条命令

开启新的shell会话

配置文件

/etc/sudoers

无独立配置

安全性

更高(最小权限原则)

较低(全权访问)

使用场景

临时执行特权命令

需要长时间以目标用户工作

示例

代码语言:javascript

AI代码解释

# 初始状态 [haha_118@bite-aticloud ~]$ lt total 4 drw.rw.r-x 2 haha_118 haha_118 4096 Oct 22 19:01 dir -rw-rw-r-- 1 haha_118 haha_118 0 Oct 22 19:01 haha.txt # 切换到 root 用户,输入root的密码 [haha_118@bite-aticloud ~]$ su - Password: [root@bite-aticloud ~]# whoami root # root 用户操作,检查并编辑 sudoers 文件,将haha_118 用户添加到了 sudoers 配置 #这个具体的操作后面再讲 [root@bite-aticloud ~]# ls /etc/sudoers /etc/sudoers [root@bite-aticloud ~]# vim /etc/sudoers # 返回普通用户,使用 sudo 权限 [root@bite-aticloud ~]# logout [haha_118@bite-aticloud ~]$ whoami haha_118 [haha_118@bite-aticloud ~]$ sudo touch test.txt [sudo] password for haha_118:

1.2 三类访问者:文件权限的 “身份标签”

每个文件 / 目录都有三类 “访问者(角色,身份)”,对应不同的权限范围,这是权限控制的核心:

  • u(User,所有者):文件的创建者(如hello.txt的所有者是whb),对文件权限拥有最高控制权
  • g(Group,所属组):文件归属的用户组(如hello.txt属于whb组),同组用户共享组权限;
  • o(Others,其他用户):既不是所有者也不在所属组的用户(如系统中的yhr用户),权限最严格

通过ls -l可直接查看文件的 “身份标签”,示例:

代码语言:javascript

AI代码解释

# 格式:文件类型 权限 硬链接数 所有者 所属组 大小 时间 文件名 [whb@bite-alicloud ~]$ ls -l hello.txt -rw-rw-r-- 1 whb whb 29 Oct 22 20:56 hello.txt # 解读:所有者=whb,所属组=whb,其他用户

表达:hello.txt文件的拥有者是whb,具有读写的权限。所属组是whb,具有读写的权限。others其它用户具有读的权限

1.3 三种基本权限:读、写、执行

Linux 为文件 / 目录定义了三种基本权限,不同权限对应不同操作能力,且对 “文件” 和 “目录” 的含义不同:

权限符号

数字值

对文件的作用

对目录的作用

r(读)

4

查看文件内容(如cat)

列出目录内文件(如ls)

w(写)

2

修改文件内容(如vim,echo)

创建/删除/移动目录内文件(如touch)

x(执行)

1

运行文件(如./script.sh)

进入目录(如cd)

-(无)

0

无法查看文件内容

无法列出目录内容或进入目录

带了x的不一定就是可执行了,还需要它本身就是一个可执行文件才行。

整体图示理解:


二. 权限的两种表示法:符号与数字

权限有 “符号表示法”(直观易懂)和 “数字表示法”(高效简洁)两种,实际使用中可根据场景选择

2.1 符号表示法:精准调整单个权限

格式chmod [访问者][±=][权限]文件名,其中:

+:增加权限,-:删除权限,=:强制设置权限;

访问者u**(所有者)、**g**(所属组)、**o**(其他用户)、**a**(所有用户)**。

操作示例

代码语言:javascript

AI代码解释

# 1. 给所有者(u)增加执行(x)权限 [whb@bite-alicloud ~]$ chmod u+x hello.txt [whb@bite-alicloud ~]$ ls -l hello.txt -rwxrw-r-- 1 whb whb 29 Oct 22 20:56 hello.txt # u权限从rw-变为rwx # 2. 给所属组(g)删除写(w)权限 [whb@bite-alicloud ~]$ chmod g-w hello.txt [whb@bite-alicloud ~]$ ls -l hello.txt -rwxr--r-- 1 whb whb 29 Oct 22 20:56 hello.txt # g权限从rw-变为r-- # 3. 给其他用户(o)增加读+写权限(o+rw) [whb@bite-alicloud ~]$ chmod o+rw hello.txt [whb@bite-alicloud ~]$ ls -l hello.txt -rw----rw- 1 whb whb 29 Oct 22 20:56 hello.txt # 其他用户权限变为rw- # 4. 给其他用户(o)强制设置读+写(rw)权限 [whb@bite-alicloud ~]$ chmod o=rw hello.txt [whb@bite-alicloud ~]$ ls -l hello.txt -rwxr--rw- 1 whb whb 29 Oct 22 20:56 hello.txt # o权限从r--变为rw-
2.2 数字表示法:快速设置所有权限

由于r=4w=2x=1,可将三类访问者的权限用 “三位八进制数字” 表示(所有者 + 所属组 + 其他用户),格式:chmod 数字权限 文件名

常见权限组合及示例(参考)

数字权限

符号权限

含义(所有者-所属组-其他用户)

适用场景

755

rwxr-xr-x

所有者:读+写+执行,组和其他:读+执行

可执行脚本、公共目录

644

rw-r–r–

所有者:读+写,组和其他:只读

普通文档、配置文件

700

rwx------

所有者:读+写+执行,组和其他:无权限

私密文件、个人脚本

600

rw-------

所有者:读+写,组和其他:无权限

敏感配置(如密钥文件)

777

rwxrwxrwx

所有用户:读+写+执行

临时共享目录(谨慎使用)

400

r--------

仅所有者可读,其他无权限

只读私密文件(如证书)

示例

代码语言:javascript

AI代码解释

# 数字法:将hello.txt权限设为600(仅所有者读写) [whb@bite-alicloud ~]$ chmod 600 hello.txt [whb@bite-alicloud ~]$ ls -l hello.txt -rw------- 1 whb whb 29 Oct 22 20:56 hello.txt # 权限重置为rw-------

整体图示理解补充:身份匹配只匹配一次,比如whb又是文件的所有者又是所属组,那如果他所有者的权限没有w(写),就算所属组的权限有写也没用,只匹配一次


三. 权限实战:修改与验证

掌握了权限的 “身份” 和 “表示法”,接下来通过chmod(改权限)、chown(改所有者)、chgrp(改所属组)三大命令实战操作,并验证效果

3.1 修改权限:chmod命令

chmod是修改权限的核心命令,支持符号法和数字法(前面其实已经用过了),且可通过-R递归修改目录权限(含子目录和文件)。

示例 1:修改单个文件权限

代码语言:javascript

AI代码解释

# 符号法:给hello.txt的所有用户(a)增加读权限 [whb@bite-alicloud ~]$ chmod a+r hello.txt [whb@bite-alicloud ~]$ ls -l hello.txt -rw-rw-r-- 1 whb whb 29 Oct 22 20:56 hello.txt # 所有用户均有读权限 # 数字法:将hello.txt权限设为600(仅所有者读写) [whb@bite-alicloud ~]$ chmod 600 hello.txt [whb@bite-alicloud ~]$ ls -l hello.txt -rw------- 1 whb whb 29 Oct 22 20:56 hello.txt

示例 2:递归修改目录权限

代码语言:javascript

AI代码解释

# 递归设置test目录及其子文件权限为755(所有者全权限,其他只读+执行) [whb@bite-alicloud ~]$ chmod -R 755 test [whb@bite-alicloud ~]$ tree -p test # 查看目录内权限 test ├── [drwxr-xr-x] subdir │ └── [-rwxr-xr-x] script.sh └── [-rwxr-xr-x] readme.txt
3.2 修改所有者与所属组:chown与chgrp
  • chown:修改文件 / 目录的所有者(需 root 权限或文件所有者)
  • chgrp:修改文件 / 目录的所属组(需 root 权限或文件所有者)

chown需要别人接受才行,上面的chmod不用(这个相当于改自己的东西,chown相当于给别人东西得经过别人接受)。当然如果是root账户的话不受限制或者使用sudo,chgrp的话分情况来看

操作示例

代码语言:javascript

AI代码解释

# 1. root将hello.txt的所有者改为zpw(普通用户无此权限) [root@bite-alicloud ~]$ chown zpw hello.txt [root@bite-alicloud ~]$ ls -l hello.txt -rw------- 1 zpw whb 29 Oct 22 20:56 hello.txt # 所有者从whb变为zpw # 2. 普通用户whb直接修改(无sudo,权限不足,报错) [whb@bite-alicloud ~]$ chown whb hello.txt chown: changing ownership of 'hello.txt': Operation not permitted # 3. 普通用户whb用sudo修改hello.txt的所有者为litao(需输入whb自己的密码,且whb已在sudoers配置中) [whb@bite-alicloud ~]$ sudo chown litao hello.txt [sudo] password for whb: # 输入whb的密码 [whb@bite-alicloud ~]$ ls -l hello.txt -rw------- 1 litao zhangsan 29 Oct 22 20:56 hello.txt # 所有者从zpw变为litao # 4. 修改hello.txt的所属组为zhangsan(需root或所有者) [root@bite-alicloud ~]$ chgrp zhangsan hello.txt [root@bite-alicloud ~]$ ls -l hello.txt -rw------- 1 zpw zhangsan 29 Oct 22 20:56 hello.txt # 所属组从whb变为zhangsan # 5. 假设whb是hello.txt的所有者,且属于zhangsan组(主组或附加组) [whb@bite-alicloud ~]$ chgrp zhangsan hello.txt [whb@bite-alicloud ~]$ ls -l hello.txt -rw-rw-r-- 1 whb zhangsan 29 Oct 22 20:56 hello.txt # 所属组从原组变为zhangsan # 6. 普通用户whb(此时他不是文件的所有者,且目标组不在自身组列表中)用sudo修改hello.txt的所属组为whb组 [whb@bite-alicloud ~]$ sudo chgrp whb hello.txt [whb@bite-alicloud ~]$ ls -l hello.txt -rw------- 1 litao whb 29 Oct 22 20:56 hello.txt # 所属组从zhangsan变为whb

关于所属组的一些补充: 这里关于添加组啥的操作就不演示了,文末的思维导图里有,大家感兴趣也可以自己下去查阅学习一下,现在来说组操作其实用的也比较少了

3.3 验证权限:模拟不同用户操作

权限是否生效,需通过不同用户的实际操作验证。以 “目录写权限导致文件被删” 为例,理解权限的实际影响

代码语言:javascript

AI代码解释

# 1. root设置/home目录为777(所有用户可写) [root@bite-alicloud ~]$ chmod 777 /home [root@bite-alicloud ~]$ ls -ld /home drwxrwxrwx. 3 root root 4096 Oct 22 15:58 /home # 2. root在/home创建root.c(所有者为root) [root@bite-alicloud ~]$ touch /home/root.c [root@bite-alicloud ~]$ ls -l /home/root.c -rw-r--r--. 1 root root 0 Oct 22 15:59 /home/root.c # 3. 普通用户litao删除root.c(因/home有写权限,成功删除) [root@bite-alicloud ~]$ su - litao [litao@localhost ~]$ rm /home/root.c rm: remove regular empty file '/home/root.c'? y # 确认删除 [litao@localhost ~]$ ls /home/root.c # 验证删除 ls: cannot access '/home/root.c': No such file or directory


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

5、树莓派渗透测试准备指南

树莓派渗透测试准备指南 1. 安全连接树莓派 可以使用配置中 accept 参数指定的 IP 地址和端口安全连接到树莓派,这里可以借助 ncat 工具。 - ncat 工具 :大多数版本的 Kali Linux(包括树莓派 3 的基础镜像)默认安装了 ncat 。 ncat ( https://nmap.org/ncat…

作者头像 李华
网站建设 2026/3/31 3:21:11

如何快速部署Florence-2:多任务视觉AI的终极指南

如何快速部署Florence-2:多任务视觉AI的终极指南 【免费下载链接】Florence-2-large-ft 项目地址: https://ai.gitcode.com/hf_mirrors/microsoft/Florence-2-large-ft Florence-2-large-ft是微软推出的先进视觉基础模型,采用统一序列到序列架构…

作者头像 李华
网站建设 2026/4/15 10:23:23

免费视频去水印终极指南:3分钟学会专业级水印消除

免费视频去水印终极指南:3分钟学会专业级水印消除 【免费下载链接】video-watermark-removal Remove simple watermarks from videos with minimal setup 项目地址: https://gitcode.com/gh_mirrors/vi/video-watermark-removal 还在为视频中那些烦人的水印而…

作者头像 李华
网站建设 2026/4/7 1:38:49

Home Assistant通知系统终极指南:从入门到精通

Home Assistant通知系统终极指南:从入门到精通 【免费下载链接】home-assistant.io :blue_book: Home Assistant User documentation 项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io Home Assistant通知系统是构建智能家居提醒体系的核…

作者头像 李华
网站建设 2026/4/9 16:21:26

40、UNIX 系统管理职业指南

UNIX 系统管理职业指南 在 UNIX 系统管理领域,管理员需要具备多种技能和承担多项职责,同时在求职过程中也有诸多要点需要注意。 管理员职责与能力 系统管理员除了基本职责外,还有一些常被忽视的职能,以下是管理员应根据自身专业水平掌握的技术知识相关职能: 1. 安装和…

作者头像 李华