FTP服务安装及配置

Ftp和vsftpd的区别 ftp只是文件传输协议的意思,而实现文件传输协议的服务器和客户端软件非常多,vsftp就是服务器端的一个软件名称,服务器端软件当然需要一个进程来运行了,对于vsftp后台进程就是vsftpd。当然FTP有客户端软件,cuteftp,ws-ftp太多了。

FTP

FTP


一、Ftp和vsftpd的区别

ftp只是文件传输协议的意思,而实现文件传输协议的服务器和客户端软件非常多,vsftp就是服务器端的一个软件名称,服务器端软件当然需要一个进程来运行了,对于vsftp后台进程就是vsftpd。当然FTP有客户端软件,cuteftp,ws-ftp太多了。

二、vsftpd介绍

vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等

三、FTP 优点

①vsftpd 是以一般身份启动服务,所以对于 Linux 系统的使用权限较低,对于Linux 系统的危害就相对的减低了。此外, vsftpd 亦利用 chroot() 这个函式进行改换根目录的动作,使得系统工具不会被vsftpd 这支服务所误用;

②任何需要具有较高执行权限的 vsftpd 指令均以一支特殊的上层程序( parent process ) 所控制 ,该上层程序享有的较高执行权限功能已经被限制的相当的低,并以不影响Linux 本身的系统为准;

③所有来自 clients 端,想要使用这支上层程序所提供的较高执行权限之vsftpd 指令的需求,均被视为『不可信任的要求』来处理,必需要经过相当程度的身份确认后,方可利用该上层程序的功能。例如chown(), Login 的要求等等动作;
④此外,上面提到的上层程序中,依然使用 chroot() 的功能来限制使用者的执行权限。

三、安装

1.基础环境

[root@abcdocker ~]# uname -r                
2.6.32-573.el6.x86_64
[root@abcdocker ~]# cat /etc/redhat-release      
CentOS release 6.7 (Final)

2.关闭防火墙及Selinux

[root@abcdocker ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@abcdocker ~]# getenforce 
Disabled

3.部署vsftpd及虚拟用户登陆

[root@abcdocker ~]#  yum install -y vsftpd         #安装vsftpd程序
[root@abcdocker ~]#  yum install -y pam* db4*

4.修改配置文件

[root@abcdocker ~]# cp /etc/vsftpd/vsftpd.conf{,.bak_2018-06-11}   #修改前备份


#配置文件如下:
[root@abcdocker vsftpd]# cat vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=002
dirmessage_enable=YES
xferlog_enable=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
listen_port=1369
port_enable=NO
pasv_enable=YES
pasv_min_port=9180
pasv_max_port=9181
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
pam_service_name=/etc/pam.d/vvsftpd
guest_username=vsftpd
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/ftplogin


####################配置文件注释##################

anonymous_enable=NO       #不允许匿名用户登录
listen_port=1369          #FTP监听端口
local_enable=YES            #允许本地用户登录
write_enable=YES            #开启全局上传
local_umask=022            #设置上传umask值为系统默认umask值
dirmessage_enable=YES       #允许为配置目录显示信息
xferlog_enable=YES          #打开日志记录功能
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=YES       #是否禁锢chroot_list中的用户
chroot_list_file=/etc/vsftpd/chroot_list    # chroot_list文件保存位置
listen=YES                  #是否作为一个独立守护进程运行
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES           #开启虚拟用户
guest_username=vsftpd       #FTP虚拟用户对应的系统用户
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/ftplogin     #授权FTP虚拟用户所在目录
pam_service_name=/etc/pam.d/vvsftpd     #PAM认证文件

相关文章:Vsftp的PASV mode(被动模式传送)和Port模式及 Linux下VsFTP配置全方案


5.创建配置文件相关目录

1)创建chroot_list文件保存位置
[root@abcdocker vsftpd]# touch /etc/vsftpd/chroot_list

