vsftpd服务
文件传输协议(file transfer protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件,上传文件,下载文件。ftp基于TCP协议生成一个虚拟的连接,主要用于控制FTP连接信息,同时在生成一个单独的TCP连接用于ftp数据传输,用户可以通过客户端向ftp服务器上传,下载,删除文件,ftp服务器可以同事提供给多人共享使用
ftp服务时client/server(简称C/S)模式,基于ftp协议实现ftp文件对外共享及传输的软件称之为ftp服务器源端,客户端程序基于ftp协议,则称之为ftp客户端,ftp客户端可以想ftp服务器上传下载文件
vsftp服务器安装和配置
[root@localhost ~]# yum install vsftpd* -y
vsftpd.conf配置文件的默认配置如下:
[root@localhost ~]# cat /etc/vsftpd/vsftpd.conf | grep -v '#' | grep -v '^$' anonymous_enable=YES#开启匿名访问 local_enable=YES#启用本地用户访问 write_enable=YES#本地系统用户写入权限 local_umask=022 dirmessage_enable=YES#打印目录显示信息,通常用于用户第一次访问目录时,信息提示 xferlog_enable=YES#启用上传/下载日志记录 connect_from_port_20=YES#使用20号端口进行数据传输 xferlog_std_format=YES#日志文件讲根据xferlog的标准格式写入 listen=NO#vsftpd不以独立的服务启动,通过Xinetd服务管理,建议改成YES listen_ipv6=YES pam_service_name=vsftpd #登录ftp服务器,依据/etc/pam.d/vsftpd中内容进行认证 userlist_enable=YES #vsftpd.user_list和ftpusers配置文件里用户禁止访问ftp tcp_wrappers=YES #vsftpd与tcp wrapper结合进行主机的访问控制,vsftpd服务器检查/etc/hosts.allow和/etc/hosts.deny中的设置来决定请求连接的主机,是否允许访问该ftp服务器
默认是允许匿名访问的,可以在资源管理器中输入ftp://192.168.254.13
vsftpd匿名用户访问
如果需要匿名用户访问,上传,下载等操作,需要在vsftpd.conf中添加加入以下3行代码:
anon_upload_enable=YES #允许匿名用户上传文件 anon_mkdir_write_enable=YES #允许匿名用户创建目录 anon_other_write_enable=YES #允许匿名用户其他写入权限
匿名用户完整的vsftpd.conf配置文件代码如下:
[root@localhost ftp]# cat /etc/vsftpd/vsftpd.conf | grep -v "#" | grep -v "^$" anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES
由于默认vsftpd用户对/var/ftp/pub目录有写入权限,使用chown和chmod任意一种命令均可设置权限,具体命令如下:
chown -R ftp pub/ chmod o+w pub/
重启服务,匿名用户就可以上传下载了
vsftpd系统用户配置
vsftpd匿名用户设置完毕,任何人都可以查看ftp服务端的文件,目录,甚至是可以修改删除,如何存放私密文件在ftp服务器端,并保证文件或者目录专属于拥有者呢,vsftpd系统用户可以实现该需求,解决上述问题
实现vsftpd系统用户方式验证,只需要在linux系统中创建多个用户即可,创建用户使用useradd命令,同时给用户设置密码,即可通过用户和密码登录ftp进行文件上传下载,实现步骤如下:
[root@localhost ftp]# useradd fengzi1 [root@localhost ftp]# useradd fengzi2
[root@localhost ftp]# echo "fengzi1" | passwd --stdin fengzi1 更改用户 fengzi1 的密码 。 passwd:所有的身份验证令牌已经成功更新。 [root@localhost ftp]# echo "fengzi2" | passwd --stdin fengzi2 更改用户 fengzi2 的密码 。 passwd:所有的身份验证令牌已经成功更新。
修改vsftpd.conf配置文件代码如下:
[root@localhost ftp]# cat /etc/vsftpd/vsftpd.conf | grep -v "#" | grep -v "^$" anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES
重启vsftpd服务
[root@localhost ftp]# service vsftpd restart Restarting vsftpd (via systemctl): [ 确定 ]
验证