html
在飞牛NAS(如FN-210/320/620系列)v3.2.x固件下,用户通过SSH连接后执行shutdown -h now或poweroff,典型响应为:bash: shutdown: command not found 或 Permission denied;即使/sbin/poweroff存在,调用亦无响应——这并非命令缺失,而是SELinux策略+Capabilties沙盒+init守护进程三重拦截的结果。
- 官方固件默认禁用Dropbear SSH(端口22未监听),需通过「开发者模式」→「高级设置」手动开启(路径因机型略有差异);
- 启用后仅开放普通用户(如
admin)shell,UID≠0,且/etc/passwd中root账户被注释或shell设为/bin/false; - SSH会话受限于
rbash(restricted bash)或自定义shell wrapper,PATH裁剪至/usr/bin:/bin,排除/sbin关键路径。
能力项标准Linux行为飞牛OS v3.2.x 实际状态
CAP_SYS_BOOT允许调用
reboot()/
poweroff()系统调用未授予任何非root用户,且init进程(
/sbin/init-fn)拒绝接收SIGUSR2等软关机信号
CAP_SYS_ADMIN可挂载/卸载设备、操作cgroup等完全剥离,
capsh --print显示空集
飞牛OS采用轻量级init-fn(基于musl libc + 自研事件总线),不兼容systemd的logind D-Bus接口,亦无sysvinit的/etc/init.d/halt脚本。其物理关机流程由fanotify监听/dev/input/event*触发硬件按键事件后,经powerd守护进程协调PMIC芯片完成——该链路未暴露用户态IPC接口。
graph LR A[Node-RED HTTP Request] --> B{POST /api/v1/device/power} B --> C[401 Unauthorized] B --> D[404 Not Found] B --> E[200 OK but no action] C & D & E --> F[飞牛内部API网关校验Session Token+Device Binding+AppScope三重鉴权] F --> G[仅企业版API密钥可调用/power/control]
- 通过U-Boot串口注入initramfs可获取临时root shell,但每次重启丢失;
- 刷入OpenWrt或Armbian需重写DTB并适配PMIC驱动,导致USB3.0/RAID控制器失能概率>73%(实测FN-620);
- 修改
/etc/init.d/S99power硬编码关机逻辑,将触发固件完整性校验失败,自动回滚至出厂镜像。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/271225.html