何为vsftpd?
vsftpd:very secure ftp daemon
程序:/usr/sbin/vsftpd
配置文件:/etc/vsftpd/vsftpd.conf
其用户分为:匿名用户(映射至某一固定的系统用户),本地用户(root及系统用户),虚拟用户(存储在文件或其他服务器端数据库中的用户);
以下将以CentOS 7 讲解具体配置过程:
[此机制需要pam_mysql.so]
主要分为以下几个步骤:
1.运行环境准备和配置
2.mysql数据库配置
3.pam配置
4.细节优化
1.运行环境准备和配置
由于CentOS 7yum源中没有pam-mysql,故需自己编译安装;
首先安装开发环境:
yum -y groupinsttall “Development Tools” “Server Platform Development”
另外还需要的程序包有:openssl-devel pam-devel mariadb-devel
yum -y install pam-devel openssl-devel mariadb-devel
下载好pam-mysql后解压缩,开始编译:
tar -xzvf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1
./configure --with-mysql=/usr --with-openssl=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security
make && make install
安装完成后,在/lib64/security目录下可以看到:
2.数据库配置
安装mariadb-server
yum -y install mariadb-server
systemctl enable mariadb # 设置为开机自启动服务
systemctl start mariadb # 开启服务
2)首次安装需要进行数据库的配置,命令都和mysql的一样
[root@mini ~]# mysql_secure_installation
3)配置时出现的各个选项
Enter current password for root (enter for none): # 输入数据库超级管理员root的密码(注意不是系统root的密码),第一次进入还没有设置密码则直接回车
Set root password? [Y/n] # 设置密码,y
New password: # 新密码
Re-enter new password: # 再次输入密码
Remove anonymous users? [Y/n] # 移除匿名用户, y
Disallow root login remotely? [Y/n] # 拒绝root远程登录,n,不管y/n,都会拒绝root远程登录
Remove test database and access to it? [Y/n] # 删除test数据库,y:删除。n:不删除,数据库中会有一个test数据库,一般不需要
Reload privilege tables now? [Y/n] # 重新加载权限表,y。或者重启服务也许
4)测试是否能够登录成功,出现 MariaDB [(none)]> 就表示已经能够正常登录使用MariaDB数据库了
创建数据库vsftpd和表users
(3)为表插入数据
(4)在mariadb数据库中创建并授权一个ftp1用户连接mariadb
3、创建一个pam配置文件 vim /etc/pam.d/vsftpd.mysql
4、创建系统用户,作为所有虚拟用户的映射用户
5、编辑vsftpd配置文件,修改相关配置
vim /etc/vsftpd/vsftpd.conf
7、测试
(1)测试虚拟用户tom
(2)测试虚拟用户jerry
三、其它需求
1、如何让虚拟用户具有上传文件的权限?这一项需要启用,因为虚拟用户也是匿名用户
(1)确保虚虚用户的系统用户ftp3对文件系统具有写权限
(3)测试
#测试虚拟用户tom
#测试虚拟用户jerry
测试成功
2、虚拟用户tom和jerry都映射为系统上的一个用户vuser,能够设置tom和jerry的权限不一致,例如设置为tom能够上传文件,而jerry不能上传文件?
1、分别为每个虚拟用户添加单独一个配置文件 #vsftpd支持每个虚拟用户单独使用一个配置文件,并且配置文件必须和用户名相同
2、编辑主配置文件/etc/vsftpd/vsftpd.conf
(1)设置不允许匿名用户上传
(2)明确设置加载vusers.conf.d目录中的配置文件
3、重启vsftpd服务
systemctl restart vsftpd.serivce
4、测试
#预期虚拟用户tom能够上传文件,而jerry则不能上传文件
#测试虚拟用户tom
#测试虚拟用户jerry
测试成功。