做实验前的一些准备工作:
检查selinux这个文件,将它的值改为disabled,检查yum源。
ftp:// ##文件传输协议
FTP 是File Transfer Protocol(文件传输协议)的英文简称,用于Internet上的控制文件的双向传输。FTP 协议允许在使用不同文件系统的主机之间进行数据传送
lftp是一个功能强大的下载工具
文件上传下载操作:
单个文件:
上传: put 文件名
下载: get 文件名
多个文件:
上传多个文件(支持通配符):mput 文件名1 文件名2
下载多个文件(支持通配符):mget 文件名1 文件名2
整个目录:
上传文件夹:mirror -R 文件夹名
下载文件夹:mirror 下载文件夹存放到本地目录的位置
在rhel7中: vsftpd
yum install vsftpd -y ##安装ftp服务
systemctl start vsftpd ##开启ftp服务
systemctl stop firewalld ##关闭防火墙
systemctl enable vsftpd ##开机自动启动ftp服务
lftp ip ##能登陆并且显示,表示安装成功
软件安装包: vsftp
默认发布目录: /var/ftp
协议借口: 21
怎么看一个服务的接口:
服务配置文件: /etc/vsftpd/vsftpd.conf
报错id的解析:
530 密码错了
550 权限不够 服务本身不允许
553 本地文件系统对你不可写
500 文件系统权限太大 /var/ftp 权限不能为777
vim /etc/vsftpd/vsftpd.conf ##编辑配置文件
systemctl restart vsftpd ##重启服务,使更改后的配置文件生效
*anonymous_enable=YES|NO ##匿名用户是否可以登陆
首先我们先编辑配置文件,大约在12行,我们将这个匿名用户登陆权限改成NO
我们去用匿名用户测试,结果证明匿名用户不能使用ftp服务。
作完实验后我们需要将匿名用户权限改回YES,因为后面需要用匿名用户实验,所以匿名用户是要能访问ftp服务才可以。
local_enable=YES|NO ##本地用户是否可以登陆
write_enable=YES|NO ##ftp是否对登陆用户可写
我们修改配置文件如下: wq保存退出。更改完成记得重启ftp服务
我们用本地用户测试,测试发现本地用户是可以访问ftp服务的。
我们在student用户的家目录里创建一个studentfile文件,然后再用student身份去访问ftp服务,发现我们刚进去的地方有我们刚刚建立的studentfile文件。这就说明,我们使用student身份去访问ftp服务的入口为student的家目录。
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
默认是不允许匿名用户上传文件的。550报错为服务本身不允许。
修改配置文件如下,然后重启服务
这个时候我们使用上传文件,还是不可以,553表示文件权限不够。
于是我们去修改一下/var/ftp/pub这个目录的权限,这样我们就可以在这个目录下建立文件了。记得一定是/var/ftp/pub这个目录,不能给/var/ftp加777的权限。
记得一定是/var/ftp/pub这个目录,不能给/var/ftp加777的权限。否则会报错500,权限过大。记得将权限改回去。
我们发现建立出来的文件的属主id为14,属组id为50,而我们的ftp用户id刚好是这样,所以我们在用匿名用户建立文件时,身份为ftp用户,那么我们就可以将/var/ftp/pub目录的权限改为775,目录组改为ftp,这样就可以正常建立文件了。
anon_root=/direcotry
修改配置文件,在配置文件中加入这一行,然后保存退出。我们去创建出来这个目录,然后在目录里面创建了文件。当我们用匿名用户登陆的时候,在其家目录里面发现了上面建立的文件。这就说明他的家目录就是我们指定的地方。
anon_umask=xxx
这里给的umask=022,那么建立出来的文件的权限应该为777-111-022=644。结果如下图:group是我们新建出来的文件,权限为644。
anon_mkdir_write_enable=YES|NO
anon_world_readable_only=YES|NO ##设定参数值为no表示匿名用户可以下载
用get下在文件,下在下来的文件将会保存在当前路径下。
anon_other_write_enable=YES|NO
默认情况下匿名用户是不能删除文件的
修改配置文件,重启服务使其生效,然后就可以删除了。
chown_uploads=YES
chown_username=student
我们在/pub目录下新建了个文件group,查看可知属主id为1004,student的id刚好为1004。
anon_max_rate=2048000
max_clients=1
local_enable=YES|NO ##本地用户登陆限制
write_enable=YES|NO ##本地用户写权限限制
local_root=/directory
修改配置文件,重启服务生效,我们指定本地用户的家目录为/westos这个目录,我们可以看见这个目录下有三个文件。当我们用student用户访问ftp服务的时候,他的家目录下有这三个文件,说明它的家目录为/westos。
local_umask=000
修改配置文件,将上一例的家目录注释,重启服务。我们用student用户新建passwd文件时,他的权限为777-111-000=666。同样的作完实验,将权限改回022。
所有用户被锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/*
这是未限制之前student可以看到的:
修改完配置文件还有文件权限后,student用户不能访问到/下面的东西了:
用户黑名单建立
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
我们将student用户写入黑名单,student用户就被锁在了自己的家目录中,而黑名单外的xixi,就可以访问到/目录下面的文件。
用户白名单建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
同样的,我们将student用户放在名单中,不过此时,名单已经变成了白名单。那么只有白名单中的用户可以跳出家目录,其他用户都被锁到了自己的家目录中。
vim /etc/vsftpd/ftpusers ##用户黑名单
vim /etc/vsftpd/user_list ##用户临时黑名单
用户白名单设定
userlist_deny=NO
/etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp