文件共享服务器:
ftp:(文件传输协议) ftp协议
Client/server
Clienttcp/ip cmd
浏览器 
Cuteftpleapftp    flashxp   ssl
Server
Windows IISserver-u
Linuxwu-ftp   vsftpd   pureftp
ftp 工作方式 :主动方式被动方式
21(连接控制端口) 20(传递数据端口)
客户端访问(1)主动方式(2)被动方式

ftp指令 (cmd)
Pwd 在哪
Cd 切换目录
Dir 远程查看目录
get(下载) mget (多个下载)
put(上传)mput(多个上传)
!dir(查看本地)
Lcd(切换本地)
传输方式: ascii和bin(二进制)
使用linux做ftp服务器
安装包为:vsftpd-2.0.5-16.el5_4.1.i386.rpm
Vsftpd的主配置文件为:/etc/vsftpd/vsftpd.conf
安装完后最初可以直接启用
[root@mail Server]# service vsftpd start
为 vsftpd 启动 vsftpd:[确定]
这时我们可以通过很多方式登录
[root@mail sasl2]# ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir查看目录
227 Entering Passive Mode (127,0,0,1,133,210)
150 Here comes the directory listing.
drwxr-xr-x2 0        0            4096 Dec 04 2009 pub
226 Directory send OK.
ftp> pwd查看位置
257 "/"
ftp> !dir 查看本地目录
libanonymous.laliblogin.la     libplain.la        libsasldb.la           Sendmail.conf
libanonymous.soliblogin.so           libplain.so              libsasldb.so          smtpd.conf
libanonymous.so.2 liblogin.so.2libplain.so.2    libsasldb.so.2
libanonymous.so.2.0.22liblogin.so.2.0.22 libplain.so.2.0.22    libsasldb.so.2.0.22
ftp> bye
221 Goodbye.
[root@mail sasl2]# touch /home/user1/f1在user1用户的家目录创建文件
[root@mail sasl2]# lftp 127.0.0.1使用lftp方式登录(默认匿名登录)
lftp 127.0.0.1:~> pwd
ftp://127.0.0.1
lftp 127.0.0.1:~> dir
drwxr-xr-x2 0        0            4096 Dec 04 2009 pub
lftp 127.0.0.1:/> user user1切换用户登录  
口令:
lftp user1@127.0.0.1:~> dir
-rw-r--r--1 0        0               0 Jul 24 09:13 f1
drwx------3 500      500          4096 Jul 24 08:30 mail
lftp user1@127.0.0.1:~>
[root@mail sasl2]# lftp -u user1 127.0.0.1 使用用户名登录
口令:
lftp user1@127.0.0.1:~> pwd
ftp://user1@127.0.0.1
lftp user1@127.0.0.1:~> dir
-rw-r--r--1 0        0               0 Jul 24 09:13 f1
drwx------3 500      500          4096 Jul 24 08:30 mail
lftp user1@127.0.0.1:~> bye 退出登录
只用linux才支持lftp登录方式
针对资源的权限:本地权限,网络权限,如果看、两个权限冲突时取最小权限
编译vsftpd的主配置文档
默认状态下ftp的共享文件夹/var/ftp/pub的权限为:
[root@mail ftp]# ll
drwxr-xr-x 2 root root 4096 2009-12-04 pub不允许其他用户写入的,为了便于他们的上传我们改一下目录权限
[root@mail ftp]# chmod a+wt pub不允许删除该目录
[root@mail sasl2]# vim /etc/vsftpd/vsftpd.conf 配置参数可以使用 man 5 vsftpd找到
12 anonymous_enable=YES允许吗、匿名用户登录的
15 local_enable=YES允许本地用户登录
18 write_enable=YES本地与网络可读可写
22 local_umask=022屏蔽权限
23anon_umask=073默认是077,为匿名用户上传的文件保留可以下载权限(添加的)
27 #anon_upload_enable=YES 匿名用户向ftp上传东西被禁用
31 #anon_mkdir_write_enable=YES 匿名账号创建文件夹(但是只有它会只能传不能下载)
anon_other_write_enable=YES 添加别的写权限后才能执行对上传的目录执行删除改名
35 dirmessage_enable=YES 进入目录提示目录消息(需要在该目录下创建.message文件)
39 xferlog_enable=YES启用传输时的日志记录
42 connect_from_port_20=YES
53 xferlog_file=/var/log/xferlog 打开它才会在传输时记录日志(该文件在传输时才会产生) 
57 xferlog_std_format=YES记录的日志的格式,该格式为标准格式
58 log_ftp_protocol=NO 在日志中记录用户登录上执行的操作命令(但是日志格式必须为非标准,即上一行为NO)
60 #idle_session_timeout=600 会话空闲超时
63 #data_connection_timeout=120 连接超时(三次握手)
86 ftpd_banner=Welcome to blah FTP service. 进入ftp时的消息,排头,不用登录就能看见
90 deny_email_enable=YES匿名账号的密码可以用邮箱的账号,那么ftp就会把ftp的一些相关信息发到该邮箱中,不利于安全,我们可以借此禁用默写邮箱做密码,将其写入banned_emails文件中
91 # (default follows) 默认是允许的
92 banned_email_file=/etc/vsftpd/banned_emails列入禁止使用邮箱账号做密码的名单,该文件需要先收工创建
97 chroot_list_enable=YES根据列出的表单将用户锁定在家目录中
98 # (default follows)
99 chroot_list_file=/etc/vsftpd/chroot_list 该文件写入被锁定的账号(手动创建)
100 chroot_local_user=YES 将登录的所有用户都锁定在家目录
111 listen=YES(可以做成依赖于超级守护进程的服务器xinetd)
118 pam_service_name=vsftpdftp账户使用pam验证
119 userlist_enable=YES开启针对列表中用户的访问权限,该列表为/etc/vsftpd/user_list
120 userlist_deny=yes决定该列表中的用户的访问时拒绝(YES)还是允许(NO)
121 tcp_wrappers=YES使用系统中的简易防火墙(这个简易防火墙有两个文件/etc/hosts.allow与/etc/hosts.deny)
修改ftp的主配置文件后一定要重启vsftpd
系统的建议防火墙,主要依靠/etc/hosts.allow和/etc/hosts.deny
在/etc/hosts.deny系统先看到它默认动作是allow(可以改成deny)
vsftpd:192.168.20.33:allow 语法格式:服务:来源:动作(允许该地址访问)
在/etc/hosts.deny中系统最后才读取
vsftpd:all:deny

