我的测试学习站TEST LEARNING HUB
开始学习
首页/精华文章/6. Linux 文件权限怎么理解

6. Linux 文件权限怎么理解

Linux 文件权限是测试工程师在测试环境中经常遇到的基础问题。很多同学觉得权限是运维或开发的事,测试只要会点页面和接口就行。但真实项目里,脚本无法执行、日志写不进去、上传文件失败、配置文件读不到、服务启动异常,都可能和 Linux 文件权限有关。面试官问文件权限,并不是要你背完整 Linux 权限体系,而是想看你是否具备测试环境问题的基本判断能力。

测试岗位理解文件权限,要围绕实际场景来学:为什么脚本执行报 permission denied?为什么服务启动后没有日志?为什么上传文件接口返回成功但文件没落盘?为什么配置文件明明存在,服务却说读取失败?这些问题如果能从权限角度初步排查,就能明显提升你的问题定位能力。

一、Linux 文件权限解决什么问题

Linux 是多用户系统。不同用户对不同文件和目录有不同操作权限。权限的核心目的是控制谁能读、谁能写、谁能执行。

对测试来说,常见权限问题包括:

  • 自动化脚本没有执行权限;
  • 服务没有权限读取配置文件;
  • 服务没有权限写日志;
  • 文件上传目录没有写权限;
  • 部署包所属用户不对;
  • Docker 挂载目录权限不匹配;
  • 测试数据文件无法读取;
  • 启动脚本无法执行。

这些问题都可能让功能测试或接口测试失败,但根因并不是业务代码,而是环境权限。

二、怎么看文件权限

最常用命令是:

ls -l

你会看到类似:

-rwxr-xr-- 1 app app 1024 start.sh

第一列就是权限信息,可以拆开理解。

第一个字符表示文件类型:

  • -:普通文件;
  • d:目录;
  • l:软链接。

后面 9 个字符分成三组:

rwx r-x r--

分别代表:

  • 文件所有者权限;
  • 所属组权限;
  • 其他用户权限。

其中:

  • r 表示读;
  • w 表示写;
  • x 表示执行;
  • - 表示没有该权限。

例如 rwxr-xr-- 表示:所有者可读写执行,组用户可读可执行,其他用户只读。

三、读写执行权限怎么理解

1. r 读权限

对文件来说,读权限表示可以查看文件内容。比如能不能 cat config.yml。

对目录来说,读权限表示可以列出目录内容。

测试场景:服务读取配置文件失败,可能是运行服务的用户没有读权限。

2. w 写权限

对文件来说,写权限表示可以修改文件内容。

对目录来说,写权限表示可以在目录中创建、删除或重命名文件。

测试场景:日志目录没有写权限,会导致服务无法写日志;上传目录没有写权限,会导致文件上传失败。

3. x 执行权限

对文件来说,执行权限表示可以运行这个文件,比如 shell 脚本。

对目录来说,执行权限表示可以进入该目录。

测试场景:执行 sh start.sh 或 ./start.sh 时,如果没有执行权限,可能报 permission denied。

四、chmod 怎么用

chmod 用来修改权限。

给脚本增加执行权限:

chmod +x start.sh

给所有者增加写权限:

chmod u+w config.yml

数字权限也常见:

chmod 755 start.sh
chmod 644 config.yml

数字含义:

  • 4:读;
  • 2:写;
  • 1:执行。

所以:

  • 7 = 读 + 写 + 执行;
  • 5 = 读 + 执行;
  • 4 = 只读。

755 常用于脚本或目录,644 常用于普通配置文件。

五、为什么不要无脑 chmod 777

很多初学者遇到权限问题就 chmod 777,这在面试中会减分。

777 表示所有用户都可以读、写、执行。测试环境临时排查可能有人这么做,但它不安全,也容易掩盖真实问题。

更专业的表达是:

我不会上来就 chmod 777,而是先确认当前文件权限、所属用户和服务运行用户,再按最小权限原则调整。比如脚本缺执行权限就加 +x,日志目录缺写权限就给运行用户写权限。

这样回答能体现安全意识。

六、chown 是什么

chown 用于修改文件所有者。

chown app:app application.log

