您的位置:首页 > 编程语言 > PHP开发

ftp服务器在企业中的典型应用

2012-03-20 21:59 232 查看
ftp的简介和工作模式
FTP(File Transfer Protocol, FTP)是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令来下载文件,上载文件,创建或改变服务器上的目录。
FTP两种工作模式:主动模式(Active FTP)和被动模式(Passive FTP)
主动模式:FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。
被动模式:FTP库户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
注意:被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。
实验环境
1操作系统 linux redhat enterprise 5 版本号2.6.18-164.el5
案例一:
        公司刚买了一块新的硬盘,为了给公司的员工提供ftp的服务,并且在ftp上放置了公司的规章制度的说明文件,只允全体许员(匿名的账号)工进行下载,其他的权限均不允许。但是对于一些高级员工来说,他们可以把自己的一些资料放在ftp上(只允许10M 的可用空间,一旦大于10M就无法上传其他的文件),并且自己可以增加、删除、修改等。为了使ftp服务器可以很好地工作,对匿名账号和本地账号的速度进行了相关的限制,规定匿名的账号下载速率100k/s,而本地账号(高级员工)的下载速率为1M/s. 而且只允许同时在线20个用户,对于单一的用户来说,只可以开启2个连接的窗口。
一:新增一块20G的硬盘,进行分区、格式化和挂载等操作
1:查看系统的硬盘
[root@zzu ~]# fdisk -l
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 144 1052257+ 82 Linux swap / Solaris
/dev/sda3 145 2610 19808145 83 Linux
Disk /dev/sdb: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
[root@zzu ~]#
2:在第二块硬盘上新建一个分区/dev/sdb1
[root@zzu ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
The number of cylinders for this disk is set to 2610.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-2610, default 2610):
Using default value 2610
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
3:使系统重新加载内核程序
[root@zzu ~]# partprobe /dev/sdb
4:将/dev/sdb1分区格式化为 ext3的格式
[root@zzu ~]# mkfs -t ext3 /dev/sdb1
5:创建一个挂载点,并挂载该分区/dev/sdb1
[root@zzu ~]# mkdir /mnt/ftppart
[root@zzu ~]# mount /dev/sdb1 /mnt/ftppart/
6:查看分区的使用情况
[root@zzu ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 2.7G 15G 16% /
/dev/sda1 99M 12M 83M 12% /boot
tmpfs 506M 0 506M 0% /dev/shm
/dev/hdc 2.8G 2.8G 0 100% /media/RHEL_5.4 i386 DVD
/dev/hdc 2.8G 2.8G 0 100% /mnt/cdrom
/dev/sdb1 20G 173M 19G 1% /mnt/ftppart
二:安装vsftpd的rpm包
说明我的系统已经安装过这个rpm的包啦,如果没有的话,你可以使用下面的命令进行安装。
[root@zzu Server]# rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm
三:创建存放公司的手册的目录,即/mnt/ftppart/public,并且放置公司的手册
[root@zzu Server]# cd /mnt/ftppart/
[root@zzu ftppart]# mkdir public
[root@zzu ftppart]# cd public/
[root@zzu public]# touch p_shouce1
[root@zzu public]# touch p_shouce2
[root@zzu public]# ll
##由于默认情况下对于other用户来说只有读的权力,在这里我们不需要更改权限
-rw-r--r-- 1 root root 0 Mar 20 19:04 p_shouce1
-rw-r--r-- 1 root root 0 Mar 20 19:04 p_shouce2
[root@zzu public]#
四:查看系统的账号,进行增加或者修改
[root@zzu public]# tail /etc/passwd 已有了普通的账号user1
root111:x:500:500:root111:/home/root111:/bin/bash
user1:x:501:501::/home/user1:/bin/bash
[root@zzu public]# useradd user2 新增user2用户
[root@zzu public]# echo "123"|passwd --stdin user2
Changing password for user user2.
passwd: all authentication tokens updated successfully.
[root@zzu public]# tail /etc/passwd
user1:x:501:501::/home/user1:/bin/bash
user2:x:502:502::/home/user2:/bin/bash
五:针对于全体员工,即匿名用户进行设置
说明:由于新建的ftp服务器的匿名账号的默认的根目录为/var/ftp,我们需要对其进行修改将其修改为/mnt/ftppart/public目录
1:修改/etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_root=/mnt/ftppart/public
2:由于新建的账户的家目录仍然为/home
修改相应的文件使新增的用户的家目录为 /mnt/ftppart/home
[root@zzu ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@zzu ~]# useradd -D -b /mnt/ftppart/home
[root@zzu ~]# useradd -D
GROUP=100
HOME=/mnt/ftppart/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
3:增加一个用户进行测试
[root@zzu ~]# useradd user3
[root@zzu ~]# tail /etc/passwd
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
avahi-autoipd:x:100:101:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin
oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin
xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
gdm:x:42:42::/var/gdm:/sbin/nologin
sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin
root111:x:500:500:root111:/home/root111:/bin/bash
user1:x:501:501::/mnt/ftppart/home/user1:/bin/bash
user2:x:502:502::/mnt/ftppart/home/user2:/bin/bash
user3:x:503:503::/mnt/ftppart/home/user3:/bin/bash
六:针对于高级员工进行相关的设置
1:vim /etc/passwd



2: 在服务器上创建home目录
[root@zzu ftppart]# mkdir home
[root@zzu ftppart]# ll
total 24
drwxr-xr-x 2 root root 4096 Mar 20 19:24 home
drwx------ 2 root root 16384 Mar 20 18:48 lost+found
drwxr-xr-x 2 root root 4096 Mar 20 19:04 public
3:移动user1.user2的家目录到/mnt/ftppart/home
[root@zzu ftppart]# cd /home/
[root@zzu home]# ll
total 16
drwx------ 3 root111 root111 4096 Feb 7 19:00 root111
drwx------ 4 user1 user1 4096 Feb 7 21:40 user1
drwx------ 3 user2 user2 4096 Mar 20 19:08 user2
[root@zzu home]# mv user1 user2 /mnt/ftppart/home/
4:在服务器上查看目录
[root@zzu home]# cd /mnt/ftppart/home/
[root@zzu home]# ll
total 8
drwx------ 4 user1 user1 4096 Feb 7 21:40 user1
drwx------ 3 user2 user2 4096 Mar 20 19:08 user2
七:对不同的员工进行下载速度的限制
[root@zzu ~]# vim /etc/vsftpd/vsftpd.conf



八:设置ftp的同时的在线的用户为5 ,每个用户的连接数 为2。
[root@zzu ~]# vim /etc/vsftpd/vsftpd.conf
由于在此需要进行测试,所以选择用户的数量为5,你可以根据实际情况进行修改。



九:对用户进行磁盘配额
1:修改fstab表格



2:重新挂载/dev/sdb1 分区



3:对/dev/sdb1 分区进行磁盘配额的检测
[root@zzu ~]# cd /mnt/ftppart/
[root@zzu ftppart]# quotacheck -augv -c
quotacheck: Scanning /dev/sdb1 [/mnt/ftppart]
quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Old group file not found. Usage will not be substracted.
done
quotacheck: Checked 18 directories and 16 files
quotacheck: Old file not found.
[root@zzu ftppart]#
[root@zzu ftppart]# ll
total 32
-rw------- 1 root root 7168 Mar 20 20:01 aquota.user 这是针对于用户的磁盘配额的文件
drwxr-xr-x 5 root root 4096 Mar 20 19:49 home
drwx------ 2 root root 16384 Mar 20 18:48 lost+found
drwxr-xr-x 2 root root 4096 Mar 20 19:04 public
4:针对user 1进行磁盘配额,限制为10M空间的大小



5:对于user2 来说



6:开启磁盘配额,并设置为开机加载
[root@zzu ftppart]# quotaon /dev/sdb1
[root@zzu ftppart]# echo "quotaon /dev/sdb1" >>/etc/rc.d/rc.local
[root@zzu ftppart]# cat /etc/rc.d/rc.local
touch /var/lock/subsys/local
quotaon /dev/sdb1 可以看到已经加载到啦开机的脚本里面啦
7:重新启动vsftpd的服务
[root@zzu ftppart]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
十:验证:
一:对于匿名账号:
1:查看



2上传



3:删除



二:对于高级员工user1
1:登录和新建文件夹






2:上传



3:重命名



三:磁盘配额的验证
1:选举一个14M 的文件



2:上传






四:一个ip可以最多打开的窗口






提示:无法显示
五:同时的在线用户的数量的验证



[root@zzu ~]# w
root pts/1 192.168.10.10 18:45 1:51 0.08s 0.00s ftp 192.168.10.100
root pts/2 192.168.10.10 20:31 1:04 0.00s 0.00s ftp 192.168.10.100
root pts/3 192.168.10.10 20:31 53.00s 0.01s 0.00s ftp 192.168.10.100
root pts/4 192.168.10.10 20:32 0.00s 0.01s 0.00s w
六:基于下载速度的验证(只要是980kb~1020kb之间的就算是正常的范围)



小结:
这样的话我们就轻松的搞定了这样的一个案例。当然ftp可以控制的还很多,比如在被动的工作模式下,我们可以控制服务器打开的端口范围。
只需要在vsftpd.conf的配置脚本中增加这样的代码就可以啦。
pasv_min_port  被动模式的最小的端口
pasv_max_port  被动模式的最大的端口
对于ftps我们需要使用的指令
force_local_logins_ssl=YES 对本地用户进行ssl的加密验证
force_local_data_ssl=YES 对本地用户所传输的数据进行ssl的加密
ssl_enable=yes 开启ssl的验证功能
ssl_tlsv1=YES 支持ssl的v1版本 (由于被标准化组织给收购啦,前身叫tls,所以仍然保留该名称)
ssl_sslv2=YES 支持ssl的v2版本
ssl_sslv3=YES 支持ssl的v3版本
rsa_cert_file=/var/ftp/cert/ftp.crs 指出ftp的证书文件的所在的位置
rsa_private_key_file=/var/ftp/certs/ftp.key 指出ftp的私钥文件的所在的位置
另外的一些指令
anon_other_write_enable=YES 赋予匿名账号上传、删除、重命名的权限。
userlist_deny
virtual_use_local_privs f
local_max_rate  本地用户的最大的传输速率
anon_root 改变匿名账号的默认的家目录
max_per_ip 每个ip可以打开的ftp的窗口数量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: