在之前的文章中我们配置了本地的yum源,完成了对依赖关系的解决方法,本篇博客记录自己简单安装vsftpd(very secure FTP daemo 好笑的名字)从开始到复杂的配置记录。
11月25日
安装vsftpd,使用yum安装,之前已经安装并配置了yum 使用命令 yum install vsftpd 完成安装。或者使用rpm安装,rpm -ivh vsftpd,(在此之前我们可以先进行查看是否已经安装了vsftpd 服务,查看命令rpm -qa | grep vsftpd 如果显示有安装的文件,则表明安装成功。)
启动进程之前我们需要关闭防火墙,这样,才能正常的登录,service iptables stop (如果想要对防火前进行开机就关闭,则执行命令service iptables off,在实验环境中可以这样做,但是在实际的工作环境中不建议这样做)
启动进程,执行命令service vsftpd start(高大上:/etc/rc.d/init.d/vsftpd start),来启动服务器,这里介绍几个常用的对服务状态的命令:
- service vsftpd status (查看状态)
- service vsftpd stop (停止服务)
- service vsftpd restart(重启服务)
进入vsftpd 的配置文件中,/etc/vsftpd/vsftpd.conf,文件中的每个目录的功能可以调整。
介绍简单的一个服务器的配置方法:(目的实现:用户能够上传文件,下载文件,创建文件夹)
write_enable=YES
anon_world_readabl_only=NO
anon_other_write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
并建立上传的路径:(要注意这里只要在客户端进入能上传的目录下上传。)
11月26日
本以为已经掌握了vsftpd的基本配置,谁知,今天就发现了问题,在虚拟机中将系统挂起后重启,发现再次登录ftp服务器,可以登录到服务器上,但是,在对应的上传目录上,不能上传文件,错误代码如下:
200 port command successful 。Consider using PASV.
553 could not create file
错误分析:既然能够正常登录,说明iptables已经关闭,但是作为linux的另外的防火墙,seLinux默认却不会对此进行限制,但是,我们在root权限下使用命令
sestatus -b |grep ftp
却发现所有的有关于ftp的选项selinux都是默认关闭的,
allow_ftpd_anon_write off
allow_ftpd_full_access off
allow_ftpd_use_cifs off
allow_ftpd_use_nfs off
ftp_home_dir off
ftpd_connect_db off
httpd_enable_ftp_server off
tftp_anon_write off
这就需要我们开启一些功能,开启第一项setsebool
setsebool -P allow_ftpd_anon_write on
表明开启了允许匿名用户写的功能。这时我们查看selinux的状态,发现修改项边成on,重新启动vsftpd服务,
/etc/rc.d/init.d/vsftpd restart
重新连接服务器,匿名登录,进入能够上传的目录,put 文件,上传成功。
在重新尝试的过程中遇到的新的问题:途中自己以为是修改了上传目录的权限然后进行了目录权限的修改,自己修改了ftp文件夹的权限,使得权限为777,执行的结果如下:
500 oops :vsftpd :refusing to run with writable anonymous root
500 oops :child died
文件夹的r权限是是否能进入文件夹,w权限是能否创建文件,执行权限没有用。
问题分析:由于匿名用户属于其他人用户组,所以文件夹对于其他人的权限为7,于是,在网上找了找,才知道,是分享目录权限的问题,vsftpd出于安全考虑对 /home/ftp是不允许没有限制的,这导致了上述错误的发生。
问题解决:修改文件夹的权限,chmod 775 (只要对文件夹的权限不设置为777,就可以)这样就能解决上述问题了。
12月7日
普通用户的上传以及下载,如果不加限制的话,是可以切换目录的,这样就使得普通用户可以访问根目录,或者修改其他信息,因此,我们设置了对普通用户的修改目录的权限,
#directory. Ifchroot_local_user is YES, then this list becomes alistof usersto NOTchroot().
chroot_local_user=YES
chroot_list_enable=YES
#(default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
说明:
- chroot_local_user=YES 开启后表示所有的本地用户只能在自己的宿主目录中。
- chroot_list_enable=YES 表明开启让部分用户可以在自己的宿主目录中,
- chroot_list_file =/......./... 指明了在文件中的用户是只在自己的宿主目录中的用户(本文件默认情况下是不存在的,需要自己建立才行)