vsftpd建立虚拟用户

安装vsftpd

yum -y install pam pam-devel db4 db4-tcl
yum -y install vsftpd

配置vsftpd.conf

vim /etc/vsftpd/vsftpd.conf

#设成YES,允许匿名用户登陆
anonymous_enable=NO

#允许/禁止本地用户登陆 注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问。
local_enable=YES

#设定可以进行写操作。
write_enable=YES

#设定上传后文件的权限掩码,文件644,文件夹755
local_umask=022

#设定开启目录标语功能
dirmessage_enable=YES

#设定开启日志记录功能。
xferlog_enable=YES

#设定端口20进行数据连接
connect_from_port_20=YES

#设定日志使用标准的记录格式
xferlog_std_format=YES

#开启独立进程vsftpd,不使用超级进程xinetd。设定该Vsftpd服务工作在StandAlone模式下。
listen=YES

#设定,启用pam认证,并指定认证文件名/etc/pam.d/vsftpd
pam_service_name=vsftpd

#设定userlist_file中的用户将不得使用FTP
userlist_enable=YES

#设定支持TCP Wrappers
tcp_wrappers=YES

#限制所有用户在主目录
chroot_local_user=YES

#设定启用虚拟用户功能
guest_enable=YES

#指定虚拟用户的宿主用户
guest_username=guoke

#设定虚拟用户的权限符合他们的宿主用户
virtual_use_local_privs=YES

#设定虚拟用户个人Vsftp的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,
#一个需要注意的地方就是这些配置文件名必须和虚拟用户名相同。
user_config_dir=/etc/vsftpd/vconf

配置虚拟用户

创建虚拟用户名单文件

创建虚拟用户名单文件,在其中加入用户的用户名和口令信息。格式很简单:“奇数行用户名,偶数行口令”。
virtusers文件格式如下:

username
password

生成虚拟用户数据文件

db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

设置认证文件PAM

编辑vsftpd的PAM验证配置文件,把原来的配置文件全部注释掉(不注释掉虚拟用户会登录不上),添加如下行

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup
vim /etc/pam.d/vsftpd

auth    sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers
account sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers

以上两条是手动添加的,内容是对虚拟用户的安全和帐户权限进行验证。

  • 这里的auth是指对用户的用户名口令进行验证。
  • 这里的accout是指对用户的帐户有哪些权限哪些限制进行验证。
  • 其后的sufficient表示充分条件,也就是说,一旦在这里通过了验证,那么也就不用经过下面剩下的验证步骤了。相反,如果没有通过的话,也不会被系统立即挡之门外,因为sufficient的失败不决定整个验证的失败,意味着用户还必须将经历剩下来的验证审核。
  • 再后面的/lib/security/pam_userdb.so表示该条审核将调用pam_userdb.so这个库函数进行。
  • 最后的db=/etc/vsftpd/virtusers则指定了验证库函数将到这个指定的数据库中调用数据进行验证。

创建虚拟用户配置文件存放路径

路径配置在vsftpd.conf文件的user_config_dir

mkdir /etc/vsftpd/vconf

建立虚拟用户配置文件

创建ftp的目录,设置属组属主为guoke,应为我们上面指定虚拟用户的宿主用户是guoke,这样ftp用户才有权限对目录进行操作。

# 创建目录
mkdir -p /data/ftp/username/

# 设置目录权限
chown guoke.guoke -R /data/ftp/username/
chmod 755 /data/ftp/username/

#编辑配置
vim /etc/vsftpd/vconf/username

#指定虚拟用户的具体主路径
local_root=/data/ftp/username/

#设定不允许匿名用户访问
anonymous_enable=NO

#设定允许写操作
write_enable=YES

#设定上传文件权限掩码
local_umask=022

#设定不允许匿名用户上传
anon_upload_enable=NO

#设定不允许匿名用户建立目录
anon_mkdir_write_enable=NO
0%