如果服务以 app 用户运行,但日志目录属于 root,服务可能没有写权限。这时就可能需要调整所属用户,而不是单纯 chmod。

测试不一定经常执行 chown,但要知道权限问题不只和 chmod 有关,也和文件所属用户有关。

七、常见权限问题案例

案例 1:启动脚本无法执行

现象:执行脚本时报:

Permission denied

排查:

ls -l start.sh

发现没有 x 权限。处理:

chmod +x start.sh

然后重新执行。

案例 2:服务没有日志输出

现象:服务启动后没有生成日志文件。

排查:

  1. 查看日志目录是否存在;
  2. ls -l 查看目录权限;
  3. 确认服务运行用户;
  4. 查看启动日志是否有 permission denied;
  5. 给运行用户写权限或调整目录归属。

案例 3:文件上传失败

现象:上传接口返回失败或页面提示上传异常。

排查:

  1. 查看接口响应;
  2. 查服务日志;
  3. 日志中发现上传目录无法写入;
  4. 查看上传目录权限;
  5. 修复权限后重新上传;
  6. 验证文件是否落盘,数据库记录是否正确。

案例 4:配置文件读取失败

现象:服务启动失败,日志提示配置文件无法读取。

排查:

  1. 确认配置文件路径;
  2. ls -l config.yml 查看权限;
  3. 确认服务运行用户是否有读权限;
  4. 修改权限或所属用户;
  5. 重启服务并验证。

八、目录权限和文件权限区别

目录权限容易被忽略。

即使文件本身有读权限,如果上级目录没有执行权限,用户也可能无法访问这个文件。

例如服务要写日志到:

/data/app/logs/application.log

不仅 application.log 要有权限,/data、/data/app、/data/app/logs 这些目录也要能访问。

测试排查权限问题时,不能只看目标文件,还要看目录链路。

九、Docker 场景下的权限

Docker 挂载目录时也常遇到权限问题。比如宿主机目录挂载到容器内,容器中的服务用户没有写权限,就可能导致日志写入失败或文件上传失败。

排查方向:

  • 宿主机目录权限;
  • 容器内运行用户;
  • 挂载路径是否正确;
  • 容器日志是否有 permission denied;
  • 是否需要调整目录归属或运行用户。

这类问题在测试环境中很常见,尤其是日志目录和上传目录。

十、面试回答模板

如果面试官问“Linux 文件权限怎么理解”,可以这样回答:

Linux 文件权限主要控制不同用户对文件或目录的读、写、执行权限。我一般用 ls -l 查看权限,权限分为所有者、所属组和其他用户三组,r 是读,w 是写,x 是执行。测试中常见权限问题包括脚本无法执行、日志无法写入、配置文件无法读取、上传目录没有写权限。遇到这类问题,我会先确认文件权限、目录权限、所属用户和服务运行用户,再根据场景用 chmod 或 chown 调整,不会直接无脑 chmod 777。

十一、常见追问

追问:脚本 permission denied 怎么办?

先用 ls -l 查看脚本是否有执行权限,如果没有,可以 chmod +x script.sh,然后重新执行。

追问:为什么不建议 chmod 777?

因为 777 给所有用户读写执行权限,不安全,也可能掩盖真实权限配置问题。应该按最小权限原则处理。

追问:日志写不进去怎么查?

看日志目录是否存在、目录权限是否允许服务运行用户写入、服务日志中是否有 permission denied。

追问:目录执行权限有什么用?

目录的执行权限表示用户能进入该目录。没有目录执行权限,即使文件有读权限,也可能访问不到。

十二、练习清单

  1. 用 ls -l 查看文件权限;
  2. 理解 rwx 三种权限;
  3. 理解所有者、所属组、其他用户;
  4. 用 chmod +x 给脚本加执行权限;
  5. 理解 755 和 644;
  6. 查看文件所属用户;
  7. 理解 chown 的作用;
  8. 模拟日志目录无写权限;
  9. 模拟上传目录权限问题;
  10. 准备权限问题面试回答。

Linux 文件权限不需要背得很复杂,但测试必须能把权限和脚本执行、日志写入、配置读取、文件上传这些场景联系起来。这样面试回答才不是死记硬背。

配套刷题: