Linux下ftp服务的搭建和windows下连接及问题解决

1、检查安装vsftpd软件

使用如下命令#rpm -qa |grep vsftpd可以检测出是否安装了vsftpd软件,

如果没有安装,使用YUM命令进行安装。

2、启动服务 

使用vsftpd软件,主要包括如下几个命令:

启动ftp命令#service vsftpd start

停止ftp命令#service vsftpd stop

重启ftp命令#service vsftpd restart

3、vsftpd的配置

ftp的配置文件主要有三个,位于/etc/vsftpd/目录下,分别是:

ftpusers    该文件用来指定那些用户不能访问ftp服务器。

user_list   该文件用来指示的默认账户在默认情况下也不能访问ftp

vsftpd.conf   vsftpd的主配置文件

4、以匿名用户为例,我们去掉配置文件vsftpd.conf 里面以下

anon_upload_enable=YES

anon_mkdir_write_enable=YES

两项前面的#号,就可以完成匿名用户的配置,此时匿名用户既可以登录上传、下载文件。记得修改配置文件后需要重启服务。


1. 先用rpm -qa| grep vsftpd命令检查是否已经安装,如果ftp没有安装,使用yum  -y  install vsftpd 安装,(ubuntu 下使用apt-get install vsftpd)

2. service vsftpd start

启动要让FTP每次开机自动启动,运行命令:  chkconfig --level 35 vsftpd on

3. 设置ftp权限

vi  /etc/vsftpd/vsftpd.conf
将anonymous_enable=YES 改为 anonymous_enable=NO
ESC返回,输入“:wq”保存并推出

4. 添加ftp帐号和目录

useradd   -d /alidata/www/wwwroot -s /sbin/nologin pwftp
passwd   pwftp
chmod -R 755 /alidata/www/wwwroot
chown -R  pwftp /alidata/www/wwwroot
/etc/rc.d/init.d/vsftpd restart
然后用帐号pwftp密码123456
测试下就可以登陆ftp了。目录是/alidata/www/wwwroot



1、确保操作系统安装VSFTPD

可以使用如下命令行进行验证:

 
  
  1. [root@sdemachine3 ~]# cd /etc/vsftpd 
  2. [root@sdemachine3 vsftpd]# ls 
  3. ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh 
  4. [root@sdemachine3 vsftpd]# 

如果没有安装,可以下载相关Tar包安装即可,vsftpd.conf包括对FTP服务配置参数的相关设置。

2、确保服务器FTP服务在开启状态

 
  
  1. [root@sdemachine3 vsftpd]# service vsftpd status 
  2. vsftpd is stopped 
  3. [root@sdemachine3 vsftpd]# service vsftpd start 
  4. Starting vsftpd for vsftpd:                                [  OK  ] 

3:建议服务器的防火墙或者SELinux处于关闭状态,或者开放21端口。

4:使用Windows的CMD进行FTP连接即可。

FTP  服务器IP地址:

 
  
  1. C:\Users\Administrator>ftp 192.168.220.133  
  2. 连接到 192.168.220.133。 
  3. 220 (vsFTPd 2.2.2) 
  4. 用户(192.168.220.133:(none)): root 
  5. 331 Please specify the password. 
  6. 密码: 
  7. 230 Login successful. 

5:连接成功之后,就可以输入类似命令

 
  
  1. ftp> help 
  2. 命令可能是缩写的。  命令为: 
  3. !               delete          literal         prompt          send 
  4. ?               debug           ls              put             status 
  5. append          dir             mdelete         pwd             trace 
  6. ascii           disconnect      mdir            quit            type 
  7. bell            get             mget            quote           user 
  8. binary          glob            mkdir           recv            verbose 
  9. bye             hash            mls             remotehelp 
  10. cd              help            mput            rename 
  11. close           lcd             open            rmdir 
 
  
  1. ftp> dir 
  2. 200 PORT command successful. Consider using PASV. 
  3. 425 Failed to establish connection. 

建议关闭Windows操作系统的防火墙即可解决按问题。

6、命令介绍

