Answers:
引用man usermod
:
CAVEATS
You must make certain that the named user is not executing any
processes when this command is being executed
if the user's numerical user ID, the user's name, or the user's home
directory is being changed. usermod
checks this on Linux, but only check if the user is logged in
according to utmp on other architectures.
因此,您需要确保您要重命名的用户未登录。
另外,我注意到您不是以root身份运行此程序。要么以root身份运行它,要么以“ sudo usermod”运行。
usermod
似乎被设计破坏了。如果用户管理是在LDAP服务器中完成的,则始终可以更改用户属性,而不依赖于运行的系统。我正在使用Ansible,usermod
并且孔系统不可靠,因为更改已被登录的用户阻止
我在使用usermod时遇到了同样的问题,使用-m参数修复了该问题,该问题将主目录的内容移至新的本地化。将此选项与-d结合使用(修改用户主目录,那里有user)。
我建议看man usermod命令
请尝试以下步骤:
须藤passwd根
usermod -l newuser -d / home / newuser -m olduser
您不应更改已登录用户的用户名。相反,您应该结束所有用户的进程,断开连接,以其他用户身份登录,然后重命名。
如果似乎工作量过多,则可以热线更改:https : //medium.com/@deltazero/linux-howto-rename-currently-operating-user-f8fae62db110
它是这样的:
# your new username
newuser=dave
# root-run these all at once
sudo su -c "\
sed -i s/$USER/$newuser/g /etc/group \
&& sed -i s/$USER/$newuser/g /etc/shadow \
&& sed -i s/$USER/$newuser/g /etc/passwd \
&& mv /home/$USER/ /home/$newuser"
# exit & reconnect under new username
kill -9 23162 && sudo usermod -l TheNameIWantToChange -d /home/TheNameIWantToChange -m CurrentName