虚拟账户的 vsftpd FTP 服务搭建
环境centos6.6
实现效果
搭建一个基于虚拟用户的 FTP 站点,
虚拟用户:uplad 密码:upload ,可以上传下载
要求三个虚拟用户 vuser1、vuser2、vuser3 登录后
权限分别是:vuser1 能下载不能上传,vuser2 能上传不能下载,vuser3 既能上传也能下载。
yum install -y vsftpd
[ root@server vsftpd]#
cd /etc/vsftpd
[ root@server vsftpd]#
vi virtualuser.txt
upload
upload
vuser1
123456
vuser2
123123
vuser3
123456
//把新建的文本文件 virtualuser.txt 转换为 db 文件,安装 db4-utils 包
[root@server vsftpd]#yum install -y db4-utils
[root@server vsftpd]#db_load -T -t hash -f virtualuser.txt /etc/vsftpd/virtualuser_login.db
//这条命令生成用户数据库
#写个脚本,每次添加账号后,执行以下
[ root@LFTp-Svn01
vsftpd]#
cat set_new_user.sh
#!bin/bash
datestmp=`date +%Y%m%d%H%M`
echo 'add user in virtualuser.txt'
db_load -T -t hash -f virtualuser.txt /etc/vsftpd/virtualuser_login.db
chmod 600 /etc/vsftpd/virtualuser_login.db
ls -l /etc/vsftpd/virtualuser_login.db
cp chroot_list backup/chroot_list_$datestmp
ls vuserconfig >chroot_list
[root@server vsftpd]# chmod 600 virtualuser_login.db
//设置认证文件只对用户可读可写
[ root@server pam.d]#
cd /etc/pam.d
/*配置 PAM 文件
//为了使服务器能够使用数据库文件,对客户端进行身份验证,需要调用系统的
PAM 模块.PAM(Plugable Authentication Module)为可插拔认证模块,不必重新安
装应用系统,通过修改指定的配置文件,调整对该程序的认证方式。 PAM 模块
配置文件路径为/etc/pam.d/目录,此目录下保存着大量与认证有关的配置文件,
并以服务名称命名。
//修改 vsftpd 对应的 PAM 配置文件/etc/pam.d/vsftpd,可将原配置注释,然后作如下配置
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_def
[root@server pam.d]# vim /etc/pam.d/vsftpd (64位系统)
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtualuser_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtualuser_login
[ root@server pam.d]# vim /etc/pam.d/vsftpd.vu (32位系统)
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtualuser_login
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtualuser_login
//auth 是指对用户的用户名口令进行验证。
accout 是指对用户的帐户有哪些权限哪些限制进行验证。
/lib/security/pam_userdb.so 表示该条审核将调用 pam_userdb.so 这个库函数进行。
最后的 db=/etc/vsftpd/virtualser_login 则指定了验证库函数将到这个指
定的数据库中调用数据进行验证。
[root@server vsftpd]# useradd virtualuser
//建立虚拟用户所对应的本地真实用户(可以创建任意用户)
//重新修改 vsftpd.conf 配置文件
[ root@newsales3 vsftpd]#
grep -v ^# /etc/vsftpd/vsftpd.conf
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 #日志写到/var/log/xferlog,日志不显示中文,包含的内容更多,但是都是缩写,不直观
xferlog_std_format=NO #日志写到
/var/log/vsftpd.log,且更加易读
chroot_list_enable=YES #YES的时候,启用chroot 列表。
chroot_list_file=/etc/vsftpd/chroot_list #在该目录中的用户禁止切换目录,锁定在家目录
listen=YES
pam_service_name=vsftpd #安全审计模块名对应/etc/pam.d/vsftpd
userlist_enable=YES
tcp_wrappers=YES
#set for late 8 hour
use_localtime=yes
#pasv_enable=YES ##开启被动模式
pasv_min_port=30000 ##被动模式最小端口
pasv_max_port=31000 ##被动模式最大端口
############### Virtual user ############
guest_enable=yes
guest_username=virtualuser #虚拟用户映射的真实系统用户是
virtual_use_local_privs=yes #虚拟用户是否有映射的系统真实用户的权限
user_config_dir=/etc/vsftpd/vuserconfig #设置虚拟用户配置文件的目录
############### Virtual user ############
cd /etc/vsftpd/
mkdir -p /etc/vsftpd/vuserconfig /etc/vsftpd/backup
touch /etc/vsftpd/chroot_list
在没有建立虚拟账户配置文件测试默认虚拟用户的权限:
[ root@server ~]#
lftp 192.168.0.254
lftp 10.12.8.30:~>
user vuser1 123456
lftp
[email protected]:/>
mkdir test
//创建一个目录作为测试
到此,vsftpd 已经可以使用
################################################
#下面来创建虚拟用户的权限设置
创建一个有读写权限的账号
cd /etc/vsftpd
cat vuserconfig/upload
local_root=/home/virtualuser/upload/soft
write_enable=yes
download_enable=yes
创建对应的家目录,并重启服务即可。
mkdir -p /home/virtualuser/upload/soft
chown -R virtualuser.virtualuser /home/virtualuser
#生效账号密码
sh set_new_user.sh
#重启vsftpd服务
/etc/init.d/vsftpd restart
然后即可登录
################################################
建立虚拟帐号配置文件
在 user_config_dir 指定路径下,建立与虚拟帐号同名的配置文件并添加相应
的配置字段,配置文件名称一定要和虚拟用户名相同。默认情况下虚拟用户的配
置文件会继承全局配置文件中的语句,如果冲突,虚拟用户配置文件有效。
write_enable=yes
#默认允许在文件系统写入权限
download_enable=yes
#默认允许下载
[ root@server ~]#
su - virtualuser
[ virtualuser@server ~]$
mkdir vuser1 vuser2 vuser3
//创建三个虚拟用户的根目录,此时在virtualuser的家目录中,
[virtualuser @server ~]$ exit
//vuser1 只能上传权限配置
[ root@server vuserconfig]#
cat vuser1
local_root=/home/virtualuser/vuser1
write_enable=YES
download_enable=NO
//vuser2 只能下载配置
[ root@server vuserconfig]#
cat vuser2
local_root=/home/virtualuser/vuser2
write_enable=NO
download_enable=yes
//vuser3 上传下载等配置
[ root@server vuserconfig]#
cat vuser3
local_root=/home/virtualuser/vuser3
//然后依次登录vuser1,2,3 进行测试
[ root@server ~]#
lftp -u vuser1 192.168.0.254
########################
禁止用户切换目录
修改配置文件如下,然后添加禁止切换目录 的用户名到这个文件即可 /etc/vsftpd/chroot_list。
chroot_list_enable=YES #YES的时候,启用chroot 列表。
chroot_list_file=/etc/vsftpd/chroot_list #在该目录中的用户禁止切换目录,锁定在家目录