当断开连接之后,可以使用Open命令重新连接,也可以使用User命令继续连接该IP,DIR命令类似于DOS的列出所有目录文件列表,类似于Linux的ls命令:

 
  
  1. ftp> dir 
  2. 远程主机关闭连接。 
  3. ftp> open 
  4. 到 192.168.220.133 
  5. 连接到 192.168.220.133。 
  6. 220 (vsFTPd 2.2.2) 
  7. 用户(192.168.220.133:(none)): root 
  8. 331 Please specify the password. 
  9. 密码: 
  10. 230 Login successful. 
  11. ftp> dir 
  12. 200 PORT command successful. Consider using PASV. 
  13. 150 Here comes the directory listing. 
  14. drwxr-xr-x    2 0        0            4096 Aug 29  2013 Desktop 
  15. drwxr-xr-x    2 0        0            4096 Aug 29  2013 Documents 
  16. drwxr-xr-x    2 0        0            4096 Aug 29  2013 Downloads 
  17. drwxr-xr-x    2 0        0            4096 Aug 29  2013 Music 
  18. drwxr-xr-x    2 0        0            4096 Aug 29  2013 Pictures 
  19. drwxr-xr-x    2 0        0            4096 Aug 29  2013 Public 
  20. drwxr-xr-x    2 0        0            4096 Aug 29  2013 Templates 
  21. drwxr-xr-x    2 0        0            4096 Aug 29  2013 Videos 
  22. -rw-------    1 0        0            3135 Aug 29  2013 anaconda-ks.cfg 
  23. -rw-r--r--    1 0        0         2062384 Jan 02 05:54 ceshi_ora_11016.trc 
  24. -rw-r--r--    1 0        0        14415564 Jan 02 06:51 ceshi_ora_11620.trc 
  25. drwxr-xr-x   18 0        0            4096 Mar 05 02:12 gdal-1.9.2 
  26. -rw-r--r--    1 0        0        11532797 Mar 05 01:50 gdal192.zip 
  27. -rw-r--r--    1 0        0           59875 Aug 29  2013 install.log 
  28. -rw-r--r--    1 0        0            9548 Aug 29  2013 install.log.syslog 
  29. drwxr-xr-x    2 0        0            4096 Mar 06 02:44 shp_data1 
  30. -rwxr-xr-x    1 0        0             701 Feb 27 03:34 test.pl 
  31. 226 Directory send OK. 
  32. ftp: 收到 1164 字节,用时 0.06秒 18.77千字节/秒。 

查看状态Status,重点关注类型ascii,也就是传输的数据以ascii码形式:

 
  
  1. ftp> status 
  2. 连接到 192.168.220.133。 
  3. 类型: ascii;详细: 开 ;铃声: 关 ;提示: 开 ;通配: 开 
  4. 调试: 关 ;哈希标记打印: 关 。 

如果希望用户使用binary方式传输,比如上述dir之后,在root的根目录下有一个test.pl文件,我希望使用binary形式传入到Windows终端。使用FTP获得文件使用get命令:

 
  
  1. ftp> binary 
  2. 200 Switching to Binary mode. 
  3. ftp> get test.pl 
  4. 200 PORT command successful. Consider using PASV. 
  5. 150 Opening BINARY mode data connection for test.pl (701 bytes). 
  6. 226 Transfer complete. 
  7. ftp: 收到 701 字节,用时 0.00秒 701000.00千字节/秒。 

mget命令一次获取多个远程文件。

mget命令的一般格式为:mget   文件名列表

使用用空格分隔的或带通配符的文件名列表来指定要获取的文件,对其中的每个文件都要求用户确认是否传送。获得的test.pl文件在默认命令行输入的文件夹中,即C:\Users\Administrator文件夹中。

 
  
  1. C:\Users\Administrator>ftp 192.168.220.133 

