2.3FTP服务

FTP服务概述:

FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。

FTP(File Transfer Protocol: 文件传输协议)作用: Internet 上用来传送文件的协议

常见FTP服务器:

windows:Serv-U FTP Server

Linux:ProFTPD:(Professional FTP daemon)一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的FTP服务器程序。  

VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。

特点:它是一个安全、高速、稳定的FTP服务器;

模式: C/S 模式

端口:20 (传数据)   21 (传指令)

fsp(File Service Protocol): 文件服务协议。

安装vsftp服务器端 vsftpd    ,

客户端 lftp:

lftp 是一个功能强大的下载工具,它支持访问文件的协议: ftp, ftps, http, https, hftp, fish.(其中ftps和https需要在编译的时候包含openssl库)。llftp的界面非常好一个shell: 有命令补全,历史记录,允许多个后台任务执行等功能,使用起来非常方便。它还有书签、排队、镜像、断点续传、多进程下载等功能。

配置文件

 /var/ftp/pub/                            #默认的共享目录

/etc/vsftpd/vsftpd.conf      #vsftpd主配置文件

/etc/vsftpd/ftpusers           #用户指定哪些用户不能访问ftp服务器,黑名单

/etc/vsftpd/user_list           #用户指定哪些用户能访问ftp服务器,白名单

/var/ftp/                                   #默认情况下匿名用户的根目录,默认权限755,不用更改该权限

启动服务 service vsftpd restart

开机启动chkconfig vsftpd on

 监听 netstat -anptu | grep ftp

tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      2877/vsftpd

为什么看不到20端口?:因为没有数据通信。

例1:

允许所有员工上传和下载文件,并允许创建用

户自己的目录。

允许匿名用户访问

anonymous_enable=YES

允许匿名用户上传文件并可以创建目录

anon_upload_enable=YES

anon_mkdir_write_enable=YES  

将ftp跟目录的用户属性改:chown ftp /var/ftp/XXXX

重启服务后可以看见能上传,能新建,但不能重命名  ,谁建谁删,加1权限

注:工作中,匿名用户只是只读访问,写的权限也没有的。

例2:

结合FTP 和WEB 服务器,FTP 的功能主要用于维护公司的网站内容,包括上传文

件、创建目录、更新网页等等。创建team1 和team2 帐号登录FTP 服务器,但不能登录本地系统,并将

这两个帐号的根目录限制为/var/www/html,不能进入该目录以外的任何目录。

只允许:team1和team2两用户 可以上传。 vsftp禁止匿名。

useradd -s /sbin/nologin team1  和 2

echo "123456" | passwd --stdin team1 和 2

主配置文件

cp vsftpd.conf vsftpd.conf.back

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO:禁止匿名用户登录

local_enable=YES:允许本地用户登录

local_root=/var/www/html:设置本地用户的根目录为/var/www/html

chroot_list_enable=YES:激chroot 功能

chroot_list_file=/etc/vsftpd/chroot_list:设置锁定用户在根目录中的列表文件。此文件存放要锁定的用户名

创建文件touch /etc/vsftpd/chroot_list

添加用户vim /etc/vsftpd/chroot_list  #写入以下内容,一行,一个用户名

team1

team2

重启service vsftpd restart

改权限:chmod -R o+w /var/www/html/ 

g+s会继成文件的权限属性

验证,测试 Linux:lftp ip  ;window ftp://ip

例3:

普通员工只能查看和下载,经理有上传和下载。

ftp虚拟用户的使用跟软连接相似,ftp的用户和系统用户进行分离,这样即使黑客破解了ftp的账号和密码,也只是能访问ftp共享出来的内容,对服务器本身没有任何影响,能提高服务器的安全性。

创建用户文本文件,在此文件中添加虚拟用户,两行为一组,分别对应用户名和密码

 vim /etc/vsftpd/vusers.list

xsb

123

boss

456

注:其中xsb为普通员工登录账号,boss为经理登录账号

2、生成数据库

