完全不用那么麻烦,直接可以用xshell中自带的传输文件功能,下载客户端xftp安装就行,不用配置,可以在windows系统向Linux系统的任何文件地方上传下载文件,简单方便,大大节约时间,

vsftpd是什么鬼,配置麻烦浪费时间。

xshell 强大的安全终端模拟软件;xftp强大的安全的可靠的SFTP、FTP文件传输软件(当然还得现在Linux系统下安装vsftpd服务器)。

一.  FTP 说明

linux 系统下常用的FTP 是vsftp, 即Very Security File Transfer Protocol. 还有一个是proftp(Profession ftp)。 我们这里也是简单的说明下vsftp的配置。

vsftp提供3种远程的登录方式:

(1)匿名登录方式

就是不需要用户名,密码。就能登录到服务器电脑里面

(2)本地用户方式

需要帐户名和密码才能登录。而且,这个帐户名和密码,都是在你linux系统里面,已经有的用户。

(3)虚拟用户方式

同样需要用户名和密码才能登录。但是和上面的区别就是,这个用户名和密码,在你linux系统中是没有的(没有该用户帐号)

二.  Vsftp的安装配置

2.1  安装

vsftp 的安装包,可以在安装里找到。 用yum 安装过程也很简单。

安装命令:yum install vsftpd

2.2. 相关命令

2.2.1 启动与关闭

[root@singledb ~]# service vsftpd start

Starting vsftpd for vsftpd:                                [  OK  ]

[root@singledb ~]# service vsftpd stop

Shutting down vsftpd:                                      [  OK  ]

[root@singledb ~]# service vsftpd restart

Shutting down vsftpd:                                      [FAILED]

Starting vsftpd for vsftpd:                                [  OK  ]

[root@singledb ~]# /etc/init.d/vsftpd start

Starting vsftpd for vsftpd:                                [FAILED]

[root@singledb ~]# /etc/init.d/vsftpd stop

Shutting down vsftpd:                                      [  OK  ]

[root@singledb ~]# /etc/init.d/vsftpd restart

Shutting down vsftpd:                                      [FAILED]

Starting vsftpd for vsftpd:                                [  OK  ]

[root@singledb ~]# /etc/init.d/vsftpd status

vsftpd (pid 3931) is running...

[root@singledb ~]#

2.2.2. 其他命令

--查看vsftpd 启动状态

[root@singledb ~]# chkconfig --list vsftpd

vsftpd          0:off   1:off   2:off   3:off   4:off   5:off   6:off

[root@singledb ~]# chkconfig  vsftpd on

[root@singledb ~]# chkconfig --list vsftpd

vsftpd          0:off   1:off   2:on    3:on    4:on    5:on    6:off

这里看到,默认情况下从2到5设置为on了。2到5是多用户级别。 这个对应的是linux不同的运行级别。

我们也可以加level 选项来指定:

[root@singledb ~]# chkconfig --level 0 vsftpd on

[root@singledb ~]# chkconfig --list vsftpd     

vsftpd          0:on    1:off   2:on    3:on    4:on    5:on    6:off

我们看到0已经设置为on了。

我们可以使用man chkconfig 来查看帮助:

--level levels

Specifies the run levels an operation should pertain to. It is  given  as  a string of numbers from 0 to 7. For example, --level 35 specifies runlevels 3              and 5.

传统的init 定义了7个运行级(run level),每一个级别都代表系统应该补充运行的某些特定服务:

(1)0级是完全关闭系统的级别

(2)1级或者S级代表单用户模式

(3)2-5 级 是多用户级别

(4)6级 是 重新引导的级别

关于Linux 的运行级别,在我的Blog:

Linux 开机引导与关机过程(5.1 init 和运行级)

http://blog.csdn.net/tianlesoftware/archive/2010/10/24/5962460.aspx

(1)查看防火墙

我一般都是把系统的防火墙关闭了。 因为开了会有很多限制。

[root@singledb ~]# /etc/init.d/iptables status

Table: nat

Chain PREROUTING (policy ACCEPT)

num  target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)

num  target     prot opt source               destination

1    MASQUERADE  all  --  192.168.122.0/24    !192.168.122.0/24

Chain OUTPUT (policy ACCEPT)

