Linux系统:centos6.5

安装步骤 
1.通过yum来安装vsftpd

[root@localhost ~]# yum -y install vsftpd

2.设置为开机启动

[root@localhost ~]# chkconfig vsftpd on

3.修改 vim /etc/vsftpd/vsftpd.conf 配置参数 没有的自己添加 注释了的把它开放,让其配置生效:

local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES      #这行可能需自己写
pam_service_name=vsftpd
userlist_enable=YES

4.配置保存后重启vsftpd服务:

[root@localhost ~]# service vsftpd restart

添加用户及额外配置 
1.设置vsftp的帐号。

[root@localhost ~]# useradd -d /home/htdocs -s /sbin/nologin 用户名

2.为添加的账号设置密码

[root@localhost ~]# passwd 用户名
根据提示操作

这样的话,基本的vsftpd服务配置好了。但是这样配置完成后客户端并不能连接上,主要应该是默认防火墙设置下,CentOS的防火墙是不开放ftp服务的,需要添加模块和开放21端口才能提供ftp访问。 
1.添加ip_conntrack_ftp 模块

[root@localhost ~]# vi /etc/sysconfig/iptables-config

添加下面一行

IPTABLES_MODULES="ip_conntrack_ftp"

2.打开21端口

[root@localhost ~]# vi /etc/sysconfig/iptables

添加

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

3.重启iptables使新的规则生效

[root@localhost ~]# service iptables restart

到此,应该是可以了,若软件测试连接过程中,在用户验证的时候出现了错误503,应该是selinux设置的问题:可以用下面的命令检查

[root@localhost ~]#getsebool -a |grep ftp

allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
allow_tftp_anon_write --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_disable_trans --> off
ftpd_is_daemon --> on
httpd_enable_ftp_server --> off

这是selinux的问题,我们只要打开ftp_home_dir的值开启为on:,allow_ftpd_full_access也一同开启即可。

[root@localhost ~]#setsebool -P ftp_home_dir 1
[root@localhost ~]#setsebool -P allow_ftpd_full_access 1

到此,应该解决问题了。


说明:


首先是安装:emerge  vsftpd,然后按照下面的操作步骤即可配置ftp(主要就是修改/etc/vsftpd/vsftpd.conf)。

在linux中添加ftp用户,并设置相应的权限,操作步骤如下面绿色字体所示(一个机器上只要装了ftp服务,可以任意创建一个用户去访问本服务器上的任意一个目录,这个目录只要按下面的步骤进行配置即可,然后重启ftp服务即可):
 



1、环境:ftp为vsftp。被限制用户名为test。被限制路径为/home/ftp
 
 
2、建用户:在root用户下:
 
 
useradd -d /home/ftp   test //增加用户test,并制定test用户的主目录为/home/ftp
 
 
passwd test //为test设置密码
 
 

     
 
 
 
(对于一般情况,简单添加一个用户的话,这一步,可以不要!!一般情况下,配置ftp也不需要这一步) 
  
   
  
 

   usermod -s /sbin/nologin test //限定用户test不能telnet,只能ftp 
 
 
 

   usermod -s /bin/bash   test //用户test恢复正常 
 
 
 

   usermod -d /test test //更改用户test的主目录为/test 
  
   
  
 4,修改/etc/vsftpd/vsftpd.conf文件如下: 
  
 anonymous_enable=NO 
  
 # 
  
 # Uncomment this to allow local users to log in. 
  
 local_enable=YES 
  
 # 
  
 # Uncomment this to enable any form of FTP write command. 
  
 write_enable=YES 
  

 最后在该文件的最后面添加如下行: 
  
 userlist_enable=YES 
  
 userlist_deny=NO 
  
 userlist_file=/etc/vsftpd/vsftpd.user_list 
  

 最后保存/etc/vsftpd/vsftpd.conf文件。 
  
 
 
5、限制用户只能访问/home/test,不能访问其他路径
 
 
修改/etc/vsftpd/vsftpd.conf如下:  
 
 
chroot_list_enable=YES //限制访问自身目录
 
 
# (default follows)
 
 
 
 
 
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list


