vsftpd搭建ftp服务器

今天使用vsftpd搭建ftp服务器发现在内网测试机没问题,但是外网测试的时候却不能访问。

使用Windows的ftp访问的时候直接提示500 OOPS,然后就没有了其他错误了。
最后使用Linux ftp localhost时提示:

500 OOPS: cannot change directory:/home/ftp
Login failed.

网上都说是SELinux的问题,但是发现状态为disable

仔细看了后面参考文章,发现我的home的目录的权限是700,然后修改为755然后问题就解决了。

参考文章:https://www.server110.com/vsftpd/201402/6312.html

vsftpd搭建教程:http://www.cnblogs.com/kluan/p/4821537.html

添加新用户步骤:

  • 添加Linux用户:
useradd -d /home/ftp/ -g ftp -s /sbin/nologin ftpuser
  • 设置密码:
passwd ftpuser
  • 修改vsftpd配置:
# /etc/vsftpd/chroot_list 修改根目录
ftpuser
# 重启服务
service vsftpd restart

注意一定要修改chroot_list,否者根目录就会是系统根目录。

如果使用的是sftp需要修改/etc/ssh/sshd_config,添加如下配置:

Subsystem sftp internal-sftp
Match Group sftp
    ChrootDirectory %h
    ForceCommand internal-sftp
Match User ftpuser
    ChrootDirectory %h
    ForceCommand internal-sftp

这里有几个问题需要注意:

  1. 如果使用了sftp的话,那么最上层也就是sftp用户根目录的用户必须是root,最大权限只能是755(其他用户不能写),否者登陆不了,提示:Current connection closed.
  2. 如果同时需要设置sftp和ftp,根目录的属主为root,权限为755,不然ftp就没有权限浏览,提示:
500 OOPS: ERROR:>	Authentication failed.
cannot change directory:/home/ftpuser/
500 OOPS: child died
ERROR:>	Authentication failed.

然后写权限,需要另外在里面建一个文件夹,设置属主为ftpuser才可以。看一下权限:

#ftpuser的根目录/home/ftpuser
drwxr-xr-x  4 root   root      4096 7月  17 14:26 ftpuser
#里面的读目录和写目录
drwxr-xr-x 2 root     root 4096 7月  17 03:00 read
drwxr-xr-x 2 ftpuser  root 4096 6月   8 2017 write