配置使用虚拟用户登录的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目录下了