ftp服务
一、FTP 文件传输协议
1.FTP为系统提供了通过网络与远程服务器进行传输的简单方法,分主动和被动两种;2.vsftpd:安全型服务器包,被动传输的接口是随机的,安全级别更高;
3.默认配置文件让anonymous用户只能下载位于chroot目录中的内容;
4./var/ftp:远程FTP客户端能以用户anonymous或ftp用户连接到服务器,无需密码;
二、设置FTP服务
1.配置yum源,安装vsftpd lftp
![](https://i-blog.csdnimg.cn/blog_migrate/368ae008573586352496dcb108d505f8.png)
3.在客户端进行实验 (防火墙处于开启状态)
无法连接
查看防火墙限制的服务 firewall-cmd --get-services
![](https://i-blog.csdnimg.cn/blog_migrate/9c57f9e07bbeba36a70396d5112becb9.png)
修改配置文件,允许ftp服务通过防火墙
firewall-cmd --permanent --add-service=ftp
防火墙服务重新加载配置文件
firewall-cmd --reload
查看防火墙允许服务 firewall-cmd --list-all
![](https://i-blog.csdnimg.cn/blog_migrate/62d3038f98f1ebcb3dbb3f73c3000e27.png)
5.修改配置后,客户端连接ok ##默认目录 /pub
三、用户登陆设置
路径/etc/vsftpd/vsftpd.conf
修改配置文件后需要重起服务生效:systemctl restart vsftpd
1.匿名用户登陆
anonymous_enable=YES
anonymous_enable=NO ##是否允许登陆
不允许登陆状态如下:
![](https://i-blog.csdnimg.cn/blog_migrate/26d1b5457095627bcdcbd66d1c6bf082.png)
2.本地用户登陆
local_enable=YES
local_enable=No ##是否允许登陆
不允许登陆状态如下:
![](https://i-blog.csdnimg.cn/blog_migrate/566542085d68725164f0f4f7ed8a5a78.png)
3.本地用户读写
write_enable=YES
write_enable=NO ##是否允许读写
注意:该实验必须修改内核级限制文件 /etc/sysconfig/selinux
SELINUX=disabled
允许读写
![](https://i-blog.csdnimg.cn/blog_migrate/028266e3934a776b3d9fa2985ab64fbd.png)
不允许读写
![](https://i-blog.csdnimg.cn/blog_migrate/b62b22ce8a4860a5e6a3f9b8c9e68ce1.png)
四、登陆用户的读写权限
注意:530报错为密码输入错误550报错为没有设置匿名用户上传权限
553报错为文件权限不够
1.查看ftp可操作的命令 help
2.匿名用户上传文件权限 /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES
修改组 chgrp ftp /var/ftp/pub/
修改权限 chmod 775 /var/ftp/pub/
实验效果如下:
![](https://i-blog.csdnimg.cn/blog_migrate/b06fbabb3d6509b94a4410e96735bba5.png)
3.匿名用户删除文件权限 /etc/vsftpd/vsftpd.conf
anon_other_write_enable=YES
实验效果如下:
![](https://i-blog.csdnimg.cn/blog_migrate/24799e47cecb2916134cfe6f73116fc4.png)
4.匿名用户下载文件权限 /etc/vsftpd/vsftpd.conf
anon_world_readable_only=NO
实验效果如下:
![](https://i-blog.csdnimg.cn/blog_migrate/2e6847aa70554c747e0421a375c410fd.png)
5.匿名用户新建目录权限 /etc/vsftpd/vsftpd.conf
anon_mkdir_write_enable=YES
实验效果如下:
五、用户登陆的相关配置
1.修改默认用户,即以用户student的身份登陆chown_uploads=YES
chown_username=student
anon_max_rate=102400
3.匿名用户登陆的默认目录修改
anon_root=/mnt
local_root=/mnt ##本地用户登陆的默认目录
实验:在/mnt下建立五个文件 file1-file5
4.最多同时在线人数设定
max_clients=3
local_umask=022 设置: local_umask=077
chroot_local_user=YES
注意:此时要取消家目录文件W权限,否则会500报错,权限太大
![](https://i-blog.csdnimg.cn/blog_migrate/4737b339a32d5ebc942a7b218c728f71.png)
用户登陆,可切换目录,如切到根目录
chroot_local_user=NO
![](https://i-blog.csdnimg.cn/blog_migrate/c7fea3ed4131dc4a3e18766e98188119.png)
7.本地用户登陆黑/白名单
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
注意:当锁定用户家目录(YES)时,/etc/vsftpd/chroot_list是白名单
当不锁定用户家目录(NO)时,/etc/vsftpd/chroot_list是黑名单
8.黑名单配置文件
ftpusers ##永久黑名单,一旦加入,任何操作都不能洗白
user_list ##临时黑名单,可修改配置文件,变为白名单
userlist_enable=YES ##开启userlist列表
userlist_deny=NO ##默认所有用户加入黑名单,白名单用户可登陆
注意:若用户既在永久黑名单,也在白名单,此用户不能登陆!!
六、虚拟用户登陆
1.建立虚拟用户
vim /etc/vsftpd/users ##名字可自定义
注意:不能有空格
db_load -T -t hash -f users users.db
会生成 /etc/vsftpd/users.db文件
/etc/pam.d/usercheck
account required pam_userdb.so db=/etc/vsftpd/users ##用户认证
auth required pam_userdb.so db=/etc/vsftpd/users ##密码认证
pam_service_name=usercheck ##pam读取虚拟用户文件usercheck
guest_enable=YES ##开启虚拟用户登陆
guest_username=ftp ##使虚拟用户以ftp映射用户登陆,
5.配置虚拟用户具备独立的家目录
建立虚拟用户的家目录(例:两个用户)
##—p 表示上层目录不存在,自动建立
local_root=/var/ftpdir/$USER
user_sub_token=$USER
实验效果如下:
![](https://i-blog.csdnimg.cn/blog_migrate/529b3e8e611480fc9128f80eaca510a8.png)
6.虚拟用户分开管理(VIP)
将匿名用户所有的权限关闭
修改配置文件,给指定虚拟用户特殊权限
user_config_dir=/etc/vsftpd/user_conf
在/etc/vsftpd/user_conf目录下建立文件,以虚拟用户名命名
touch hello
![](https://i-blog.csdnimg.cn/blog_migrate/b07ba136aedbe330b6aae3a9cd5487e5.png)
修改虚拟用户登陆家目录权限
chmod 755 /var/ftpdir/hello/hellodir/
更改虚拟用户登陆家目录组
chgrp student /var/ftpdir/hello/hellodir/
实验效果如下: