配置
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)用户无切换目录权限。