0、目标
通过搭建vsftp实现使用虚拟用户登录,权限隔离的ftp服务。
并实现公共目录共享功能。
1,安装必要的软件包
yum install -y vsftpd libdb-utils
2,设置虚拟账号信息(使用文件存储)
2.1 创建明文账户信息
vim /etc/vsftpd/vuser_list
alice
123456
bob
123456
2.2 创建数据库账户信息
db_load -T -t hash -f /etc/vsftpd/vuser_list /etc/vsftpd/vuser_list.db
3,设置基于虚拟用户验证的pam文件
vim /etc/pam.d/vsftpd.vuser
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_list
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_list
注意此处配置中db文件无需写.db扩展名
4,创建虚拟账号的主目录
# 创建ftp用户目录
mkdir -p /data/ftp
# 修改ftp用户家目录
usermod -d /data/ftp ftp
# 更改用户目录权限
chmod 755 /data/ftp
#更改用户目录宿主账户
chown -R ftp.ftp /data/ftp
# 创建公共资源目录
mkdir /data/ftp/public
chmod -R 777 /data/ftp/public
5,修改vsftpd的主配置文件
anonymous_enable=NO # 禁止匿名用户访问FTP服务器。
local_enable=YES # 允许本地用户访问FTP服务器。
write_enable=YES # 允许用户上传文件到FTP服务器。
local_umask=022 # 本地用户上传的文件默认权限为644。
dirmessage_enable=YES # 允许FTP服务器向用户发送目录信息。
connect_from_port_20=YES # 使用20号端口进行数据连接。
listen=YES # 启用独立模式,FTP服务器以独立进程的方式运行。
guest_enable=YES # 允许虚拟用户访问FTP服务器。
guest_username=ftp # 指定虚拟用户的登录名。
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/vsftpd.log # 启动日志文件
user_config_dir=/etc/vsftpd/vuser_conf # 指定虚拟用户的配置文件存放目录。
chroot_local_user=YES # 将会应用 chroot 到本地用户的家目录,防止用户访问系统的其它目录。
allow_writeable_chroot=YES
pam_service_name=vsftpd.vuser # 指定PAM服务名称。
userlist_enable=YES # 启用用户列表,即限制用户访问FTP服务器。
tcp_wrappers=YES # 启用TCP包过滤机制。
pasv_min_port=30000 # 指定被动模式的最小端口号。
pasv_max_port=65000 # 指定被动模式的最大端口号。
pasv_address=10.0.0.57 # 指定FTP服务器的被动模式IP地址。
local_root=/data/ftp # 指定FTP服务器的根目录。
6,设置单个虚拟账号的配置文件以及挂载公共目录public
# 准备虚拟账户配置目录
mkdir -p /etc/vsftpd/vuser_conf
cat > /etc/vsftpd/vuser_conf/bob
7,开放防火墙对应的权限,或者将防火墙全部关闭,修改selinux设置
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
setsebool ftpd_full_access on -P
8,启动vsftpd服务,并加入服务自启动
systemctl start vsftpd && systemctl enable vsftpd
服务器租用托管,机房租用托管,主机租用托管,https://www.e1idc.com