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
四、连接测试
㈠使用浏览器模拟用户登陆
#ftp默认端口21,我们修改为1369在浏览器访问地址也需要加上端口1369
因为我们设置不允许匿名登陆,所以登陆需要账号密码验证,账号密码就在vuser文件里
因为我们的FTP目录设置在/opt下,我们可以去/opt下创建一个目录进行验证
⑵ 使用FTP工具连接查看
四、给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.创建的用户没有家目录
解决办法:
$ mkdir -p /home/vsftpd
2. 错误530 Login incorrect
解决办法:
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
相关文章:
- Kuerbernetes 1.11 集群二进制安装
- 自动化运维工具之–Cobbler
- Kubernetes 1.14 二进制集群安装
- Nagios 配置及监控