我想将环境变量ORACLE_HOME
的值设为root
,我运行命令su - oracle -c 'echo $ORACLE_HOME'
,然后shell请求我输入密码,我输入了密码用户oracle
,密码正确,但已再次询问。
[root@localhost ~]# su - oracle -c 'echo $ORACLE_HOME'
Password:
Password:
Password:
Password:
... ...
... ... again and again ... ...
然后我尝试了一个简单的命令su - oracle -c 'ls'
,仍然是同样的问题。但是,如果我只是按ENTER键而不输入任何内容,我就得到了:
su: incorrect password
DB Desktop Documents Downloads Music oradiag_oracle oraInventory Pictures Public Templates Videos
它告诉我密码不正确(我很确定我输入了正确的密码),但命令已经执行,已经过了。
我在其他Oracle服务器上尝试过此命令,该命令可以毫无问题地执行,我甚至不需要输入密码,我可以获得ORACLE_HOME
的值。
我想知道这个问题可能是什么原因。感谢。
更新1
我在其他电脑上试过这个命令,但它确实有效。 因此,我认为这可能是系统配置问题,可能整个环境未正确安装。
不过,我想弄清楚出了什么问题以及如何解决它。
答案 0 :(得分:1)
你做错了。试试su -c 'echo $ORACLE_HOME' - oracle
答案 1 :(得分:0)
我找到了系统问题的原因。
这显然是 PAM
(可插拔身份验证模块)在我的系统中的配置方式(可能是出于安全考虑)。
我通过打开文件 /etc/pam.d/su
并修改行 4
(隐式信任轮组中的所有用户)来更改它。< /p>
我不知道它对系统安全有何变化,因此请自行承担风险
也许知识渊博的人可以帮助我更好地理解这一点,但到目前为止,这是我找到的解决方案。
1 │ #%PAM-1.0
2 │ auth sufficient pam_rootok.so
3 │ # Uncomment the following line to implicitly trust users in the "wheel" group.
4 │ #auth sufficient pam_wheel.so trust use_uid
5 │ # Uncomment the following line to require a user to be in the "wheel" group.
6 │ #auth required pam_wheel.so use_uid
7 │ auth substack system-auth
8 │ auth include postlogin
9 │ account sufficient pam_succeed_if.so uid = 0 use_uid quiet
10 │ account include system-auth
11 │ password include system-auth
12 │ session include system-auth
13 │ session include postlogin
14 │ session optional pam_xauth.so
我猜这对你有帮助?我不知道这是如何工作的,除了这样做之后,我的问题消失了。