问题
在Linux系统上,从root用户切换到oracle用户时报错 su: cannot open session: Permission denied
如下:
分析
定位原因1
- 分析登录日志,可以看到时登录的时候limit中的
memlock
设置失败,导致用户登录失败:
- limit配置表示限制该用户最大可以打开的文件数量、会话数量、内存等,使用
ulimit -a
命令查看当前的配置:
- 从上图可以看到,即使我现在使用的是root用户,但是最大的
memlock
也只有64 字节,并且,尝试设置memlock
失败了
- 之所以设置失败,是因为我当前的服务器不是真实的物理机,而是docker,所以没有权限
定位原因2
- 确定是
limit
的配置导致的登录失败,按照百度的解决方案,尝试修改/etc/security/limits.conf
后重新登录,结果还是登录失败,控制台和日志报错与之前完全一样
- 经过一番摸索之后发现:在系统的
/etc/security/limits.d/
下的配置文件同样也是用来配置limit,并且 优先等级 高于/etc/security/limits.conf
- 而且在这里,可以看到一个安装 oracle 软件自动生成的conf文件
修改完该文件之后,终于可以登录用户文章来源:https://www.toymoban.com/news/detail-452461.html
文章来源地址https://www.toymoban.com/news/detail-452461.html
结论
- 登录失败确实是因为
limit.conf
的配置太小导致 -
/etc/security/limits.d/
下的配置文件的优先级高于/etc/security/limits.conf
- docker服务器下,即便是使用root用户,部分配置项也无法修改,比如这里的
ulimit -l 66
到了这里,关于Linux系统root下执行su登录其他用户失败的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!