一、关于ftp的基本知识 |
1.ftp:// ##文件传输协议
2.ftp协议提供的软件
在rhel7中:vsftpd
3.
1)ftp(文件传输协议)是Internet上常用的最老的网络协议之一,它的系统提供了通过网络与远程服务器进行传输的简单方法。ftp服务器包的名称为vsftpd,它代表Very Secure File Transfer Protocol Damon,服务器名称也叫做vsftpd。
2)默认配置文件让anonymous用户(匿名用户)只能下载位于chroot目录中的内容。
3)远程ftp客户端能以anonymous用户或ftp身份连接到服务器(无需密码),并从ftp服务器上的/var/ftp/目录下载文件(其本地ftp用户可以读取这些文件)
4.
默认发布目录:/var/ftp
协议接口:21/tcp
服务配置文件: /etc/vsftpd/vsftpd.conf
5.
报错id解析:
500 文件系统权限过大
530 用户认证失败
550 服务本身功能未开放
553 本地文件系统权限过小
二、部署ftp服务 |
1)关闭内核级的加强形火墙
vim /etc/sysconfig/selinux ##修改selinux的状态
#########################
SELINUX=disabled
#########################
getenforce ##查看当前selinux状态
reboot ##重启生效
2)部署yum源,安装lftp,vsftpd
部署yum源详情请看添加链接描述
yum install lftp vsftpd -y ##安装lftp,vsftpd
systemctl start vsftpd
systemctl enable vsftpd
systemctl status vsftpd
systemctl restart firewalld.service ##开启火墙
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
firewall-cmd --list-all ##查看火墙允许了什么服务
[root@localhost /]# lftp 172.25.254.5 ##匿名连接本机
lftp 172.25.254.5:~> ls ##检测服务连接成功与否,否----失败
drwxr-xr-x 2 0 0 6 Jun 23 2016 pub
lftp 172.25.254.5:/>
三、vsftpd权限文件----/etc/vsftpd/vsftpd.conf |
vim /etc/vsftpd/vsftpd.conf ##修改ftp权限文件
1)匿名用户:
匿名登陆格式:lftp 目标主机ip
匿名用户是否可以登录:anonymous_enable=YES/NO
匿名用户家目录修改:anon_root=/westos
匿名用户上传文件: anon_upload_enable=YES
默认权限修改:anon_umask=022
匿名用户下载文件:anon_world_readable_only=YES|NO ##no表示匿名用户可以下载
匿名用户建立目录:anon_mkdir_write_enable=YES|NO
匿名用户删除文件目录:anon_other_write_enable=YES|NO
匿名用户使用的用户身份修改 :
chown_uploads=YES
chown_username=student
chown_upload_mode=0644
最大上传速率:anon_max_rate=102400
详细步骤:
匿名用户是否可以登录
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
#############################编写vsftp权限文件
anonymous_enable=NO ##不允许匿名用户登录
#############################
[root@localhost ~]# systemctl restart vsftpd ##重启vsftpd服务使vsftpd权限文件生效
[root@localhost ~]# lftp 172.25.254.5 ##匿名连接
lftp 172.25.254.5:~> ls ##看看是否连接成功
Interrupt ##连接失败
lftp 172.25.254.5:~> quit ##退出
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
############################编写vsftp权限文件
anonymous_enable=YES ##允许匿名用户登录
############################
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# lftp 172.25.254.5
lftp 172.25.254.5:~> ls ##看看是否连接成功
drwxr-xr-x 2 0 0 6 Jun 23 2016 pub ##连接成功
lftp 172.25.254.5:/> quit
匿名用户加目录修改
[root@localhost ~]# mkdir /westos ##给匿名用户建立家目录
[root@localhost ~]# touch /westos/file ##为方便观察,在其家目录里建立一个文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
############################编写vsftp权限文件
anon_root=/westos
############################
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# lftp 172.25.254.5
lftp 172.25.254.5:~> ls
-rw-r--r-- 1 0 0 0 Feb 10 02:08 file ##刚建立的文件
lftp 172.25.254.5:/> quit
匿名用户上传文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
############################编写vsftp权限文件
anon_upload_enable=YES
############################
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# lftp 172.25.254.5
lftp 172.25.254.5:~> ls
drwx--x--x 2 0 0 6 Feb 10 03:37 pub
lftp 172.25.254.5:/> cd pub/
lftp 172.25.254.5:/pub> put /root/Desktop/ifcfg-br0 ##put上传文件
put: Access failed: 553 Could not create file. (ifcfg-br0) ##上传失败,本地文件系统权限过小
lftp 172.25.254.5:/pub> quit
[root@localhost ~]# chgrp ftp /var/ftp/pub/ ##修改文件所有组
[root@localhost ~]# chmod 1775 /var/ftp/pub/ ##给目录1775权限
[root@localhost ~]# ls -ld /var/ftp/pub/ ##查看目录权限信息
drwxrwxr-t 2 root ftp 6 Feb 10 11:37 /var/ftp/pub/
[root@localhost ~]# lftp 172.25.254.5
lftp 172.25.254.5:~> cd pub/
lftp 172.25.254.5:/pub> ls ##看看pub里有什么,可以看到什么都没有
lftp 172.25.254.5:/pub> put /root/Desktop/ifcfg-br0 ##put上传文件
311 bytes transferred
lftp 172.25.254.5:/pub> ls ##在pub里可以看到传输的文件
-rw------- 1 14 50 311 Feb 10 03:46 ifcfg-br0
lftp 172.25.254.5:/pub> quit
匿名用户上传文件默认权限修改
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
###########################编写vsftp权限文件
anon_umask=022
###########################
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# lftp 172.25.254.5
lftp 172.25.254.5:~> cd pub
cd ok, cwd=/pub
lftp 172.25.254.5:/pub> ls
-rw------- 1 14 50 311 Feb 10 03:46 ifcfg-br0
lftp 172.25.254.5:/pub> put /root/Desktop/未完成 ##上传文件
291 bytes transferred
lftp 172.25.254.5:/pub> ls
-rw------- 1 14 50 311 Feb 10 03:46 ifcfg-br0
-rw-r--r-- 1 14 50 291 Feb 10 03:58 未完成 ##权限改变
lftp 172.25.254.5:/pub> quit
匿名用户下载文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
####################################
anon_world_readable_only=NO
####################################
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# cd /westos/
[root@localhost westos]# ls
file
[root@localhost westos]# lftp 172.25.254.5
lftp 172.25.254.5:~> cd pub/
lftp 172.25.254.5:/pub> ls
-rw------- 1 14 50 311 Feb 10 03:46 ifcfg-br0
-rw-r--r-- 1 14 50 291 Feb 10 03:58 未完成
lftp 172.25.254.5:/pub> get 未完成 ##下载文件
291 bytes transferred
lftp 172.25.254.5:/pub> quit
[root@localhost westos]# ls ##成功
file 未完成
匿名用户建立文件
[root@localhost westos]# vim /etc/vsftpd/vsftpd.conf
#################################
anon_mkdir_write_enable=YES
#################################
[root@localhost westos]# systemctl restart vsftpd
[root@localhost westos]# vim /etc/vsftpd/vsftpd.conf
#################################
anon_other_write_enable=YES
#################################
[root@localhost westos]# systemctl restart vsftpd
[root@localhost westos]# vim /etc/vsftpd/vsftpd.conf
#################################
chown_uploads=YES
chown_username=student
#################################
[root@localhost westos]# systemctl restart vsftpd
最大上传速率(限速)
[root@localhost westos]# vim /etc/vsftpd/vsftpd.conf
#################################
anon_max_rate=102400
#################################这里的102400为102400Byte,1024Byte=1KB
[root@localhost westos]# systemctl restart vsftpd
2)本地用户:
ftp登陆格式:lftp 目标ip -u student
local_enable=YES/NO ##本地用户登录限制
write_enable=YES/NO ##本地用户写权限限制
local_root=/directory ##本地用户家目录修改
local_umask=077 ##本地用户上传文件权限
max_clients=1 ##能够最大连接客户端数量
将本地用户锁定到自己的家目录中:
a)黑名单
vim /etc/vsftpd/vsftpd.conf
###########################
chroot_local_user=NO ##黑名单(在名单内的用户均不能登陆)
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
###########################
systemctl restart vsftpd
vim /etc/vsftpd/ftpusers ##编辑用户黑名单
b)白名单
vim /etc/vsftpd/vsftpd.conf
###########################
chroot_local_user=YES ##白名单(只有在名单内的用户才能登陆)
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
###########################
systemctl restart vsftpd
vim /etc/vsftpd/ftpusers ##编辑用户白名单
c)
vim /etc/vsftpd/user_list ##用户临时黑名单
为什么是临时呢?因为它稍加修改就会变为白名单
vim /etc/vsftpd/vsftpd.conf
#######################
userlist_deny=NO ## /etc/vsftpd/user_list变为白名单
######################
systemctl restart vsftpd
四、ftp虚拟用户的设定 1)创建虚拟帐号身份 |
vim /etc/vsftpd/userfile ##文件名称任意
############
redhat1 ##帐号
123 ##密码
redhat2
321
###########
db_load -T -t hash -f userfile userfile.db ##加密
3)pam
vim /etc/pam.d/ftpuser ##文件名称任意
##########################
account required pam_userdb.so db=/etc/vsftpd/userfile
auth required pam_userdb.so db=/etc/vsftpd/userfile
##########################
vim /etc/vsftpd/vsftpd.conf
##########################
pam_service_name=ftpuser ##必须与建立的pam文件名字相同
guest_enable=YES ##开启虚拟用户的功能
guest_username=ftp ##虚拟用户的身份指定
##########################
systemctl restart vsftpd
mkdir -p /var/ftpuserdir/redhat{1,2}
vim /etc/vsftpd/vsftpd.conf
##################
local_root=/var/ftpuserdir/$USER
user_sub_token=$USER
##################
systemctl restart vsftpd
mkdir /var/ftpuserdir/westos{1,2}/pub
mkdir /var/ftpuserdir/redhat1/file1
mkdir /var/ftpuserdir/redhat2/file2
五、虚拟帐号配置独立 |
1)给权限
chgrp ftp /var/ftpuserdir/redhat*/pub
chmod 1775 /var/ftpuserdir/redhat*/pub
mkdir -p /etc/vsftpd/user_config
vim /etc/vsftpd/user_config/redhat1
写入anon_upload_enable=YES
3)使建立的权限文件生效
vim /etc/vsftpd/vsftpd.conf