编辑/etc/vsftpd/vsftpd.chroot_list文件,将受限制的用户添加进去,每个用户名一行
添加后如下:
           test     /home/ftp
编辑 /etc/vsftpd/vsftpd.user_list文件,将受限制的用户添加进去,每个用户名一行
添加后如下:
         test


改完配置文件,不要忘记重启vsFTPd服务器


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


启动后,在进行测试,使用本地用户test及其密码登录,成功。

如果此时还不能执行写操作 或登录时出现其它错误,则要查看test用户对应的文件夹/home/ftp,test用户是否有对此文件夹的写权限。


(对于一般情况,简单添加一个用户的话,这一步,可以不要!!一般情况下,配置ftp也不需要这一步)



usermod -s /usr/bin/passwd test //用户telnet后将直接进入改密界面

至此,我们就可以用新添加的用户test,登录ftp了。。。。


一、vsftpd服务的安装,启动及关闭

1、安装vsftpd
 [root@rusky bdump]# yum install vsftpd --必须配置yum源才能使用yum命令来安装vsftpd,或者挂载光盘,找到Packages目录下的vsftpd包,使用rpm命令安装 
 ……
 Installed:
 vsftpd.x86_64 0:2.0.5-24.el5 Complete!
 2、vsftpd服务的启动及关闭
 [root@rusky bdump]# chkconfig --list vsftpd
 vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:offchkconfig --level 35 vsftpd on
service vsftpd restart --启动/关闭命令为:service vsftpd start/stop 
 Shutting down vsftpd: [FAILED]
 Starting vsftpd for vsftpd: [ OK ]service vsftpd status
 vsftpd (pid 5087) is running...
 [root@rusky bdump]# 二、文件的上传及下载
1、ftp服务器的连接
G:\testftp>ftp  -或者直接:ftp IP/主机名连接
ftp> open 192.168.1.200
 连接到 192.168.1.200。
 220 (vsFTPd 2.0.5)
 用户(192.168.1.200:(none)): root    --默认不能使用root用户
 530 Permission denied.
 登录失败。
 ftp> open 192.168.1.200
 已经连接到了 192.168.1.200,请首先使用断开连接。
 ftp> disconnect
 221 Goodbye.
 ftp> open 192.168.1.200
 连接到 192.168.1.200。
 220 (vsFTPd 2.0.5)
 用户(192.168.1.200:(none)): oracle
 331 Please specify the password.
 密码:
 230 Login successful.
 ftp> loc
 无效命令。
ftp> lcd
目前的本地目录 G:\testftp。
 ftp> 
 
 2、下载文件
下载文件使用get和mget这两个命令
a.使用get命令将远程服务器上/home/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora这个文件下载到本地当前目录。
ftp> get /home/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora tnsnams.ora
 200 PORT command successful. Consider using PASV.
 150 Opening BINARY mode data connection for /home/oracle/product/10.2.0/db_1/network/admin/tnsnames.
 226 File send OK.
 ftp: 收到 719 字节,用时 0.00秒 719.00千字节/秒。
 ftp> lcd
 目前的本地目录 G:\testftp。
 ftp> b.将远程服务器上的文件下载到指定目录
ftp> get /home/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora C:\Users\Administrator\Desktop\tnsnames.ora_bak
 200 PORT command successful. Consider using PASV.
 150 Opening BINARY mode data connection for /home/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora (719 bytes).
 226 File send OK.
 ftp: 收到 719 字节,用时 0.00秒 719000.00千字节/秒。 c.使用mget命令将远程服务器上/home/oracle/test目录下的所有文件下载到本地当前目录(指定目录无效)
ftp> mget /home/oracle/test/ G:\testftp\testmget\
 mget /home/oracle/test/2.log?
 mget /home/oracle/test/3.log?
 ------------------------
 此时每下载一个文件,都会有提示。如果要除掉提示,则在执行mget命令前先执行:prompt off
 注意:文件都下载到了linux主机的当前目录下。
 ------------------------
ftp> prompt off
 交互模式 关 。
ftp> mget /home/oracle/test G:\testftp\
 ftp> 3、上传文件到远端服务器
