什么是vsftpd????????????
答:文件传输协议(File Transfer Protocol,FTP),vsftpd(very secure ftp daemon,非常安全的FTP守护进程
说白了就是个用来传输文件用的协议
FTP有两种工作模式
1.主动模式,FTP服务器主动连接客户机
2.被动模式,客户机主动连接FTP服务器(FTP服务器的默认模式)
FTP实验:
需求:客户端和服务端同一个网段,也可以在一台机器上。
vsftpd很安全,它允许客户端以三种模式登录到FTP服务器上
1.匿名用户模式
2.本地用户模式
3.虚拟用户模式
一:匿名用户模式
1.安装vsftpd服务并安装管理工具ftp
[root@b ~]# yum install -y vsftpd ftp
2.设置selinux和防火墙( 1. 设置是为了完全使用ftp。可以通过中文意思来理解, -P选项是让设置永久生效. 2.TFTP协议要使用UDP协议的69端口,所以要打开个通道. 3. 让防火墙立刻生效)
[root@b ~]# setsebool -P ftpd_full_access=on
[root@b ~]# firewall-cmd --permanent --add-port=69/udp
success
[root@b ~]# firewall-cmd --reload
success
3.在我们筛选后的配置文件中进行匿名用户的配置,添加如下内容保存并退出。
[root@b ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_upload_enable=YES
anon_umask=022
4.给/var/ftp/pub目录其他人可写入权限重启服务开始测试(因为这个目录是ftp服务的默认访问目录,所以我们要给其他人写入的权限)
[root@b ~]# chmod o+w /var/ftp/pub
[root@b ~]# systemctl restart vsftpd
5.下面就可以用anonymous用户登录FTP服务器进行操作了啦!可以进行上传、下载、增加、删除文件,这里我就不赘述了。下面的实验也是一样!
[root@a ~]# ftp 192.168.10.11
Connected to 192.168.10.11 (192.168.10.11).
220 (vsFTPd 3.0.2)
Name (192.168.10.11:root): anonymous (或者是ftp)
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
二、本地用户模式
1.本地用户可以直接登录,对你没有听错!默认访问的是该用户的家目录也就是/home/Jack,不在是/var/ftp/pub啦!
[root@b pub]# ftp 192.168.10.11
Connected to 192.168.10.11 (192.168.10.11).
220 (vsFTPd 3.0.2)
Name (192.168.10.11:root): Jack
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
2.ftp服务里有两个不允许登录的名单,我们可以看下哪些用户不能够登录。如果想用root用户登录只需要把用户从名单中删除掉。像不像死亡笔记。下面是这两个目录。
[root@b ~]# cat /etc/vsftpd/user_list
[root@b ~]# cat /etc/vsftpd/ftpusers
3.如果我们想用root用户登录,怎么办呢?我们只需要把root用户从两个不允许登录的名单中删除掉即可登录。
[root@b pub]# ftp 192.168.10.11
Connected to 192.168.10.11 (192.168.10.11).
220 (vsFTPd 3.0.2)
Name (192.168.10.11:root): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
三、虚拟用户模式
1.在/etc/vsftpd中建立虚拟用户的信息包括用户名和密码
[root@b vsftpd]# vim vuser.txt
lyf
a
lss
a
2.用哈希算法把虚拟用户信息加密生成一个数据库文件给权限设为600只有root用户才能读写,并把源文件删掉。
[root@b vsftpd]# db_load -T -t hash -f vuser.txt vuser.db
[root@b vsftpd]# rm -rf vuser.txt
[root@b vsftpd]# chmod 600 vuser.db
3.建立一个用于FTP服务程序存储文件的根目录和虚拟用户的映射关系的目录。并给目录设置权限为755,权限参考FTP的共享目录权限(建立的目录可以类比为家目录,家目录用来存放系统创建用户的文件及关系)
[root@b vsftpd]# useradd -d /var/ftpaaa -s /sbin/nologin virtual
[root@b ftpaaa]# chmod -R 755 /var/ftpaaa
4、建立支持虚拟用户的PAM文件
[root@b ftpaaa]# vim /etc/pam.d/vuser.vu
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
5.建立虚拟用户名单的权限,分配权限,让其中一个用户读写上传文件需要编辑一个虚拟用户列表里的名字为名的用户权限文件,我这里是lyf,内容和让匿名用户读写上传文件的内容一样。如果不编辑则虚拟用户没有权限。
[root@b ~]# mkdir /etc/vsftpd/vuser_dir
[root@b vuser_dir]# vim lyf
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_upload_enable=YES
6.编辑主配置文件,添加关于虚拟用的参数
[root@b ftpaaa]# vim /etc/vsftpd/vsftpd.conf
guest_enable=YES # 允许虚拟用户登录
guest_username=virtual # 指定虚拟用户的名字
allow_writeable_chroot=YES # 允许对ftp的根目录进行读写操作,chroot的作用就是更改根目录
pam_service_name=vuser.vu # 指定pam文件
user_config_dir=/etc/vsftpd/vuser_dir # 为两个虚拟用户分配权限的目录
7.保存重启之后可以从服务器下载已有的文件,也可以从客户端上传。
[root@b ~]# systemctl restart vsftpd
[root@b vuser_dir]# ftp 192.168.10.11
Connected to 192.168.10.11 (192.168.10.11).
220 (vsFTPd 3.0.2)
Name (192.168.10.11:root): lyf
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
四、TFTP
简单文件传输协议(Trivial File Transfer Protocol,TFTP)
1.安装下载TFTP服务和管理工具
[root@b ~]# yum install -y tftp-server tftp
2.编辑tftp配置文件打开tftp传输功能
[root@b ~]# vim /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
3.tftp的共享目录为/var/lib/tftpboot,在目录里写入一个文件连接tftp服务器并下载写入的文件到linux客户端。
[root@b ~]# echo “I love beauty girls” > /var/lib/tftpboot/girls
[root@b ~]# tftp 192.168.10.11
tftp> get girls
tftp> quit
[root@b ~]# ls
anaconda-ks.cfg example.txt girls
完成啦!!!