################################Vsftp服务器实战##########################################3
文件传输协议,基于该协议FTP客户端与服务端可以实现共享文件,上传文件,下载文件。FTP基于TVP协议生成一个虚拟的连接,主要用于控制FTP连接信息,同时再生成一个单独的TCP连接用于FTP数据传输,用户可以通过客户端想FTP服务段上传,下载,删除文件,FTP服务端可以同时提供给多人共享使用;
FTP服务是client/server(C/S)模式,基于FTP协议是新FTP文件对外共享及传输的软件称之FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传,下载文件;
传输模式----------------------
FTP基于C/S模式,FTP客户端与服务器端有两种传输 模式,分别是FTP主动模式、FTP被动模式,主被动模式均是以FTP服务器端为参照。
主动模式 PORT
被动模式 PASV
用户类型:
(1)匿名 用户:anon
(2)本地用户:/etc/passwd
(2)虚拟用户:把登录用户映射成制定 的系统账号,(/sbin/nologin)来访问ftp资源
/etc/vsftpd/vsftpd.conf #主配置文件
anonymous_enable=YES #允许匿名用户访问
local_enable=YES #允许本地用户访问
write_enable=YES #本地用户读写
local_umask=022 #本地用户创建文件的默认权限
anon_upload_enable=YES #匿名用户是否可以上传
anon_mkdir_write_enable=YES #匿名用户是否可以创建
dirmessage_enable=YES #如果目录存在。message隐藏文件,进入该目录,会显示.message
xferlog_std_from_port_20=YES #从 端口20连
xferlog_std_format=YES #日志 格式
listen=NO #是否监听
listen_ipv6=YES
pam_service_name=vsftpd #列出与pam相关的文件名称,即/etc/pam.d/目录下 的文件名称
userlist_enable=YES
tcp_wrappers=YES #支持TCP
###############################################################################################
vsftp虚拟用户配置
如果是基于vsftpd系统用户访问FTP服务器,系统用户越来越不利于 管理,而且不利于系统安全管理。因此,为了能更加的安全使用vsftpd,需要vsftpd虚拟用户方式,
vsftpd虚拟用户原理:虚拟用户就是没有实际真实系统用户,而是通过映射到其中真实用户以及设置相应的权限来实现访问验证的,虚拟用户不能登入linux系统,从而保证了系统更加安全可靠
vsftpd虚拟用户环境软件:
[root@localhost ~]# yum install -y vsftpd libdb libdb-utils --skip-broken
创建虚拟用户临时文件/etc/vsftpd/ftpuser.txt;
root@localhost ~]# vim /etc/vsftpd/ftpuser.txt
生成VSFTPD虚拟用户数据库认证文件,设置权限700
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/ftpuser.txt /etc/vsftpd/vsftpd_login.db
[root@localhost ~]# chmod 700 /etc/vsftpd/vsftpd_login.db
[root@localhost ~]# file /etc/vsftpd/vsftpd_login.db
/etc/vsftpd/vsftpd_login.db: Berkeley DB (Hash, version 9, native byte-order)
配置PAM认证文件,/etc/pam.d/vsftpd行首加入以下配置
[root@localhost ~]# vim /etc/pam.d/vsftpd
所有vsftpd虚拟用户需要映射到一个系统用户,该系统用户不需要密码,也不需要登录,主要用于虚拟用户映射使用
root@localhost ~]# useradd -s /sbin/nologin ftpuser
[root@localhost ~]# grep -v "^#" /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
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
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ~]# mkdir -p /etc/vsftpd/vsftpd_user_conf
分别为虚拟用户xiaoyu,zhangsan用户创建配置文件,同时创建各自的虚拟目录
[root@localhost ~]# vim /etc/vsftpd/vsftpd_user_conf/xiaoyu
local_root=/home/ftpuser/xiaoyu #xiaoyu虚拟用户配置文件路径
write_enable=YES #允许登录xiaoyu有写入权限
anon_world_readable_only=YES #允许匿名用户下载,然后读取文件
anon_upload_enable=YES #允许匿名用户上传文件权限,只有在write_enable=YES时该配置参数才生效
anon_mkdir_write_enable=YES #允许匿名用户创建目录,只有在write_enable=YES时改配置参数才生效
anon_other_write_enable=YES #允许匿名用户其他全权限,如修改全权限,删除,改名等
创建虚拟用户 各自的虚拟目录
[root@localhost ~]# mkdir -p /home/ftpuser/{xiaoyu,zhangsan};
[root@localhost ~]# chown -R ftpuser:ftpuser /home/ftpuser/xiaoyu
[root@localhost ~]# ll -d /home/ftpuser/xiaoyu/
drwxr-xr-x. 2 ftpuser ftpuser 18 6月 24 17:32 /home/ftpuser/xiaoyu/
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# netstat -anput | grep vsftpd
tcp6 0 0 :::21 :::* LISTEN 3271/vsftpd
[root@localhost ~]# systemctl enable vsftpd
例如:在xiaoyu路径下创建文件
在本地客户端验证即可!