1、安装命令

sudo apt-get install vsftpd

Ubuntu上ftp安装和虚拟用户创建_配置文件


2、安装完毕,检查vsftpd进程是否已启动,可以查看进程或者查看监听端口

ps -ef | grep vsftpd

Ubuntu上ftp安装和虚拟用户创建_ubuntu_02


netstat -tnlp | grep 21

Ubuntu上ftp安装和虚拟用户创建_虚拟用户_03


端口21正在被监听

3. 匿名用户登录

安装完后不用做任何配置既可用匿名方式进行访问,默认的ftp文件夹为/srv/ftp。

登录可以在浏览器中,文件夹输入框中以及类型windows/Linux终端中进行测试。

建议使用windows/Linux终端测试,失败了会有错误输出,可以根据错误进行调试。

更改配置文件vsftpd.conf

vim /etc/vsftpd.conf

将anonymous_enable=NO 改为anonymous_enable=YES

Ubuntu上ftp安装和虚拟用户创建_虚拟用户_04


修改完成后重启服务

sudo /etc/init.d/vsftpd restart匿名登录,用户名称为ftp,密码不输入,直接回车

Ubuntu上ftp安装和虚拟用户创建_配置文件_05


4、 建立各账户的home目录

在/home目录建立ftp账户ftpdir目录

mkdir -p /home/ftp/ftpdir

然后在ftpdir目录下创建用户admin, test的目录

cd /home/ftp/ftpdir

mkdir -p /home/ftp/ftpdir/admin test

5、为虚拟用户创建本地系统用户

虚拟用户家目录为 /home/ftp/ftpdir, 用户登录终端设为/bin/false(即使之不能登录系统)

sudo useradd ftp -d /home/ftp/ftpdir/ -s /bin/false
sudo chown -R ftp:ftp /home/ftp/ftpdir

6、创建虚拟用户数据库
新建loguser.txt文件,
sudo touch /home/loguser.txt
vim /home/loguser.txt
里面输入虚拟用户名和密码,格式如下:
admin
123456
test
123456
注意不要多空格和空行,其中奇数行为用户名,偶数行为密码。
最后一行需要回车(否则建立数据库文件时无法识别最后一行,导致报奇数行错误)。
新建一个文件夹/etc/vsftpd,放置配置文件
sudo mkdir /etc/vsftpd
然后执行
sudo db4.8_load -T -t hash -f /home/loguser.txt /etc/vsftpd/vsftpd_login.db
最后设置一下数据库文件的访问权限
sudo chmod 600 /etc/vsftpd/vsftpd_login.db

安装生成虚拟帐号数据库工具db
方法一:
首先要安装libdb4.8_4.8.30-11ubuntu1_amd64.deb和db4.8-util_4.8.30-11ubuntu1_amd64.deb
cd /home/ftp
wget http://archive.ubuntu.com/ubuntu/pool/main/d/db4.8/libdb4.8_4.8.30-11ubuntu1_amd64.deb
wget http://launchpadlibrarian.net/100815434/db4.8-util_4.8.30-11ubuntu1_amd64.deb
下载完成后再安装,安装命令:
dpkg -i libdb4.8_4.8.30-11ubuntu1_amd64.deb
dpkg -i db4.8-util_4.8.30-11ubuntu1_amd64.deb

第二种方法:
cd /home/ftp/
wget https://launchpadlibrarian.net/100790604/db4.8_4.8.30.orig.tar.gz
注意:第二种方法没安装,后面再研究

7、配置PAM文件

新建/etc/pam.d/vsftpd.vu,并编辑,

sudo vi /etc/pam.d/vsftpd.vu

输入内容如下:

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

##确认是lib下还是lib64下,根据实际情况确定,中间是tab而非空格##

Ubuntu上ftp安装和虚拟用户创建_配置文件_06


8、新建etc/vsftpd /vsftpd_user_conf文件夹

mkdir /etc/vsftpd/vsftpd_user_conf
现在,我们要把各个用户的配置文件放到目录/etc/vsftpd/vsftpd_user_conf中

cd /etc/vsftpd/vsftpd_user_conf

sudo touch admin root test

9、配置admin虚拟用户(权限:上传,下载删除,重命名)
vi /etc/vsftpd/vsftpd_user_conf/admin
里面添加
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/ftp/
10、配置test虚拟用户(权限:上传,下载)
vi /etc/vsftpd/vsftpd_user_conf/test
  
里面添加
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
local_root=/home/ftp/ftpdir/test

11、新建/etc/vsftpd/vsftpd.chroot_list
touch /etc/vsftpd/vsftpd.chroot_list

vi /etc/vsftpd/vsftpd.chroot_list(#定义不能更改用户主目录的文件 )
里面添加
admin

12、安装完修改配置文档,更改vsftp.conf的配置
修改配置之前,先备份当前配置
cp /etc/vsftpd.conf /etc/vsftpd.conf.old
vsftpd.conf的参数使用如下:
vim /etc/vsftpd.conf

listen=YES

#listen_ipv6=YES

anonymous_enable=NO //允许匿名用户访问,若禁止使用NO

local_enable=YES //允许本地用户访问,若禁止则使用NO

write_enable=YES //表示是否允许本地用户有上传权限的,YES表示可以,NO表示禁止,也取决于客户端连接时使用的客户端工具

#local_umask=022 //设置本地用户上传建立文件时的权限掩码

#anon_upload_enable=YES //匿名用户上传文件使能

#anon_mkdir_write_enable=YES //匿名用户可以创建目录

dirmessage_enable=YES //用户切换进入目录时显示.message(如果存在)文件的内容

message_file=Welcome

xferlog_enable=YES //是否开启传输日志的

connect_from_port_20=YES 连接控制端口为20

chown_uploads=YES

chown_username=ftp

chroot_local_user=YES //所有的本地用户都被锁定在家目录下

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

xferlog_file=/var/log/vsftpd.log

xferlog_std_format=YES

idle_session_timeout=600

data_connection_timeout=120 //#数据连接的超时时间

#nopriv_user=ftpsecure

#async_abor_enable=YES

ascii_upload_enable=YES

ascii_download_enable=YES

ftpd_banner=Welcome to blah FTP service. //login欢迎信息

#deny_email_enable=YES

max_clients=10

max_per_ip=5

local_max_rate=256000

#hide_ids=YES

idle_session_timeout=3000

guest_enable=YES

guest_username=admin

user_config_dir=/etc/vsftpd/vsftpd_user_conf

pam_service_name=vsftpd.vu

13、在ubuntu中,vsftpd的主要配置文件分布如下:

/etc/vsftpd.conf      vsftpd服务器的配置文件
/usr/sbin/vsftpd vsftpd服务器的进程文件
/etc/pam.d/vsftpd vsftpd服务器的PAM接口配置文件
/var/ftp vsftpd服务器匿名用户的工作目录

14、 vsftpd的开始、关闭和重启

sudo /etc/init.d/vsftpd  start   #开始
sudo /etc/init.d/vsftpd stop #关闭
sudo /etc/init.d/vsftpd restart #重启
netstat -tnlp | grep 21 #端口