vsftpd的虚拟帐号配置

原创
2016/01/21 11:54
阅读数 96

UPDATE: chroot配置时,目录不能设root的文件夹成0777权限,要设里面的具体文件为0777.

2018/10/15 update: 加入passive被动模式与防火墙配置。

vsftpd虚拟帐号的快速配置,不需要添加用户到passwd中。环境:CentOS release 6.5 (Final)。

>yum install vsftpd

>cd /etc/vsftpd

>vi vsftpuser.txt
ftpuername
ftpuerpassword

>vi chroot_list 如果想要限制登录用户chroot在根目录下,不要添加用户在此文件内
ftpusername

>db_load -T -t hash -f vsftpuser.txt vsftpuser.db
#如果没有db_load命令,先安装 yum install db4-utils db4
#vsftpd 使用 Berkeley DB databases

>vi /etc/pam.d/vsftpd
#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
#注意这里要注释掉默认的auth和account配置
#auth       required	pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required	pam_shells.so
#auth       include	password-auth
#account    include	password-auth
session    required     pam_loginuid.so
session    include	password-auth

#添加新的auth和accout认证方法
auth required pam_userdb.so db=/etc/vsftpd/vsftpuser
account required pam_userdb.so db=/etc/vsftpd/vsftpuser

>vi vsftpd.conf
anonymous_enable=NO
local_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chown_uploads=YES
#这个用户名与你的nginx或php-fpm执行用户名保持一致
chown_username=apache

#注意这chroot_local_user设的是NO
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

virtual_use_local_privs=YES
guest_enable=YES
hide_ids=YES
#ftp所有登录用户默认限制在这个目录下面
local_root=/datab/web/abc.com
#如果要根据不同用户分配目录,则只在/datab/web/abc.com再建子目录,根据登录用户名,如使用指令替代上面的
#local_root=/home/vftp/$USER
#此条命令无效,详细见后面说明


>service vsftpd restart

要根据登录用户名分配不同的目录,需要修改配置

chroot_local_user=YES
user_config_dir=/etc/vsftpd/users

创建目录mkdir /etc/vsftpd/users

在目录里创建登录用户名同名的配置文件,如 touch /etc/vsftpd/users/abc

在abc里添加以下配置

local_root=/var/www/sites/USER
dirlist_enable=YES
download_enable=YES
write_enable=YES

注意USER为真实目录文件夹,非USER固定值。

重启使生效。

 

2018/10/15 update: passive被动模式与防火墙配置。

被动模式是很多ftp软件的配置设置,要求ftp server使用动态端口,如果商品是动态的,则服务器上如果有配置了防火墙规则,将可能被防火 墙拦截这些端口的通讯。所以要在vsftpd.conf指定一下端口的范围并单独开设防火墙规则。

#vi /etc/vsftpd/vsfptd.conf

pasv_enable=Yes
pasv_min_port=10090
pasv_max_port=10100

如果是linux使用iptable做规则,则

iptables -I INPUT -p tcp --destination-port 10090:10100 -j ACCEPT

service iptables save

如果是centos7

# firewall-cmd --get-active-zones
public
  interfaces: eth0

# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp
# firewall-cmd --reload 

当然21和20原来默认的商品还是要开放的,某些ftp client可能会使用到。

展开阅读全文
加载中

作者的其它热门文章

打赏
1
0 收藏
分享
打赏
0 评论
0 收藏
1
分享
返回顶部
顶部