代码改变世界

LINUX下搭建FTP服务器

2014-09-13 16:37  非宁静无以致远  阅读(8771)  评论(0编辑  收藏  举报

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。

一般在各种linux的发行版中,默认带有的ftp软件是vsftp,从各个linux发行版对vsftp的认可可以看出,vsftp应该是一款不错的ftp软件。

搭建Linux FTP服务器的步骤如下:

(1)检查vsftpd软件是否安装

 使用如下命令可以检测出是否安装了vsftpd软件,rpm -qa |grep vsftpd ,例如在我的centos 5.6中显示的结果如下: 

 

如果没有安装的话,可以下载安装,也可以使用软件源进行安装。这里不再赘述。

 

(2)vsftpd软件的使用 

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

                启动ftp:service vsftpd start 

                停止ftp:service vsftpd stop 

                重启ftp:service vsftpd restart 

 2)或者使用带有路径的命令:

  

(3)vsftpd的配置

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

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

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

3)vsftpd.conf   vsftpd的主配置文件

 

(4)下面我们使用vi编辑vsftpd的主配置文件:vsftpd.conf文件。

etc/vsftpd/vsftpd.conf是vsftpd的主要配置文件,在此文件中以#开头的行是注释行,默认设置如下:

anonymous_enable=YES

#是否允许匿名登录ftp,YES表示允许。  

#local_enable=YES

#是否允许本地用户登录,本地用户即/etc/passwd内帐号,YES表示允许。

#write_enable=YES

#是否开放写权限。

#local_umask=022

#设置本地用户的文件的掩码是022。

#anon_upload_enable=YES

#是否允许匿名用户上传文件。

#anon_mkdir_write_enable=YES

#是否允许匿名用户创建文件夹。

dirmessage_enable=YES

#当使用者进入某个目录时,会显示该目录需要注意的内容,显示的档案预设是.message ,需要手工在该目录下创建,当然,可以使用message_file设定项目来修订!

xferlog_enable=YES

#激活上传下载日志,由xferlog_file决定日志文件名。

connect_from_port_20=YES

#启用FTP数据端口的连接请求(ftp-data)。

#chown_uploads=YES

#是否改变上传文件的属主,这个属主可以由chown_username决定。

#chown_username=whoever

#当chown_uploads值为YES时,上传文件的属主就是chown_username定义的值了。

#xferlog_file=/var/log/vsftpd.log

#当xferlog_enable的值为YES时,日志将记录在xferlog_file定义的文件中。

#xferlog_std_format=YES

#是否使用标准的ftp xferlog模式。

#idle_session_timeout=600

#如果使用者在600秒内都没有命令动作,强制离线!

#data_connection_timeout=120

#如果数据传送在120秒内都无法传送成功,那客户端的联机就会被vsftpd强制剔除!

#nopriv_user=ftpsecure

#运行vsftpd需要的非特权系统用户,默认是nobody。

#async_abor_enable=YES

#当设置为允许时,一个特别的FTP命令“异步退出”将生效。

#ascii_upload_enable=YES

#是否允许使用ascii码方式上传文件。

#ascii_download_enable=YES

#是否允许使用ascii码方式下载文件。

#ftpd_banner=Welcome to blah FTP service.

#定制欢迎信息。

#deny_email_enable=YES

#是否禁止匿名用户使用某些邮件地址。

#banned_email_file=/etc/vsftpd/banned_emails

#当deny_email_enable=YES时,可以利用这个设定项目来规定那个email address 不可登入vsftpd ,在上面设定的档案内,一行输入一个email address 即可!

#chroot_local_user=YES

#是否将所有使用者限制在自己的家目录之内(chroot)。

#chroot_list_enable=YES

#是否启用将某些用户限制在它们的家目录内。

#chroot_list_file=/etc/vsftpd/chroot_list

#如果chroot_list_enable=YES时,可以设定哪些用户会被限制在自己的家目录内而无法离开(chroot),一行一个账号即可!

#ls_recurse_enable=YES

#是否允许使用ls -R等命令。

listen=YES

#开启ipv4监听

#listen_ipv6=YES

#开启ipv6监听。

pam_service_name=vsftpd

#使用pam模块控制,vsftpd文件在/etc/pam.d目录下。

userlist_enable=YES

#此选项被激活后,vsftpd将读取userlist_file参数所指定的文件中的用户列表。当列表中的用户登录FTP服务器时,该用户在提示输入密码之前就被禁止了。即该用户名输入后,vsftpd就直接禁止掉该用户,不会再进行询问密码等后续步骤。

tcp_wrappers=YES

#是否允许tcp_wrappers管理。

 

一般配置的话:

以下几项需要去掉前面的#号:

anonymous_enable=YES

local_enable=YES

write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

本配置开通了匿名访问、匿名上传和下载等功能。

 

FTP 存放文件默认路径在/var/ftp/pub目录下,启动FTP服务后,可能遇到一些问题,比如不能登录进去,或者不能写目录、写文件等,需注意的事项是的:

1、pub目录的权限不能全开,全开会报错,chmod 755 -R pub

2、但是这样也会带来一个问题,当匿名用户登录后,在pub下的newftp目录下想上传一个文件,会报错,因为匿名用户(ftp)无法在该目录下(该目录属于root用户)创建一个新文件的,因为该目录下他没有权限,所以要加入其他用户(o)的写权限,chmod o+w /var/ftp/pub/newftp.

现在权限变为:
drwxr-xrwx 2 root root   4096 06-20 16:55 newftp
其实就是757的权限,此时匿名用户(ftp)就可以在该目录下上传文件了。

 

注:

比如ftp的默认目录是/var/ftp 想把/mnt/WinSoft文件夹,映射到/var/ftp目录中
先在/var/ftp目录中建一个目录
#mkdir /var/ftp/WinSoft
然后执行mount命令
#mount --bind /mnt/WinSoft /var/ftp/WinSoft
这样就OK了,还可以通过ln的方式处理。

 

Linux及Windows下访问ftp服务只需使用“ftp  IP地址”命令即可:

[root@ftkylin ~]# service vsftpd restart

Shutting down vsftpd:                             [  OK  ]

Starting vsftpd for vsftpd:                          [  OK  ]

[root@ftkylin ~]# ftp 172.19.1.52

Connected to 172.19.1.52 (172.19.1.52).

220 (vsFTPd 2.2.0)

Name (172.19.1.52:root): anonymous

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>