num  target     prot opt source               destination

Table: filter

Chain INPUT (policy ACCEPT)

num  target     prot opt source               destination

1    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:53

2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:53

3    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:67

4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:67

Chain FORWARD (policy ACCEPT)

num  target     prot opt source               destination

1    ACCEPT     all  --  0.0.0.0/0            192.168.122.0/24    state RELATED,ESTABLISHED

2    ACCEPT     all  --  192.168.122.0/24     0.0.0.0/0

3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0

4    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable

5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT)

num  target     prot opt source               destination

You have new mail in /var/spool/mail/root

--添加开放21号端口:

[root@singledb ~]# /sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT

[root@singledb ~]# /etc/init.d/iptables status

Table: nat

Chain PREROUTING (policy ACCEPT)

num  target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)

num  target     prot opt source               destination

1    MASQUERADE  all  --  192.168.122.0/24    !192.168.122.0/24

Chain OUTPUT (policy ACCEPT)

num  target     prot opt source               destination

Table: filter

Chain INPUT (policy ACCEPT)

num  target     prot opt source               destination

1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:21

2    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:53

3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:53

4    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:67

5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:67

Chain FORWARD (policy ACCEPT)

num  target     prot opt source               destination

1    ACCEPT     all  --  0.0.0.0/0            192.168.122.0/24    state RELATED,ESTABLISHED

2    ACCEPT     all  --  192.168.122.0/24     0.0.0.0/0

3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0

4    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable

5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT)

num  target     prot opt source               destination

--保存配置

[root@singledb ~]# /etc/rc.d/init.d/iptables save

Saving firewall rules to /etc/sysconfig/iptables:          [  OK  ]

--重启防火墙:

[root@singledb ~]# service iptables {start|stop|restart}

(2)查看关闭selinux

[root@singledb ~]# sestatus

SELinux status:                 disabled

我这里在安装操作系统的时候就关闭了selinux,如果没有关闭,可以修改如下文件来关闭:

[root@singledb ~]# cat /etc/sysconfig/selinux(查看用cat,修改用vi)

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#       enforcing - SELinux security policy is enforced.

#       permissive - SELinux prints warnings instead of enforcing.

#       disabled - SELinux is fully disabled.

SELINUX=disabled

# SELINUXTYPE= type of policy in use. Possible values are:

#       targeted - Only targeted network daemons are protected.

#       strict - Full SELinux protection.

SELINUXTYPE=targeted

[root@singledb ~]#

保存退出并重启系统reboot

三.  FTP配置文件

FTP 安装好之后,在/etc/vsftpd/目录下会有如下文件:

[root@singledb ~]# cd /etc/vsftpd/

[root@singledb vsftpd]# ls

ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh

[root@singledb vsftpd]#

vsftpd.conf: 主配置文件

ftpusers: 指定哪些用户不能访问FTP服务器

user_list: 指定的用户是否可以访问ftp服务器由vsftpd.conf文件中的userlist_deny的取值来决定。

[root@singledb vsftpd]# cat user_list

# vsftpd userlist

# If userlist_deny=NO, only allow users in this file

# If userlist_deny=YES (default), never allow users in this file, and

# do not even prompt for a password.

# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers

# for users that are denied.

我们过滤掉#的注释后,查看一下vsftpd.conf 文件:

[root@singledb ftp]# cat /etc/vsftpd/vsftpd.conf |grep -v '^#';

anonymous_enable=YES

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=yes

tcp_wrappers=YES(以上三个可能需手动添加)

至于这些参数的意思,在注释里有详细的说明。

我们可以在vsftpd.conf 文件设置如下参数:

(1)ftpd_banner=welcome to ftp service :设置连接服务器后的欢迎信息

(2)idle_session_timeout=60 :限制远程的客户机连接后,所建立的控制连接,在多长时间没有做任何的操作就会中断(秒)

(3)data_connection_timeout=120 :设置客户机在进行数据传输时,设置空闲的数据中断时间

(4)accept_timeout=60 设置在多长时间后自动建立连接

(5)connect_timeout=60 设置数据连接的最大激活时间,多长时间断开,为别人所使用;

(6)max_clients=200 指明服务器总的客户并发连接数为200