使用db_load生成,如果没有此命令,可以使用以下命令进行安装

rpm -qf `which db_load`

yum -y install db4-utils

生成用户数据库

 db_load -T -t hash -f /etc/vsftpd/vusers.list /etc/vsftpd/vusers.db

 注:-T:允许应用程序能够将文本文件转 译载入数据库

       -t:hash使用hash码加密

       -f:指定包含用户名和密码的文本文件

 3、修改数据库文件的访问权限,提高安全性,只允许root用户拥有读写权限,防止非法用户盗取

 chmod 600 /etc/vsftpd/vusers.db

4、创建两个系统用户virtual和rm并修改目录权限

chmod 600 /etc/vsftpd/vusers.db

useradd -d /var/ftp/xsb -s /sbin/nologin virtual

useradd -d /var/ftp/boss -s /sbin/nologin lhz

chmod 755 /var/ftp/xsb/

5、配置PAM文件

为了是服务器能使用数据库文件,对客户端进行身份验证,需要调用系统的PAM模块

PAM(Plugable Authentication Module)为可插拔认证模块,不必重新安装应用系统,通过修

改指定的配置文件,调整对该程序的认证方式。PAM 模块配置文件路径为/etc/pam.d/目录,此

目录下保存着大量与认证有关的配置文件,并以服务名称命名。

vim /etc/pam.d/vsftpd.vu

#%PAM-1.0

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers

account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers

注:文件最后调用的数据库文件时省略掉了db后缀

6、修改主配置文件

 vim /etc/vsftpd/vsftpd.conf

匿名用户 NO

local_enable=YES                              #允许本地用户登录

write_enable=YES                             #允许写入

local改anon _umask=022                   #设置上传文件的默认权限

chroot_local_user=YES                      #限制目录

#guest_enable=YES                          #开启虚拟用户支持,可以在用户单独配置文件中设置

#guest_username=virtual                 #设置映射本地用户,可以在用户单独配置文件中设置

pam_service_name=vsftpd.vu           #指定PAM文件

max_clients=300                               #最大接入的客户端数量

max_per_ip=10                                 #设置每个IP地址最大连接数

 如果在主配置文件中开启了虚拟用户支持,并配置了虚拟用户映射的本地用户,那么这些配置好之后虚拟用户就能在客户端进行登录了,但是所有的虚拟用户权限一样。

 建立独立的配置文件,设置不同用户的权限

vim /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vusers_dir    #指定用户配置文件的路径

vim /etc/vsftpd/vusers_dir/xsb

guest_enable=yes

guest_username=virtual

anon_world_readable_only=no                 #允许匿名用户浏览整个服务器的文件

anon_max_rate=50000                             #设置传输速率为50KB/s

vim /etc/vsftpd/vusers_dir/boss

guest_enable=yes

guest_username=lhz

anon_world_readable_only=no

write_enable=yes

anon_mkdir_write_enable=yes                 #允许创建目录

anon_upload_enable=yes                         #允许上传文件

anon_max_rate=100000                            #甚至传输速率为100KB/s

anon_other_write_enable=yes                  #允许修改、重命名、删除文件

 客户端验证

使用xsb用户登录时,上传文件失败,权限不允许

chmod 755 /var/ftp/boss/

 

时间: 2024-10-04 07:03:08

2.3FTP服务的相关文章

mysqld服务启动失败, Failed to restart mysqld.service: Unit not found.

-bash-4.2# service mysqld restart Redirecting to /bin/systemctl restart mysqld.serviceFailed to restart mysqld.service: Unit not found. 并不存在 mysqld 的服务, -bash-4.2# -bash-4.2# chkconfig -list -list: unknown option -bash-4.2# chkconfig --list Note: Thi

SQL Server 2008的MSSQLSERVER 请求失败或服务未及时响应

