以前进行安装过虚拟用户的使用,但是由于刚刚装的vsftpd 2.3.5版本,为了安全考虑对以前有了一些更改,例如不推荐创建用户默认登录目录为根目录
以下为vsftpd虚拟用户的创建源文档,再此进行一下翻译,并添加一些自己的理解(红色部分)
原文如下:
这个例子展示了如何设置vsftpd / PAM“虚拟用户”。一个虚拟用户是一个用户登录,不存在真正的登录系统。虚拟用户可以因此更安全比真正的用户,因为一个妥协的账户只能使用FTP服务器。
虚拟用户是用来提供给一些不收信任的用户,并且限制其权限,不可以访问其他的目录
第一步)创建虚拟用户数据库。
我们将使用pam_userdb进行身份验证的虚拟用户。这需要
将username/password的用户信息存储到“db”格式的文件中,这是一种常见的数据库格式。
创建一个“分贝”格式文件,首先需要创建一个纯文本文件
用户名和密码交替显示。
请参见示例文件”logins.txt”
tom
foo
fred
bar
而作为根用户登录,创建实际的数据库文件如下:
以上需要先进行安装db_load
sudo apt-get install db-util 如果安装时提示找不到软件包输入:sudo apt-get install db4.8-util
chmod 600 /etc/vsftpd_login.db
如果想了解更多信息可以在这里找到
http://www.sleepycat.com/docs/utility/index.html
第二步) 创建一个对刚刚创建的数据库的引用pam文件.
创建vsftpd.pam 文件。它包含两行:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login (刚刚创建的数据库,但是不可以带类型 .db)
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
以上对于pam_userdb.so的目录不一定对,根据系统类型不同,可能会有所变化,可以通过查询命令找到后进行替换
find / -name pam_userdb.so
可以将该文件复制到目录/etc/pam.d 下cp vsftpd.pam /etc/pam.d/ftp
这里的ftp在配置vsftpd.conf时用到,会有对他的引用
(注意 如果你将pam_service_name的引用名字用vsftpd进行替换,你需要用命令 cp vsftpd.pam /etc/pam.d/vsftpd)
第三步) 设置文件的位置的虚拟用户.
useradd -d /home/ftpsite virtual
ls -ld /home/ftpsite
(显示如下):
drwx------ 3 virtual virtual 4096 Jul 30 00:39 /home/ftpsite
如果显示信息为:
drwx------ 3 root root 4096 Jul 30 00:39 /home/ftpsite
请执行命令
chown virtual.virtual /home/ftpsite
我们已经在目录/home/ftpsite创建了一个名字为“virtual”的用户
cp /etc/hosts /home/ftpsite
chown virtual.virtual /home/ftpsite/hosts
第四步) 创建vsftpd.conf配置文件
对配置文件进行辩解
vim vsftpd.conf
内容如下
anonymous_enable=NO
local_enable=YES
# 以上命令可以禁止非匿名用户进行登录
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
#些保证,为安全起见,不允许写命令
chroot_local_user=YES
#这保证了虚拟用户仅限于虚拟FTP区/ home / ftpsite上面我们设置了。
guest_enable=YES
guest_username=virtual
guest_enable 这个配置是十分重要的,他激活了虚拟用户,并且guest_username将所有的虚拟用户映射到 我们创建的真正的“virtual”,目录为/home/ftpsize
listen=YES
listen_port=10021(ftp默认端口为21,如果不想登录ftp时输入端口号,则设置为21)
pasv_min_port=30000
pasv_max_port=30999
这些把端口范围在被动FTP传入的请求——非常有用你是在配置防火墙。
第六步) 测试
ftp localhost 10021(在第四步设置的端口)
Connected to localhost (127.0.0.1).
220 ready, dude (vsFTPd 1.1.0: beat me, break me)
Name (localhost:chris): tom
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"
ftp> ls
227 Entering Passive Mode (127,0,0,1,117,135)
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).
ftp> size hosts
213 147
ftp>
如果想每个虚拟用户登录的路径不同请看文档:
http://blog.csdn.net/kingo0/article/details/8211203