问题
在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文件

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

结论
- 登录失败确实是因为
limit.conf的配置太小导致 /etc/security/limits.d/下的配置文件的优先级高于/etc/security/limits.conf- docker服务器下,即便是使用root用户,部分配置项也无法修改,比如这里的
ulimit -l 66
![[GO] Gin入门](https://img-blog.csdnimg.cn/f3b1e18b6f2244c5af461ad1ac6af35d.png)
















![[python]初步练习脚本](https://img-blog.csdnimg.cn/268fecf5c30540bf82d96b47e0bfc418.png)