(7)max_per_ip=3 指明每个客户机的最大连接数为3

(8)local_max_rate=50000(50kbytes/sec)  本地用户最大传输速率限制

(9)anon_max_rate=30000匿名用户的最大传输速率限制

(10)pasv_min_port=端口

(11)pasv-max-prot=端口号 定义最大与最小端口,为0表示任意端口;为客户端连接指明端口;

(12)listen_address=IP地址 设置ftp服务来监听的地址,客户端可以用哪个地址来连接;

(13)listen_port=端口号 设置FTP工作的端口号,默认的为21

(14)chroot_local_user=YES 设置所有的本地用户可以chroot

(15)chroot_local_user=NO 设置指定用户能够chroot

(16)chroot_list_enable=YES

(17)chroot_list_file=/etc/vsftpd/chroot_list(只有/etc/vsftpd/chroot_list中的指定的用户才能执行 )

(18)local_root=path 无论哪个用户都能登录的用户,定义登录帐号的主目录, 若没有指定,则每一个用户则进入到个人用户主目录;

(19)chroot_local_user=yes/no 是否锁定本地系统帐号用户主目录(所有);锁定后,用户只能访问用户的主目录/home/user,不能利用cd命令向上转;只能向下;

(20)chroot_list_enable=yes/no 锁定指定文件中用户的主目录(部分),文件:/chroot_list_file=path 中指定;

(21)userlist_enable=YES/NO 是否加载用户列表文件;

(22)userlist_deny=YES 表示上面所加载的用户是否允许拒绝登录;

(23)userlist_file=/etc/vsftpd/user_list 列表文件

限制IP 访问FTP:

#vi /etc/hosts.allow

vsftpd:192.168.5.128:DENY 设置该IP地址不可以访问ftp服务

FTP 访问时间限制:

#cp /usr/share/doc/vsftpd-1.1.3/vsftpd.xinetd /etc/xinetd.d/vsftpd

#vi /etc/xinetd.d/vsftpd/

修改 disable = no

