问题解决:centos7 root su "no permission to execute the command"

问题场景

在客户提供的服务器上面,使用root用户,想跳转到其他用户,比如su - test。会提示以下问题:

no permission to execute the command

在这里插入图片描述

问题环境

软件版本
Centos7

问题原因

一般有以下几种原因会导致这种情况:
在这里插入图片描述

没有文件的执行权限

我们使用命令ls -l $file$file是我们要执行的脚本。如下图所示
在这里插入图片描述
从上图可以看到,该文件是有执行权限的,而且属于root群组的。当然,我们这里不是属于这种情况。那么我们可以尝试一下,接下来请来看看:

尝试

  1. 新建test.sh,并编写简单语句,如下:

    #!/bin/bash
    echo test
    
  2. 使用命令sh test.sh,结果如下:
    在这里插入图片描述

  3. 是不是很惊讶,是可以执行的?怎么不是我之前所说的呢???
    在这里插入图片描述
    别着急,我们可以执行以下命令./test.sh,结果如下:
    在这里插入图片描述

  4. 虽然直接用sh $file也可以执行脚本,但是我们希望执行脚本是直接脚本名就可以了。所以按照下面步骤,先将文件权限设置为755,然后再执行。从下图可以看到,是可以执行的。
    在这里插入图片描述
    在这里插入图片描述

被系统的安全模块所限制

一般系统安装的默认情况下,所有用户都默认可以执行su命令的。但是这就有个隐患,假如用户反复尝试其他用户(比如root)的登录密码,而这存在一定的安全风险的。所以,一般对于一些程序,都会事先进行身份和权限的验证,判断是否可以通过,通过才能执行,比如su等。而系统一般会引入PAM(Pluggable Authentication Modules)来进行身份或权限的验证。详细的信息可以百度一下PAM,或者点击本文最下面的参考链接
在这里插入图片描述

解决方案

修改执行文件的权限

如果是文件未有执行权限,可以使用命令chmod 755 $file进行赋权。可以参考我上个环节的尝试步骤所写。

使用sudo命令进行提权使用

我们可以使用sudo命令进行提权执行,如使用命令:

sudo su - test

从我们下图的两个对比可以看出,使用sudo提权成功。
在这里插入图片描述
在这里插入图片描述

结果

在本文中,主要是使用了sudo提权解决了权限问题。
在这里插入图片描述

总结

针对权限不足,本文提出了两种解决途径。当然,毕竟不是专职运维,只是在遇到问题的过程中,记录下了问题,并去尝试解决。所以,应该有更多的解决问题的方式。这就得靠各位读者了。如果有更好的解决方案,可以留言告知,谢谢!
在这里插入图片描述

参考链接

Linux下PAM模块学习总结
CentOS 7系统安全之用户切换与提权

随缘求赞

如果我的文章对大家产生了帮忙,可以在文章底部点个赞或者收藏;
如果有好的讨论,可以留言;
如果想继续查看我以后的文章,可以左上角点击关注
在这里插入图片描述

posted on   枫夜求索阁  阅读(350)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示