【vsftp服务器连接超时】vsftp服务器连接500 OOPS: setuid错误

更新时间:2019-02-01    来源:J2EE/EJB/服务器    手机版     字体:

【www.bbyears.com--J2EE/EJB/服务器】

一、详细问题:

我在用ftp IP 地址登录FTP服务器时,系统提示我输入用户名和密码,可是仍然提示:500 OOPS: child died.

Connection closed by remote host.

服务器端是用的vsftp,开始以为是SELinux导致的问题,确认了一下SELinux已经关闭,百度了一圈,没结果。各种方法都不行。
从字面意思上理解好像是登陆用户的uid有问题,查了一下好像也没发下什么问题。
后来转到国外一个网站,找到了线索:是因为用户最多可开启的程序数受到了限制,不够用导致的。
用ulimit -u一查,只有1024,然后执行ulimit -u 10240
确认生效后重启vsftp,再连接,可以正常登陆。

感觉有点奇怪,服务器部署的时候应该对这些参数做了调优的,怎么现在会变为默认的1024?

继续检查了下其他限制,有问题的做了一下调整并写到文件里面去,以免以后重启失效,命令如下:

echo -ne ”
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
” >>/etc/security/limits.conf

echo -ne ”
ulimit -HSn 65535
ulimit -u 30720
ulimit -n 65535
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited
” >>/etc/profile

ulimit相关说明:

ulimit -a 显示目前资源限制的设定。
ulimit -c 设定core文件的最大值,单位为区块。
ulimit -d 程序数据节区的最大值,单位为KB。
ulimit -f shell所能建立的最大文件,单位为区块。
ulimit -H 设定资源的硬性限制,也就是管理员所设下的限制。
ulimit -m 指定可使用内存的上限,单位为KB。
ulimit -n 指定同一时间最多可开启的文件数。
ulimit -p 指定管道缓冲区的大小,单位512字节。
ulimit -s 指定堆叠的上限,单位为KB。
ulimit -S 设定资源的弹性限制。
ulimit -t 指定CPU使用时间的上限,单位为秒。
ulimit -u 用户最多可开启的程序数目。
ulimit -v 指定可使用的虚拟内存上限,单位为KB。


二、解决办法

1、 查看 SELinux 的状态: sestatus -b | grep ftp

2、 在出现的结果中可以看到

 ftp_home_dir off

tftpd_disable_trans off

之类。我们现在只要把其中之一设置为on就可以啦。

3、 setsebool -P ftpd_disable_trans on 或者 setsebool -P ftp_home_dir on

4、 重启vsftpd: service vsftpd restart

问题解决

本文来源:http://www.bbyears.com/jsp/47702.html