一、FTP简介
FTP(File Transfer Protocol),即文件传输协议,是一种用于在网络上传输文件的标准协议。它允许用户在客户端和服务器之间进行文件的上传和下载。
FTP的工作原理是基于客户端-服务器模型的。在这个模型中,客户端通过指定服务器的IP地址和端口号连接到服务器,并通过输入用户名和密码进行身份验证。一旦连接建立成功,客户端便可以通过FTP命令与服务器进行通信。
FTP提供了一系列的命令,用于执行各种文件操作。这些命令包括上传文件到服务器、从服务器下载文件、删除文件、重命名文件、创建目录等等。用户可以使用FTP客户端软件(如FileZilla、CuteFTP等)来方便地执行这些操作。
FTP协议支持两种数据传输模式:主动模式和被动模式。在主动模式中,服务器主动向客户端发起数据连接。而在被动模式中,客户端向服务器发起数据连接。主动模式在防火墙后面更容易配置,而被动模式更适用于客户端在防火墙后面的情况。
FTP协议是一个老牌的文件传输协议,在互联网的早期被广泛使用。然而,随着安全性要求的提高,FTP的明文传输方式容易受到攻击,因此现在更多地使用SFTP(SSH File Transfer Protocol)或FTPS(FTP over SSL)等安全的替代协议。
二、安装ftp软件包
V10服务器一般默认安装了vsftpd软件包,若没有安装,配置光盘yum源,使用以下命令安装:#yum -y install vsftpd
安装完成服务会新建一个ftp用户和ftp的组,家目录为/var/ftp,默认是nologin。
三、配置文件解析
vsftpd的配置文件目录为/etc/vsftpd,包含下列的配置文件:
(1)vsftpd.conf 主配置文件
(2)ftpusers 配置禁止访问FTP服务器的用户列表
(3)user_list 配置用户访问列表
四、配置匿名用户登录ftp
4.1、备份原始配置文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
在设置配置文件之前,建议保留一份原配置文件的备份。每次修改完配置文件后,需要重启vsftpd服务才能生效。
4.2、修改配置文件
vim /etc/vsftpd/vsftpd.conf //修改以下选项,具体配置如下:
anonymous_enable=YES 开启匿名用户登录
no_anon_password=YES 匿名用户登录不检查口令
anon_upload_enable=YES 匿名用户开启上传
anon_mkdir_write_enable=YES 匿名用户允许创建目录
anon_other_write_enable=YES 匿名用户的其它写权限
write_enable=YES 全局写权限
注:匿名用户默认登入的根目录是ftp用户的家目录,可以通过查看/etc/passwd中ftp那一行查看当前系统ftp用户的家目录是/var/ftp,其目录下有一个pub目录,一般用来匿名用户登录访问,/var/ftp/pub目录的属主和属组都是root,设置777权限后,方便匿名用户操作。
4.3、添加防火墙放行规则
V10服务器默认开启了防火墙服务,由于ftp默认监听21号端口,因此我们要添加规则开放21号端口。
访问测试:
五、配置系统本地用户登录ftp
5.1、修改配置文件
vim /etc/vsftpd/vsftpd.conf //修改以下选项,具体配置如下:
userlist_enable=YES 开启用户访问列表
userlist_deny=NO 只有列表文件里的用户可以访问ftp
local_root=/home/kylin ftp用户访问根目录
write_enable=YES 全局写权限配置
local_enable=YES 开启本地用户登录
local_umask=022 创建目录权限755
注:ftp默认配置文件包含了系统用户登录ftp的配置项,只需要添加userlist_deny=NO这个参数项来开启userlist白名单访问;local_root用来设置本地用户登录ftp的根目录,缺省值为用户家目录,自定义设置时候注意登录用户对目录的操作权限。
/etc/vsftpd/ftpusers是限制本地用户访问的黑名单:
/etc/vsftpd/user_list一般用作用户访问ftp的白名单:
使用kylin用户登录测试(所有功能都可)
六、配置虚拟用户登录ftp
6.1、先在系统中创建一个真实用户,虚拟用户依赖真实用户。
#useradd -s /sbin/nologin ftpuser
#chmod 755 /etc/ftpuser
6.2、用户相关配置结束后,开始设置虚拟用户和密码文件vusers.list。
#vim /etc/vsftpd/vusers.list
6.3、使用db_load对vusers.list文件进行加密。
db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vusers.db
chmod 600 /etc/vsftpd/vusers.db 提高虚拟用户账号文件的安全性
6.4、Pam验证
vim /etc/pam.d/vsftpd.vu
6.5、修改vsftpd配置,添加支持虚拟用户
local_enable=YES
write_enable=YES
allow_writeable_chroot=YES
local_root=/home/ftpuser
guest_enable=YES
guest_username=ftpuser
pam_service_name=/etc/pam.d/vsftpd.vu
user_config_dir=/etc/vsftpd/vuser_dir
6.6、设置不同虚拟用户的配置文件
#mkdir /etc/vsftpd/vuser_dir
#vim vuser1
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/ftpuser/vuser1
#mkidr /home/ftpuser/vuser1 //为每个虚拟用户创建家目录
chmod 777 /home/ftpuser/vuser1
6.7、测试验证(上传、下载、创建、重命名等功能)
七、常见问题解决
问题描述:如果桌面环境使用lightdm,使用文件管理器使用系统用户登录FTP时候,出现无法显示目录文件问题。
解决方法:在ftp启动脚本(/lib/systemd/system/vsftpd.service)加入设置环境变量设置:LC_TIME为英文时区。
修改完配置文件后,
#systemctl daemon-reload //重新加载文件
#systemctl resatart vsftpd //重启服务使配置生效
再次访问测试
FROM xds