linux redhat 构建linux之基于虚拟用户的vsftpd服务后有基于Mysql

 第一步:建立虚拟FTP用户的账号数据库文件

 [root@liudongyi ~]# vim /etc/vsftpd/vusers.list

 

 然后把文本数据库文件转化为可以被ftp认证识别的数据库文件

[root@liudongyi ~]# db_load -T -t hash -f /etc/vsftpd/vusers.list /etc/vsftpd/vusers.db

我们可以查看刚才生成文件的文件类型

 然后我们修改文件的权限(只允许root读写)

[root@liudongyi vsftpd]# chmod 600 vusers.db 
[root@liudongyi vsftpd]# ll vusers.db 

第二步,创建FTP根目录及虚拟用户映射的系统用户(虚拟用户映射到本地用户所以在配置文件中local_enable=YES)

 

创建目录,并创建用户使它不能登录

[root@liudongyi vsftpd]# mkdir /var/ftproot
[root@liudongyi vsftpd]# 
[root@liudongyi vsftpd]# useradd -s /sbin/nologin virtual

[root@liudongyi vsftpd]# vim /etc/passwd (把家目录修改为我们刚才所创建的目录)

把刚才创建的ftproot目录的属组权限进行修改

[root@liudongyi vsftpd]# cd /var/
[root@liudongyi var]# chown virtual.virtual ftproot/

 

第三步:

然后创建虚拟用户的PAM认证文件 vsftpd.vu 
[root@liudongyi var]# cd /etc/pam.d/
[root@liudongyi pam.d]# vim vsftpd.vu 

auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers

第四步:

扫描二维码关注公众号,回复: 5867678 查看本文章

[root@liudongyi pam.d]# vim /etc/vsftpd/vsftpd.conf 

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
pam_service_name=vsftpd.vu
guest_enable=YES
guest_username=virtual

 重启服务(/etc/init.d/vsftpd restart)

第五步:为个别虚拟用户建立独立的配置文件

修改配置文件:用户配置目录

user_config_dir=/etc/vsftpd/vusers_home

我们先把创建目录的权限给取消了

#anon_mkdir_write_enable=YES

创建刚才我们配置文件中设定的目录

[root@liudongyi ~]# cd /etc/vsftpd/
[root@liudongyi vsftpd]# mkdir  vusers_home
[root@liudongyi vsftpd]# cd vusers_home/

修改目录的属组权限修改为virtual。要不然会访问不到,(因为我们是a1用户映射到virtual的身份去访问的)

[root@liudongyi vsftpd]# chown virtual.virtual vusers_home/ -R

我们重启一下vsftpd,

service vsftpd restart

我们发现我们没有权限创建目录了,,刚才配置文件中取消了权限。

 

然后我们在个别用户中添加这个创建目录的权限

[root@liudongyi vsftpd]# cd vusers_home/
[root@liudongyi vusers_home]# vim a1                创建相同的名称文件并且在文件中编辑你所想添加的权限也就是此用户的权限

                                     vim bendan

 然后我们重启服务

然后我们以虚拟用户的身份去访问并且创建文件夹或上传看是否有权限

 [root@liudongyi vusers_home]# lftp [email protected]   以bendan的身份去访问发现有创建文件夹和上传的权限

 [root@liudongyi vusers_home]# lftp [email protected]     我们以a1的身份去访问发现有创建文件夹和上传的权限

vsftpd和mysql的结合使用

 

 

 第一步安装mysql及其他安装包

 [root@liudongyi vusers_home]# yum install mysql-server mysql-devel pam_mysql -y

 然后启动mysql服务,创建mysql的库

 由于之前安装过mysql所以启动出现了状况,我把mysql.sock更名为mysql.sock.bak则启动成功

 我使用root用户身份去登陆

[root@liudongyi local]# mysql -uroot -p

我创建一个vsftpd的数据库

我创建一个表

mysql> create table users (
    -> id int AUTO_INCREMENT NOT NULL,
    -> name char(20) binary NOT NULL,
    -> password char(48) binary NOT NULL,
    -> primary key(id)
    -> );

 然后在表里添加数据(为安全起见,我们设置的密码用password加密存储)

一个用户为tom 密码为ldy

另一个用户为lu密码为ldy


mysql> insert into users(name,password) values('tom',password('ldy'));
Query OK, 1 row affected (0.00 sec)

mysql> insert into users(name,password) values('lu',password('ldy'));
Query OK, 1 row affected (0.00 sec)

 

 我们对数据库进行授权

mysql> grant select on vsftpd.* to [email protected] identified by 'www.ldy.com';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges
    -> ;
Query OK, 0 rows affected (0.00 sec)

mysql> grant select on vsftpd.* to vsftpd@localhost identified by 'www.ldy.com';
Query OK, 0 rows affected (0.00 sec)
mysql> grant select on vsftpd.* to [email protected] identified by 'www.ldy.com';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;                                  刷新一下特权让他立即生效
Query OK, 0 rows affected (0.00 sec)
 

我遇到了一个BUG(无知的BUG)

[root@liudongyi pam.d]# mysql -uvsftpd -h127.0.0.1 -p
会出现

ERROR 1045 (28000): Access denied for user 'vsftpd'@'localhost' (using password: YES)
我就不知道密码是啥。然后我就进不去数据库,上面设置的密码是www.ldy.com

然后我去查看数据库文件

创建pam认证文件创建为vsftpd.mysql编辑以下内容:

auth required /lib64/security/pam_mysql.so user=vsftpd passwd=www.ldy.com host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib64/security/pam_mysql.so user=vsftpd passwd=www.ldy.com host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

我们下载安装一下pam_mysql并且编译安装一下

https://sourceforge.net/projects/pam-mysql/files/latest/download

把下载好的压缩包进行解压缩

然后进入此文件夹进行编译以下命令为编译命令

./configure --with-mysql=/usr --with-openssl=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security

make

make install

然后我们就可以看到在/lib64/security目录下生成了pam_mysql.la和pam_mysql.so文件

去编辑配置文件,因为上面关于映射系统用户virtual已经做过了,所以就不做了,直接用,然后重启一下服务 (我们把最下面那个特权的那个目录注释掉,也可以不注释)

 我们去重启服务并且查看一下3306端口是否被监听

 然后我们去做测试

[root@liudongyi pam.d]# lftp [email protected]

虽然已经成功查看,但是显然没有权限创建目录,因为我们刚才注释掉了

下面我们在给tom添加权限

编辑配置文件 vim /etc/vsftpd/vsftpd.conf 

然后把刚才那个a1的权限文件复制一份改名为tom

然后进行测试

[root@liudongyi pam.d]# cat /etc/vsftpd/vusers_home/a1 
anon_mkdir_write_enable=YES
anon_upload_enable=YES
[root@liudongyi pam.d]# cp /etc/vsftpd/vusers_home/a1 /etc/vsftpd/vusers_home/tom
[root@liudongyi pam.d]# service vsftpd restart
[root@liudongyi pam.d]# lftp [email protected]

 到这里终于结束了!!!!!!!!!这就是所有的虚拟用户基于简单的数据库方式,也可以基于MYsql数据库 

猜你喜欢

转载自blog.csdn.net/qq_40210617/article/details/86774920