给数据库增加密码策略遇到的权限问题

        最近忙于审计,为了增加数据库的密码安全,想给数据库添加一个validate_password密码校验插件,方法很简单,网上也多,但是遇到了一个权限问题,Linux的一个初级权限问题,我竟然不懂。太low了,,,写下来寒碜一下自己个。

先说一下添加插件的步骤:

1.要使服务器可用,插件库文件必须位于MySQL插件目录中(由plugin_dir系统变量命名的目录)。如果需要,通过在服务器启动时设置plugin_dir的值来配置插件目录位置。

mysql> show variables like 'plugin_dir';
+---------------+--------------------------+
| Variable_name | Value                    |
+---------------+--------------------------+
| plugin_dir    | /home/me/mysql/lib/plugin/ |
+---------------+--------------------------+
2.或者修改my.cnf之后,重启服务器以使新设置生效。或者,要在运行时注册插件,可以使用以下语句
mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so';
3.报错及解决
但是我的报错如下:

[ERROR] Can't open shared library '/home/me/mysql/lib/plugin/validate_password.so' (errno: 25 /home/me/mysql/lib/plugin/validate_password.so: cannot open shared obje
ct file: Permission denied)

这明显是一个权限问题,查看validate_password.so文件:

-rwxr-xr-x 1 root root    44205 Sep 27 16:44 validate_password.so

其它用户有读的权限,这就没道理了,怎么报权限错误呢。

之后曲折的查找了一会,发现它前面有个目录/me 的权限是-rwx------ 1 root root ,也就是只有root账号权限的用户可以访问me目录下的文件。

好,问题找到了,修改权限为-rwxr-xr-x 1 root root 这样就可以了。

4.写在最后

        最后说一下我的误解,之前一直认为,一个文件只要有被另一个用户访问的权限就行,大可以一个文件权限设成777,根本不需要考虑所在的目录权限。而实际情况是,首先需要有访问目录的权限,之后再考虑文件权限。这就好像一间房子是目录,里面有很多人是文件,即使房间里有你的人,你也需要先拿到房子的钥匙才能联系上你的人。

        这次问题看来之前理解一直有误,只是之前一直侥幸逃脱,当自认为是正确的问题别一次次错误的验证为正确时,就会自认为是真理。多么痛的领悟!

posted @ 2020-03-02 11:08  南帝001  阅读(785)  评论(0编辑  收藏  举报