除了以 root 身份运行外,我没有做任何更改。例如,password <user>
以 root 身份重新登录并运行后,我返回以下内容<user>
su pkg install rsync mtr
su([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
要求输入目标用户的密码。有关差异的更多信息:这里。