阅读更多
安装ftp在centos7下,
此类文章很多,这里也只是总结一下实践经历。
本文主要来源:
https://blog.51cto.com/meiling/2071122
作者M_ling
但做了修改,否则不对,主要是#guest_enable=YES ,需去除井号。
另做了限制,只允许ftp访问特定目录,这是必须的。
另外设置了umask,确保文件666属性,文件夹777属性。
安装依赖
yum -y install vsftpd
yum -y install db4-utils
yum -y install pam*
首先,应该使用被动模式。PASV模式。
查看版本
vsftpd -v
vsftpd: version 3.0.2
创建两个测试用文件夹
/var/test1
/var/test2
当前用户最好是root,
然后
chmod 777 /var/test1
chmod 777 /var/test2
核心配置
备份原配置
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
这里使用虚拟用户模式配置。
防火墙需开启一个命令端口(假定3378,不使用默认的21),和一段数据端口假定 21221到21231
如果是阿里云,则
云服务器-》右侧更多 -》 网络和安全组 -》 安全组配置 -》
内网入方向全部规则 -》 添加
允许,自定义tcp,21221/21231,IPv4地址段访问,0.0.0.0/0
允许,自定义tcp,3378,IPv4地址段访问,0.0.0.0/0
总之,加两条通过规则。
然后
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
local_umask=022
#tcp_wrappers=NO
reverse_lookup_enable=NO
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
#listen=YES
listen_port=3378
connect_from_port_20=YES
pasv_enable=YES
pasv_promiscuous=YES
pasv_min_port=21221
pasv_max_port=21231
#accept_timeout=120
connect_timeout=120
data_connection_timeout=180
idle_session_timeout=600
local_max_rate=0
#dirmessage_enable=NO
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
#log_ftp_protocol=YES
xferlog_std_format=YES
guest_enable=YES
guest_username=root
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vuser_conf
guest_username 一般填写目录所有者,一般为 root 或者 www、ftp 等。
虚拟用户权限配置
mv /etc/vsftpd/user_list /etc/vsftpd/user_list.bak
vi /etc/vsftpd/user_list
内容如下:
test1
test2
表示我用这两个虚拟用户。
touch /etc/vsftpd/chroot_list
mkdir /etc/vsftpd/vuser_conf
vim /etc/vsftpd/vuser_conf/test1
内容如下:注意此文件名必须是其中一个虚拟用户
local_root=/var/test1
write_enable=YES
download_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_umask=000
anon_umask=000
继续,
vim /etc/vsftpd/vuser_conf/test2
内容如下:注意此文件名必须是其中一个虚拟用户
local_root=/var/test2
write_enable=YES
download_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_umask=000
anon_umask=000
local_roo这项,这是该虚拟用户特定的文件夹,可以随意改,无限制。
日志文件
touch /var/log/vsftpd.log
chown ftp:ftp /var/log/vsftpd.log
虚拟用户认证
vi /etc/vsftpd/vsftpd_vuser
内容:
test1
123456
test2
123456
db_load -T -t hash -f /etc/vsftpd/vsftpd_vuser /etc/vsftpd/vsftpd_vuser.db
chmod 600 /etc/vsftpd/vsftpd_vuser.db
mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
vi /etc/pam.d/vsftpd
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_vuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_vuser
最后。
systemctl start vsftpd
然后用客户端去连接就可以了。
test1用户 123456
对应的是/var/test1这个目录,注意这个目录是可以随意指定的。
然后上传的文件权限是666,文件夹权限是777
test2用户,密码123456
对应的是/var/test2目录,都一样。