a.将本地一个文件传送到远程主机
 ftp> put test.ora /home/oracle/test/test2.ora --必须指定上传到远程目录后的文件名
 200 PORT command successful. Consider using PASV.
 150 Ok to send data.
 226 File receive OK.
 ftp: 发送 719 字节,用时 0.00秒 719000.00千字节/秒。
 ftp>

b.使用mput把本地当前目录下的所有文件上传到远程机器指定目录下(注意:上传文件都来自于主机的当前目录下)
 ftp> mput * /home/oracle/test
 mput 111.log?
 mput 222.log?
 mput 333.ora?
 mput testmget? n
 /home/oracle/test:
 ftp> 4、断开连接
ftp> quit
或
ftp> bye 5、常用的命令
 ls 列出远程机的当前目录
 cd 在远程机上改变工作目录
 lcd 在本地机上改变工作目录
 ascii 设置文件传输方式为ASCII模式
 binary 设置文件传输方式为二进制模式
 close 终止当前的ftp会话
 hash 每次传输完数据缓冲区中的数据后就显示一个#号
 get(mget) 从远程机传送指定文件到本地机
 put(mput) 从本地机传送指定文件到远程机
 open 连接远程ftp站点
 断开与远程机的连接并退出ftp
 ? 显示本地帮助信息
 ! 转到Shell中 三、FTP服务概要
 1、  FTP服务的端口号
 21端口:传输FTP的控制命令
 20端口:传输文件数据
 2、  FTP的数据传输模式
   主动模式
 FTP客户端向服务器的FTP控制端口(21端口)发出连接请求,服务器接受连接,建立一条命令链路;当需要传输数据时,客户端在命令链路上用PORT命令告诉服务器,自己打开了某个端口,服务器从20端口向客户端的指定端口发出连接请求,建立一条数据链路来传送数据。(ftp>sendport)
   被动模式
 FTP客户端向服务器的FTP控制端口(21端口)发出连接请求,服务器接受连接,建立一条命令链路;当需要传输数据时,服务器在命令链路上用PASV命令告诉客户端,自己打开了某个端口,客户端向服务器的指定端口发出连接请求,建立一条数据链路来传送数据。(ftp>passive)
 3、  FTP服务器软件
  Wu-ftpd —— www.wu-ftpd.org
  Proftpd —— www.proftpd.org
  vsftpd —— vsftpd.beasts.org
 4、  FTP客户端软件
   ftp命令
   gftp —— gftp.seul.org
   Filezilla —— filezilla.sourceforge.net(windows下的开放源代码的FTP客户端)
 5、  服务器和客户端之间的防火墙设置策略
 对于工作在主动模式下的服务器:
• 允许FTP客户端从大于1024的端口连接FTP服务器的21端口
• 允许FTP服务器从21端口回应FTP客户端大于1024端口的网络连接
• 允许FTP服务器从20端口主动连接FTP客户端中大于1024的端口
• 允许FTP客户端从大于1024的端口回应来自FTP服务器的20端口的网络连接
 对于工作在被动模式下的服务器:
• 允许FTP客户端从大于1024的端口连接FTP服务器的21端口
• 允许FTP服务器从21端口回应FTP客户端大于1024端口的网络连接
• 允许FTP客户端从大于1024的端口主动连接FTP服务器中大于1024的端口
• 允许FTP服务器从大于1024的端口回应来自FTP客户机大于1024端口的网络连接
 2)vsftpd服务器的配置文件
