su:尽管是 oracle 容器中的 root,但权限被拒绝

nai*_*jon 4 oracle amazon-ec2 amazon-web-services docker

基于官方的 dockerfile运行一个 oracle 容器。容器正在 EC2 实例(Amazon Linux 2)上运行,该实例是 RHEL 衍生产品,我得到:

Configuring Oracle Listener.
su: cannot open session: Permission denied
Listener configuration failed. Check log '/opt/oracle/cfgtoollogs/netca/netca_configure_out.log' for more details.
su: cannot open session: Permission denied
Run Code Online (Sandbox Code Playgroud)

容器启动于:

docker run --name=oracledb -p 1521:1521  \
-e ORACLE_SID=XE -e ORACLE_PDB=foo -e ORACLE_PWD=bar \
oracle/database:18.4.0-x
Run Code Online (Sandbox Code Playgroud)

通过更改入口点并以 root 身份进入 shell,执行su oracle确实会导致我的权限被拒绝。为什么会发生这种情况?

小智 7

我正在使用 docker 和 oraclelinux:7-slim 来安装 Oracle 数据库。安装 oracle-database-preinstall-19c 软件包后,我不再能够“su -”进入 oracle 帐户。许多人说这是因为limits.conf中的“nofile unlimited”,其他人说注释/etc/pam.d/su中的“session include system-auth”行(顺便说一句,最后一个有效)。但是,在安装该软件包之前,配置都是相同的,并且我能够执行“su - oracle”。即使我创建属于同一组“su -”的新用户也可以。所以肯定是包改变了一些东西。

经过一番调查后,我发现这些软件包在/etc/security/limits.d/中安装了“ oracle-database-preinstall-19c.conf ” ,并且该文件具有所有 oracle 限制配置。因为我们正在使用 docker,所以您必须注释以下行才能工作:

#oracle硬内存锁134217728