一、什么是ftp
FTP(文件传输协议)是INTERNET上仍常用的最老的网络协议之一,他为系统提供了通过网络与远程服务器进行传输的简单方法,在REDHAT ENTREPRISE LINUX7中,FTP服务器包的名称为VSFTPD,他代表Very Secure File Transfer Protocol Damon,服务器名称也叫做vsftpd
vsftp提供三种远程的登录方式:
(
1)匿名登录方式:不需要用户名和密码,就可以登录到服务器上
(
2)本地用户方式:需要账户名和密码才能登录,而且,这些用户都必须是系统已经存在的用户
(
3)虚拟用户:同样需要用户名和密码才能登录,但是,这些用户是系统里面没有的。
默认配置文件让ANONYMOUS用户只能下载位于CHROOT目录中的内容
/var/
ftp/这意味着远程FTP客户端能以用户ANONUMOUS或
ftp身份连接到服务器(无需密码),并从
ftp服务器上的/var/
ftp/目录中下载文件(其本地
ftp用户可以读取这些文件)
二、安装ftp
yum
install vsftpd -y
systemctl start vsftpd
systemctl enable vsftpd
systemctl start firewalld
firewall-config
进入此界面后修改三个地方:
1.勾选ftp;
2.Configuration选Permanent;
3.Option选择Reload Firewalld.
firewall-cmd --list-
all ##显示防火墙信息,service中已包含ftp服务
vim /etc/sysconfig/selinux
SELINUX=disabled
或者
setenforce
0
reboot
/etc/sysconfig/selinux/文件的内容:
lftp ip
三、vsftpd文件信息
/
var/ftp
##默认发布目录
/etc/vsftpd
##配置目录
ftpusers:指定哪些用户不能访问FTP服务器
user_list:指定哪些用户不能访问FTP服务器,由vsftp
.conf文件中的userlist_deny的值决定
vsftpd.conf:主配置文件
四、vsftpd服务的配置参数
注意:每改完一个参数都要重启服务:systemctl restart vsftpd
1>匿名用户
1)anonymous_enable = YES | NO ##匿名用户登录限制
anonymous_enable = YES ##登录成功
anonymous_enable = NO ##登录失败
2)write_enable = YES | NO
## This controls whether any FTP commands which change the filesystem are allowed or not
3)anon_upload_enable = YES | NO
write_enable=YES
anon_upload_enable=YES
chgrp
ftp /var/
ftp/pub
chmod
775 /var/
ftp/pub
write_enable=YES
anon_upload_enable=NO
chgrp
ftp /var/
ftp/pub
chmod
775 /var/
ftp/pub
550报错:说明服务不允许
4)anon_root=/directory ##匿名用户家目录修改
mkdir /westos
##新建一个目录作为匿名用户家目录
touch /westos/linux{
1..3}
##往家目录里面写入三个文件,增强实验效果
vim /etc/vsftpd/vsftpd
.conf ##修改配置文件
anon_root=/westos
##指定位置
5) anon_umask=xxx ##匿名用户上传文件默认权限修改
默认建立的文件的权限为:600
6)anon_mkdir_write_enable = YES | NO ##匿名用户建立目录权限修改
默认情况下不能创建目录,如下:
7)anon_world_readable_only = YES | NO ##匿名用户下载,设定参数为NO表示匿名用户可以下载
默认情况下为
:YES,不能够下载文件
8)anon_other_write_enable = YES | NO
a.默认删除是被拒绝的
anon_other_write_enable = NO
b.更改配置文件后
anon_other_write_enable = YES
9)chown_uploads=YES
The file mode to force for chown()ed anonymous uploads.
chown_username=student
chown_upload_mode=
0644
10)anon_max_rate=xxx ##设置最大上传速率
默认情况下,传输速率是很快的
修改传输速率
速度降低了很多!!!
11)max_clients=xxx ##设置最大链接数
链接数值为可同时访问的人数的最大上限
2>本地用户
1)local_enable = YES | NO ##本地用户登录限制
下图上半部分可知,student用户本身是可以登录的;中间位置重启服务后,student不能登录
2)write_enable=YES|NO ##本地用户写权限
This controls whether any FTP commands which change the filesystem are allowed or not.
3)local_umask=xxx ##本地用户上传权限
设置为022后,用户上传的文件是644(即就是:-rw-r–r–)
4)限制用户浏览目录
a.所有用户被锁定到自己的家目录中
chroot_local_user=
YES
chmod u-w /home/*
用户westos登录成功后,既便切换到了/下,然后,还是只能看自己家目录下的内容
b.用户黑名单建立
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list
加入黑名单的westos活动范围受到了限制,不能够进入到
/下,即便时切换到/,也只能看自己家目录下的内容
而此时的student用户则可以正常切换到/下
c.用户白名单建立
在黑名单建立操作的基础上,只需要将chroot_local_user的值由
NO改为
YES即可:
chroot_local_user=
YES
chroot_list_enable=
YES
chroot_list_file=/etc/vsftpd/chroot_list
westos为白名单之后,其他所有的用户均不能登录,student理所应当的被加入到了黑名单的行列中
d.限制本地用户登录
vim /etc/vsftpd/ftpusers
永久黑名单的优先级是最高的,这意味着,即便临时白名单上有永久黑名单的用户,也无法改变此用户被拉黑无法登录的事实
vim /etc/vsftpd/user_list
当userlist_deny=NO时,临时黑名单变成白名单,只有在白名单上出现的用户可以登录
ftp
3>虚拟用户
1)vim /etc/vsftpd/loginusers
user1
123
user2
123
2)将明文的用户信息表用
hash算法进行加密:
db_load -T -t
hash -f loginusers loginusers.db
3)vim /etc/pam
.d/ckvsftpd
##认证信息的配置文件
其中,pam_userdb
.so是一个软件,可以检测用户身份是否合法,检测成功才可以登录!
4)vim /etc/vsftpd/vsftpd.conf
pam_service_name=ckvsftpd
guest_enable=YES
guest_username=
ftp
在实际操作中,对用户必然有所区分,那就得区别对待,将用户分开管理:
mkdir /vuserdir/user{
1,
2}
mkdir /etc/vsftpd/vsuerconf
touch /vuserdir/user1/user1file
touch /vuserdir/user2/user2file
vim /etc/vsftpd/vsftpd.conf
local_root=
/vuserdir/$USER
user_sub_token=
$USER
user_config_dir=
/etc/vsftpd/vuserconf ##用户权限存放目录
为了使实验效果更加明显,在这里继续写各自的权限配置文件(文件名与用户名相同),分门别类进行管理,达到显著的实验效果:使user1不可以上传文件,user2可以上传文件
检查user1和user2未修改时的文件存在情况
在/etc/vsftpd/vuserconf/中写入相应的关于上传拒绝与否的代码
vim /etc/vsftpd/vuserconf/user1
write_enable=
NO
user1上传文件被拒绝;user2成功上传文件