下面做一个ftp的小实例
1.新购一块磁盘,将ftp资料传到该目录下 —》分区格式化——》挂载/mnt/ftp
建立目录public 公共文档 ,只许下载,不许上传与更改
2.每个用户家目录home/用户空间限制10m
3.同时在线用户3个 ,每用户连接数2
4.传递速率 1M/s 本地用户100k/s 匿名用户
将新增磁盘分区格式化后,然后启用磁盘配额
[root@mail ~]# vim /etc/fstab
/dev/sdb1/mnt/ftp           auto    defaults,usrquota       0 0
然后使用mount -a 或者重启,是这些参数生效
[root@mail ~]# mount
/dev/sdb1 on /mnt/ftp type ext2 (rw,usrquota)生效了
对用户做磁盘配额的控制
[root@mail ~]# quotacheck -augvc
在/mnt/ftp就生成文件:aquota.user
[root@mail ftp]# edquota -u user1
Filesystemblocks    soft     hard     inodes     soft     hard
/dev/sdb10        10000   10000       3       0       0
[root@mail ftp]# edquota -p user1 user2 将user1的设置拷贝给user2
[root@mail ftp]# quotaon /dev/sdb1
[root@mail ftp]# vim /etc/rc.d/rc.local编译开机启动配额
quotaon /dev/sdb1添加该项
在/mnt/ftp下创建匿名账号访问的公共目录public(对other用户没有写权限)
[root@mail ftp]# mkdir public
[root@mail ftp]# cd public/
[root@mail public]# touch l1
[root@mail public]# touch l2
在 /mnt/ftp 为用户创建家目录
[root@mail ftp]# mkdir home
[root@mail ftp]# mv /home/user* home/ 将本地用户转移过来
[root@mail ftp]# ll home/
总计 2
drwx------ 4 user1 user1 1024 07-24 17:13 user1
drwx------ 4 user2 user2 1024 07-24 16:42 user2
[root@mail ftp]# vim /etc/passwd修改passwd文件中用户家目录的路径
user1:x:500:500::/mnt/ftp/home/user1:/bin/bash
user2:x:501:501::/mnt/ftp/home/user2:/bin/bash
但是新建的账号家目录还是在/home/下,那么我们需要创建账号默认的家目录
[root@mail ftp]# useradd -D -b /mnt/ftp/home那么在创建的账号默认的家目录就改了
[root@mail ftp]# useradd user3
[root@mail ftp]# grep user /etc/passwd
user1:x:500:500::/mnt/ftp/home/user1:/bin/bash
user2:x:501:501::/mnt/ftp/home/user2:/bin/bash
user3:x:502:502::/mnt/ftp/home/user3:/bin/bash
默认匿名账号的根默认是/var/ftp/pub,我们需要改变它的根,让它为/mnt/ftp/public
在主配置文件中添加
[root@mail ftp]# vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES 允许匿名用户下载
anon_root=/mnt/ftp/public
此时配额已经做我们可以上传文件是试试
创建规定大小文件:dd if=/dev/zero of=f2 bs=1M count=5
做用户连接数以及本地与匿名账户传输速率做限制
max_clients=3最大用户连接数位3
max_per_ip=2每用户最多连接数位2
local_max_rate=1000000本地最大传输速率为100m
anon_max_rate=100000匿名用户最大传输速率为10m
重启vsftpd就可以做测试了
实现基于超级守护进程的ftp
我们将ftp服务做成超级守护进程就能实现在规定时间可以访问了
首先编译主配置文件/etc/vsftpd/vsftpd.conf
listen=NO切换服务模式
[root@mail ~]# cd /etc/xinetd.d/
[root@mail xinetd.d]# cp -p tftp vsftpd生成ftp的超级守护进程文件
[root@mail ~]# vim /etc/xinetd.d/vsftpd编译该文件
service ftp
{
id                      =vsftpd
socket_type             = stream
protocol                = tcp
wait                    = no
user                    = root
server                  = /usr/sbin/vsftpd
server_args             = /etc/vsftpd/vsftpd.conf
disable                 = no
access_times            = 08:00-20:00
}
[root@mail ~]# service xinetd restart便可以启动ftp了
ftp安全
1.加密ftpssl   ftps 证书
让ca给自己颁发一个证书利用证书加密
[root@mail ~]# cd /etc/pki/
[root@mail pki]# vim tls/openssl.cnf
45 dir= /etc/pki/CA
88 countryName= optional
89 stateOrProvinceName= optional
90 organizationName= optional
:80,90 r/match/optional
[root@mail CA]# mkdir crl certs newcerts创建这些目录
[root@mail CA]# touch index.txt serial 创建文件
[root@mail CA]# vim serial给该文件一个起始序列号
01
在CA目录下产生一个钥匙
[root@mail pki]# cd CA/
[root@mail CA]# openssl genrsa 1024 >private/cakey.pem
Generating RSA private key, 1024 bit long modulus
...........................................++++++
.......++++++
e is 65537 (0x10001)
然后产生一个自签发的证书
[root@mail CA]# openssl req -new -x509 -key private/cakey.pem -days 3650 -out cacert.pem
[root@mail CA]# ll
总计 12
-rw-r--r-- 1 root root 1074 07-17 11:26 cacert.pem证书文件产生
drwx------ 2 root root 4096 07-17 11:24 private
[root@mail CA]# chmod 600 private/cakey.pem对私钥进行权限处理
[root@mail CA]# mkdir -pv /etc/ftp/certs创建多级子目录存放ftp的证书文件
mkdir: 已创建目录 “/etc/ftp”
mkdir: 已创建目录 “/etc/ftp/certs”
[root@mail CA]# cd /etc/ftp/certs/
[root@mail certs]# openssl genrsa 1024 >vsftpd.key产生钥匙
Generating RSA private key, 1024 bit long modulus
..++++++
.........++++++
e is 65537 (0x10001)
根据钥匙做请求文件:
[root@mail certs]# openssl req -new -key vsftpd.key-out vsftpd.csr
[root@mail certs]# ll
总计 8
-rw-r--r-- 1 root root 1094 07-17 11:36 vsftpd.csr
-rw-r--r-- 1 root root 887 07-17 11:34 vsftpd.key
[root@mail certs]# openssl ca -in vsftpd.csr -out vsftpd.crt 颁发证书
[root@mail certs]# ll
总计 12
-rw-r--r-- 1 root root 3032 07-17 11:55 vsftpd.crt
-rw-r--r-- 1 root root 639 07-17 11:54 vsftpd.csr
-rw-r--r-- 1 root root 887 07-17 11:52 vsftpd.key
[root@mail certs]# chmod 600 *更改一下权限
我们为了测试可是使用wireshark抓包
[root@mail certs]# yum install wireshark -y
[root@mail ~]# tshark -ni eth0 -R "tcp.dstport eq 21"抓取ftp关于21端口的包
20.610580 192.168.20.22 -> 192.168.20.66 FTP Request: USER user1
20.853138 192.168.20.22 -> 192.168.20.66 TCP 1377 > 21 [ACK] Seq=13 Ack=69 Win=372232 Len=0
22.257695 192.168.20.22 -> 192.168.20.66 FTP Request: PASS 123
在未启用加密验证的情况下,使用账户访问ftp,很容易就会抓到账号与密码
那么我们启用ftp加密
在ftp主配置文件中没有关于加密的,但我们可以根据man vsftpd.conf查看ftp手册来找到
[root@mail certs]# vim /etc/vsftpd/vsftpd.conf
force_local_logins_ssl=YES强制本地账号登陆加密
force_local_data_ssl=YES本账号传递数据加密
ssl_enable=YES打开ssl验证
ssl_tlsv1=YES启用ssl的版本号
ssl_sslv3=YES
ssl_sslv2=YES
rsa_cert_file=/etc/ftp/certs/vsftpd.crt本地证书存放位置 
rsa_private_key_file=/etc/ftp/certs/vsftpd.key本地钥匙存放位置
之后重启ftp服务
这时我们使用ftp客户端软件测试登陆(命令行不支持ftps)
此时再抓包便不会再抓到有关账号跟密码的数据包了
2.虚拟账号(linux操作系统部存在的账号,但是可以登录ftp进行访问)
[root@mail certs]# vim /etc/vsftpd/vuser.txt 创建一个文本,放置虚拟账号
Jim账号
000密码
然后我们需要生成hash加密的数据库文件以便让后续的pam.userdb这个模块来读取我们的用户名密码进行验证,我们需要安装 db4-utils包
[root@mail certs]# yum install db4-utils -y
[root@mail certs]# cd /etc/vsftpd/
[root@mail vsftpd]# db_load -T -t hash -f vuser.txt vuser.db生成数据库文件
Vsftpd要启动虚拟账号需要跟pam认证模块结合,在/etc/pam.d/有一个vsftpd文件,这是vsftpd利用pam这个认证模块认证账户登录的,我们产生这样一个类似虚拟账号的认证文件
[root@mail vsftpd]# ll
总计 36
-rw------- 1 root root125 2009-12-04 ftpusers
-rw------- 1 root root361 2009-12-04 user_list
-rw------- 1 root root 4864 07-17 12:13 vsftpd.conf
-rwxr--r-- 1 root root338 2009-12-04 vsftpd_conf_migrate.sh
-rw-r--r-- 1 root root 12288 07-17 12:41 vuser.db
-rw-r--r-- 1 root root18 07-17 12:36 vuser.txt
[root@mail vsftpd]# cd /etc/pam.d/
[root@mail pam.d]# cp vsftpd vsftpd.t
[root@mail pam.d]# vim vsftpd.t
authrequired     pam_userdb.so db=/etc/vsftpd/vuser
accountrequired     pam_userdb.so db=/etc/vsftpd/vuser
上面dn=后面的就是我们生成好的hash数据文件,文件后缀的不需要打,pam_userdb.so这个模块会自动帮我们识别的,虚拟账号必须映射到系统的一个本地账号上,可以不设密码。
[root@mail pam.d]# vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd.t
guest_enable=YES打开guest账号
guest_username=test1设置虚拟账号的映射
跟登录相关的日志放在/var/log/secure

