实现步骤:
(1)打开服务器的21端口(FTP端口)以及所有TCP端口。因为客户端和服务器每次建立连接时,都会使用任意一个TCP端口作为临时的socket。
(2)安装vsftpd:
sudo apt-get update
sudo apt-get install vsftpd
(3)新建一个文件夹作为FTP的工作目录,并新建FTP用户。通常使用一个独立的用户进行FTP服务,涉及安全问题。mkdir /home/username
(创建用户,其中username是随意的用户名)sudo useradd username -g ftp -d /home/username -m username
(添加用户)
(useradd -g:指定用户所属的群组。值可以使组名也可以是GID。用户组必须已经存在的,期默认值为100,即users)
(useradd -d:指定用户登入时的主目录,替换系统默认值/home/<用户名>)
(useradd -m:自动建立用户的登入目录)sudo passwd username
(设置用户密码)mkdir /home/username/pub
(新建一个pub目录用于存放文件)chmod 777 -R /home/username/pub
(赋予全部访问权限)
(chmod -R:对目前目录下的所有档案与子目录进行相同的权限变更)usermod -s /sbin/nologin username
(限制用户username只能通过ftp登陆,而不能直接登陆服务器)
新建/etc/vsftpd.chroot_list,并将username放进去,一个用户一行。
(4)配置vsftpd.conf(难点),以下简单列举几个,关于具体的配置请移步官方文档。
vi /etc/vsftpd.conf
- listen=NO
- anonymous_enable=NO(拒绝匿名登陆)
- write_enable=YES(可以上传文件)
- connect_from_port_20=YES(绑定20端口)
- chroot_local_user=YES
- chroot_list_enable=YES
- chroot_list_file=/etc/vsftpd.chroot_list
(上面三条配置实现的功能是:用户限制在自己的主目录下,用户名单来源于/etc/vsftpd.chroot_list)
(5)启动vsftpd服务
sudo service vsftpd start
sudo service vsftpd restart
sudo service vsftpd stop