vsftp是一种文件服务,一般用于提供网络文件的远程下载和查看,访问方式为:ftp://IP
ftp采用命令通道、数据通道俩个连接信道进行通信,分别监听于21端口和20端口,均采用tcp协议进行三次握手。命令的连接方式是主动连接,数据的连接则是被动式连接。
一、安装及配置文件
1、useradd ftpuser -s /sbin/nologin ##创建登陆用户
passwd ftpuser ##设定登陆密码
2、yum -y install vsftpd ftp
3、vim /etc/vsftp/vsftp.conf
anonymous_enable=NO ##不允许匿名用户登陆
local_enable=YES ##允许本地用户登陆
write_enable=NO ##不允许写
local_umask=022 ##默认权限为022即755
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES ##本地用户开启chroot,将用户限制在主目录,即不允许返回主目录的上一级目录
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES ##决定/etc/vsftpd/user_list文件是否启用生效。YES则生效,NO不生效。
tcp_wrappers=YES
local_root=/
4、setsebool -P ftp_home_dir 1 (若关闭selinux则不用设置此项?)
sestatus -b |grep ftp(需要确保里面的ftp_home_dir为on,否则在登陆时会报错“500 OOPS: cannot change directory:/home/rizhi”)
service vsftpd restart
5、访问
ftp://IP
二、一些问题说明
1、配置文件的一些说明
chroot_local_user=YES ##本地用户开启chroot,将用户限制在主目录,即不允许返回主目录的上一级目录
chroot_list_enable=YES ##是否启动限制用户在主目录的名单(这个名单的文件就是下面的文件), YES为启用 NO禁用(包括注释掉也为禁用)
chroot_list_file=/etc/vsftpd/chroot_list ##是否限制所有用户均在主目录下,在这个文件里面的用户名单是例外情况:即是限制名单还是排除名单,这取决于chroot_local_user的值,我们可以这样记忆: chroot_local_user总是一个全局性的设定,其为YES时,全部用户被锁定于主目录,其为NO时,全部用户不被锁定于主目录。那么我们势必需要在全局设定下能做出一些“微调”,即,我们总是需要一种“例外机制",所以当chroot_list_enable=YES时,表示我们“需要例外”。而”例外“的含义总是有一个上下文的,即,当”全部用户被锁定于主目录“时(即chroot_local_user=YES),"例外"就是:不被锁定的用户是哪些;当"全部用户不被锁定于主目录"时(即chroot_local_user=NO),"例外"“就是:要被锁定的用户是哪些。这样解释和记忆两者之间的关系就很清晰了!
userlist_enable=YES ##决定/etc/vsftpd/user_list文件是否启用生效。YES则生效,NO不生效。
userlist_deny=YES ##决定/etc/vsftpd/user_list文件中的用户是允许访问还是不允许访问。若设置为YES,则/etc/vsftpd/user_list 文件中的用户将不允许访问FTP服务器;若设置为NO,则只有vsftpd.user_list文件中的用户,才能访问FTP服务器。
2、部署过程中的一些说明
(1)local_root=/ 的说明
因为在/下建立了/rizhi文件夹用来存放日志,所以在配置文件中写明了local_root=/,并给/rizhi改变了属主、属组,加了775权限,但是在重启并登陆后,发现俩个问题:
可以看到/下的所有文件;
进入到/rizhi中,发现文件夹为空,文件显示不出来;(尝试了很多次,发现均无果,目前不得而知为什么)
(2)local_umask=022的说明
umask决定目录和文件被创建时得到的初始权限,umask = 022时,新建的目录 权限是755(即777-022) ,文件的权限是644(即666-022),这里的设置是指的上传的文件所具有的权限;
service vsftpd start 启动ftp
三、ftp的一些常用操作命令
1、建立ftp连接
sftp -P 20022 user@10.2.3.32 ##这里的-P跟的是远程端口,后面跟的是vsftp服务器的地址,若没有建立免密连接则需要输入该服务器的指定用户的登陆密码(注意是服务器的登陆密码)
2、上传文件
cd PATH ##切换路径
ls ##查看当前路径下的文件
put filename ##上传文件到ftp的当前目录
mput *[a-Z] ##批量上传文件
3、下载文件
get filename ##下载文件
mget *[0-9] ##批量下载文件
4、删除文件
rm filename ##删除文件