su: failed to execute /bin/bash: Resource temporarily unavailable

文章讲述了在Linux系统中,当从root用户切换到普通用户如oracle时遇到资源暂时不可用或无子进程错误,解决方案是调整/etc/security/limits.d/20-nproc.conf和/etc/security/limits.conf配置文件,增大nproc和nofile的限制值,以允许用户启动更多进程和文件句柄。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、问题描述

Linux 从root用户切换为普通用户时报错:

--从root切换到oracle用户
# su - oracle
Last login: Thu Jun 29 16:1:44 CST 2023 on pts/0
su: failed to execute /bin/bash: Resource temporarily unavailable

或出现如下报错:

# su - oracle
last login: Thu Jun 29 16:13:15 CST 223 on pts/1
bash: fork: retry: No child processes
bash: fork: retry: No child processes
retry: No child processesbash: fork:
bash: fork: retry: No child processes
bash:fork:Resource temporarily unavailable

二、处理方法

1.修改配置文件 vi /etc/security/limits.d/20-nproc.conf

修改前:

# Default limit for number of user's processes to prevent#accidental fork bombs.
# See rhbz #432903 for reasoning.

*      soft   nproc   4096
root   soft   nproc   unlimited

修改后:

# Default limit for number of user's processes to prevent#accidental fork bombs.
# See rhbz #432903 for reasoning.

*      soft   nproc   4096
root   soft   nproc   unlimited

2.修改配置文件 /etc/security/limits.conf

修改前:

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1924
oracle hard nofile 65536
oracle soft stack 1024
0oracle hard stack 32768

修改后:

root soft nofile 65535
root hard nofile 65535
oracle soft nproc 65535
oracle hard nproc 65535
oracle soft nofile 65535
oracle hard nofile 65536
oracle soft stack 10240
0oracle hard stack 32768

配置文件修改完成后,再次尝试切换至普通用户。


参考文章:
https://www.cnblogs.com/hsia2017/p/9173543.html
https://www.cnblogs.com/zhaojingyu/p/10929712.html
https://www.xiongtianqi.cn/thread-312313-1-1.html

### 回答1: 这个错误信息提示"b'su: failed to execute /bin/bash: permission denied'",意思是b用户在尝试执行命令"su"切换到超级用户时,却被提示权限不足,无法执行/bin/bash命令。可能是b用户没有足够的权限来执行这个命令,需要对其进行相应的权限设置。 ### 回答2: 这个错误提示表示在尝试执行/bin/bash时权限被拒绝。一般来说,这可能是由于以下原因之一导致的: 1. 权限不足:当前用户没有足够的权限来执行/bin/bash。这种情况可能会出现在普通用户尝试以root用户身份执行命令时。 2. 标识符异常:文件系统中/bin/bash的所有权或权限可能已被更改或损坏。这可能是由于系统损坏、病毒或恶意软件感染等原因导致的。 3. 系统问题:系统可能面临其他问题,例如磁盘空间不足、内存问题或文件系统错误等。 为了解决这个问题,可能需要采取以下步骤: 1. 以root用户身份运行命令:如果当前用户没有足够的权限来执行/bin/bash,请以root用户身份尝试运行该命令。这可以通过使用“sudo”命令或以root用户登录系统来完成。 2. 恢复文件系统:如果文件系统中/bin/bash的所有权或权限已更改或受损,请尝试恢复文件系统。这可以通过使用“chown”和“chmod”命令来完成。 3. 执行系统维护:如果存在其他系统问题,请执行系统维护。这可以包括检查磁盘空间、内存使用情况和文件系统问题。可以使用cron来定期执行这些操作。 总之,su: failed to execute /bin/bash: permission denied 错误通常是由权限不足、文件系统损坏或其他系统问题导致的。通过以root用户身份运行命令,恢复文件系统和执行系统维护等措施,可以帮助解决这个问题。 ### 回答3: 这个错误提示意味着当前用户无法访问或执行bash二进制文件。这个问题可能有多种可能的原因,下面是一些可能的解决方法。 1. 检查文件权限:可能是因为bash权限设置不正确,导致当前用户无法执行该文件,可以使用chmod命令更改文件权限。例如,使用"sudo chmod +x /bin/bash"命令将二进制文件的权限更改为可执行。 2. 检查用户权限:当前用户可能没有执行bash的权限。可以使用sudo或su命令以root用户身份执行命令。如果没有root权限,可以请求管理员或超级用户授权。 3. 查找备份副本:如果二进制文件已被破坏或损坏,则可能需要重新安装bash或使用系统的备份副本。可以通过在终端中输入"which bash"或"whereis bash"命令来查找系统中的bash副本。 4. 更新软件包:如果出现这种问题,可能是由于bash版本较旧或软件包配置不正确导致的。可以通过更新软件包或升级bash解决问题。 总之,su: failed to execute /bin/bash: permission denied错误通常是由于文件权限或用户身份不正确引起的。通过检查相应的权限和使用正确的用户身份,可以解决这个问题。如果以上步骤都无法解决问题,则可能需要重新安装操作系统或与系统管理员联系。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值