vsftpd常规操作指南

配置

 vsftpd.conf配置参数:http://hi.baidu.com/lifeblood/item/ac564dc354973246a8ba9476

vsftpd.denyuser: 限制登录用户。

#若启用此选项,userlist_deny选项才被启动
userlist_enable=YES

#若为YES,则userlist_file中的用户将不能登录,为NO则只有userlist_file的用户可以登录
userlist_deny=NO

#定义限制/允许用户登录的文件
userlist_file=/etc/vsftpd/vsftpd.user_list

vsftpd.chroot_list: 设置是否允许用户切换目录。

#将本地用户锁定在自家目录中。当此项被激活时,chroot_list_enable和chroot_local_users参数的作用将发生变化,chroot_list_file所指定文件中的用户将不被锁定在自家目录。本参数被激活后,可能带来安全上的冲突,特别是当用户拥有上传、 shell访问等权限时。因此,只有在确实了解的情况下,才可以打开此参数。默认值为NO。
chroot_local_users=YES

#锁定某些用户在自家目录中。即当这些用户登录后,不可以转到系统的其他目录,只能在自家目录(及其子目录)下。具体的用户在chroot_list_file参数所指定的文件中列出。默认值为NO。
chroot_list_enable=YES

#定义不能更改用户主目录的文件
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

用户

客户端用户分为三种:

1.匿名用户:默认进入/var/ftp目录而且不能切换目录(也就是/var/ftp默认是它的根目录,pwd的时候显示的是/),而且默认无法上传,需要修改配置文件并重启服务.

2.服务器本地用户.默认进入用户的宿主目录下,比如a用户,FTP登陆上之后默认进入/home/a下,可以进入别的目录,但默认只能在自己的宿主目录下上传文件,可以修改让它只在自己的宿主目录下.而不能去别的目录(就是把宿主目录变为它的/)

3.虚拟用户:更加安全,即使想做一些什么攻击破坏性也没那么强,因为不是用的真实的用户.

#接受本地用户
local_enable=YES

当配置上述参数后,服务器本地用户可登入。允许本地用户登录使用起来最简单,此类用户的配置完全同于本地用户。

配置样例:

##########用户权限控制#########
#若启用此选项,userlist_deny选项才被启动
userlist_enable=YES

#若为YES,则userlist_file中的用户将不能登录,为NO则只有userlist_file的用户可以登录
userlist_deny=NO

#定义限制/允许用户登录的文件
userlist_file=/etc/vsftpd/vsftpd.user_list

#将本地用户锁定在自家目录中。当此项被激活时,chroot_list_enable和chroot_local_users参数的作用将发生变化,chroot_list_file所指定文件中的用户将不被锁定在自家目录。本参数被激活后,可能带来安全上的冲突,特别是当用户拥有上传、 shell访问等权限时。因此,只有在确实了解的情况下,才可以打开此参数。默认值为NO。
chroot_local_users=YES

#锁定某些用户在自家目录中。即当这些用户登录后,不可以转到系统的其他目录,只能在自家目录(及其子目录)下。具体的用户在chroot_list_file参数所指定的文件中列出。默认值为NO。
chroot_list_enable=YES

#定义不能更改用户主目录的文件
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

#接受本地用户
local_enable=YES

#仅在没有pam验证版本时有用,是否检查用户有一个有效的shell来登录
check_shell=YES

#可以上传(全局控制)
write_enable=YES

#本地用户上传文件的umask
local_umask=022

###############超时设置###############
#空闲连接超时
idle_session_timeout=600

########服务器功能选项###########
#开启日记功能
xferlog_enable=YES

#使用标准格式
xferlog_std_format=YES

#当服务器运行于最底层时使用的用户名
nopriv_user=nobody

##########服务器性能选项############
#绑定到listen_port指定的端口,既然都绑定了也就是每时都开着的,就是那个什么standalone模式
listen=YES

#############用户连接选项#################
#使用标准的20端口来连接ftp
connect_from_port_20=YES

#绑定到某个IP,其它IP不能访问
listen_address=192.168.0.2

#绑定到某个端口
listen_port=2121

##############数据传输选项#################
#匿名用户的传输比率(b/s)
anon_max_rate=51200

#本地用户的传输比率(b/s)
local_max_rate=5120000

################信息类设置################
#login时显示欢迎信息.如果设置了banner_file则此设置无效
ftpd_banner=Welcome to FTP Server.

#允许为目录配置显示信息,显示每个目录下面的message_file文件的内容
dirmessage_enable=YES

常见操作

1)启动/停止: 

service vsftpd start|stop|restart

简单方式:killall vsftpd;/usr/local/sbin/vsftpd &

2)创建用户(本地)

useradd -d DIR -s /bin/false USER_NAME;

autopasswd USER_NAME USER_PASSWD

mkdir -p DIR 

chown USER_NAME DIR 

echo USER_NAME >> /etc/vsftpd/vsftpd.user_list

echo USER_NAME >> /etc/vsftpd/vsftpd.chroot_list

3)数据传输

 ftp -in 172.1.1.25 20000 -Tget,50000000 -Tput,50000000  # 限制传输速率为 50MB

 ftp -in 172.1.1.25 20000 

function fu_ftp_data()
{
    ftp_user=$1
        ftp_pass=$2
        local_path=$3
        ftp_ip=$4
        ftp_port=$5
        ftp_content=$6
        #remote_path=$7
        ( echo "user $ftp_user $ftp_pass"
          echo "bin"
          echo "prompt"
          echo "lcd ${local_path}"
          # echo "cd ${remote_path}"
          echo mput "${ftp_content}"
          echo "quit"
        ) | ftp -n -Tput,1000000 $ftp_ip $ftp_port

        if test $? -ne 0
        then
            echo "error ftp"
            exit
        fi
}

常见错误

1)ip或端口错误

2)用户权限问题:1)用户非ftp用户;2)用户无数据目录的读写权限;3)用户无切换目录权限。

原文地址:https://www.cnblogs.com/zhenjing/p/vsftpd_faq.html