FTP是用于在网络上进行文件传输的一套标准协议,文件传输协议,使用客户/服务器模式。
安装vsftpd
首先先把selinux改为disabled,因为这会干扰到接下来的实验,之后重启计算机。
vim /etc/sysconfig/selinux
查看状态为disabled。
yum install vsftpd lftp -y
安装vsftp,lftp,用vsftp作为服务端共享文件,用lftp做客户端访问。
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
使火墙对lftp的访问不进行拦截。
匿名用户设定
vim /etc/vsftpd/vsftpd.conf
首先查看这个文件确保匿名用户可登陆,YES表示允许登陆,NO表示不允许,这个文件是这个服务的主要配置文件。
开启vsftpd服务。
lftp 172.25.62.252
使用匿名用户登陆匿名用户登陆的方式是lftp+ip的方式。
匿名用户的上传
上传时用put [文件名]的方式
550报错,表示文件系统权限过大。匿名用户默认是不可以上传的,上传文件是对目录的写操作,必须对目录有写权限
vim /etc/vsftpd/vsftpd.conf
对里面的参数进行修改。
write_enable=YES ##给与用户写权限
anon_upload_enable=YES ##允许匿名用户上传
systemctl restart vsftpd.service
重启服务
chmod u-w /var/ftp ##减掉所有者的写权限,所有用户的家目录不能有写权限
chgrp ftp /var/ftp/pub ##更改目录的所属组
chmod 775 /var/ftp/pub ##更改目录权限,使匿名用户对目录可写
上传成功。
对匿名用户的管理
vim /etc/vsftpd/vsftpd.conf
修改这个配置文件之后必须重启服务。
anon_root=/direcotry ##修改匿名用户的家目录
anon_umask=xxx ##修改匿名用户的文件默认权限
anon_mkdir_write_enable=YES|NO ##匿名用户是否能建立目录
anon_world_readable_only=YES|NO ##匿名用户是否能下载文件
anon_other_write_enable=YES|NO ##匿名用户是否能删除文件
修改匿名用户家目录为/westos,目录必须存在,修改完成后要记得重启服务设定才会生效。
修改匿名用户的文件默认权限
默认权限改为644。
修改后匿名用户可以创建目录。
修改后匿名用户可以下载文件,下载用get [文件名]的方式,,如果要禁止下载就把YES改为NO就可以了。
修改后匿名用户可以删除文件,把YES改为NO可以禁止这个功能。
匿名用户的用户身份修改
匿名用户也可以用其他用户的身份登陆。
vim /etc/vsftpd/vsftpd.conf
chown_uploads=YES ##开启用户身份修改功能
chown_username=student ##以student的身份登陆
上传文件时时以student用户的身份上传的,uid为1000。
设置最大上传速率
vim /etc/vsftpd/vsftpd.conf
设置最大上传速率为100k/s
dd if=/dev/zero of=bigfile bs=1M count=1000
截取一段数据用于测试。
可以看到速率被限制在100左右。
设置最大连接数
vim /etc/vsftpd/vsftpd.conf
设置最大连接数为1,
使用第一台设备成功连接。
使用第二台设备连接失败进入等待状态。
第一台设备图退出后第二台设备可以成功连接。
本地用户设定
vim /etc/vsftpd/vsftpd.conf
local_enable=YES | NO ##本地用户登录限制
write_enable=YES | NO ##本地用户写权限限制
local_root=/directory ##本地用户家目录修改
local_umask=xxx ##本地用户上传文件默认权限
这些是本地用户的基本配置,基本和匿名用户类似。
登陆本地用户
lftp 172.25.62.252 -u 用户名
使用本地用户登陆,需要输入密码。
登陆后记得把家目录的写权限去掉。
限制本地用户浏览目录
本地用户登陆后是可以自由浏览目录的,我们可以对他做出限制。
vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES ##将所有本地用户锁在自己的家目录中。
此时,用户已经被锁在自己的家目录了。
我们还可以建立黑白名单对本地用户进行管理。
建立黑名单
vim /etc/vsftpd/vsftpd.conf
chroot_local_user=NO
chroot_list_enable=YES ##打开名单列表
chroot_list_file=/etc/vsftpd/chroot_list
首先默认不要把本地用户锁在家目录中,之后开启列表的功能,在列表中的名单被锁在自己的家目录中,这就建好了黑名单。
vim /etc/vsftpd/chroot_list
建立这个文件,记录名单中的用户,此时student,在黑名单中,被锁在家目录中,无法访问其他目录。
建立白名单
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
将chroot_local_user改为YES,此时所有用户默认都被锁在自己的家目录中,/etc/vsftpd/chroot_list这个文件变为白名单,在这个名单中的用户不会被锁在家目录中。
此时,在名单中的student,变成了白名单用户,可以自由浏览根目录了。
限制本地用户登录
vim /etc/vsftpd/ftpusers ##限制本地用户登陆的永久黑名单
这个文件是限制本地用户登陆的永久黑名单,只要在这个名单内的所有用户都不可以进行登陆。
此时,student在黑名单中,不可以正常登陆了。
除此之外,我们还可以在另一个文件里设置一个临时的黑名单。
vim /etc/vsftpd/user_list
在这个名单的用户同样不能正常登陆。
不过为什么叫它临时的黑名单呢?
因为这个文件也可以变为白名单。
vim /etc/vsftpd/vsftpd.conf
在这个文件加上这个参数。
vim /etc/vsftpd/user_list
此时在编辑这个文件,里面的名单就变成白名单了,不过要注意的是,在/etc/vsftpd/ftpusers里出现的名单是永久的黑名单,此时这些用户在出现在白名单上也是不能登陆的。
ftp虚拟用户的登录
虚拟用户就是在系统中不存在的用户。
创建虚拟帐号
vim /etc/vsftpd/yingfile ##文件名任意
在文件内写入用户名和密码,为方便实验,密码都设置123。
db_load -T -t hash -f /etc/vsftpd/yingfile /etc/vsftpd/yingfile.db
将这个文件转化为后缀为.db的文件。
vim /etc/pam.d/ying ##设置用户的认证
设置虚拟用户的用户名和密码的认证。
vim /etc/vsftp/vsftp.conf
pam_service_name=ying ##更改认证方式
guest_enable=YES ##打开虚拟用户功能
guest_username=ftp ##指定用户登录身份
更改认证方式,使虚拟用户可以通过认证,同时打开虚拟用户功能,并指定用户登录身份为ftp,这里更改的认证方式就是上面设置用户的认证的文件名,这后重启vsftp就可以使用虚拟用户登陆了。
虚拟用户正常登陆。
指定虚拟用户登录家目录
mkdir /var/ftpuser/ying{1..3} -p ##创建目录
touch /var/ftpuser/ying1/file1
touch /var/ftpuser/ying2/file2 ##创建文件用来区分目录
vim /etc/vsftp/vsftp.conf
第一行表示指向的家目录,第二行是使$USER在这个文件中生效,它代表的是用户名。
可以看到,两个虚拟用户登陆的时候都到了我们设定好的家目录中。
虚拟帐号的配置独立
刚才我们所做的是对所有虚拟帐号的配置,那么如何对单个的虚拟用户进行配置呢?
mkdir -p /etc/vsftpd/userconf ##创建一个目录
vim /etc/vsftpd/vsftpd.conf
这这个文件写入这个参数,指向这个目录。
vim /etc/vsftpd/userconf/ying1 ##对ying1用户进行单独配置
需要注意的是,这里新建的文件名必须和所要配置的虚拟用户名名字一致。