使用send命令,将本地文件传入到目标服务器中:

 
  
  1. ftp> send test1.pl 
  2. 200 PORT command successful. Consider using PASV. 
  3. 150 Ok to send data. 
  4. 226 Transfer complete. 
  5. ftp: 发送 701 字节,用时 0.00秒 701.00千字节/秒。 
  6. ftp> dir  
  7. 200 PORT command successful. Consider using PASV.  
  8. 150 Here comes the directory listing.  
  9. drwxr-xr-x    2 0        0            4096 Aug 29  2013 Desktop  
  10. drwxr-xr-x    2 0        0            4096 Aug 29  2013 Documents  
  11. drwxr-xr-x    2 0        0            4096 Aug 29  2013 Downloads  
  12. drwxr-xr-x    2 0        0            4096 Aug 29  2013 Music  
  13. drwxr-xr-x    2 0        0            4096 Aug 29  2013 Pictures  
  14. drwxr-xr-x    2 0        0            4096 Aug 29  2013 Public  
  15. drwxr-xr-x    2 0        0            4096 Aug 29  2013 Templates  
  16. drwxr-xr-x    2 0        0            4096 Aug 29  2013 Videos  
  17. -rw-------    1 0        0            3135 Aug 29  2013 anaconda-ks.cfg  
  18. -rw-r--r--    1 0        0         2062384 Jan 02 05:54 ceshi_ora_11016.trc  
  19. -rw-r--r--    1 0        0        14415564 Jan 02 06:51 ceshi_ora_11620.trc  
  20. drwxr-xr-x   18 0        0            4096 Mar 05 02:12 gdal-1.9.2  
  21. -rw-r--r--    1 0        0        11532797 Mar 05 01:50 gdal192.zip  
  22. -rw-r--r--    1 0        0           59875 Aug 29  2013 install.log  
  23. -rw-r--r--    1 0        0            9548 Aug 29  2013 install.log.syslog  
  24. drwxr-xr-x    2 0        0            4096 Mar 06 02:44 shp_data1  
  25. -rwxr-xr-x    1 0        0             701 Feb 27 03:34 test.pl  
  26. -rw-r--r--    1 0        0             701 Apr 18 01:38 test1.pl  
  27. 226 Directory send OK.  
  28. ftp: 收到 1230 字节,用时 0.01秒 94.62千字节/秒。  

同样也可以使用Put 命令,该命令与send比较类似。

put和mput命令用于向远程机发送文件;

Put命令的一般格式为:put 文件名

mput命令一次发送多个本地文件;

mput命令的一般格式为:mput 文件名列表

使用用空格分隔的或带通配符的文件名列表来指定要发送的文件。对其中的每个文件都要求用户确认是否发送。使用cd命令切换目标服务器的目录:

 
  
  1. ftp> cd /home/oracle 
  2. 250 Directory successfully changed. 
  3. ftp> dir 
  4. 200 PORT command successful. Consider using PASV. 
  5. 150 Here comes the directory listing. 
  6. -rw-r--r--    1 500      501      1170432000 Jan 14 01:01 DBCGW.DMP 
  7. drwxrwxr-x    9 500      501          4096 Jan 14 01:07 apache-tomcat-7.0.42 
  8. drwxrwxr-x    4 500      501          4096 Sep 09  2013 app 
  9. -rwxrwxr-x    1 500      501           493 Jan 14 01:03 export.log 
  10. -rwxrwxr-x    1 500      501          1402 Jan 14 01:04 import.log 
  11. drwxr-xr-x    6 500      501          4096 Nov 29 08:24 sdeexe102 
  12. 226 Directory send OK. 
  13. ftp: 收到 411 字节,用时 0.01秒 29.36千字节/秒。 

如果不希望本地默认路径为C:\Users\Administrator,希望修改为C:\为默认路径,使用lcd命令修改

 
  
  1. ftp> lcd c:\ 
  2. 目前的本地目录 C:\。 




RHEL5 中配置好后,今天想在XP下用ftp连接虚拟机中的linux,但ftp连接的时候会出现 "500 OOPS:cannot change directory:/root" 错误,如何解决呢?



默认下是没有开启FTP的支持,所以访问时都被阻止了。


解决:


1. 查看SE Linux 设置
# getsebool -a | grep ftp
发现 ftpd_disable_trans –> off 或者 ftp_home_dir–>off




2. 使用setsebool命令开启
# setsebool ftpd_disable_trans 1 或者 # setsebool ftp_home_dir 1




3. 查看当前状态是否是on的状态
# getsebool -a|grep ftp
此时 ftpd_disable_trans –> on 或者 ftp_home_dir–>on


4. 最后重启 # service vsftpd restart


OK,问题解决了。


另外 setsebool 使用-P参数,无需每次开机都输入这个命令
# setsebool -P ftpd_disable_trans 1
或者
# setsebool -P ftp_home_dir 1

你可能感兴趣的:(linux)