2)创建授权FTP虚拟用户所在目录
[root@abcdocker vsftpd]# mkdir /etc/vsftpd/ftplogin

3)创建FTP虚拟登陆账号
[root@abcdocker vsftpd]# touch vuser
[root@abcdocker vsftpd]# vim vuser
abcdocker
123456

4)添加新的pam service
[root@abcdocker vsftpd]# touch /etc/pam.d/vvsftpd
[root@abcdocker vsftpd]# vim /etc/pam.d/vvsftpd
#%PAM-1.0
#auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login
#account required /lib/security/pam_userdb.so db=/etc/vsftpd/login
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/login

#注意如果是32位系统,那就用32位的校验,本例是64位的



5)生成pam校验数据库文件
[root@abcdocker vsftpd]# db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/login.db
[root@abcdocker vsftpd]# chmod 600 vuser 

#为了安全起见,建议在生成校验数据库之后,删除vuser文件; 或者修改vuser权限,不让别的用户读

6.创建本地映射用户并设置宿主目录权限

所有的FTP虚拟用户需要使用一个系统用户(vsftpd),这个系统用户不需要密码
[root@abcdocker ~]# useradd -d /home/vsftpd vsftpd -s /sbin/nologin -M

[root@abcdocker ~]# chown -R vsftpd /opt/    #授权目录

[root@abcdocker ~]# cd /etc/vsftpd/ftplogin/   

#创建一个以FTP虚拟用户命名的文件
[root@abcdocker ftplogin]# vim abcdocker
[root@abcdocker ftplogin]# cat abcdocker 
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
local_root=/opt/

7.启动FTP服务

[root@abcdocker ~]# /etc/init.d/vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]
[root@abcdocker ~]# netstat -lntup|grep vsftpd
tcp        0      0 0.0.0.0:1369                0.0.0.0:*                   LISTEN      1667/vsftpd  

四、连接测试

㈠使用浏览器模拟用户登陆

image_1cfn1cg061jqe1fnm1k99144l5sh1e.png-1917.1kB

#ftp默认端口21,我们修改为1369在浏览器访问地址也需要加上端口1369

因为我们设置不允许匿名登陆,所以登陆需要账号密码验证,账号密码就在vuser文件里

111.jpg-196.2kB

因为我们的FTP目录设置在/opt下,我们可以去/opt下创建一个目录进行验证

image_1cfn1i6edpdg42hh67gjdqu22n.png-657.1kB


⑵ 使用FTP工具连接查看

14.jpg-220.1kB

15.jpg-157.1kB

四、给FTP虚拟用户赋予权限(增加权限配置文件)详解

#有上传/下载/修改权限
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
local_root=/data/upload/

#只有上传/修改权限
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
local_root=/data/upload/

#只有下载权限
anon_world_readable_only=NO
local_root=/data/upload/

五、常见错误

1.创建的用户没有家目录

QQ图片20180611165026.png-7.4kB

解决办法:

$ mkdir -p /home/vsftpd

2. 错误530 Login incorrect

13.png-3.8kB

解决办法:

1.首先检查账号密码是否正确

2.新添加的账号出现这个问题可以清空login.db

[root@iZ23ikji6hvZ vsftpd]# >login.db 
[root@iZ23ikji6hvZ vsftpd]# cat db.txt 
db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/login.db
[root@iZ23ikji6hvZ vsftpd]# db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/login.db
db_load: /etc/vsftpd/login.db: unexpected file type or format

[root@iZ23ikji6hvZ vsftpd]# db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/login.db
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
7 条回复 A 作者 M 管理员
  1. 像大佬学习哦~
  2. 写的不错,请继续保持!
  3. 干几把啥???
  4. 写的没用的东西太多,希望博主在精简一些!!! 否则太不实用了 跟绣花枕头一样 望采纳
    • 好的,老铁! 听你的!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论
网站搭建
加入我们
  • 站长QQ:381493251一键联系
  • abcdocker 微信公众号
    abcdocker QQ群