ubuntu16.4安装vsftpd以及用户基本配置

往往我们的服务器都会部署在linux服务器上,而我开发使用的主机是windows系统,为了更好的模拟服务器环境,我安装了ubuntu的虚拟机,配置好lamp环境进行开发调试(deepin系统下可以直接使用sudo apt-get install lamp一键安装),那我就需要一个ftp来管理我的项目(虽然可以使用sftp,但不推荐),最直接方便的方法就是安装vsftpd(sudo apt-get install vsftpd),安装好后的配置文件是/etc/vsftpd.conf

安装软件

# 切换到root账户`sudo su`,安装vsftpd
apt-get install vsftpd
# 安装db-util,将用户文件转为数据库文件
apt-get install db-util

安装好后就要开始配置用户了,最简单的方法是设置配置文件local_enable=YES,允许本地用户登录,这样就可以直接使用自己本地帐户登录了。

  • 新建一个本地账户vsftpd,禁止登录
# /srv/ftp目录为自定义用户目录
useradd -d /srv/ftp -s /bin/bash vsftpd
  • 将目录的所属者和所属组改为vsftpd
chown vsftpd:vsftpd /srv/ftp
  • 配置ftp用户文件
    我新建了一个文件夹/etc/vsftpd,将ftp有关的用户信息放在这里
# 首先创建一个用户列表文件,如:userlist.txt,奇数行为用户名,偶数行为密码,添加完用户之后**回车换行**
user_id_1
user_passwd_1

# 生成对应的数据库文件
db_load -T -t hash -f /etc/vsftpd/userlist.txt /etc/vsftpd/vsftp_login.db

# 编辑/etc/pam.d/vsftpd,在开头添加以下两行代码,我们建立的虚拟用户将采用PAM进行验证,这是通过/etc/vsftpd.conf文件中的 语句pam_service_name=vsftpd来启用的
auth sufficient pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient pam_userdb.so db=/etc/vsftpd/vsftpd_login
  • 编辑/etc/vsftpd.conf
# 允许本地账户登录
local_enable=YES
# 本地账户创建目录及文件的权限,022 表示 文件夹权限755,文件权限644
local_umask=022
# 匿名账户创建目录及文件权限,同上(本地测试时,ftp上传文件权限总是600,设置这个选项之后可以正常访问了)
anon_umask=022
# 允许写入
write_enable=YES
 #启用guest
guest_enable=YES
#使用虚拟账号形式
guest_username=vsftpd
#虚拟账号配置目录
user_config_dir=/etc/vsftpd
#对vsftpd的用户使用pam认证
pam_service_name=vsftpd
# 允许写入自己的目录(有时候ftp连接时需要)
allow_writeable_chroot=YES
  • 创建本地用户配置文件
# 创建文件user_id_1,以用户名命名,加入以下内容获得相应权限
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/srv/ftp

配置好后,重启服务/etc/inint.d/vsftpd restart

命令行输入ftp 127.0.0.1成功会有提示信息,输入虚拟用户名和密码登录,如果提示错误500 OOPS: vsftpd: refusing to run with writable root inside chroot() Login failed.,尝试在/etc/vsftpd.conf加入allow_writeable_chroot=YES,然后输入ls,如果能列出文件就成功了。

有些东西是在网上借鉴的,由于太多太零散,就不一一列出出处了,感谢前辈们的贡献

posted @ 2017-09-27 10:10  凭栏知潇雨  阅读(1665)  评论(0编辑  收藏  举报