为什么`su`一直在问我密码

时间:2016-05-19 05:10:58

标签: linux oracle shell su

我想将环境变量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

我在其他电脑上试过这个命令,但它确实有效。 因此,我认为这可能是系统配置问题,可能整个环境未正确安装。

不过,我想弄清楚出了什么问题以及如何解决它。

2 个答案:

答案 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

我猜这对你有帮助?我不知道这是如何工作的,除了这样做之后,我的问题消失了。