一、前言
嵌入式 TFTP 搭建存在两种主流配置:新手普遍使用0777权限快速避坑,工程环境统一使用chown+775规范配置。
很多人疑惑:777 明明最简单,为什么工程坚决不用?chown 到底是不是多余命令?
本文精炼讲透 TFTP 权限本质、777 流行原因、安全隐患、标准规范。
二、为什么 90% 开发者习惯用 0777?
0777 普及率极高,不是合理,而是省事、避坑、教程同质化:
一键解决所有权限问题TFTP 以系统独立
tftp用户运行,目录默认是本地用户权限,天生不匹配。0777 全局开放读写,直接无视属主差异,上下传全部通吃。全网教程统一偷懒入门教程为降低难度,一律省略 chown,只教 777,新手长期被误导。
个人调试无感知风险单机隔离局域网,没人恶意攻击,所以大家感觉“777完全没问题”。
多设备临时协作最省心多板子、多用户调试,不用配用户组,不用改权限,零配置共享。
三、为什么你不写 chown 也能用?
本质:777 在给权限错误兜底。
TFTP 上传需要:目录属主权限。
目录是china的,服务是tftp的,身份不匹配。
777 的作用就是:不管是谁,全都允许读写,强行掩盖权限错位。
一旦改成标准 775,上传立刻报错 Permission denied。
四、工程禁止 777 的真实原因
TFTP无密码、无认证、明文传输,局域网任意设备可访问。
开 777 等于裸奔:
任何人可覆盖、篡改、删除你的内核、设备树、固件
可上传恶意镜像,导致整机失控
企业安全基线不允许全局可写目录,无法过审上线
777 只适合个人临时测试,严禁量产、团队、长期环境使用。
五、chown tftp:tftp 的真正作用
命令:
sudo chown tftp:tftp /home/china/tftpboot核心:统一服务用户与目录属主,从根源解决权限问题。
配置后:
TFTP 进程 = 目录所有者
上传、新建、删除文件天然合法
不再依赖 777 兜底权限
chown 不是多余命令,是 TFTP 正常工作的必要前提。
六、标准为什么是 775 权限?
Linux 三段权限逻辑:所有者|所属组|其他用户
775 = 内部全权操作,外部只读不可改
tftp 用户:完整读写、上传、删除
本机用户:完全操作
局域网设备:仅下载、禁止篡改、禁止上传
775 完美平衡调试便利性 + 安全性,是行业统一标准。
七、三种权限方案极简对比
配置方案 | 效果 | 安全性 | 适用场景 |
|---|---|---|---|
仅 777 | 上下传正常 | 极低(可被任意篡改) | 个人临时测试 |
仅 775(无 chown) | 下载正常,上传报错 | 高 | 纯只读服务器(极少用) |
chown + 775(标准) | 上下传完全正常 | 最高、安全可控 | 开发、团队、量产、长期复用 |
八、总结
1、777 能用是兜底,不是规范,隐患极大,仅适合临时偷懒。
2、TFTP 权限报错根源:服务用户与目录属主不匹配。
3、chown + 775是唯一稳定、安全、工程化的标准配置。