CentOS7搭设FTP服务器
FTP
主要用于文件传输,在Linux
上一般用vsftpd
来实现,通过搭设FTP
服务器,可以实现文件的共享,至少比坑爹的某度网盘强多了。
搭设FTP
服务器有三种可选的认证方式:匿名认证、本地用户认证、虚拟用户认证,安全性:匿名认证<本地用户认证<虚拟用户认证,配置复杂度:匿名认证<本地<虚拟用户认证。
Linux
中文件都有对应的所有者,虚拟用户认证指的是,创建一个或多个FTP
用户,并将这些FTP
用户与Linux
本地的某个用户(如vftpuser
)进行映射,这样完成映射的用户在对FTP
目录进行操作时等同于用户vftpuser
进行操作。此外,虚拟用户认证模式可以允许对多个FTP
分别进行配置,非常灵活方便。从灵活性与安全性两个方面考虑,本文选择使用虚拟用户认证模式。
OK,准备开工!
一、基本环境
服务器:CentOS7.5
客户机:Ubuntu Mate18.10
FTP服务端:vsftpd
FTP客户端:FileZilla(可选)
二、基本流程
为了看起来更简洁,仅列出搭设基本流程及相关命令。
-
安装
vsftpd
yum install vsftpd
-
创建虚拟用户
用你喜欢的任何编辑器创建并编辑/etc/vsftpd/vuser.list
文件,内容如下:lilei lileipasswd hanmeimei hmmpasswd
口令认证文件奇数行为用户名,偶数行为对应的密码
-
创建口令认证数据库
db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db chmod 600 /etc/vsftpd/vuser.db
-T:转换
-t:指定hash算法
-f:指定用户名
-
编辑
PAM
认证文件创建并编辑
/etc/pam.d/vsftpd.vu
,内容如下:auth required pam_userdb.so db=/etc/vsftpd/vuser account required pam_userdb.so db=/etc/vsftpd/vuser
db指定口令认证数据库,不含后缀名
-
建立本地用户
useradd -d /home/vftpuser -s /sbin/nologin vftpuser chmod 755 /home/vftpuser
-d:指定用户主目录
-s:指定用户登录shell,/sbin/nologin表示禁止用户通过shell登录,提高安全性
-
映射
FTP
用户到vftpuser
编辑
/etc/vsftpd/vsftpd.conf
,修改下列行:pam_service_name=vsftpd.vu # 指定pam认证文件 guest_enable=YES # 启用映射 guest_username=vftpuser # 指定映射的本地用户 user_config_dir=/etc/vsftpd/vusers_dir # 指定FTP用户配置文件位置,如果不需要对每个用户进行分别配置,可将此行注释掉
-
为每个用户进行单独配置
创建
/etc/vsftpd/vuser_dir
,针对每个FTP
用户创建同名配置文件,此处以lilei
为例。创建并编辑/etc/vsftpd/vuser_dir/lilei
,内容如下:anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_root=/var/www/html
默认根目录为映射用户的家目录,可通过
local_root
指定某个用户的根目录,注意需要将此目录所有者改为vftpuser
。 -
重启
vsftpd
systemctl start vsftpd
三、注意事项
- 将
vsftpd
加入开机启动,防止服务器重启后无法访问; - 如果
FTP
服务器无法访问,注意检查防火墙与SElinux
设置; - 生成口令认证数据库后,及时将
list
文件删除,防止密码泄露。
欢迎关注公众号
