【疑难杂症】Linux系统root用户下执行su登录其他用户失败

问题

在Linux系统上,从root用户切换到oracle用户时报错 su: cannot open session: Permission denied 如下:

image

分析

定位原因1

  1. 分析登录日志,可以看到时登录的时候limit中的 memlock 设置失败,导致用户登录失败:

image

  1. limit配置表示限制该用户最大可以打开的文件数量、会话数量、内存等,使用 ulimit -a命令查看当前的配置:

image

  1. 从上图可以看到,即使我现在使用的是root用户,但是最大的 memlock也只有64 字节,并且,尝试设置 memlock失败了

image

  1. 之所以设置失败,是因为我当前的服务器不是真实的物理机,而是docker,所以没有权限

image

定位原因2

  1. 确定是 limit 的配置导致的登录失败,按照百度的解决方案,尝试修改 /etc/security/limits.conf 后重新登录,结果还是登录失败,控制台和日志报错与之前完全一样

image

  1. 经过一番摸索之后发现:在系统的 /etc/security/limits.d/ 下的配置文件同样也是用来配置limit,并且 优先等级 高于 /etc/security/limits.conf

image

  1. 而且在这里,可以看到一个安装 oracle 软件自动生成的conf文件

image

修改完该文件之后,终于可以登录用户

image

结论

  • 登录失败确实是因为 limit.conf 的配置太小导致
  • /etc/security/limits.d/ 下的配置文件的优先级高于 /etc/security/limits.conf
  • docker服务器下,即便是使用root用户,部分配置项也无法修改,比如这里的 ulimit -l 66
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值