Vsftp部署

安装认证所需包

首先安装PAM(用于用户认证)和DB4(用于生成虚拟用户的用户名密码的db文件)

yum -y install pam*
yum -y install db4*

安装vsftp

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mkdir bak
[root@localhost yum.repos.d]# mv *o bak
[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo <http://mirrors.aliyun.com/repo/Centos-7.repo>
[root@localhost ~]# yum -y install vsftpd
[root@localhost ~]# yum -y install ftp
[root@localhost ~]# service vsftpd start

设置vsftpd开机启动

   chkconfig vsftpd on

配置vsftpd.conf

vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO(匿名用户关闭)
#local_enable=YES(本地用户可访问)
#write_enable=YES(可上传)
#local_umask=022
#xferlog_enable=YES
#xferlog_std_format=YES
xferlog_file=/etc/vsftpd/vsftpd.log
这3项由于设置log日志,在/etc/vsftpd/下新建一个vsftpd.log文件
#connect_from_port_20=YES
idle_session_timeout=600(数据传输中断间隔时间)
listen=YES
#listen_ipv6=YES(注释掉)
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
chroot_local_user=YES(锁定根目录  )
guest_enable=YES(启用虚拟用户)
guest_username=sprixin(虚拟用户借用的系统本地用户名)
user_config_dir=/etc/vsftpd/virtualuser_conf(虚拟用户的配置文件路径)
allow_writeable_chroot=YES

touch  /etc/vsftpd/vsftpd.log

配置虚拟用户(虚拟用户权限根据以下内容控制)

mkdir /etc/vsftpd/virtualuser_conf (虚拟用户配置文件)

在/etc/vsftpd/virtualuser_conf 新建一个虚拟用户名文件

vim  /etc/vsftpd/virtualuser_conf/sprixin
#(能下载不能上传)
local_root=/home/ftp(该虚拟用户上传下载的根目录)
write_enable=YES(启动写权限,上传)
anon_umask=022
anon_world_readable_only=NO(关闭只可读权限)
anon_upload_enable=NO(不能上传)
anon_mkdir_write_enable=YES(创建目录权限)
anon_other_write_enable=YES(其他写权限,改,删)
Vim  etc/vsftpd/virtualuser_conf /u2(只能上传,不能下载)
local_root=/home/ftp
write_enable=YES
download_enable=NO
anon_umask=022
anon_world_readable_only=NO(关闭只可读权限)
anon_upload_enable=YES(不能上传)
anon_mkdir_write_enable=YES(创建目录权限)
anon_other_write_enable=YES(其他写权限,改,删)
cmds_allowed=FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST,RETR

在/etc/vsftpd/目录新建一个虚拟用户文档

vim  /etc/vsftpd/virtualuser_passwd.txt
# 奇数行是用户名,偶数行是密码
sprixin
sprixin

生成虚拟用户认证的db文件

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

编辑认证文件/etc/pam.d/vsftpd,全部注释掉原来语句,添加以下两句

vim /etc/pam.d/vsftpd
auth required pam_userdb.so db=/etc/vsftpd/virtualuser_passwd

account required pam_userdb.so db=/etc/vsftpd/virtualuser_passwd

设置服务器上的目录权限

chown -R  sprixin:sprixin  /home/ftpuser
chmod 777 /home/ftpuser

FTP服务器登陆缓慢超时问题

echo "reverse_lookup_enable=NO" >> /etc/vsftpd/vsftpd.conf
在没有DNS的环境下,需要将reverse_lookup_enable设置为NO,关闭反向解析,避免性能下降

lftp的mirror功能介绍

mirror参数:

mirror [OPTS] [remote [local]] 把指定的远程目录镜像到本地 

-c, --continue 如果可能, 继续一个镜像任务。 
-e, --delete 如果远程目录下已经没有某个文件,而本地有,则删除这个文件。  
--delete-first 在传输新文件之前先删除旧的文件  
-s, --allow-suid 根据远程站点设置相应的 suid/sgid 位  
--allow-chown 改变文件的属主和属组  
--ignore-time 通过实践判断是否下载该文件  
-n, --only-newer 只下载新的文件 (-c 没有作用)  
-r, --no-recursion 不下载子目录  
-p, --no-perms 不设置文件权限  
--no-umask 不在文件上使用umask  
-R, --reverse 反向镜像 (上传文件),作用类似:mirror [OPTS] [local [remote]]  
-L, --dereference 下载符号链接指向的文件  
-N, --newer-than FILE 只下载比文件 FILE 更新的文件  
-i RX, --include RX 包括匹配的文件 (只能使用一次) RX是括展的正则表达式 -x RX,  
--exclude RX 不包括匹配的文件 (只能使用一次)  
--parallel=3  设置多线程传输  
-t Nx, --time-prec Nx 设置时间精度为 N 秒 (x=s) 分钟 (x=m) 小时 (x=h) 或者天 (x=d) 默认值 - 12 小时  
-v, --verbose 显示详细的信息 --log=FILE 将执行过的命令写入日志文件\<FILE\>  
--script=FILE 把命令写入脚本文件但不执行 --just-print, --dry-run 同 --script=<>FILE 
注意: 当使用 -R 参数时,第一个目录为本地目录,第二个为远程目录 如果第二项没有填写,则采用第一个个目录的名称 如果两项都没填写,则采用当前的本地和远程目录 
lftp的-e选项,把命令直接接在lftp之后: lftp -u username,password -e "mirror -e -n -v remote local" ftpIP 也可以用at选项指定备份的时间:这样每天1点就会执行备份任务。 lftp at 01:00 -uusername,password -e "mirror -e -n remote local" ftpIP 
posted @ 2024-05-21 16:09  张强0514  阅读(11)  评论(0编辑  收藏  举报