FTP Server
FTP(文件传输协议)全称是:Very Secure FTP Server。Vsftpd是linux类操作系统上运行的ftp服务器软件。
FTP端口
控制端口 21/tcp //客户端连接FTP服务器21端口
数据端口 20/tcp (主动模式) //下载,服务器20端口连接客户端
vsftp提供三种登陆方式
1.匿名登录
2.本地用户登录
3.虚拟用户登录
安装vsftpd服务
# yum -y install vsftpd
# systemctl start vsftpd && systemctl enable vsftpd
# touch /var/ftp/11.txt //创建测试文件
1、匿名用户登录
[客户端]
# yum -y install ftp lftp wget //客户端FTP工具
# ftp 服务器IP //匿名用户名ftp 密码为空
ftp> ls
-rw-r--r-- 1 0 0 0 Sep 13 19:04 11.txt
drwxr-xr-x 2 0 0 6 Jun 09 2021 pub //ftp默认根目录/var/ftp/pub(默认只能下载,无法上传)
测试上传
ftp> put /etc/passwd ./passwd //本地文件/etc/passwd 上传到当前目录下
> 550 Permission denied.(默认不允许)
测试下载
ftp> get 11.txt 22.txt //下载ftp服务器上的文件11.txt 到本地当前目录中,并改名为22.txt
ftp> exit
# ls //查看下载的文件22.txt
2、设置允许匿名用户上传
修改配置文件(如果不存在则增加)
# vi /etc//vsftpd/vsftpd.conf
write_enable=YES //默认开启(禁止匿名用户登录 设置为NO即可)
anonymous_enable=YES //默认开启
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
创建匿名用户的上传目录,并设置权限,属主,属组
# mkdir -p /var/ftp/upload
# chmod 755 /var/ftp/upload
# chown ftp. /var/ftp/upload
重启服务
# systemctl restart vsftpd
测试上传(客户端)
# ftp 服务器IP //匿名用户名ftp 密码为空
ftp> ls
-rw-r--r-- 1 0 0 0 Sep 13 19:04 11.txt
drwxr-xr-x 2 0 0 6 Jun 09 2021 pub
drwxr-xr-x 2 14 50 20 Sep 13 19:31 upload
ftp> cd upload
ftp> put /etc/passwd passwd //本地文件/etc/passwd 上传到ftp服务器中
ftp> ls
-rw------- 1 14 50 2101 Sep 13 19:31 passwd
3、本地用户登录
创建本地用户
# mkdir -p /opt/ftp //创建ftp目录
# useradd -d /opt/ftp/ftp_user1 ftp_user1 //创建本地用户,指定根目录
# echo 123456 |passwd --stdin ftp_user1 //设置密码
# touch /opt/ftp/ftp_user1 ftp_user1/11.txt //创建测试文件
修改配置文件(如果不存在则增加)
# vi /etc/vsftpd/vsftpd.conf
local_enable=YES //是否允许本地用户登录
chroot_list_enable=YES //是否锁定根目录
chroot_list_file=/etc/vsftpd/chroot_list //指定用户列表文件(列表文件中的用户被锁定根目录)
allow_writeable_chroot=YES //允许用户写入锁定根目录
创建锁定根目录的用户列表文件chroot_list
# touch /etc/vsftpd/chroot_list
# echo ftp_user1 >> /etc/vsftpd/chroot_list //被锁定根目录的用户名,一个用户名一行
重启服务
# systemctl restart vsftpd
客户端登录
# yum -y install ftp lftp wget //客户端FTP工具
# ftp 服务器IP //输入用户名ftp_user1 密码123456
ftp> ls
-rw-r--r-- 1 0 0 0 Sep 13 20:32 11.txt
测试上传
ftp> put /etc/passwd passwd //本地文件/etc/passwd 上传到ftp服务器中
ftp> ls
-rw-r--r-- 1 0 0 0 Sep 13 20:32 11.txt
-rw------- 1 14 50 2101 Sep 13 19:31 passwd
测试下载
ftp> get 11.txt 22.txt //下载ftp服务器上的文件11.txt 到本地当前目录中,并改名为22.txt
ftp> exit
# ls //查看下载的文件22.txt
测试切换锁定根目录的上级目录
ftp> cd ..
250 Directory successfully changed.
ftp> ls //目录未切换
-rw-r--r-- 1 0 0 0 Sep 13 20:32 11.txt
-rw------- 1 14 50 2101 Sep 13 19:31 passwd