vsftpd服务
应用:用户可通过客户端向(从)远程主机上传(下载)文件
实验环境
主机名 | IP地址 | 角色 |
---|---|---|
ftp-server | 192.168.100.33 | 服务端 |
ftp-client | 192.168.100.60 | 客户端 |
关闭防火墙和selinux
[root@ftp-server ~]# systemctl stop firewalld.service //防火墙
[root@ftp-server ~]# systemctl disable firewalld.service
[root@ftp-client ~]# systemctl stop firewalld.service
[root@ftp-client ~]# systemctl disable firewalld.service
[root@ftp-server ~]# setenforce 0 //selinux
[root@ftp-client ~]# setenforce 0
配置匿名用户ftp
服务端配置
- 安装vsftpd
[root@ftp-server ~]# yum -y install vsftpd
- 开启vsftpd并加入开机自启
[root@ftp-server ~]# systemctl start vsftpd
[root@ftp-server ~]# systemctl enable vsftpd
- 在文件vsftpd.conf配置匿名用用户
[root@ftp-server ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES //开启匿名用户,默认是开启的
###匿名用户
anon_upload_enable=YES //允许匿名用户上传
anon_mkdir_write_enable=YES //允许匿名用户创建目录
anon_other_write_enable=YES //允许匿名用户删除和创建
###
- 给/var/ftp/put目录的其他用户提权
[root@ftp-server ~]# chmod 777 /var/ftp/pub/
- 重启vsftpd服务
[root@ftp-server ~]# systemctl restart vsftpd
客户端检测
- 客户端登陆
[root@ftp-client ~]# lftp 192.168.100.33 //匿名用户登陆
- 创建和删除
lftp 192.168.100.33:~> cd pub/
lftp 192.168.100.33:/pub> mkdir 1
mkdir ok, `1' created
lftp 192.168.100.33:/pub> ls
drwx------ 2 14 50 6 Aug 24 03:29 1
lftp 192.168.100.33:/pub> rmdir 1
rmdir ok, `1' removed
- 在客户端工具验证
登陆
创建文件和目录
删除
配置虚拟用户ftp
服务端配置
- 创建文本格式用户名、密码列表
[root@ftp-server ~]# cat >> /etc/vsftpd/vsftp.list << EOF
> tom
> 123
> jerry
> 456
> EOF
- 将刚创建的文件用db4工具转换成数据库文件
[root@ftp-server ~]# yum -y install db4* //下载db4工具
[root@ftp-server ~]# db_load -T -t hash -f /etc/vsftpd/vsftp.list /etc/vsftpd/vsftp.db
- 将文件的权限设置为600,避免数据外泄
[root@ftp-server ~]# chmod 600 /etc/vsftpd/vsftp*
[root@ftp-server ~]# ll /etc/vsftpd/vsftp*
-rw------- 1 root root 12288 8月 24 11:50 /etc/vsftpd/vsftp.db
-rw------- 1 root root 18 8月 24 11:44 /etc/vsftpd/vsftp.list
- 添加虚拟用户的映射账户,创建ftp根目录
[root@ftp-server ~]# useradd -d /var/ftproot -s /sbin/nologin vftp
[root@ftp-server ~]# chmod 755 /var/ftproot/
[root@ftp-server ~]# ll /var/ftproot/ -d
drwxr-xr-x 2 vftp vftp 62 8月 24 11:55 /var/ftproot/
- 为虚拟用户建立PAM认证
[root@ftp-server ~]# cp /etc/pam.d/vsftpd{,-bak} //备份
[root@ftp-server ~]# cat /etc/pam.d/vsftpd
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vsftp
account required pam_userdb.so db=/etc/vsftpd/vsftp
- 修改vsftp配置文件,添加虚拟账号支持,为不同的虚拟用户建立独立的配置文件
[root@ftp-server ~]# cat >> /etc/vsftpd/vsftpd.conf << EOF
> guest_enable=YES
> guest_username=vftp
> user_config_dir=/etc/vsftpd/vusers_dir
> allow_writeable_chroot=YES
> EOF
- 在vusers_dir目录中为每个虚拟用户配置文件
[root@ftp-server ~]# mkdir /etc/vsftpd/vusers_dir
//设置tom用户
[root@ftp-server ~]# cat >> /etc/vsftpd/vusers_dir/tom << EOF
> anon_umask=022
> anon_upload_enable=YES
> anon_mkdir_write_enable=YES
> anon_other_write_enable=YES
> EOF
//设置jerry用户
[root@ftp-server ~]# touch /etc/vsftpd/vusers_dir/jerry //只需要默认的下载权限,所有不用配置
- 重启服务
[root@ftp-server ~]# systemctl restart vsftpd
客户端检测
- 客户端登陆tom用户
[root@ftp-client ~]# lftp -u tom,123 192.168.100.33 //登陆
lftp tom@192.168.100.33:/> mkdir 1 //创建
mkdir ok, `1' created
lftp tom@192.168.100.33:/> ls
drwx------ 2 1003 1004 6 Aug 24 04:20 1
lftp tom@192.168.100.33:/> rmdir 1 //删除
rmdir ok, `1' removed
- 登陆jerry用户
[root@ftp-client ~]# lftp -u jerry,456 192.168.100.33
lftp jerry@192.168.100.33:~> ls
drwx------ 2 1003 1004 6 Aug 24 04:28 1
客户端工具登陆tom
创建和删除
客户端登陆jerry
登陆jerry
测试权限
下载
配置系统用户ftp
- 创建系统用户,设置密码,但不允许登陆系统
[root@ftp-server ~]# useradd bgx -s /sbin/nologin
[root@ftp-server ~]# echo "123" | passwd --stdin bgx
- 配置vsftpd的配置文件文件
[root@ftp-server ~]# vim /etc/vsftpd/vsftpd.conf
\\本地用户默认有上传下载权限
###系统用户
local_enable=YES //开启本地用户
chroot_local_user=YES //禁锢本地用户在自己的家目录中
allow_writeable_chroot=YES
- 重启服务
[root@ftp-server ~]# systemctl restart vsftpd
客户端检测
- 客户端登陆
[root@ftp-client ~]# lftp -u bgx,123 192.168.100.33
lftp bgx@192.168.100.33:~> ls
drwxr-xr-x 2 1003 1004 6 Aug 24 03:14 1
lftp bgx@192.168.100.33:/> mkdir a
mkdir ok, `a' created
lftp bgx@192.168.100.33:/> rmdir a
rmdir ok, `a' removed
- 客户端工具检测
登陆
查看目录
上传
下载
创建和删除