深入简出ftp,举例说教
原理的总结
1、FTP是一种互联网的传输协议
2、FTP是基于C/S模式的
3、FTP的端口号是20(数据端口)、21(命令端口)
4、FTP的模式有三种:匿名开放模式、本地用户模式、虚拟用户模式
5、FTP的工作模式有两种:主动模式和被动模式。主动模式是主动向服务端发起请求。被动模式是等待服务器命令消息(ftp模式自动装机就是被动模式)。一般FTP都工作在被动模式
区别:
三种模式的实现:
三种模式都要先按照vsftp服务
yum install vsftpd
然后关闭selinux和防火墙
setenforce 0
systemctl stop firewalld
匿名开放模式:
匿名开放的话,只改一个配置文件/etc/vsftpd/vsftpd.conf
1、anonymous_enable
2、anon_mkdir_write_enable(允许匿名用户对目录进行写)
3、anon_other_write_enable(允许匿名用户进行其他的写操作)
测试:
如果三个选项都写成YES
我们想在pub下创建目录,但操作失败了。可能是权限的问题
我们可以试着把pub的权限改过来
使用chmod把other的权限加成7
结果是可以的
如果用chown 命令,改属主
结果成功
重复建一个文档会失败
移除不是自己创建的文件会失败
只有删除自己本次创建的才可以成功
如果只第一个选项改成NO
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO
很明显,anonymous_enable是控制是否允许ftp匿名登录
如果只第二个选项改成NO
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=NO
/var/ftp/pub权限如下:
[[email protected] ~]# ls -ld /var/ftp/pub/
drwxr-xr-x. 12 ftp root 274 7月 28 11:05 /var/ftp/pub/
结果是不允许的
如果只把第三个选项改成NO
可以创建目录的
但是不能删除
可以切换,但是不可以ls查看(有x没有r)
让anon_upload_enable=NO
结果就是不能上传文件
但是不影响其他功能,可以下载,可以新建目录,可以删除目录
把后两项调为NO
不能创建,不能移除,不能查看目录内容
第二种方法:本地用户模式
也只把主配置文件/etc/vsftpd/vsftpd.conf
的允许匿名用户无密登录改成NO就可以
anonymous_enable=NO
很习惯的会使用root登录,结果失败了
原因是因为本地用户模式的本地用户受控于ftpuser和user_list两个文件
ftpuser
注释写着,不会允许这些用户登录。
在vsftpuser文件里面
这些用户名列表需要先查看主配置文件里面的userlist_deny这个选项,如果为NO的话只允许这些用户名登录,否则的话,这些名单也是禁止登录的。
把root在userlist和vsftpduserlist都注释掉,root就可以登录成功
我们把nick加到用户列表里面,作为参照,
结果是失败的
vsftpuser里面提示我们可以改主配置文件的user_list deny的选项来控制登录用户
userlist_deny=NO下,nick在两个文件里面,没有注释
1、两个用户列表里面现在的 配置是root注释掉
2、现在root只在userlist**释
、
3、root只有在userlist里面注释掉
4、root在两个文件都没注释
当/etc/vsftpd/vsftpd.conf中的user_list为YES的时候
当两个文件都没有注释的时候,登录失败
当只有userlist注释的时候也是失败
当只有ftpusers里root注释的时候,root成功登录
当两个文件都注释掉root的时候,root成功登录
用一个系统没有的用户登录
以上试验证明,本地用户模式主要是看本地用户有多少,还有/etc/ftpuser和/etc/user_list的用户列表,以及和/etc/vsftpd/vsftpd.conf的userlist_enable
当userlist_enable=YES的时候,只要看ftpusers,ftpusers有的用户就不能登录。注释掉,或者没有的就可以登录
当userlist_enable=NO的时候,两个文件都需要看,两个文件都需要注释掉想用的用户,或者把自己不想用的用户写上去。相当于“与”关系
虚拟用户模式:
思路是:
首先先创建映射到虚拟用户的不存在的用户,在一个文档(/etc/vsftpd/vuser.list)写他的用户和密码。两行一个用户
再用db_load把明文加密。
db_load -T -t hash -f vuser.list vuser.db
vuser.db把权限改为600
添加一个虚拟用户virtual
家目录为共享文件的目录,shell设为/sbin/nologin
把家目录权限改为755
然后再改pam登录安全模块的设置
在/etc/pam.d/vsftpd/vu下写安全认证的东西(登录需要用到)
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
最后,到主设置文件/etc/vsftpd/vsftpd.conf改5项参数,以及加上个人权限配置文件的dir名
anonymous_enable=No
guest_enable=YES
guest_username=virtual
allow_writeable_chroot=YES
pam_service_name =vsftpd.vu
user_config_dir=/etc/vsftpd/vusers_dir
重启服务就完成设置了
再是
在window下,不管有没有写权限,都可以上传文件
linux下
有设置个人配置文件的设置的操作都可以做
如果没设置个人配置文件的用户基本都做不了,只可以登录