我的是SQL server 2008R2, 以前可以正常的启动SQL server(SQLEXPRESS).SQL server(MSSQLSERVER),有几天没有打开了,就在昨天 开机之后就无法启动MSSQLSERVER了,提示的信息如下图: 快速解决办法如下: 第一步:打开事件查看器,查看windows日志,点击应用程序,查看windows错误日志 http://product.pconline.com.cn/itbk/software/win8/1211/3060037.html 第二步

dubbo之服务降级

向注册中心写入动态配置覆盖规则:(通过由监控中心或治理中心的页面完成) RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension(); Registry registry = registryFactory.getRegistry(URL.valueOf("zookeeper://10.20.153.10:2181"))

Windows Server 2012配置L2TP服务环境

在上一篇文章<Windows Server 2012配置VPN服务环境>中讲解了在Windows Server2012环境中的基础VPN搭建,但是只能支持PPTP的VPN连接.这篇文章进一步完善了VPN基于L2TP的连接讲解. 在百度上也没有找到一个Windows2012 很全的L2TP服务搭建的方案,所以自己编辑了一个给有需要的朋友们参考. 准备环境:Windows Server 2012R2 数据中心版64位,基础的VPN服务环境已经搭建完成. 功能需求:完善VPN服务器来支持L2TP类型

Windows 无法启动xx服务 错误1053:服务没有及时响应启动或控制请求

症状:win7系统的很多系统关键服务,启动不了,双击该服务也弹不了操作框,系统服务是设置为自动 的,但是就是启动不了,在本地服务窗口中只能启动该服务,但是双击会弹不了窗口,你点启动后会出现错误提示1053,本地用户组,里面可以看到用户和组但 是双击话也没反应,照成后果,网站打不开,远程连接连不上,但是服务器实际上是开着的,其实具体原因就是因为系统关键服务未正常开启,实验结果表明是权限 不够,导致系统服务一律停止,为什么会这样呢?估计是服务器中毒,被木马程序影响照成的,照成了Network Ser

自定义及发布一个webservice服务

自定义及发布一个webservice服务    - 声明 某个业务服务为webservice服务       通过@webservice 注解来声明    - 发布webservice服务       Endpoint.publish()发布 (默认对public修饰的方法进行发布)    - 通过wsimport生成本地代理来访问自己发布的webservice       wsimport 1.发布自定义webservice phone.java package ws.myWebService

C# 远程服务器 安装、卸载 Windows 服务,读取远程注册表,关闭杀掉远程进程

这里安装windows服务我们用sc命令,这里需要远程服务器IP,服务名称.显示名称.描述以及执行文件,安装后需要验证服务是否安装成功,验证方法可以直接调用ServiceController来查询服务,也可以通过远程注册表来查找服务的执行文件:那么卸载文件我们也就用SC命令了,卸载后需要检测是否卸载成功,修改显示名称和描述也用sc命令.至于停止和启动Windows服务我们可以用sc命令也可以用ServiceController的API,当停止失败的时候我们会强制杀掉远程进程,在卸载windows

Windows Server下把BAT批处理注册成服务在后台运行且注销后能正常运行

批处理有如下特点: 1.登录到当前窗口运行时,如果关闭控制台会连同启动的程序一起关闭. 2.如果是以start /b的形式启动,那么同样也是在控制台关闭后者注销当前窗口也会一起关闭. 3.如果以vbs的形式启动,注销当前用户也会一起关闭. 有如下方式解决: 1.使用[任务计划]去启动批处理,里面有很多个触发点,可以选择[计算机启动时]触发也能达到开机启动的效果,而不用登录桌面. 2.有错误启动Windows Service方式,用[sc]命令注册服务,然后以cmd.exe的形式去启动(C:\Wi

Spring Cloud ZooKeeper集成Feign的坑2,服务调用了一次后第二次调用就变成了500,错误:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.n

错误如下: 2017-09-19 15:05:24.659 INFO 9986 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.spring[email protected]56528192: startup date [Tue Sep 19 15:05:24 CST 2017]; root of context hierarchy 2017-09-19 15:05:24.858 INFO 9986 --