Linux下vsftpd的简单应用(一)

来源:互联网 发布:曼德拉效应知乎 编辑:程序博客网 时间:2024/05/18 17:28

    vsftpd是“very secure  FTP daemon”的缩写,是一款完全免费、开放源代码的ftp服务器,它可以运行在Linux等UNIX类操作系统上,由于它小巧轻快,安全易用而备受推崇,下面就跟随小编一起来认识下它吧。

    测试环境:centos6.5,vsftpd版本2.2.2

    vsftpd的安装

    centos下安装vsftpd还是非常简单的,就使用yum安装即可,当然安装的时候要使用root用户哦。

yum install vsftpd

    测试前的温馨提示

    1.下面的测试内容都是在SELinux未开启的情况下,如果开启了SELinux,即使你的配置正确,也可能无法得到想要的结果。通过下面的命令,查看SELinux是否开启

sestatus -v
如果开启了,可以通过编辑/etc/selinux/config文件,来禁用SELinux。


    2.如果开启了防火墙,即使用户名和密码正确也会导致无法链接,此时需要更改防火墙做策略或者关闭防火墙。


    vsftpd的配置

    vsftpd的配置文件在/etc/vsftpd文件夹下,其中ftpusers,user_list和vsftpd.conf是我们需要了解的,下面就从最主要的配置文件vsftpd.conf开始。

    anonymous_enable = YES,是否允许匿名用户登陆FTP,默认允许。

    anon_upload_enable = YES,是否允许匿名用户上传,默认注释,即不允许上传。

    anon_mkdir_write_enable = YES,是否允许匿名用户创建和修改文件或者文件夹,默认注释,即不允许创建和修改。

    以上三个参数都是与匿名用户相关的,默认情况下允许匿名用户登陆(只需要输入登录地址即可),但是匿名用户只能下载文件,不能上传,创建和修改,此时的应用场景比较适用于FTP下载服务器。当然我们可以结合anon_upload_enable和anon_mkdir_write_enable参数让匿名用户也可以实现上传,创建和修改操作,当然匿名用户给服务器的安全带来了严重隐患,不推荐使用匿名用户,通常在生产环境中会注释掉anonymous_enable或者把它改为NO。

    local_enable=YES,是否允许本地用户登陆。这个参数什么意思呢?我们可以先把它注释了,然后再次登陆,你会发现原来可以登陆的用户现在居然不能登陆了,给了这样一个提示,“530 This FTP server is anonymous only”,只有匿名用户可以登陆。原来它禁止了除匿名用户外其他所有用户的登陆,看来这个不能注释了,也不能设置为NO,否则其他的FTP用户都不能用了。

    write_enable = YES,是否允许写操作,默认允许。如果注释了或者改为NO,则不能进行上传,创建和修改操作。

    local_umask = 022,ftp用户创建文件或者文件夹的权限掩码。其实权限掩码Linux下便存在,我们在终端输入umask,会返回诸如0002或者0022的值,那么这些值代表什么意思,umask到底有什么用呢?这就要从权限说起了,权限是Linux和windows的一大区别,windows很多操作系统中对权限并没有十分苛刻的规定,但是Linux下却有着非常严格的权限,一个文件创建之初默认的权限是666(rw-rw-rw-),也就是该文件不具备执行权限,而一个文件夹创建之初会被赋予777(rwxrwxrwx)的权限,比文件多了一个x权限(在文件中x是可执行权限,但是在文件夹中,代表是否可以进入该文件夹),你如果立刻尝试的话,会发现小编居然骗人,明明不是这么回事,其实小编并没有骗你,只不过你创建的文件被降权了,而这个始作俑者就是umask。一般用户环境下输入umask会返回0002,而root用户下会返回0022,你可以尝试在root用户下创建一个文件夹,是不是权限变为了755(rwxr-xr-x),777-022不就是755了吗,没错,这里umask把本该是777权限的文件夹改为了755,拿走了一些权限。其实local_umask就是根据Linux的这种机制来的,相信对于022知道是什么意思了吧。有一点需要提示,如果注释了该参数,该参数会启用默认权限掩码077,那么上传的文件权限将会变为600,文件夹权限变为700,换句话说,其他的用户根本没有操作该文件或者文件夹的权限,相信这不是你希望结果,设置改参数的时候需要考虑实际情况。

    dirmessage_enable = YES,是否显示目录说明文件。

    message_file=.message,指定目录的说明文件,默认为.message,当然也可以根据个人喜好进行更改(在vsftpd中可能搜索不到该参数,但配置该参数确实能够生效)。

    dirmessage_enable需要结合message_file使用,也就是说该目录下需要存在.message(或者其他名称的)说明文件,这个参数设置才有意义。而在.message中需要书写的内容是操作该目录需要注意的一些事项,如果没有特别需要用户注意的事项,可以不写。如果启动该选项,并且在.message中书写了内容,那么当用户首次进入该目录的时候(二次进入该目录就不会显示了),就会看到这个信息,如下图所示。


    xferlog_std_format=YES,选择日志文件的格式,YES则为xferlog,NO则为vsftpd格式。

    xferlog_enable=YES,是否启用xferlog格式的日志文件,依赖于xferlog_std_format,只有当xferlog_std_format=YES的时候该参数才起效果。

    xferlog_file = /var/log/xferlog,xferlog格式的日志存在目录,当xferlog_std_format=YES和xferlog_enable=YES的时候该参数才起效果。

    以上三个参数是关于xferlog格式日志文件的设置,该格式的日志只记录上传和下载操作,如果想要记录更加详细的信息(例如登陆或者删除等操作),需要使用vsftpd格式的日志文件,也就是设置xferlog_std_format=NO。不管是xferlog还是vsftpd.log,默认情况下都在/var/log目录下。

0 0