环境说明
CentOS Linux release 7.8.2003
1. ftp 安装、用户、目录创建脚本
#! /bin/bash
# 判断应用是否安装
if ! type vsftpd >/dev/null 2>&1; then
yum install vsftpd -y
else
echo 'vsftpd 已安装';
fi
# 用户创建,密码设置
rootdir=/opt/boxdata/data/ftp
cd $rootdir
for i in {1..32}
do
# 添加sftp用户与密码
useradd -d $rootdir/ftp_user$i -m ftp_user$i
#useradd -d $rootdir/ftp_user$i -s /sbin/nologin -m ftp_user$i
echo "sz@123456" | passwd --stdin ftp_user$i
if [ ! -d ftp_user$i ];
then
mkdir -p ftp_user$i
fi
chown -R ftp_user$i:ftp_user$i ftp_user$i
# 限制用户登录系统只能访问单一目录[家目录]
cd ftp_user$i
echo alias cd=\'cd $PWD\' >> .bashrc
cd ..
done
# 配置各自用户访问根目录
cd /etc/vsftpd/
touch chroot_list
# 配置用户根目录,可以只配置一个用户的
mkdir userconfig
cd userconfig/
# ftp 访问会直接跳到用户根目录,否则会跳到root根目录
echo local_root=/opt/boxdata/data/ftp/ftp_user1 >> ftp_user1
2. 修改配置文件
[root@bimvm01 bim]# cat /etc/vsftpd/vsftpd.conf |grep -v “^#”
anonymous_enable=no #设置是否允许匿名用户登录
local_enable=YES #设置是否允许本地用户登录
write_enable=YES #是否允许用户有写权限
local_umask=022 #设置本地用户创建文件时的umask值
dirmessage_enable=YES #允许为目录配置显示信息,显示每个目录下面的message_file文件的内容
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES #日志文件位置
chroot_local_user=YES #锁定用户到各自的根目录
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
local_root=/opt/boxdata/data/ftp #用户路径 【更改为自己的用户root路径】
user_config_dir=/etc/vsftpd/userconfig #用户配至文件
allow_writeable_chroot=YES
3. 重启 ftp 服务
systemctl restart vsftpd.service [centos 7]
4. WinSCP 连接
报错
-
cannot change directory:/home/hlapp
原因:没有权限 解决: set sebool allow_ftpd_anon_write=1 allow_ftpd_full_access=1 ftp_home_dir=1 getsebool -a |grep ftp 重启服务:systemctl restart vsftpd.service
-
报 530 连接失败
原因:没有ssh 登录系统权限 解决:建用户时,设置允许登录操作系统,限制只能访问家目录即可,也能保证安全性。
备注:
参考网址:https://www.cnblogs.com/xuewenlong/p/12800483.html
以上是个人测试笔记,有不对的地方,欢迎在下方评论区留言。