“login -qf”作为 root 会导致“登录不正确”错误

“login -qf”作为 root 会导致“登录不正确”错误

我正在尝试安装pow在 OS X 计算机上。*pow的某些组件必须以 root 身份运行,因此安装过程的一部分涉及使用sudo.问题是,此安装脚本挂起大约五分钟,然后失败并出现错误,表明它无法读取/tmp.

我进行了检测pow,并能够确定在尝试运行与以下命令等效的命令时发生挂起(我添加了一些引用和转义,因为它使用了带有参数数组的系统调用):

/usr/bin/env login -qf root /bin/sh -i -c \
    'exec env > \'/tmp/pow.6854.1418720624398.37948\''

目的似乎是读取用户的环境变量;要么node.js(pow编写的)不提供对环境变量的直接访问,要么他们想查看环境是什么应该就像一个干净的登录 shell 一样。

现在,当我在根终端中测试此命令时,挂起的原因变得显而易见:

Brents-MacBook-Pro:~ root# '/usr/bin/env' 'login' '-qf' 'root' '/bin/sh' '-i' '-c' 'exec env > /tmp/pow.6854.1418720624398.37948'
Login incorrect
login: 
login: Login timed out after 300 seconds

显然由于某种原因,login(1)不喜欢我尝试以 root 身份重新登录,因此它会提示输入凭据。pow并不期望它需要与 交互login,因此它只是坐在那里什么也不做,直到login最终超时。

我不明白的是“某种原因”部分。login -qf root当你已经 root 时为什么会失败?联机login(1)帮助页对该选项的介绍-f如下:

此选项只能由超级用户或已登录的用户以自己的身份登录时使用。

好吧,在这种情况下,超级用户要求以自己的身份登录,所以两个都该条件的部分内容为真。为什么这会失败?

* 我在这里发帖而不是在 Ask Different 上发帖,因为这似乎是 Unix 子系统问题。

相关内容