"500 oops socket" Debian 9 running via Linux Deploy 上成功部署 vsftpd 的解决方案(201901 原创)[成功完美简单极致]
- # 自从手机 root 后安装 Linux Deploy 开始安装了 Debian9 开始准备鼓捣 ftp 服务器(vsftpd).
- apt install vsftpd
- # 之后整整一个月百度而来的猛如虎的各种操作各种坑,
- # 且不说修改 vsftpd.conf 的各种参数,
- # 下载源码修改编译, 安装 gdb 调试, 通过网络教程禁用子进程改变 uid gid 的函数, 修改源码的 secuil.c 文件等等,
- # 用 FileZilla 连接时候永远都是 500 oops socket
- # 死的心都有了. 就差下载源码重新编译内核了, 但是我是新手, 这么高深的动作怎么会? 且不说手机上能说改就改 Linux 内核? 老大您就饶了我吧!
- # 之后, 一个命令 (strace) 拯救了我, 把我从 gdb 的苦海和 vsftpd.dbg 官方调试包中拖上岸. 我这次成功解决问题全赖此命令.
- # 新手都能好好琢磨出来 strace -v -f -s 2048 -p [vsftpd 服务的 pid], 一点一点分析出了问题的眉目. 在这里, 这个命令我就不赘述, 网上详解很多. 我现在着重说解决方案: 很短, 就几步而已
- nano /etc/passwd
- # 找到 nobody 用户把 65534:65534 改成 65534:3003 然后存盘, 就完事了. 记得把
- nano /etc/ftpusers
- # 里面的 "#root" 注释掉才能使用 root 用户, 然后为了方便上传删写文件
- nano /etc/vsftpd.conf
- # 里面最后加一行 "write_enable=YES", 但是删写文件仍然总是被拒绝. 即使重启也无效. 我后来按照百度教程, 还不得不在 / root 下创建了一个目录 pub 目录改属性
- chmod 777 /root/pub
- # 才成功的能开始使用上传和删除操作, 然后即使把 pub 删了, 重启等等, 都可以正常删写服务器内容了. 仿佛只要在 vsftpd.conf 里写 write_enable=YES 一行就完事, 但是一开始确实是被拒的. 不知为什么.
- # 在这次探究中, 我发现 nobody 用户才是 vsftpd 发生 500 oops socket 的关键之所在, 而并不是之前网上部分教程所提到的 vsftpd 没有子进程创建权限, 事实上根据下面的调试命令, 我发现 vsftpd 是完全具备子进程创建权限的, 而创建出的 nobody 用户子进程却不具备网络使用权限, 所以我才想到了修改 nobody 的所属组, 然后就完美解决了.
- # 这个命令就是发现上面原因的关键 strace -v -f -s 2048 -p [vsftpd 服务的 pid], 有兴趣鼓捣的可以试试. 但是输出的内容很长, 建议粘贴到 Word 中查看.
"500 oops socket" Debian 9 running via Linux Deploy 上成功部署 vsftpd 的解决方案(201901 原创)[成功完美简单极致]
来源: http://www.bubuko.com/infodetail-2933990.html