access_time = hour:min-hour:min (添加配置访问的时间限制(注:与vsftpd.conf中listen=NO相对应)

例: access_time = 8:30-11:30 17:30-21:30 表示只有这两个时间段可以访问ftp

ftp的配置基本上只有这些了。

默认情况下,ftp根目录是/var/ftp。 如果要修改这个目录位置,可以更改/etc/passwd 文件:

[root@singledb ftp]# cat /etc/passwd | grep ftp

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

创建一个用户来访问FTP,并指定该用户的FTP 目录:(可以默认)

[root@singledb u02]# useradd -d /u02/qsftp qs

[root@singledb u02]# passwd qs

Changing password for user qs.

New UNIX password:

BAD PASSWORD: it is WAY too short

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

这里指定的是/u02/qsftp 这个目录,要注意个目录的权限(一定要将目录权限改为777 chmod 777 /u02/qsftp,否则可能可以下载,但不能上传)

更改用户不能telnet,只能ftp:

usermod -s /sbin/nologin username   //用户只能ftp,不能telnet

usermod -s /sbin/bash username      //用户恢复正常

禁止用户ssh登陆

useradd username -s /bin/false

更改用户主目录:

usermod -d /bbb username            //把用户的主目录定为/bbb

可能遇到的错误:

错误,vsftpd: refusing to run with writable anonymous root:(修改目录权限所致)

  修正这个错误,应该用下面的办法;
  [root@localhost ~]# chown root:root /var/ftp
  [root@localhost ~]# chmod 755 /var/ftp

具体详细解释:http://blog.chinaunix.net/uid-21855486-id-3047232.html

Centos下搭建ftp服务器的更多相关文章

  1. CentOS 下搭建FTP服务器

    vsftpd是Linux下比较著名的FTP服务器,搭建FTP服务器当然首选这个.本文介绍了在CentOS 6 4下安装vsftpd.配置虚拟用户登录FTP的过程.正 vsftpd是Linux下比较著名 ...

  2. CentOS6.5下搭建ftp服务器(三种认证模式:匿名用户、本地用户、虚拟用户)

    CentOS 6.5下搭建ftp服务器 vsftpd(very secure ftp daemon,非常安全的FTP守护进程)是一款运行在Linux操作系统上的FTP服务程序,不仅完全开源而且免费,此 ...

  3. 在Ubuntu下搭建FTP服务器的方法

    由于整个学校相当于一个大型局域网,相互之间传送数据非常快,比如要共享个电影,传点资料什么的. 所以我们可以选择搭建一个FTP服务器来共享文件. 那么问题来了,有的同学会问,我们既然在一个局域网内,直接 ...

  4. Ubuntu下搭建FTP服务器

    Ubuntu下搭建FTP服务器 我装的服务器系统是Ubuntu 12.04 LTS,FTP软件当然是选择大名鼎鼎的vsftpd(very secure FTP daemon), 用系统自带的FTP还好 ...

  5. Windows下搭建FTP服务器

    一.什么是ftp? FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”.用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(A ...

  6. Linux下搭建FTP服务器

    实习的公司有一台老服务器转作为FTP服务器,老大把这个任务交给了我.这两天边学边卖的捣腾起来,总算搞成.现在记录下来,加深映像,也以便以后查看复习. 服务器安装的是:Red Hat Enterpris ...

  7. Linux下搭建FTP服务器(Ubuntu16.04)

    搞了下FTP服务器,基本上能遇到的问题都遇到了-.-! 先说步骤: 1.安装vsftpd软件包 sudo apt-get install vsftpd 2.打开配置文件 vim /etc/vsftpd ...

  8. 在linux下搭建ftp服务器【转】

    1 安装 vsftpd yum install vsftpd 2 配置 vsftpd 打开 vsftpd 文件: vi /etc/vsftpd/vsftpd.conf 初次修改前建议备份该文件 2.1 ...

  9. CentOS 7搭建FTP服务器

    安装vsftpd 命令:yum -y install vsftpd 修改ftp配置文件 命令:vim /etc/vsftpd/vsftpd.conf 按i进入insert模式后,按以下要求修改 ano ...

随机推荐

  1. EntityFramework5.0CodeFirst全面学习

    Code First 约定 借助 CodeFirst,可通过使用 C# 或Visual Basic .NET 类来描述模型.模型的基本形状可通过约定来检测.约定是规则集,用于在使用 Code Firs ...

  2. HTML,XML中的转义字符

    HTML中的转义字符 HTML中<, >,&等有特别含义,(前两个字符用于链接签,&用于转义),不能直接使用.使用这三个字符时,应使用他们的转义序列,如下所示: & ...

  3. 让Js顺序执行且回调之

    <script src="aaa"></script> <script type="aaasdf" id="asdf&q ...

  4. shell算术运算与进制运算

    (())与let是等效的 arithmetic expression type 与[是等效的 source与.是等效的 其实,Shell(这里是Bash)本身不具备处理浮点计算的能力,但是可以使用“b ...

  5. C++ 拆分字符串-copy()

    c++拆分字符串方法: #include <iostream>#include <string>#include <sstream>#include <alg ...

  6. MySQL中Group By,distinct使用注意事项

    mysql> select * from test; +----+-------+------+-------+ | id | name | age | class | +----+------ ...

  7. Hive(五):hive与hbase整合

    配置 hive 与 hbase 整合的目的是利用 HQL 语法实现对 hbase 数据库的增删改查操作,基本原理就是利用两者本身对外的API接口互相进行通信,两者通信主要是依靠hive_hbase-h ...

  8. linux ubuntu系统下,adb不是内部命令 (如何才能让adb命令可以使用)

    linux ubuntu系统下,adb不是内部命令 原文地址 linux ubuntu系统下,adb不是内部命令 解决方法: 1.sudo gedit ~/.bashrc 2.将下面的两句加到上面打开 ...

  9. 【mysql】MySQL存储IP地址

    为什么要问如何存储IP 首先就来阐明一下部分人得反问:为什么要问IP得怎样存,直接varchar类型不就得了吗? 其实做任何程序设计都要在功能实现的基础上最大限度的优化性能.而数据库设计是程序设计中不 ...

  10. php生成二维码可以有以下几种方式

    1.google开放api $urlToEncode="http://bbs.lewanchina.com"; generateQRfromGoogle($urlToEncode) ...