![SSH 配置: chown username:group: 说无效用户](https://linux22.com/image/11087/SSH%20%E9%85%8D%E7%BD%AE%EF%BC%9A%20chown%20username%3Agroup%3A%20%E8%AF%B4%E6%97%A0%E6%95%88%E7%94%A8%E6%88%B7.png)
我的Ubuntu16.04.4服务器的用户名:graycodes
错误输出:
chown: invalid user: 'vagrant:vagrant'
我正在为 OpenSSH 设置文件权限。我想要的是将我的用户名保留为格雷码,并使用此用户名代替用户名 vagrant 来定义权限。
chown -R vagrant:vagrant .ssh
我理解它是这样写的:
chown -R username:group file name
我也首先尝试过:
chown -R graycodes:vagrant .ssh
但它不起作用。我别无选择,只能将我的服务器用户名设置为 vagrant 吗?
我相信这可能有助于将“graycodes”添加到“vagrant”组中。
$ groups
$ sudo usermod -a -G vagrant $USER
$ exec su -l $USER
$ groups
答案1
有一些事情需要考虑,我希望我能弥补你问题中的一些漏洞。
首先,当您使用 时chown
,您尝试将实体分配给的用户和组应该存在。如果没有,那么您将收到错误。所以首先要确保它确实存在。
其次,要使用chown
,您需要一些提升的能力。您不能自己将文件等的所有权作为普通用户转移给另一个用户。确保您知道这意味着什么并且这就是您想要的。
第三,确保你明白你想要做什么。chown
将一个或多个文件系统实体的所有权更改为您指定的用户和组。
答案2
就我而言,这是因为我在容器中运行 chown,而 nscd 在主机上运行。由于容器和主机的 /etc/passwd 和用户不同,因此 chown 将失败,因为无法解析用户名。停止 nscd 守护程序问题解决后, chown 似乎使用本地 /etc/passwd 文件。
来自手册页https://linux.die.net/man/8/nscd, 获取名称 (https://man7.org/linux/man-pages/man3/getgrnam.3.html) 由 chown (https://github.com/coreutils/gnulib/blob/fcdf335e093e245e384874254ec897c97430ccf2/lib/userspec.c#L202) 将首先调用 nscd。