一、安装FTP

1
2
3
4
5
6
# 安装FTP
yum -y install vsftpd

# 启动并设置开机自启
systemctl start vsftpd
systemctl enable vsftpd

二、配置FTP

1
2
3
4
5
6
# 先备份再过滤文件
/etc/vsftpd/vsftp.conf
cp vsftpd.conf{,.back}

# 过滤注释
cat vsftpd.conf.back | grep -v "#" > vsftpd.conf

image-20220817093057717

三、匿名用户访问

1
2
3
4
5
6
7
8
9
10
11
12
# 匿名用户访问需要配置
anonymous_enable=YES
anon_upload_enable=YES
anon_umask=022
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

# 记得重启
systemctl restart vsftpd

# 赋予权限
chmod 777 -R pub #权限提升

四、本地用户访问

1
默认禁止root使用FTP,创建一个普通用户即可,本地用户默认可以登录

五、虚拟用户访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 创建用户virtual,指定用户的家目录为/var/ftproot,指定用户的shell为不可登录
useradd -d /var/ftproot -s /sbin/nologin virtual

# 建立虚拟用户列表,规定奇数行为用户,偶数行为密码
vim /etc/vsftpd/vuser.list

#对其进行加密
db_load -T -t hash -f vuser.list vuser.db

# 为了安全删除原文件
rm -fr vuser.list
# 为安全只允许创建文件者访问该文件
chmod 600 -R vuser.db

#创建一个认证文件,写下如下配置
vim /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser

# 编辑配置文件如下
guest_enable=YES #允许虚拟用户登录
guest_username=virtual #填写创建的本地用户
allow_writeable_chroot=YES #允许读写
user_config_dir=/etc/vsftpd/vuser_dir #指定虚拟用户的配置文件
pam_service_name=vsftpd.vu #虚拟用户认证文件

六、虚拟用户权限配置

1.权限架构配置

1
2
3
4
5
6
7
8
9
10
11
12
13
cd /etc/vsftpd
mkdir vuser_dir
touch zhangsan lisi

mkdir -p /mnt/share/ftpadmin0{1..3} #示例,创建3个用户的上传目录

mkdir -p /mnt/share/zhansan
mkdir -p /mnt/share/lisi

chown virtual:virtual /mnt/share/zhangsan
chown virtual:virtual /mnt/share/lisi

systemctl restart vsftpd

2.分别配置用户权限

1
2
3
4
5
6
7
8
9
10
11
#zhangsan 只能上传
vim /etc/vsftpd/vuser_dir/zhangsan

local_root=/mnt/share/zhangsan
write_enable=YES
download_enable=NO
anon_umask=022
anon_world_readable_only=NO(关闭只可读权限)
anon_upload_enable=YES(上传)
anon_mkdir_write_enable=NO(创建目录权限)
anon_other_write_enable=NO(其他写权限,改,删)(此行改为NO后,便没有了删除权限,其他权限不变)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#lisi	只能下载
vim /etc/vsftpd/vuser_dir/lisi
local_root=/mnt/share/lisi
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=NO
anon_other_write_enable=YES


write_enable=YES
anon_world_readable_only=NO
download_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES