问题描述:在linux虚拟机中创建一个新用户并指定了宿主目录(命令: useradd -d /root/ftp ftp123),虚拟机中使用ftp软件是proftpd,
在使用ftp123用户远程通过ftp 登录linux服务器时报如下错误:
[root@linux188 ~]# ftp 10.44.1.153
Connected to 10.44.1.153.
220 ProFTPD 1.2.10 Server (Ftp Default Server) [10.44.1.153]
500 AUTH not understood
500 AUTH not understood
KERBEROS_V4 rejected as an authentication type
Name (10.44.1.153:root): test
331 Password required for test.
Password:
530 Login incorrect.
Login failed.
421 Service not available, remote server has closed connection
ftp>
问题分析:
1、根据报错信息“421 Service not available, remote server has closed connection”以为是proftpd服务没有开,
通过重启服务器(service proftpd restart)发现 其实服务是好的,重启proftpd服务之后再用ftp 去连接服务器还是
同样的错误;
2、以为服务器设置了防火墙,通过查看防火墙是关着的,那也不是防火墙的原因造成的;
3、检查宿主目录(/root/ftp)的权限 ,经查看/root目录:拥有者是有读写执行权限、所属组与其它用户都有读与执行权限,/root/ftp目录:
拥有者是有读写执行权限、所属组与其它用户有读权限,问题就出在这里了其它用户没有执行权限,导致ftp无法访问。
碰到此类问题一般解决思路:
1、首先检查有没有安装相应的ftp服务(proftpd、vsftpd、gsftp等);
2、检查相应ftp服务是否开启(service proftpd restart);
3、服务器是否设置了防火墙;
4、判断用户是否有访问宿主目录的权限,至少需要读与可执行权限;
5、检查相应ftp配置选项(/etc/proftpd.conf /etc/init.d/vsftp.conf)是否有限制;
6、用setup命令来查看系统服务中是否开启了多个ftp服务(gssftp、tftp、vsftp、proftpd、proftpd-xinetd),
如果开启了多个ftp服务,则关闭多余ftp服务(我的环境就只留proftpd-xinetd 表示proftpd服务随xinet
d服务启动),如果有开启了多个 ftp 服务的话,有可能导致各服务之间的冲突,ftp无法正常工作,
再修改/etc/proftpd.conf文件中ServerType值为 inetd(ServerType取值有standalone/xinetd/inetd),然后重启系统;
7、如果以上还是不能解决问题可以试试修改vi /etc/xinetd.d/gssftp.config文件,把server_args = -l -a中的“-a”删除,再重启xinetd服务。
总结:
检查宿主目录是否有权限,直接通过ftp去连接无法判断错误原因,可以通过telnet方式去检验,如果能正常登录,则说明宿主目录是有访问
权限的,如果没有权限的话会报如下类似错误,从错误信息中是大概可以判断是什么原因登录失败的,再修改相应目录访问权限
就可重新登录了,提示如下所示:
[root@linux188~]# telnet 10.44.1.153
Trying 10.44.1.153...
Connected to 10.44.1.153 (10.44.1.153).
Escape character is '^]'.
Asianux release 2.0 (Trinity)
Kernel 2.6.9-11.19AXsmp on an i686
login: test
Password:
No directory /root/ftp!
Logging in with home = "/".
-bash: /root/ftp//.bash_profile: 权限不够