近期在使用VPS的下载文件的时候,每次都需要SCP动作,这个动作让喜欢偷懒的我都需要输入一大堆命令,由此想搭建一套自己的资源服务器vsftpd,下载完毕后通过web服务提供下载使用。
vsftpd支持3种用户访问:
- 匿名用户访问
- 系统用户访问
- 虚拟用户访问
以下过程是记录虚拟用户访问的。
系统修改默认配置
关闭SELINUX,或者在在SELINUX中添加例外,我这里命令直接关闭。
setenforce 0
注:如果是临时使用可以通过命令,一旦你要长期配置就需要修改配置文件了。
安装vsftpd软件
通过YUM源的方式进行安装,如果没有的话,可以下载vsftpd的rpm包进行手动执行安装。
yum install vsftpd
Vsftpd虚拟用户使用前期配置
创建vsftpd服务使用的虚拟用户,该用户主要是支持ftp虚拟用户的上传下载操作,禁止登录到操作系统中。
useradd ftpuser -d /ftpdata/ -s /sbin/nologin
创建用户使用的工作目录
mkdir /ftpdata/ftpuser
创建虚拟用户访问信息关联文件,并生成对应的库文件
touch /etc/vsftpd/ftplogin.txt
# 添加如下内容,单数行是用户名,偶数行是密码
ftpuser
123456
# 生成库文件
db_load -T -t hash -f /etc/vsftpd/ftplogin.txt /etc/vsftpd/ftplogin.db
启动库文件,并配置让系统找到该库文件,编辑/etc/pam.d/vsftpd文件,注释掉其它信息,添加如下信息
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/ftplogin
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/ftpologin
创建虚拟用户配置文件
mkdir /etc/vsftpd/ftp_user_conf
vi /etc/vsftpd/ftp_user_conf/ftpuser
# 添加如下内容, local_root为设置ftp主目录
local_root=/ftpdata/ftpuser
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
修改全局配置文件,vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd/ftp_user_conf
allow_writeable_chroot=YES
# 以下是注解
# anonymous_enable=NO 禁止匿名用户登录
# chroot_local_user=YES 禁止用户访问除主目录以外的目录
# ascii_upload_enable=YES
# ascii_download_enable=YES 设定支持ASCII模式的上传和下载功能
# guest_enable=YES 启动虚拟用户
# guest_username=vsftpd 虚拟用户使用的系统用户名
# user_config_dir=/etc/vsftpd/ftp_user_conf 虚拟用户使用的配置文件目录
# allow_writeable_chroot=YES 最新版的vsftpd为了安全必须用户主目录(也就是/ftpdata/ftpuser)没有写权限,才能登录,或者使用allow_writeable_chroot=YES
启动服务
systemctl start vsftpd
好了,以上服务可以使用ftpuser登录,并进行上传和下载了。如果需对用户另外配置,请修改ftpuser