转载于:https://blog.51cto.com/3428760/767752

文件共享服务器 -----ftp服务一相关推荐

  1. Rhel6服务器ftp服务配置

    FTP file transferprotocol 成本低,跨平台,跨公网 使用的端口号: 数据传输端口 20 命令传输端口 21 主动:默认情况下,ftp服务是开放了21端口,用来接受控制命令,服务 ...

  2. 云服务器如何链接本地打印机_利用FileZilla搭建云服务器FTP服务端和本地客户端...

    腾讯云服务器(服务端) 本地计算机(客户端) 1.首先在腾讯云上下载好FileZilla的对应服务端版本 这里附上中文下载地址 下载 - FileZilla中文网​www.filezilla.cn 2 ...

  3. 配置云服务器 FTP 服务

    自己配置的环境: OS: 阿里云 CentOS 6.5 >>Begin: 1. 登录到阿里云服务器(如何登录阿里云服务器), 在root权限下, 通过如下命令安装 vsftp [root@ ...

  4. linux 服务器FTP服务安装教程

    1.更新yum源 首先需要更新系统的yum源,便捷工具下载地址:http://help.aliyun.com/manual?spm=0.0.0.0.zJ3dBU&helpId=1692 2.安 ...

  5. 思科模拟器完成计算机网络综合组网(虚拟局域网,交换机,路由器,路由器协议,WWW/DNS/FTP服务,访问控制列表)

    思科模拟器完成计算机网络综合组网(虚拟局域网,交换机,路由器,路由器协议,WWW/DNS/FTP服务,访问控制列表)   这是笔者在学习计算机网络这门课程中,最后的一次综合大实验.这次实验考察的知识点 ...

  6. java文件共享ftp怎么访问_文件共享服务器

    共享服务器概述 通过网络提供文件共享服务,提供文件下载和上传服务(类似于FTP服务器) 回忆远程桌面服务开启后,端口号是:3389 文件共享服务:端口号:访问共享445,默认微软的系统全部开启445! ...

  7. 文件服务器 u口共享,轻松搭建专业级FTP文件共享服务器

    最近总是遇到一些很郁闷的情况,不得不自己搭建临时的FTP服务器,而作为完美主义者的我就不免弄出个比较专业的了,然后顺手就假设了应用环境写出这篇如何利用Serv-U搭建家庭用广域文件共享服务器的文章来. ...

  8. 基于滴滴云主机搭建 FTP 文件共享服务器(一)

    FTP 简单介绍 什么是 FTP 服务器? FTP 服务器(File Transfer Protocol Server)是在互联网上提供文件共享存储和访问服务的计算机,它们依照 FTP 协议提供服务. ...

  9. 请检查ftp文件服务器是否开启,查看服务器是否开启ftp服务

    查看服务器是否开启ftp服务 内容精选 换一换 已准备用于安装鲲鹏代码迁移工具的x86服务器或者基于鲲鹏916/920的服务器.已安装操作系统,操作系统版本要求请参见鲲鹏开发套件兼容性查询助手.已安装 ...

  10. ubuntu 20.04搭建samba文件共享服务器,实现基于Linux和Windows的共享文件服务

    ubuntu 20.04搭建samba文件共享服务器,实现基于Linux和Windows的共享文件服务--超详细 一,samba的基本概念 二,samba的安装 三,samba的基本配置 创建文件夹 ...

最新文章

  1. JSON.stringify 语法实例讲解
  2. 史密斯圆图串并联口诀_看得懂的史密斯圆图(个人总结)
  3. 容器化分布式日志组件ExceptionLess的Angular前端UI
  4. pandownload软件下载
  5. python os write_Python os.write() 方法
  6. ICPC程序设计题解书籍系列之六:吴永辉:《算法设计编程实验》
  7. 遇到个别手机前置摄像头相差90度的怪事
  8. 微信小程序大赛介绍文档
  9. android 外接扫码枪_Android 扫码枪以及焦点的处理
  10. 555定时器之内部结构图_20151231
  11. 酷炫网页按钮,炫酷变色效果(附源码)
  12. 甘谷2021年高考成绩查询入口,筑梦百天,赢在高考|甘谷一中2021届高考百日誓师大会...
  13. 【基于Leaflet和Canvas绘图的前端大量栅格数据渲染】
  14. Catalina 10.15.7屏蔽更新提示
  15. 力扣 2200. 找出数组中的所有 K 近邻下标
  16. 常用单片机编程思想及例程2——串口接收断帧
  17. [图示]做人36字诀:一)社会交往--教你建功立业
  18. qt编写网易云界面(10)----排行榜模块
  19. 企业信息化自主建设的三重保障
  20. 软件质量保证与测试大作业,软件测试大作业.docx

热门文章

  1. java事件处理的题目_介绍一下java的事件机制
  2. 二进制 文件 读入_数据挖掘--SPSS?Modeler数据的读入
  3. python django做网页论文_Python Web程序-Django框架搭建网站的简单介绍
  4. java代码生成Excel文件3000条自定义属性的的域账户名
  5. 设计模式 -(1)简单工厂模式(创建型)
  6. 我的成长(四)---看书
  7. HDU 2157 How many ways??
  8. Scaffolding
  9. Flex父子窗口传值
  10. 数据bag中的激光雷达数据和相机数据分割出来