[Ubuntu 16.04.7、ISPConfig、Jailkit]
我需要更改新创建的(被监禁的)用户的 UID(通过 ISPConfig 的Add Shell User
功能),以与同一虚拟主机上的其他用户消除歧义。所以我确定了下一个可用的uid
并执行了usermod -u xxxx UserName
。
我检查了用户的主目录,用户列中显示的不是用户名,而是uid
显示的。起初我并没有对这个结果想太多。
当我以新用户身份登录时,我发现,虽然其他一切正常,但提示的用户名已设置为I have no name!
。由于我不需要/不想更改用户名(也没有),因此我对这个结果感到惊讶。当我id
为该用户执行操作时,我得到了(请注意,用户的名称未显示在其 uid 旁边):
uid=5016 gid=5007(groupName) groups=5007(groupName)
用户肯定在/etc/passwd
文件中。
我搜索了所有地方,但还是没有找到任何可以解决这个问题的方法。我该如何解决这个问题?
答案1
您提到这是针对被监禁的用户的。因此,您需要更改监狱内部和外部的 uid/用户名映射。
您usermod
处理了监狱外的主要编辑器,但要编辑监狱内的编辑器,您将必须使用普通编辑器(您不太可能usermod
在监狱内拥有命令,因此您不能chroot usermod...
)。该文件应具有{JailRoot}/etc/passwd
适当的 值{JailRoot}
。 UID 是第三个以冒号分隔的字段。
作为为了完整性起见的最后一步,请确保旧 UID ( {oldUID}
) 拥有的所有文件都已转换为新 UID ( {newUID}
)。显然,如果你确定不存在这样的文件这一步可以跳过
find / -user {oldUID} -exec chown {newUID} {} +