在配置 ImmortalWrt 路由器以实现网络共享时,确保正确设置文件系统权限是关键。以下是对您描述问题的分析和解决方案的详细步骤:
问题描述
当您在 ImmortalWrt 路由器上挂载新分区 /dev/mmcblk0p7 到 /data 目录后,尝试通过 Windows 访问该目录的 SMB 共享时,可能会遇到访问被拒绝或没有权限的错误。尽管路由器连接 USB 存储设备并共享时没有问题,但新挂载的分区权限设置限制了 SMB 服务用户的访问。
问题分析
新挂载的分区默认的文件系统权限限制了 SMB 服务用户的访问。SMB 服务通常以一个非 root 用户(例如 nobody)运行,但新分区的文件和目录的所有者通常是 root,并且权限设置较为严格,导致 SMB 服务用户无法读取或写入。
解决步骤
- SSH 登录路由器:使用 SSH 客户端(例如 MobaXterm_Portable)连接到 ImmortalWrt 路由器。
测试权限:
临时赋予最高权限(用于测试):
chmod 777 /data chmod 777 /data/lost+found #如果存在lost+found目录,也需要修改
- 如果测试访问成功,说明是权限问题,则需要安全配置权限。
更改目录所有者和所属组:
chown -R nobody:nogroup /data
设置合适的目录权限:
chmod 775 /data
- 确认 lost+found 目录权限:通常 lost+found 目录不需要共享,保持默认权限即可。如果需要共享,参照上述步骤对 lost+found 目录进行权限更改。
验证权限:
ls -l /data
检查 SMB 服务配置:登录 ImmortalWrt 的 LuCI 管理界面,检查 SMB 服务的配置:
- 确保共享路径指向
/data
。 - 确认访问权限设置允许你的 Windows 用户访问(或允许匿名访问)。
- 确认用户账户配置正确(如果需要)。
- 确保共享路径指向
重启 SMB 服务或路由器:
/etc/init.d/samba restart
- 在 Windows 上测试访问:在 Windows 资源管理器中,输入 \<路由器IP地址> 或 \<路由器主机名> 尝试访问共享文件夹。例如 \192.168.10.1
使用到的命令总结
SSH 连接:
ssh root@<路由器IP地址>
修改目录权限(临时测试用,高风险!):
chmod 777 /data
更改目录所有者和所属组:
chown -R nobody:nogroup /data
设置合适的目录权限(安全!):
chmod 775 /data
查看目录权限:
ls -l /data
重启 samba 服务(如果使用 samba):
/etc/init.d/samba restart
注意事项
chmod 777
的风险:chmod 777
赋予所有用户读、写、执行权限,在生产环境中非常危险。只用于临时测试,确认是权限问题后,务必使用更安全的权限设置。chmod 775 /data
比chmod 777 /data
更安全。让所有者和组具有读、写和执行权限,而其他用户具有读和执行权限,但没有写入权限。
额外排查
- 防火墙设置:确保路由器和 Windows 防火墙允许 SMB 流量通过(端口 445 等)。
- SMB 版本协商:确认 Windows 和路由器支持相同的 SMB 协议版本(路由器网络共享常规设置,勾选 “允许旧协议与身份验证(不安全)”)。
- 网络发现:确保 Windows 上的
评论已关闭