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>
本文章源自于【https://www.cnblogs.com/flyinlinux/articles/3969966.html】