yum -y install vsftpd
一.关于匿名上传、下载、删除、创建、改名
anonymous_enable=YES
anon_umask=022
anon_root=/var/ftp
anon_upload_enable=YES
#容许匿名用户上传文件
anon_mkdir_write_enable=YES
#容许匿名用户建立目录
anon_other_write_enable=YES
#容许匿名用户除了新建和上传外的其他权限,如:删除、更名。
anon_max_rate=0
默认是可以下载,要上传等,除上述还要chmod -R 777 /var/ftp/pub //要是子目录777。对母目录777 linux系统会保护,注意:有些windos文件名有特殊符号,可能无法删除和改名(linux语言用英文)
二.关于本地上传
local_enable=yes
#是否可以本地系统用户访问
local_umask=022
#设置本地用户所上传文件的默认权限掩码值
local_root=/data/ftp
#设置本地用户的ftp根目录(缺省为用户的宿主目录)
chroot_local_user=yes
#是否将ftp本地用户禁锢在宿主目录中
local_max_rate=0
#限制本地用户的最大传输速率(0为不限制),单位为字节/秒
也需要chmod -R 777 /data/ftp/pub
##用户黑名单建立## 注意:此名单中的用户会被锁到自己的家目录中
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
##用户白名单建立## 注意:除了此名单中的用户,其余用户都会被锁定到家目录中
中chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
##限制本地用户登陆##
vim /etc/vsftpd/ftpusers ##用户永久黑名单(且优先级比user_list文件高)
三.全局
listen=yes
#是否以独立运行的方式监听服务
listen_address=0.0.0.0
#设置监听ftp服务的IP地址
listen_port=21
#设置监听FTP服务的端口号
write_enable=yes
#启用任何形式的写入权限(如上传,删除文件等)都需要开启此项
download_enable=yes
#是否可以下载文件(建立仅限浏览,上传的ftp服务器时可将其设为“no”)
dirmessage_enable=yes
#用户切换进入目录时显示.message文件(如果存在)的类容
xferlog_enable=yes
#启用xferlog日志,默认记录到/var/log/xferlog
xferlog_std_format=yes
#启用标准的xferlog日志格式,若禁用此项,将使用vsftpd自己的日志格式
connect_from_port_20=yes
#同意服务器主动模式(从20端口建立数据连接)
pasv_enable=yes
#同意被动模式连接
pasv_max_port=24600
#设置用于被动模式的服务器最大端口号
pasv_min_port=24500
#设置用于被动模式的服务器最小端口号
pam_service_name=vsftpd
#设置用于用户认证PAM文件位置(/etc/pam.d/目录中对应的文件名)
userlist_enable=yes
#是否启用user_list用户列表文件 /etc/vsftpd/ptpusers
userlist_deny=yes
#是否禁用user_list列表文件中的用户账号 /etc/vsftpd/uer_list
max_clients=0
#最多同意多少个客户端同是连接(0为不限制)
max_per_ip=0
#对来自同一个ip地址的客户端,最多同意多少个并发连接(0为不限制)
tcp_wrappers=yes
#是否启用TCP_Wrappers主机访问控制
四.开启虚拟用户
guest_enable=YES
#启用用户隐射功能
guest_username=share
#映射的系统用户名字 本地用户
pam_service_name=share
#指定 pam认证文件
user_config_dir=/etc/vsftpd/share_dir
在开启匿名或者本地用户登入FTP都是给一样的权限,不方便管理,才有了虚拟用户
#################################
1.虚拟用户FTP配置文件
#cat /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
ascii_upload_enable=YES #允许上车费ascii格式文件
ascii_download_enable=YES
ftpd_banner=Welcome to blah FTP service.
chroot_local_user=YES #禁锢用户的家目录
chroot_list_enable=NO #不启用本地禁用目录,使用虚拟用户时不需要开户本地列表过滤
listen=YES
listen_ipv6=NO
allow_writeable_chroot=YES #可以写,因为禁锢家目录需要去掉用户写权限
tcp_wrappers=YES
guest_enable=YES #开启虚拟账户功能
guest_username=share #虚拟账户映射到本地哪个用户
pam_service_name=share #加载pam.d中哪个文件的机制
user_config_dir=/etc/vsftpd/share_dir #虚拟用户的单个权限
2.创建本地用户
useradd -s /sbin/nologin share 或者useradd -s /sbin/nologin -d 指定目录 share
注意:后续虚拟用户可以指定share家目录,也可以指定目录,需要##chow -R share.share 指定目录##用户权限,不需要用777权限
3.创建虚拟用户,并对密码文件进行db格式的转化
#cat /etc/vsftpd/share
zhangsan
abc123
lishi
abc123
#db_load -T -t hash -f /etc/vsftpd/share /etc/vsftpd/share.db //没有db命令用yum安装db4-utils
#chmod 600 /etc/vsftpd/share.db
#mv /etc/vsftpd/share /etc/vsftpd/share.primitive
4.用户密码设定及db解析的设定
#cat /etc/pam.d/share
auth required /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/share
account required /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/share
auth是指对用户的用户名口令进行验证。
accout是指对用户的帐户有哪些权限哪些限制进行验证。
再后面的/lib/security/pam_userdb.so表示该条审核将调用pam_userdb.so这个库函数进行。
注意该函数会根据系统的位数而所在位置不同,可以通过rpm –ql pam查看或者find / -name pam_userdb.so
同时db指向的文件实际上指向的share.db ,但默认省略db后缀,故上述db的指向时在配置的时候不能写为share.db
5.设置虚拟用户的权限
在配置文件中user_config_dir=/etc/vsftpd/share_dir 这个路径下创建和虚拟用户名一样的文件
#cat /etc/vsftpd/share_dir/zhangsan
local_root=/home/share
anon_upload_enable=yes #允许上传
anon_world_readable_only=no #关闭只可读
anon_mkdir_write_enable=yes #允许新建目录
anon_other_write_enable=yes #允许修改目录/文件名称,删除
#cat /etc/vsftpd/share_dir/lishi
anon_world_readable_only=no
anon_upload_enable=yes
anon_mkdir_write_enable=no
anon_other_write_enable=no
local_root=/home/share
6.systemctl restart vsftpd