CentOS安装FTP

Redhat上部署vsftp权限控制
1背景
现场需要部署一个ftp系统,供数据交换使用。
以前惯用的方式是通过linux的用户来创建。
本次做了另外一个尝试,采用虚拟用户进行配置。
2配置过程
2.1vsftpd配置
执行命令: vi /etc/vsftpd/vsftpd.conf 修改/etc/vsftpd/vsftpd.conf,增加如下配置项:
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=YES
#tcp_wrapper=YES

anonymous_enable=NO
use_localtime=YES
ascii_upload_enable=YES
ascii_download_enable=YES

chroot_local_user=YES
chroot_list_enable=YES
local_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

xferlog_enable=YES
local_umask=022

listen_port=21
connect_from_port_20=YES

idle_session_timeout=1000
data_connection_timeout=1000
accept_timeout=5
connect_timeout=1

guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/vuser_conf

pasv_min_port=10060
pasv_max_port=10090

write_enable=YES
local_umask=022
virtual_use_local_privs=NO
download_enable=YES
anon_world_readable_only=NO
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES

xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/vsftp/xferlog.log
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftp/vsftpd.log
max_per_ip=200
max_clients=500
2.2创建chroot_list文件
执行命令touch /etc/vsftpd/chroot_list,在/etc/vsftpd目录下创建chroot_list文件,可将可访问所有目录的用户写在里面,一行一个。
2.3创建linux用户
通过命令useradd -g ftp -s /sbin/nologin ftpuser创建ftp使用的用户ftpuser。
2.4配置用户信息
2.4.1用户数据库
使用vi命令在/etc/vsftpd目录下创建用户文件passwd,单数行为用户名,双数行为密码。
执行命令db_load -T -t hash -f /etc/vsftpd/passwd /etc/vsftpd/passwd.db。
2.4.2创建用户文件
使用命令mkdir /etc/vsftpd/vuser_conf在/etc/vsftpd下创建目录vuser_conf。
在vuser_conf目录下创建用户同名文件。
文件内容如下:
local_root=/ftpdata
write_enable=YES
local_umask=022
virtual_use_local_privs=NO
#下载
download_enable=YES
#只读
anon_world_readable_only=NO
#创建目录
anon_mkdir_write_enable=YES
#上传
anon_upload_enable=YES
#删除
anon_other_write_enable=YES
anon_umask=022
2.5修改用户目录权限
ftpuser必须对/ftpdata无写权限
在/ftpdata目录下创建新的有读写权限目录
mkdir /ftpdata/data
chown ftpuser: /ftpdata/data
2.6配置校验
使用命令vi /etc/pam.d/vsftpd修改/etc/pam.d/vsftpd,清空内容,修改为:
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/passwd
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/passwd
2.7配置目录权限
若已关闭selinux,则跳过此步骤。

在ftp目录下,执行如下命令,查看目录权限:
sestatus -b| grep ftp

执行如下命令授权:
setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on
2.8打开端口
firewall-cmd –add-port=21/tcp –permanent
firewall-cmd –add-port=10060-10090/tcp –permanent
2.9重启vsftpd服务

本文地址: https://github.com/maxzhao-it/blog/post/54531fghfgd/