介绍
今天公司的一位同事突然找到我,说使用su oracle命令切换用户报错了,就让我协助看看。
我这边不信邪又测试了下,的确看到报错提示权限不足。
解
从报错上来看,是切换用户时权限不足导致的。虽然问题原因找到了,但还没找到是哪个文件引起的,接下来就开始找是哪个文件造成的问题。
首先,我根据控制台的打印信息,初步判断是/bin/bash引起的,然后查询/bin/bash的权限。
[root@localhost ~]# ll /bin/bash
执行结果如下图所示:
从图中看到,/bin/bash文件的权限正常,root用户具有读、写和执行的权限。
看到这里我就有点疑惑了,权限既然都正确,为啥还会提示没有权限执行呢?
既然跟我的猜想不符合,那么就需要百度一下获取答案了。
查了百度后,发现引起该问题的原因还是挺多的。有些人是因为close_wait线程太多了,有些又的确是/bin/bash权限不对(和我初步猜想一致)。这些文章写的很好,但无法解决我遇到的问题。继续搜索。。。。。。经过漫长的搜索,终于发现了造成我问题的原因,先附上原文地址:
从该文章中,发现引起该问题的原因是根目录的权限出现了问题。
本来我是不相信的,因为一般情况下,不会有人去动这里的权限的,改动这里造成的影响太大了。
后来我按文章中的命令查询根目录的权限,发现罪魁祸首的确是这里。这,这,这,这怎么敢的啊,根目录都敢动?这不是嫌自己运维生涯太长了嘛!不过吐槽归吐槽,解决还是要解决的。
排查根目录权限
[root@localhost ~]# stat /
执行结果如下:
解决
知道是根目录权限不对后,我们直接给根目录增加权限即可。根目录的默认权限是(0555/dr-xr-xr-x)。
[root@localhost ~]# chmod 555 /
验证
执行完授权后,我们再次查看根目录的权限。
[root@localhost ~]# stat /
从图中看到权限已经正确,再次测试切换用户。
[root@localhost ~]# su - oracle
执行成功,该问题成功解决。
评论区