我尝试过在root用户中使用oracle,但是即使我创建了一个外部标识的oracle数据库用户ops$root,我仍然会遇到失败的登录错误。所以当我运行audit session whenever not successful时,我看到了一堆ops$daemon用户连接
在运行create user ops$daemon identified externally之后,我成功地以os用户root的身份进行连接,为什么?
发布于 2017-10-16 08:47:44
С本体甲骨文支持站点。Oracle t e:9 1 2 6 0.1 - UNIX: CONNECT / as根在ORA-01017中失败,并成功地与其他用户一起工作
sql*net驱动程序将将“root”用户转换为'daemon‘,因为出于安全原因,代码显式禁止在root id下运行影子进程。
[root@db-01 ~]#strace -fo /tmp/sqlplus.out sqlplus /
SQL*Plus: Release 11.2.0.3.0 Production on Tue Oct 17 11:21:28 2017
Copyright (c) 1982, 2011, Oracle. All rights reserved.
[root@db-01 ~]# grep setuid /tmp/sqlplus.out
18432 setuid(2) = 0
18433 setuid(2) = 0
18434 setuid(2) = 0
[root@db-01 ~]# grep getuid /tmp/sqlplus.out
18431 getuid() = 0
18431 getuid() = 0
18431 getuid() = 0
18431 getuid() = 0
18431 getuid() = 0
18432 getuid() = 2
18432 getuid() = 2
18431 getuid() = 0
18433 getuid() = 2
18433 getuid() = 2
18431 getuid() = 0
18434 getuid() = 2
18434 getuid() = 2前5个函数getuid()调用返回"0",但最后一个调用返回"2“。"2“是”守护进程“用户的id。
[root@db-01 ~]# grep daemon /etc/passwd
daemon:x:2:2:daemon:/sbin:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
[root@db-01 ~]# id daemon
uid=2(daemon) gid=2(daemon) groups=2(daemon),1(bin),4(adm),7(lp)在最后一次getuid()函数调用之后,应该会看到实际的Oracle错误。由于getuid()函数的返回值在使用os身份验证以root身份登录sqlplus时发生变化,因此返回ORA-1017错误。
这不是Oracle错误:根用户是UNIX/Linux上的特例。
https://stackoverflow.com/questions/46762169
复制相似问题