FTP服务器搭建之VSFtp

1.在azure云上创建虚拟机,新建并挂载2T硬盘,建立hj账号。其它均默认。

2. azure服务器开通ICMP服务,ftp20、ftp21,3600-3666 端口。

3.优化系统设置

优化进程优先级

pidof sshd |xargs renice -n -20
pidof ftpd |xargs renice -n -20

关闭防火墙和SELinux

ubuntu默认防火墙是关闭的

vi /etc/selinux/config

#SELINUX=enforcing #注释掉

#SELINUXTYPE=targeted #注释掉

SELINUX=disabled #增加

:wq! #保存退出

setenforce 0 #让SELinux进入Permissive模式(宽容模式)

4.安装vsftpd服务器

sudo apt-get install vsftpd

5.配置vsftpd.conf文件

sudo vi /etc/vsftpd.conf

listen=NO

listen_ipv6=YES
#这个是设置是否允许匿名登录ftp服务器,不允许。
anonymous_enable=NO
#是否允许本机用户登录
local_enable=YES

#允许上传文件到ftp服务器
write_enable=YES

dirmessage_enable=YES

use_localtime=YES

xferlog_enable=YES

connect_from_port_20=YES
#下面三项禁止用户切换上级目录的权限
chroot_local_user=YES
chroot_list_enable=NO
allow_writeable_chroot=YES

# (default follows)  允许chroot_list文件中配置的用户登录此ftp服务器。
chroot_list_file=/etc/vsftpd.chroot_list

# 该选项应该是一个空目录名。而且,ftp用户对该目录没有写权限。偶尔在vsftpd不需要访问文件系统时,该目录被用作一个安全的chroot() jail(监狱)。
secure_chroot_dir=/var/run/vsftpd/empty

pam_service_name=vsftpd

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
#配置ftp服务器的上传下载文件所在的目录。
local_root=/data/ftpfile/share
#增加随机端口范围,被动模式可以使用随机端口,解决客户端连接FTP时无法列出目录问题。
pasv_max_port=6666
pasv_min_port=6600

6.创建ftp组、用户、访问目录

创建ftp组

groupadd -g 2001 ftpgroup

创建ftp用户

为用户指定参数的useradd命令:

  常用命令行选项:

  • -d: 指定用户的主目录

  • -m: 如果存在不再创建,但是此目录并不属于新创建用户;如果主目录不存在,则强制创建; -m和-d一块使用。

  • -s: 指定用户登录时的shell版本

    -M: 不创建主目录

sudo useradd -d "/home/ftpuser" -m -s "/bin/bash" -g ftpgroup ftpuser
sudo passwd
#输入密码

创建ftp目录

mkdir /data/ftpfile/share

chown -R ftpuser.ftpgroup /data/ftpfile/share

7.给ftp服务器配置使用用户等信息

将允许使用此ftp服务器的用户名称放到chroot_list文件中

sudo vim /etc/vsftpd.chroot_list

ftpuser

8.重启ftp,并且测试

sudo /etc/init.d/vsftpd restart
或
sudo systemctl restart vsftpd

上传数据

ftp> mput libzmq.tgz .

下载数据

ftp> get libzmq.tgz
ftp> mget *.* (回车)

断开连接

ftp> bye