以 root 用户身份通过​​ passwd 编辑密码后,命令 su 将返回无提示验证

以 root 用户身份通过​​ passwd 编辑密码后,命令 su 将返回无提示验证

除了以 root 身份运行外,我没有做任何更改。例如,password <user>以 root 身份重新登录并运行后,我返回以下内容<user>su pkg install rsync mtrsu([39208]): BAD SU <user> to pkg on /dev/tty0
su: sorry

运行id表明我的用户仍在用户组wheel中。

另外:只需运行su没有命令的简单程序即可返回没有问题的 root shell。

/etc/passwd :这是关于我的用户的行

<username redacted>: *:1002:0:curnc:/home/<user>:/usr/local/bin/bash

curnc 是什么?我不记得曾经将我的用户与这样的引用关联起来。

我不知道该如何解决这个问题。

答案1

什么是curnc

man 5 passwd表示第五个字段是“用户名或评论字段”。它旨在包含有关用户的可读信息。这对问题并不重要。


su不是sudo。第一个操作数(参见) 被解释为您想要成为的用户。

su [options] [username]

su命令用于在登录会话期间成为另一个用户。无需用户名即可调用,su默认成为超级用户。[…]

用户名后可以添加其他参数,在这种情况下,这些参数将提供给用户登录 shell。特别是,的参数-c将导致大多数命令解释器将下一个参数视为命令。该命令将由为目标用户指定的 shell 执行/etc/passwd

来源

您的命令

su pkg install rsync mtr

表示“将用户更改为pkg并运行/login/shell/of/this/user install rsync mtr”。可能不pkg存在名为 的用户,因此BAD SU <user> to pkg。注意<user> to pkg对应于命令尝试更改<user>为 的事实pkg

这本来就不是你想要的。我想你想要

su -c 'pkg install rsync mtr'

(致谢此评论,尽管缺乏解释)。


语法sudo可能更像您尝试过的:

sudo pkg install rsync mtr

最明显的区别是sudo要求输入当前用户的密码(除非另有配置);su要求输入目标用户的密码。有关差异的更多信息:这里

相关内容