vsftp限制访问

useradd -g root -M -d /var/www/html -s /sbin/nologin ftpuser
passwd ftpuser
###此处的ftpuser就是你的账户名

chown -R ftpuser.root /var/www/html
###把 /var/www/html 的所有权给ftpuser.root
###这里的 /var/www/html 就是ftp的根目录,没有的话自行创建,也可以换成其他目录

###虚拟用户的用户认证是通过pam方式去认证的,pam文件里面指定了认证的db文件,db文件又是通过明文用户名和密码文件生成而来。那么首先我们要指定pam文件,这个在 /etc/vsftpd/vsftpd.conf 配置文件是通过 pam_service_name=vsftpd 配置指定的,其位置是 /etc/pam.d/vsftpd,编辑该文件,把文件内容全部注释掉,加上以下两行:
64位系统:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd

###32位系统
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd

db=/etc/vsftpd/vuser_passwd 指定了db文件的位置,接下来就是生成db文件,由于db文件是通过明文用户名和密码文件生成而来,所以先创建一个保存明文用户名和密码的文件 vuser_passwd.txt
###该文件奇行为用户名,偶行为密码:
 vim /etc/vsftpd/vuser_passwd.txt
 账号
 密码


然后通过以下命令生成db文件:

cd /etc/vsftpd
db_load -T -t hash -f vuser_passwd.txt vuser_passwd.db

至此用户的认证就知道怎么一回事了。如果要添加新的用户,在编辑 vuser_passwd.txt 后要再次生成一下db文件。然后现在每个用户的具体配置,如指向目录、可读写权限等又是在哪配置的呢,原来它是通过一个用户对应一个配置文件来实现的,且这个文件必须用FTP用户名去做文件名,建一个目录专门存放这些文件:
mkdir vuser_conf
vim vuser_conf/account1

文件内容大致如下,注意每一行配置的最后不能有空白符:
#设置虚拟用户的目录
local_root=/var/www/html
#设置虚拟用户是否可以写入
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
#允许虚拟用户的上传功能
anon_upload_enable=YES
#设置虚拟用户是否可以创建文件夹
anon_mkdir_write_enable=YES
#设置虚拟用户是否可以执行其他的写入操作,比如删除、重命名、覆盖操作。
anon_other_write_enable=YES
#最多允许同一账号在10个不同的IP登录
max_per_ip=10
#最大下载速度(字节/秒)
local_max_rate=2500000
#session超时时间
#idle_session_timeout=300
#连接超时时间
#data_connection_timeout=90
#最多连接数
#max_clients=10

最后配置vsftpd.conf,若下面某些字段没有在配置中找到,自行添加就好
cd /etc/vsftpd
vim vsftpd.conf

#修改一下几处
#不允许匿名访问
anonymous_enable=NO

#本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问
local_enable=YES

#可以进行写操作
write_enable=YES

#禁止匿名用户上传
anon_upload_enable=NO

#禁止匿名用户建立目录
anon_mkdir_write_enable=NO

#支持ASCII模式的上传和下载功能
ascii_upload_enable=YES
ascii_download_enable=YES

#限制用户只能在FTP主目录
#若没有chroot_list文件,自行创建,每一行为一个用户名
chroot_local_user=NO
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list

#开启ip4监听
listen=YES

#关闭ip6监听
listen_ipv6=NO

#PAM服务下Vsftpd的验证配置文件名
pam_service_name=vsftpd

#指定vsftpd服务的运行帐户,不指定时使用ftp
#这里的ftpuser就是刚才useradd时创建的Linux系统用户
nopriv_user=ftpuser

# 设定启用虚拟用户功能
guest_enable=YES
# 指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了
guest_username=ftpuser
# 虚拟用户配置文件存放的路径
user_config_dir=/etc/vsftpd/vuser_conf
# 如果启用了限定用户在其主目录下需要添加这个配置
allow_writeable_chroot=YES
# NO时,虚拟用户和匿名用户有相同的权限,默认是NO
virtual_use_local_privs=YES

最后:
filezilla连接ftp时可能会出现读取目录超时的情况,解决方法如下
在 /etc/vsftpd/vsftpd.conf末尾添加上以下三句
#开启pasv被动模式
pasv_enable=YES
pasv_min_port=6000
pasv_max_port=7000

#这个是用于检测pasv的安全检查,YES为关闭安全检查
pasv_promiscuous=YES

#firewall防火墙打开6000-7000端口
firewall-cmd --permanent --zone=public --add-port=6000-7000/tcp
firewall-cmd --reload

配置好后就可以开启vsftpd服务
systemctl start vsftpd
#开机启动
systemctl enable vsftpd
posted @   liuxiaobei556  阅读(90)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示