ubuntu下安装和配置vsftp,同时支持本地用户和虚拟用户登录

我的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_login
    sufficient和required的有很大区别,PAM认证有介绍,如下表,不想了解可直接跳过

----------------------------------------------

                                                         模块控制标识以及返回值表
控制标志                    成功结果                                                                     失败结果
----------------------------------------------
requisite              堆栈继续执行                                                         堆栈立刻以失败方式中断
required              堆栈继续执行                                                         堆栈继续执行,但是以失败方式中断
sufficient              堆栈立刻以成功方式中断,除非之前模块失败了    堆栈继续执行
optional               堆栈继续执行                                                         堆栈继续执行,只有当模块丢失或者给出 ----------------------------------------------    继续,为虚拟用户创建本地用vsftpd,我们以后添加的所有虚拟用户,都依赖与该vsftpd本地用户
useradd vsftpd -d /home/vsftpd -s /bin/false  #如果没有/home/vsftpd目录可手动创建
chown vsftpd:vsftpd /home/vsftpd
    最后,编辑/etc/vsftpd.conf文件,确保以下两个变量有配置
guest_enable=YES 
guest_username=vsftpd
保存退出
    所有配置完成     重启vsftpd
service vsftpd restart
ftp localhost
用刚才的虚拟用户名和密码登陆,访问成功,路径正确
    至此,我们的vsftpd就可以本地用户和虚拟用户同时登录了,其他vsftpd相关的参数配置可以查看man vsftpd.conf文件,谢谢大家!  

猜你喜欢

转载自tongkaiteng.iteye.com/blog/1836502