问题现象
使用su命令切换用户时,提示以下错误。
su: faild to execute /bin/bash: Permission denied问题原因
路径权限不足:缺少通往 /bin/bash 路径上必需的执行(x)权限。没有执行权限,无法进入相应目录,运行/bin/bash创建新的Shell会话。
解决方案
登录ECS实例。
访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。
进入目标实例详情页,单击远程连接,选择通过Workbench远程连接。根据页面提示登录,进入终端页面。
检查/bin/bash是否被锁定。
若
/bin/bash被锁定,将无法修改权限。检查扩展属性是否存在
a(仅追加)或i(不可变)。sudo lsattr /bin/bash# /bin/bash存在a属性 ----a---------e------ /bin/bash #/bin/bash存在i属性 ----i---------e------ /bin/bash #/bin/bash存在a和i属性 ----ia--------e------ /bin/bash示例表明
/bin/bash被锁定,需要修改,否则请检查并确保/bin/bash具备执行权限。移除属性。
# 如果存在 i 属性,执行此命令 sudo chattr -i /bin/bash # 如果存在 a 属性,执行此命令 sudo chattr -a /bin/bash移除后,请继续检查并修正文件系统路径权限。
检查并确保
/bin/bash具备执行权限。检查完整路径权限。
查看从根目录到
/bin/bash的每一级路径权限。sudo namei -l /bin/bashf: /bin/bash dr-xr-xr-x root root / dr-xr-xr-x root root bin -r-xr-xr-x root root bash示例为最少需要的权限配置,若输出低于以上权限请修复,否则可验证结果。
例如输出的
/权限为dr--r--r--,表示只有读权限,未满足权限最小权限配置,需要修复。权限修复。
# 修复根目录权限 sudo chmod 555 / # 修复 /bin 目录权限 sudo chmod 555 /bin # 修复 /bin/bash 文件权限 sudo chmod 755 /bin/bash
验证结果。
重新执行
su命令切换用户,确认问题已解决。
该文章对您有帮助吗?