ftp虚拟账号登陆

Posted 散尽浮华

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ftp虚拟账号登陆相关的知识,希望对你有一定的参考价值。

 

 

配置使用虚拟用户登录的FTP服务器,可以避免使用操作系统帐号作为FTP用户带来的一些安全问题,也便于通过数据库或其它程序来进行管理。

废话不多说,这里记录下ftp虚拟账号登陆的部署过程及其中遇到的问题:

 

yum安装vsftpd

[[email protected] ~]#yum install -y vsftpd

[[email protected] ~]#yum install -y db4

 

线上安装后的环境记录

[[email protected]_web vsftpd]# pwd

/etc/vsftpd

设置登陆ftp的虚拟账号文件

[[email protected]_web vsftpd]# cat vuser_passwd.txt

hqsbcms

[email protected]

 

将账号文本写入数据库

[[email protected]_web vsftpd]#db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db

 

[[email protected]_web vsftpd]# ls

chroot_list  user_list    vsftpd.conf.bak  vuser_passwd.db

ftpusers     vsftpd.conf  vsftpd_conf_migrate.sh  vuser_conf       vuser_passwd.txt

 

[[email protected]_web vsftpd]# cat vsftpd.conf|grep -v "^#"

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

ascii_upload_enable=YES

ascii_download_enable=YES

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

listen=YES

 

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

userlist_file=/etc/vsftpd/user_list

guest_enable=YES

guest_username=ftp

user_config_dir=/etc/vsftp/vuser_conf

 

[[email protected]_web vsftpd]# cat chroot_list

hqsbcms

[[email protected]_web vsftpd]# cat vuser_conf/hqsbcms

local_root=/hqsb/ftp/

write_enable=YES

anon_umask=022

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

 

[[email protected]_web vsftpd]# cat /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 pam_userdb.so db=/etc/vsftpd/vuser_passwd

account required pam_userdb.so db=/etc/vsftpd/vuser_passwd

 

 

[[email protected]_web vsftpd]# ll -d /hqsb

drwxrwxrwx 5 ftp ftp 4096 Jun 11 17:01 /hqsb

[[email protected]_web vsftpd]# ll -d /hqsb/ftp

drwxrwxrwx 2 ftp ftp 4096 Jun 15 12:10 /hqsb/ftp

 

[[email protected]_web vsftpd]#/etc/init.d/vsftpd start

 

上面部署好之后,使用虚拟账号hqsbcms登录(即使在系统上不存在的账号,/etc/passwd里没有的,借助于宿主账号 ftp)

 

 

 

但是发现了一个严重问题:

就是登录后,发现还是登陆到ftp的默认目录/var/ftp/下面了

 

 

 

原因:

ftp的shell类型是/sbin/nologin,意思是ftp登陆的时候就只能限制到它的家目录/var/ftp里面了!!

[[email protected]_web vsftpd]# cat /etc/passwd|grep ftp

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

 

解决办法:

把宿主账号改成nobody!

[[email protected]_web vsftpd]# cat vsftpd.conf|grep -v "^#"

.....

guest_username=nobody    【由ftp改为nobody

.....

 

重启vsftpd服务

[[email protected]_web vsftpd]#/etc/init.d/vsftpd restart

 

把nobody的家目录改成/hqsb/ftp

[[email protected]_web vsftpd]# usermod -d /hqsb/ftp nobody

 

[[email protected]_web vsftpd]# cat /etc/passwd|grep nobody

nobody:x:99:99:Nobody:/hqsb/ftp:/sbin/nologin

 

修改ftp目录权限

[[email protected]_web vsftpd]# chown -R nobody.nobody /hqsb/ftp

[[email protected]_web vsftpd]# chmod -R 777 /hqsb/ftp

 

这样修改后,就可以使用虚拟账号hqsb登陆ftp后,就可以正常进去/hsqb/ftp目录下了

 

以上是关于ftp虚拟账号登陆的主要内容,如果未能解决你的问题,请参考以下文章

wordpress安装插件和主题

ftp的本地用户搭建

Linux系统下vsftpd虚拟ftp用户账号存放在mysql数据库的FTP搭建

linux 如何新建个不能登录系统账号

vsftpd使用虚拟账号功能以及设置相关权限

ftp主动/被动模式+虚拟账号配置