FTP :file transfer protocol:文件传输协议。在网络上用于双向进行传输,也是一个应用程序。c/s架构。
不同的操作系统有不同的FTP软件,但使用的协议都是一样的。
FTP基于TCP协议,有两个端口:20和21。
FTP服务端和客户端:建立连接后,FTP是双向进行的传输。
FTP建立数据连接的模式:
vsftpd服务vsftpd的安装和配置
rpm -q vsftpd #验证是否安装vsftpd
yum -y install vsftpd #安装
在对vsftpd修改配置前,备份配置文件
cd /etc/vsftpd #切换到安装vsftpd的目录下查看
cp vsftpd.conf vsftpd.conf.bak.20240604 #备份
vim /etc/vsftpd/vsftpd.conf编辑配置文件
vsftpd初始化全局配置:
anonymous_enable=YES #开启匿名用户访问。默认已开启
local_enable=YES #允许系统用户进行访问
write_enable=YES #开放服务器的写权限(若要上传,必须开启),默认已开启
anon_umask=022 #设置匿名用户所上传数据的权限掩码(反掩码)
vim /etc/vsftpd/vsftpd.conf编辑配置文件
让匿名用户拥有访问本机和各种权限
anon_umask=022 #设置匿名用户所上传数据的权限掩码(反掩码)。
anon_upload_enable=YES #允许匿名用户上传文件。默认已注释,需取消注释
anon_mkdir_write_enable=YES #允许匿名用户创建(上传)目录。默认已注释,需取消注释
anon_other_write_enable=YES #允许删除、重命名、覆盖等操作。需添加
重启vsftpd服务,关闭安全防护
systemctl restart vsftpd
systemctl stop firewalld
setenforce 0
匿名用户的默认根目录/var/ftp/pub,对该目录赋权777
chmod 777 /var/ftp/pub
echo 'hello world!' > test.txt
get 文件名 #下载
put 文件名 #上传
在Windows系统打开开始菜单,输入cmd 命令打开命令提示符
#建立ftp连接
ftp 20.0.0.10
#匿名访问,用户名为ftp,密码为空,直接回车即可完成登录
ftp> pwd #匿名访问ftp的根目录为Linux系统的/var/ftp/目录
ftp> ls #查看当前目录
ftp> cd pub #切换到pub目录
ftp> get文件名 #下载文件到当前Windows本地目录
ftp> cd pub
ftp> get test.txt #获取目录中的文件下载到电脑
ftp> put test4.txt #将本地文件上传到服务端
安全隐患:匿名用户权限过高,可靠性低。
实际生产过程中,都会禁止匿名用户登录。
vim /etc/vsftpd/vsftpd.conf
local_enable=Yes #启用本地用户
anonymous_enable=NO #关闭匿名用户访问
write_enable=YES #开放服务器的写权限(若要上传,必须开启)
local_umask=077 #可设置仅宿主用户拥有被上传的文件的权限(反掩码)
重启vsftpd服务
在/opt目录下:
echo 'hello world!' > test.txt
在Windows系统打开开始菜单,输入cmd 命令打开命令提示符,登录用户test1
用户(20.0.0.10:(none)): test1
331 Please specify the password.
密码:
230 Login successful.
ftp> cd /opt
250 Directory successfully changed.
ftp> get /opt/test.txt
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for /opt/test.txt (13 bytes).
226 Transfer complete.
ftp: 收到 13 字节,用时 0.00秒 13000.00千字节/秒。
在Windows的用户文件夹中可以看到test.txt文件,内容为hello,world!。
切换目录的限制配置 :
vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES #将访问禁锢在用户的宿主目录中 取消注释即可
#下面新增行
allow_writeable_chroot=YES #允许被限制的用户主目录具有写权限
重启服务即可。
系统用户登录时,把用户禁锢在家目录,系统用户只能在自己的家目录操作,包括root用户。
黑名单:在名单上的不允许登录:允许所有,拒绝个别
白名单:只有在名单上的才允许登录:拒绝所有,允许个别。常用。
编辑黑名单白名单相关配置在配置文件/etc/vsftpd/vsftpd.conf的最下方。
黑名单默认开启
userlist_enable=YES #启用user_list用户列表文件
#下方新增行
userlist_deny=YES #这个默认就是yes,注释掉也默认YES
用户列表文件:/etc/vsftpd/userlist,控制用户访问。
修改文件,添加黑名单,不用重启,立刻生效。
设置白名单只要修改下行
userlist_deny=NO #这也说明黑名单、白名单是相反的用法
userlist_deny改成NO后,即为白名单
修改配置文件需要重启服务
此时用户列表文件/etc/vsftpd/userlist内容为白名单
特别的,有一点要注意:在/etc/vsftpd/ftpusers里记录的用户,即使在白名单上也不能登录,这个文件相当于白名单里的黑名单。
要想使用root用户,把ftpusers里面的root用户注销掉即可
命令:
rz 文件名 #下载指定文件到服务器
sz 文件名 #把服务器的文件下载到客户端
工具:一般有图形化界面,更方便更直观。
如FileZilla