我的ubuntu是12.04服务器版本,我的文章绝对都是自己从新手的角度考虑,不是东抄西凑随便胡弄大家的
一、直接命令安装
apt-get install vsftpd
安装完成之后,会生成一个/srv/ftp目录
用如下命令都可以查看到是否安装成功
ps -e | grep vsftp 显示结果: 1366 ? 00:00:00 vsftpd 或者 netstat -nat 有21端口记录: tcp 0 0 0.0.0.0:21 0.0.0.0:*
这样就可以使用如下命令,进行vsftp的操作了
service vsftpd start service vsftpd restart service vsftpd stop
二、我期望指定一个本地用户tong,只能对/var/www目录上传下载文件
设置以下几项即可
vi /etc/vsftpd.conf anonymous_enable=NO #禁止匿名登录 local_enable=YES #开启本地用户访问ftp local_root=/var/www #访问ftp的默认路径 write_enable=YES #开启上传、写功能 保存退出,继续 useradd -r -g www -d /var/www tong #我将tong用户的默认目录指定在了/var/www,用户组为www,其实这里直接用useradd tong也没关系 #给用户赋初始密码 passwd tong Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully 保存退出
重启vsftpd服务
/etc/init.d/vsftpd restart
测试是否能成功访问
ftp localhost Name (localhost:root): tong Password: 230 Login successful.登录成功 ftp> pwd查看当前所处目录,这里显示是"/" ftp> ls查看当前目录下的文件,确定是在/var/www目录下到此本地用户访问ftp就已经成功
大家可以再增加个用户,测试一下是否可以登录到/var/www目录下,也可以用其他ftp工具连接,
效果是一 样的!!
三、支持虚拟用户登录
上面我们只是支持了本地用户登录,但是一个项目组创建太多的系统用户,总感觉没必要,特别是团队特别大的时候,所以虚拟用户很有必要。其他网上大多数都讲到了虚拟用户怎么配,但是他们不明白的是,虚拟用户可以了,系统用户又不行了;或者系统用户可以了,虚拟用户又不行了;其实配置两种方式同时公用,只在一点捅破,下面来
vsftpd的认证方式都是通过pam认证的,我这里只讲关键,有愿意研究pam机制的,可以看这里http://kuliuheng.blogbus.com/logs/38544503.html 这里讲的比较详细
我打算创建一个虚拟用户vtong,密码是vtong,来访问/var/www目录
创建虚拟用户列表文件,其实就是一个预编辑文件,路径随便,文件名也命名!
cd /home vi loguser.txt 输入内容,一行是用户名,一行是密码,如果要增加多个虚拟用户,以此类推。 【这里是可以随时添加或减少的,改变之后只要重新生成一下虚拟用户库即可,后面有介绍】 vtong vtong 保存退出安装生成数据库的linux工具包db_utile,你可以用apt-get下载最新的,最新的可以这样看
apt-get install db想看当前源source最新的db-utile,按tab键补全,显示如下 db4.7-util dbar dbtoepub db4.8-util dbconfig-common dbus db4otool dbeacon dbus-1-dbg db5.1-doc dbench dbus-1-doc db5.1-sql-util dbf2mysql dbus-java-bin db5.1-util dblatex dbus-test-runner dbacl dbndns dbus-x11 dballe dbs db-util dballe-common dbskkd-cdb dbview 这样我们知道db5.1-util是最新版本,你的或许是别的版本,然后安装 apt-get install db5.1-util安装好之后执行以下命令,根据刚才的文件loguser.txt生成库文件
db5.1_load -T -t hash -f /home/loguser.txt /etc/vsftpd_login.db设置一下数据库文件访问权限
chmod 600 /etc/vsftpd_login.db配置PAM文件/etc/pam.d/vsftpd,大家查看/etc/vsftpd.conf就会发现pam_service_name参数就是指定该认证文件的
vi /etc/pam.d/vsftpd 将以下两行放到文件的最开头,其余的都不用改变 auth sufficient pam_userdb.so db=/etc/vsftpd_login account sufficient pam_userdb.so db=/etc/vsftpd_login 切记,不是下面两行,网上其他地方都写的是如下形式 auth required pam_userdb.so db=/etc/vsftpd_login account required pam_userdb.so db=/etc/vsftpd_loginsufficient和required的有很大区别,PAM认证有介绍,如下表,不想了解可直接跳过
----------------------------------------------