嵌入式Linux岗位常把权限问题当作基础排查题,既要会解码权限字符串,也要知道“执行位加上了”仍可能失败。
面试官这样问
你把一个脚本复制进开发板,执行时提示Permission denied。面试官让你解释755、644以及文件和目录的rwx权限,你怎么答?
参考回答|先讲结论
权限通常按所有者、所属组、其他用户三组配置。7代表rwx,5代表r-x,4代表r--,因此755常用于可执行文件或需要遍历的目录,644常用于普通数据文件。脚本拒绝执行,先看当前用户、文件属主、执行位和路径中的目录权限,再检查解释器及挂载参数等因素。
核心原理,面试官真正要听的
文件的r、w、x分别表示读、写、执行;目录的r是列目录项,w涉及创建删除条目,x主要是进入或穿越目录。`ls -l`中第一字符为文件类型,后面九位是三组权限;`chmod 755 script.sh`是设置权限,而`chown`是修改归属。对文件而言,chmod 644并不授予直接执行权限。

工程现场怎样检查与回答
STEP 01
先用`id`、`ls -l script.sh`和`namei -l /完整路径/script.sh`确认执行用户、文件权限及父目录是否可穿越。
STEP 02
检查脚本第一行的shebang,如`#!/bin/sh`,并确认解释器路径存在且可执行;留意Windows换行符CRLF。
STEP 03
若权限看似正确,再检查所在文件系统是否以`noexec`挂载,以及ACL、SELinux或AppArmor策略是否有限制。
STEP 04
改权限要遵循最小权限原则,不要直接用chmod 777掩盖真正的问题。
容易踩的坑
文件有r权限不等于能执行;目录有r却没有x也不代表一定能访问目录中的具体文件。执行失败也不总是文件本身没有x位。
追问练习
为什么`sh script.sh`可能运行,但直接`./script.sh`却报Permission denied?因为前者让shell读取脚本文件,后者要求内核执行脚本并检查相应执行权限与解释器路径。












