FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
2、LINUX下FTP服务器的搭建
一般在各种linux的发行版中,默认带有的ftp软件是vsftp,从各个linux发行版对vsftp的认可可以看出,vsftp应该是一款不错的ftp软件。
(1)检查vsftpd软件是否安装
使用如下命令可以检测出是否安装了vsftpd软件,rpm -qa |grep vsftpd ,例如在我的centos 5.6中显示的结果如下:
如果没有安装的话,可以下载安装,也可以使用软件源进行安装。这里不再赘述。
(2)vsftpd软件的使用
使用vsftpd软件,主要包括如下几个命令:
启动ftp:service vsftpd start
停止ftp:service vsftpd stop
重启ftp:service vsftpd restart
或者使用带有路径的命令:
(3)vsftpd的配置
ftp的配置文件主要有三个,在centos5.6中位于/etc/vsftpd/目录下,分别是:
ftpusers 该文件用来指定那些用户不能访问ftp服务器。
user_list 该文件用来指示的默认账户在默认情况下也不能访问ftp
vsftpd.conf vsftpd的主配置文件
(4)下面我们使用vi编辑vsftpd.conf文件
用户登录控制:
anonymous_enable=YES,允许匿名用户登录。
no_anon_password=YES,匿名用户登录时不需要输入密码。
local_enable=YES,允许本地用户登录。
deny_email_enable=YES,可以创建一个文件保存某些匿名电子邮件的黑名单,以防止这些人使用Dos攻击。
banned_email_file=/etc/vsftpd/banned_emails,保存电子邮件黑名单的目录(默认)
用户权限控制:
write_enable=YES,开启全局上传
local_umask=022,本地文件上传的umask设置为022,系统默认。
anon_upload_enable=YES,允许匿名用户上传,当然要在write_enable=YES的情况下。同时必须建立一个允许ftp用户读写的目录。
anon_mkdir_write_enable=YES,允许匿名用花创建目录
chown_uploads=YES,匿名用户上传的文件属主转换为别的用户,一般建议为root。
chown_username=whoever,改此处的whoever为要转换的属主,建议root
chroot_list_enable=YES,用一个列表来限定哪些用户只能在自己目录下活动。
chroot_list_enable=/etc/vsftpd/chroot_list,指定用户列表文件
nopriv_user=ftpsecure,指定一个安全账户,让ftp完全隔离和没有特权的账户
其他的建议不要配置。
用户连接和超时设置:
idle_session_timeout=600,默认的超时时间
data_connection_timeout=120,设置默认数据连接的超时时间
(4)服务器日志和欢迎信息
dirmessage_enable=YES,允许为配置目录显示信息
ftpd_banner=Welcome to blah FTP service. ftp的欢迎信息
xferlog_enable=YES 打开日志记录功能
xferlog_file=/var/log/xferlog 日志记录文件的位置
我们可以更改以上的各个设置,然后重启ftp服务就可以实现对ftp的配置了。
创建FTP账户
与 vsftpd 服务器有关的文件和文件夹 vsftpd 服务器的配置文件的是: /etc/vsftpd/vsftpd.conf vsftpd 服务器的根目录,即 FTP 服务器的主目录: 在/var/ftp 处 pub 处 如果你想修改服务器目录的路径,那么你只要修改/var/ftp 到别处就行了 4.添加 FTP 本地用户 有的 FTP 服务器需要用户名和密码才能登录,就是因为设置了 FTP 用户和权限. FTP 用户一般是不能登录系统的,只能进入 FTP 服务器自己的目录中,这是为了安全.这样的用户就叫做虚拟 用户了.实际上并不是真正的虚拟用户,只是不能登录 SHELL 了而已,没能力登录系统. /usr/sbin/adduser -d /opt/test_ftp -g ftp -s /sbin/nologin test 这个命令的意思是: 使 用 命 令 (adduser) 添 加 test 用 户 , 不 能 登 录 系 统 (-s /sbin/nologin), 自 己 的 文 件 夹 在 (-d /opt/test_ftp)),属于组 ftp(-g ftp) 然后你需要为它设置密码 passwd test 这样就添加了一个 FTP 用户了.下面的示例可以帮助你进入 FTP 服务器了. [root@localhost ftp]# ftp ftp> open 192.168.0.33 Connected to 192.168.0.33 (192.168.0.33). 220 (vsFTPd 2.0.5) Name (192.168.0.33:gxl): test 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> quit 221 Goodbye. 在 windows 中,只要在浏览器中输入 [url=ftp://192.168.0.33]ftp://192.168.0.33[/url] 进入 FTP 服务器,然后 右键 登录,输入用户名和密码就可以登录自己的目录了. 当然你要保证自己能读写自己的目录,就要在配置文件 vsftpd.conf 里设置一下就可以读写了. local_enable=yes write_enable=yes local_umask=022 5.匿名上传下载 修改配置文件即可 vsftpd.conf,确定有以下几行,没有自己添加进去就可以了.
anonymous_enable=yes
这里如果改成 NO,就表示不允许匿名用户登陆, 记住修改完配置文件要重启服务
anon_upload_enable=yes anon_mkdir_write_enable=yes anon_umask=022 然后你可以新建一个文件夹,修改它的权限为完全开放,任何用户就可以登录这个文件夹,并上传下载文件: mkdir /var/ftp/guest chmod 777 /var/ftp/guest 6.定制进入 FTP 服务器的欢迎信息 在 vsftpd.conf 文件中设置: dirmessage_enable=yes 然后进入用户目录建立一个.message 文件,输入欢迎信息即可(我这里写入的是 Welcome to gxlinux's FTP!): [root@localhost test_ftp]# ftp 192.168.0.33 Connected to 192.168.0.33 (192.168.0.33). 220 (vsFTPd 2.0.5) Name (192.168.0.33:gxl): test 331 Please specify the password. Password: 230-Welcome to gxlin