网络笨龟 发表于 2014-09-04 07:29

vsftp 虚拟用户困难求助

系统环境:CentOS-6.2_64
vsftp版本:vsftpd-2.2.2-6.el6_0.1.x86_64



想做一个资源共享的平台,考虑到FTP的效果比较简单,所以搭建起来了,不过要想对权限进行进一步的细化,就必须要用上vsftpd的虚拟用户功能了,之前没接触过虚拟用户,实现起来发现遇到很多小问题,请大伙儿帮忙看看是哪里的问题。


使用到的目录

ftp的主目录
# ls -l
总用量 98
dr-xr-xr-x.   2 root      root       40968月 31 14:41 bin
dr-xr-xr-x.   5 root      root       10248月 31 14:43 boot
drwxr-xr-x   17 root      root       37009月3 09:45 dev
drwxr-xr-x.75 root      root       40969月3 09:45 etc
drwxr-xr-x.   5 virtusers virtusers40969月3 21:14 ftp

ftp相关用户的passwd文件

/etc/passwd
vsftpd:x:501:501::/home/vsftpd:/sbin/nologin
virtusers:x:502:502::/ftp:/sbin/nologin

相关配置:


# grep -v "#" /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=NO
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
nopriv_user=vsftpd
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=欢迎来到FTP资源共享平台!
chroot_local_user=YES
chroot_list_enable=NO
ls_recurse_enable=NO
listen=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES



guest_enable=YES
guest_username=virtusers
user_config_dir=/etc/vsftpd/vconf
virtual_use_local_privs=YES



# more /etc/pam.d/vsftpd
#%PAM-1.0
session    optional   pam_keyinit.so    force revoke
auth       required   pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required   pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required   pam_loginuid.so
session    include      password-auth
auth       required   /lib64/security/pam_userdb.so   db=/etc/vsftpd/virtusers
account    required   /lib64/security/pam_userdb.so   db=/etc/vsftpd/virtusers



# more /etc/vsftpd/virtusers
adminftp
adminadmin
admin
admin122
st
adminst


三个虚拟用户的配置文件
# more admin
local_root=/ftp
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=yes
anon_mkdir_write_enable=yes
pam_service_name=vsftpd
chroot_local_user=YES




# more adminftp
local_root=/ftp/bknet
download_enable=yes
anon_upload_enable=yes
anon_other_write_enable=no
anon_mkdir_write_enable=yes
anon_world_readable_only=no


# more st
local_root=/ftp
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=yes
anon_mkdir_write_enable=yes
pam_service_name=vsftpd
chroot_local_user=YES

#


错误提示
命令:        USER st
响应:        331 Please specify the password.
命令:        PASS *******
响应:        530 Login incorrect.


日志分析


Sep4 07:25:07 ftp vsftpd: pam_unix(vsftpd:auth): check pass; user unknown
Sep4 07:25:07 ftp vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=st rhost=192.168.201.245
Sep4 07:25:07 ftp vsftpd: pam_succeed_if(vsftpd:auth): error retrieving information about user st
Sep4 07:25:07 ftp vsftpd: pam_succeed_if(vsftpd:auth): error retrieving information about user st


我想咨询一下,我已经在虚拟用户的目录下设置了st这个用户但登录的时候还是提示没有这个用户,是不是我哪里的文件修改的有问题,不胜感激。谢谢

cryboy2001 发表于 2014-09-04 09:22

认证失败,用户名没找到

你是用文件做为虚拟账号

有没有生成虚拟账号数据库
db_load -T -t hash -f/etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
做这个操作

网络笨龟 发表于 2014-09-04 09:29

感谢你的帮助,不过,这个操作已经做过,有生成virtusers.db 这个文件,我刚才又重新做了一次,效果依旧,Selinux也关了。回复 2# cryboy2001


   

cryboy2001 发表于 2014-09-04 10:01

本帖最后由 cryboy2001 于 2014-09-04 10:23 编辑

在/etc/pam.d/vsftpd
只保留最后两句,试试

看看这个文件在不在
/lib64/security/pam_userdb.so   

网络笨龟 发表于 2014-09-04 11:06

非常感谢,虚拟用户可以用了,现在继续完善权限。回复 4# cryboy2001


   

canpower1206 发表于 2014-10-06 01:49

是不是OS本身没有这个用户,而只给ftp添加了这个用户,
页: [1]
查看完整版本: vsftp 虚拟用户困难求助