操作系统: Debian7.0

软件版本: vsftpd-2.3.2

功能描述: 建立不具有系统用户权限的FTP用户


1.创建虚拟用户密码文件。

建立文本文件,单数行为用户名,偶数行为密码,

格式如下:

#vi account.txt
dachun
123456
user
password
guest
guestpw

2.生成密码库文件,并修改其权限:

#db_load -T -t hash -f ./account.txt /etc/vsftpd/account.db
#chmod 600 /etc/vsftpd/account.db

注意事项:

db_load命令需要安装db-util包;

rhel5中其包名为db4-util,默认未安装,

debian7中其包名为db4.8,然后通过软链接至db_load;

3.创建pam认证文件

在/etc/pam.d/目录下新建文件vsftpd.vu,内容如下:

auth    required /lib/security/pam_userdb.so db=/etc/vsftpd/account
account required /lib/security/pam_userdb.so db=/etc/vsftpd/account

注意事项:

密码库的路径要与实际的路径相符。

在debian7系统中,security的路径位于/lib/i386-linux-gnu目录下

需要建立软链接

#cd /lib
#ln -s i386-linux-gnu/security/ ./

4.使能虚拟用户

修改vsftpd.conf文件

# 使能虚拟用户
guest_enable=YES
# 将虚拟用户映射为本地用户ftpuser
guest_username=ftpuser
# 修改认证模块
pam_service_name=vsftpd.vu

5. 重启vsftpd服务。
至此,虚拟用户可正常访问FTP,其权限相当于配置文件中映射的本地用户;


对各个用户的权限进行单独设置

1.在/etc/vsftpd.conf文件中添加如下内容:

#指定用户配置文件目录
user_config_dir=/etc/vsftpd/user_conf

2.用户配置文件目录下创建相应的用户配置文件(用户名),

#vi /etc/vsftpd/user_conf/dachun
# 指定用户目录
local_root=/var/www/dachun

#以下可添加其他权限配置

3.至此虚拟用户的家目录被限制在了 /var/www/dachun

4.如果虚拟用户不能上传文件则需要使能

# 允许上传文件
anon_upload_enable=YES         
# 允许创建目录
anon_mkdir_write_enable=YES    
# 允许其他(删除,改权限等)操作
anon_other_write_enable=YES    

# 修改权限掩码
anon_umask=022

如果不使能匿名用户的这几个权限,在部分版本中,虚拟用户也无法上传文档;
原因是VSFTPD-1.2.0新添了virtual_use_local_privs参数,
当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限,
当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限;


结束语

如果你为这就完了,那就图样图森破了,

虚拟用户可以玩的相当嗨了,可你有没有发现你的本地用户居然没法用了?

郁闷不?

当然了,还是有办法解决的,

欲知后事如何,且听下回分解...