• 主配置文件——/etc/vsftpd/vsftpd.conf
     vsftpd.conf文件中常用的配置:
   anonymous_enable :设置为YES时,FTP服务器允许匿名登录。
   local_enable :设置为YES时,FTP服务器允许本地用户登录。
   write_enable :设置为YES时,FTP服务器开放对本地用户的写权限。
   local_umask :设置本地用户的文件生成掩码,配置文件中设置为022。
   dirmessage_enable :设置为YES时,将显示目录下的“.message”隐含文件内容。
   xferlog_enable :设置为YES时,FTP服务器将启用上传和下载日志。
   xferlog_std_format :设置为YES时,FTP服务器将使用标准的ftpd xferlog日志格式。
   connect_from_port_20 :设置为YES时,FTP服务器将启用数据端口(20)的连接请求。
   pam_service_name :设置PAM认证服务的配置文件名称,该文件保存在“/etc/pam.d”目录下。
   userlist_enable :设置为YES时,FTP服务器将检查userlist_file设置文件中指定的用
 户是否可以访问vsftpd服务器;userlist_file配置项的默认值是“/etc/vsftpd.user_list”文件。
   userlist_deny :设置为YES时,vsftpd.user_list文件用于设置禁止登录的用户账号;
                          设置为NO时,vsftpd.user_list文件用于设置允许登录的用户账号。
   listen :设置为YES时,FTP服务器处于独立启动模式(相对于受xinetd管理的启动模式)。
  tcp_wrappers :设置为YES时,FTP服务器将使用tcp_wrappers作为主机访问控制方式。
  tcp_wrappers可以实现Linux系统中网络服务的基于主机地址的访问控制,在“/etc”目录中的hosts.allow(允许访问记录)和hosts.deny(拒绝访问记录)两个文件用于设置tcp_wrappers的访问控制。
   chroot_local_user :设置为YES时,vsftpd服务器将会把本地用户禁锢在用户宿主目录中。
   max_clients :用于设置FTP服务器所允许的最大客户端连接数,0表示无限制。
   max_per_ip :用于设置对于同一IP地址允许的最大客户端连接数,0表示无限制。
   local_max_rate :设置本地用户的最大传输速率,单位为B/s,0表示不限制。
   anon_max_rate :设置匿名用户的最大传输速率,单位为B/s,0表示不限制。
• /etc/vsftpd.ftpusers文件
 保存不允许进行FTP登录的本地用户帐号,通常是在系统中具有较高权限的帐户。
• /etc/vsftpd.user_list文件
 需要与vsftpd.conf文件中的配置结合来实现对/etc/vsftpd.user_list文件中指定的用户帐号的访问控制。
 userlist_enable=YES     //  FTP服务器将检查userlist_file设置文件中指定的用
 户是否可以访问vsftpd服务器。
 userlist_deny=YES      //  vsftpd.user_list文件用于设置禁止登录的用户账号;
 userlist_deny= NO      //  vsftpd.user_list文件用于设置允许登录的用户账号。

Linux系统:centos6.5. 


安装步骤 
1.通过yum来安装vsftpd

[root@localhost ~]# yum -y install vsftpd

2.设置为开机启动

[root@localhost ~]# chkconfig vsftpd on

3.把下面几行注释去掉,让其配置生效:

local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES      #这行可能需自己写
pam_service_name=vsftpd
userlist_enable=YES

4.配置保存后重启vsftpd服务:

[root@localhost ~]# service vsftpd restart

添加用户及额外配置 
1.设置vsftp的帐号。

[root@localhost ~]# useradd -d /home/htdocs -s /sbin/nologin 用户名

2.为添加的账号设置密码

[root@localhost ~]# passwd 用户名
根据提示操作

这样的话,基本的vsftpd服务配置好了。但是这样配置完成后客户端并不能连接上,主要应该是默认防火墙设置下,CentOS的防火墙是不开放ftp服务的,需要添加模块和开放21端口才能提供ftp访问。 
1.添加ip_conntrack_ftp 模块

[root@localhost ~]# vi /etc/sysconfig/iptables-config

添加下面一行

IPTABLES_MODULES="ip_conntrack_ftp"

2.打开21端口

[root@localhost ~]# vi /etc/sysconfig/iptables

添加

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

3.重启iptables使新的规则生效

[root@localhost ~]# service iptables restart

到此,应该是可以了,若软件测试连接过程中,在用户验证的时候出现了错误503,应该是selinux设置的问题:可以用下面的命令检查

[root@localhost ~]#getsebool -a |grep ftp

allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
allow_tftp_anon_write --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_disable_trans --> off
ftpd_is_daemon --> on
httpd_enable_ftp_server --> off

这是selinux的问题,我们只要打开ftp_home_dir的值开启为on:,allow_ftpd_full_access也一同开启即可。

[root@localhost ~]#setsebool -P ftp_home_dir 1
[root@localhost ~]#setsebool -P allow_ftpd_full_access 1

到此,应该解决问题了。