ftp服务很重要,这里介绍ftp在linux上不连接mysql数据库的搭建方法,ftp也可以连接mysql,有时间再生成文档。
先说明ftp的基本原理:FTP –File Transfer Protocol 文件传输协议。能够在网络上提供文件传输服务,远程用户可以上传和下载文件。常使用TCP端口20作为数据通道(传输文件和目录列表)、TCP端口21作为命令通道(传输用户命令)。linux下常用的服务器有:proftpd、wuftpd、vsftpd等,我们一般使用vsftpd,直接在redhat系统盘用rpm安装即可。ftp传输分为主动模式和被动模式,主动与被动是相对服务器来区分的,即主动模式是服务器主动发起数据请求,服务器的端口号为20;被动模式是客户端主动发起数据请求,服务器端口为1024及以上,为了安全,建议用主动模式。
实验环境:rhel5.6
实验过程:
#mount /dev/cdrom /media //挂载linux系统盘
#yum install vsftpd //安装vsftpd
#/etc/init.d/vsftpd start //启动vsftpd服务
到这里,基本的vsftpd服务已经搭好,客户端可以正常下载数据,如下截图:
但是,到这里登录进来的用户都属于匿名用户,匿名用户若想上传东西是不被允许的,下载与浏览都可以,应该再继续配置以支持用户上传。
进入/etc/vsftpd/vsftpd.conf,将上图中的27行和31行前面的#去掉,即打开匿名用户的上传和新建文件夹功能。
#chmod o+w /var/ftp/pub //修改ftp所在目录的权限,允许匿名用户上传和新建,默认情况下,ftp会把用户的需要上传下载的东西放在/var/ftp/pub目录下。
#/etc/init.d/vsftpd restart
到这里匿名用户的上传和新建目录的功能可以打开,如下截图:
但是,因为只要是能够访问这个ftp站点的人都可以上传数据,万一上传一个病毒玩意呢?所以应当设置用户名密码访问,步骤如下:
#vim /etc/vsftpd/vsftpd.conf
12 anonymous_enable=NO
27 anon_upload_enable=NO
31 anon_mkdir_write_enable=NO //将允许匿名用户新建上传功能关掉
#service vsftpd restart
#useradd ftptest
#passwd ftptest //创建允许访问ftp用户名密码
到这里就做到了需要用户名密码访问ftp服务,用户的ftp数据在用户名的目录下。
为了更加安全,可以将系统用户限制在自己的主目录下,做法如下:
#vim /etc/vsftpd/vsftpd.conf
即将96行、98行前面的#去掉,开启chroot_list_enable和chroot_list_file
#/etc/init.d/vsftpd restart
登录ftp尝试:
发现之前可以访问的现在无法登录,在此之所以把这个问题贴出来,是想提醒自己以后碰到类似这种问题不要心慌、不要着急、寻找蛛丝马迹解决问题,找到解题思路。在这种图形界面下很难发现问题所在,不妨试试cmd命令行方式登录ftp以需求解决问题突破口,如下截图:
通过命令提示符可以看到客户端打不开文件/etc/vsftpd/chroot_list,现在不妨进入ftp服务器看看这个文件
发现没有这个文件,那就新建一个吧:
#touch /etc/vsftpd/chroot_list
再次登录:
成功了,到这里没有连接mysql数据库但是带有用户名密码访问ftp服务搭建成功了,这里强调的是要注意解决问题的方法。
附:
服务一览
后台进程:vsftpd
类型:System V 服务
使用端口:20(ftp-data),21(ftp)
所需RPM包:vsftpd
配置文件:/etc/vsftpd/vsftpd.conf
/etc/vsftpd.ftpusers
/etc/pam.d/vsftpd
日志:/var/log/vsftpd.log
vsftpd.conf
/etc/vsftpd/vsftpd.conf是vsftpd主配置文件,配置参数如下:
anonymous_enable=YES#是否允许匿名ftp
local_enable=YES#是否允许本地用户登录
local_umask=022#默认的umask码
anon_upload_enable=YES#是否允许匿名上传文件
anon_mkdir_write_enable=YES#是否允许匿名用户创建目录
anon_other_write_enable=YES#是否允许匿名用户删除目录和文件
dirmessage_enable=YES#是否显示目录说明文件,默认是YES但需要收工创建.message文件
xferlog_enable=YES#是否记录ftp传输过程
connect_from_port_20=YES#是否确信端口传输来自
chown_username=username#是否改变上传文件的属主
xferlog_file=/var/log/vsftpd.log# ftp传输日志的路径和名字
xferlog_std_format=YES#是否使用标准的ftp xferlog模式
idle_session_timeout=600#设置默认的断开不活跃session的时间
ata_connection_timeout=120#设置数据传输超时时间
ascii_upload_enable=YES
ascii_download_enable=YES#是否使用ascii码方式上传和下载文件
ftpd_banner=my FTP server#定制欢迎信息
deny_email_enable=YES
banned_email_file=/etc/vsftpd.banned_emails#是否允许禁止匿名用户使用某些邮件地址,如果是输入禁止的邮件地址的路径和文件名
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list#是否将系统用户限止在自己的home目录下,如果选择了yes那么vsftpd.chroot_list中列出的是不chroot的用户的列表
max_clients=N#如果以standalone模式起动,那么只有N个用户可以连接,其他的用户将得到错误信息,默认是0不限制
message_file#设置访问一个目录时获得的目录信息文件的文件名。默认是.message
ftp用户控制
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/chroot_list
ftpusers:所有用户名出现在此文件中的用户就不可以通过FTP登录到系统。
user_list:当在vsftpd.conf文件中定义serlist_deny=YES(默认)时,在vsftpd.user_list文件中定义的用户不可以使用FTP,当定义userlist_deny=NO,只有在vsftpd.user_list文件中定义的用户可以使用FTP。
chroot_list:是否将系统用户限止在自己的主目录下。如果选择了chroot_list_enable=YES,那么chroot_list中列出的是被chroot的用户列表;如果添加chroot_local_user=YES,那么chroot_list中列出的是不被chroot的用户列表。