实验环境
selinux关闭:(设置完成需重启)
vim /etc/sysconfig/selinux
ftp介绍
ftp:file transfer proto(文件传输通道)
互联网中最老牌的文件传输协议
vsftpd安装及启用
在server中:
dnf install vsftpd -y
systemctl enable --now firewalld
systemctl enable --now vsftpd
firewalld -cmd --permanent --add-service=ftp
firewalld -cmd --permanent --add-source=172.1.36.101 --zone=trusted
systemctl restart firewalld 或 firewalld-cmd --reload
vim /etc/vsftpd/vsftpd.conf
12 anonymous_enable=YES 启动匿名用户的访问功能
systemctl restart vsftpd
配置完成
550 ##程序本身拒绝
553 ##文件系统权限限制
500 ##权限过大
530 ##认证失败(密码错误、匿名登录未开启)
匿名用户访问控制
vim /etc/vsftpd/vsftpd.conf
第12行的NO改为YES
systemctl restart vaftp
此时所有用户可访问
家目录控制
vim /etc/vsftpd/vsftpd.conf
写入anon_root=/westos
systemctl restart vsftpd
上传控制
vim /etc/vsftpd/vsftpd.conf
将29行的 anon_upload_enable=YES的注释打开
systemctl restart vsftpd
chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub
lftp 172.25.254.225
cd pub
put /etc/passwd
此时passwd就上传了
目录建立控制
vim /etc/vsftpd/vsftpd.conf
将33行的anon_mkdir_enable=YES的注释打开
systemctl restart vsftpd
此时可以建立目录
lftp 172.25.254.225
cd pub
mkdir westos
匿名用户可以下载不能读的文件删除重命令控制
vim /etc/vsftpd/vsftpd.conf
在13行添加anon_other_write_enable=YES
systemctl restart vsftpd
此时可以删除
lftp 172.25.254.225
cd pub
rm -fr passwd
下载控制
vim /etc/vsftpd/vsftpd.conf
写入anon_world_readable_only=NO
systemtl restart vsftpd
lftp 172.25.254.225
cd pub
put /etc/passwd
get passwd
匿名用户上传文件权限设定
vim /etc/vsftpd/vsftpd.conf
anon_umask=022
systemctl restart vsftpd
匿名用户上传文件的用户身份设定
vim /etc/vsftpd/vsftpd.conf
chown_upload=YES
chown_username=westos ##所有匿名用户在服务器上生成的文件都以westos的身份生成
chown_upload_mode=0644 ##设定文件权限
systemctl restart vsftpd
此时新上传的文件拥有者和权限都已改变
登陆数量控制
vim /etc/vsftpd/vsftpd.conf
添加max_clients=2 ##最多同时允许两台登陆
systemctl restart vaftpd
上传速率控制
vim /etc/vsftpd/vsftpd.conf
anon_max_rate=102400 ##最大上传速率为100kb/s
systemctl restart vsftpd
此时上传速率已被限制
本地用户的访问
建立新用户
useradd linux
echo westos | passwd --stdin linux
su - linux
touch linuxfile
su - westos
touch westosfile
lftp 172.25.254.225 -u westos/linux 两个用户都可登陆
vim /etc/vsftpd/vsftpd.conf
将21行的local-enable=YES 改为NO
systemctl restart vsftpd
此时两个用户都不可登陆
家目录控制
vim /etc/vsftpd/vsftpd.conf
local_root=/westosdir ##将家目录修改为westosdir
systemctl restart vsftpd、
此时家目录已经改变
写权限控制
vim /etc/vsftpd/vsftpd.conf
将25行的write_enable=YES改为NO
systemctl restart vsftpd
此时将不能写(上传等操作不能执行)
上传文件权限控制
vim /etc/vsftpd/vsftpd.conf
local_umask=077 ##此时上传的文件权限为777-077=600
systemctl restart vsftpd
此时上传的文件权限变为600
锁定用户到自己的家目录中(不可浏览/目录)
没做任何操作之前可以任意浏览/目录
vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES ##此时所有用户都被锁定到自己的家目录中,为NO时解锁
systemctl restart vsftpd
chmod u-w /home/*
此时无法浏览/目录
锁定用户到白名单
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
然后在/etc/vsftpd/chroot_list中写入westos
systemctl restart vsftpd
此时除了westos其他用户都不能访问/目录
锁定用户到黑名单
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
然后在/etc/vsftpd/chroot_list中写入westos
systemctl restart vsftpd
此时除了westos其他用户都可以访问/目录
用户登陆控制
/etc/vsftpd/ftpusers ##永久黑名单
在此配置文件中写入的用户不管做什么操作都不能登陆
/etc/vsftpd/user_list ##默认黑名单
在此配置文件中写入的用户不能登陆
用户白名单
vim /etc/vsftpd/vsftpd.conf
添加 user_list_deny=NO ##写入此命令后/etc/vsftpd/user_list就变成了白名单
systemctl restart vsftpd
此时只有在/etc/vsftpd/user_list这个配置文件里的用户才能登陆
westos用户可以登录
Linux用户不能登录
虚拟用户访问
1.建立虚拟用户
vim /etc/vsftp/auth_file
user1
123
user2
123
user3
123
2.加密文件
db_load -T -t hash -f auth_file auth_file.db
3.vim /etc/pam.d/westos
account required pam_userdb.so db=/etc/vsftpd/auth_file
auth required pam_userdb.so db=/etc/vsftpd/auth_file
4.vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos
guest_enable=YES
guest_username=ftp
systemctl restart vsftpd
此时lftp 172.25.254.225 -u westos 不能登陆
lftp 172.25.254.225 -u user1
lftp 172.25.254.225 -u user2
lftp 172.25.254.225 -u user3
都可以登陆
虚拟用户家目录独立
mkdir -p /ftpuserdir/ftpuser{1…3}
touch /ftpuserdir/ftpuser1/user1file
touch /ftpuserdir/ftpuser2/user2file
touch /ftpuserdir/ftpuser3/user3file
vim /etc/vsftpd/vsftpd.conf
local_root=/ftpuserdir/
U
S
E
R
u
s
e
r
s
u
b
t
o
k
e
n
=
USER user_sub_token=
USERusersubtoken=USER
systemctl restart vsftpd
lftp 172.25.254.225 -u user1
lftp 172.25.254.225 -u user2
登陆时虚拟用户家目录独立
用户配置独立
vim /etc/vsftpd/vsftpd.conf
注释anon_upload_enable=YES
添加user_config_dir=/etc/vsftpd/westos_conf
systemctl restart vsftpd
mkdir /etc/vsftpd/westos_conf
touch /etc/vsftpd/westos_conf/user1
vim /etc/vsftpd/westos_conf/user1
lftp 172.25.254.225 -u user1
lftp 172.25.254.225 -u user2
lftp 172.25.254.225 -u user3
此时,只有user1可以上传,其余两个不能上传