一段时间前,当我安装Ubuntu时,我选择了一个相当愚蠢的用户名作为我的账户,我不想再使用它了。
我如何更改这个用户名(包括我的主目录和终端中的名称),而不会丢失应用程序的设置? 我如何保留各种身份验证(例如电子邮件、SSH、GPG等)的权限和密钥? 如果我更改了用户名,可能会丢失哪些设置?
我如何更改这个用户名(包括我的主目录和终端中的名称),而不会丢失应用程序的设置? 我如何保留各种身份验证(例如电子邮件、SSH、GPG等)的权限和密钥? 如果我更改了用户名,可能会丢失哪些设置?
sudo usermod -l newUsername oldUsername
sudo groupmod -n newUsername oldUsername
sudo usermod -d /home/newHomeDir -m newUsername
在你更改了用户名之后。
例如,你可以注销,切换到控制台(Ctrl+Alt+F1),然后使用sudo su -
命令成为真正的root用户(而不是sudo -s
,其中$HOME仍然是/home/yourname)。也许你还需要先终止一些仍在运行的该用户的进程。要这样做,输入ps -u username
,查找匹配的PID并通过kill PID-number
命令将它们终止。
更新:正如arrange提到的,一些文件可能引用了你的旧家目录。你可以保留一个符号链接以实现向后兼容性,例如:ln -s /home/newname /home/oldname
,或者你可以使用sed -i.bak 's/*oldname*/*newname*/g' *list of files*
命令更改文件内容。它会为每个文件创建一个带有.bak扩展名的备份。
sudo adduser temporary sudo
exit
退出登录。exit
(直到您看到登录提示符)。grep -IRFl /home/username ~
的命令,你会看到有多少个与你的主目录相关的引用被存储在那里。 - arrange/home/.ecryptfs/oldusername/.ecryptfs/Private.mnt
文件,将其指向你的新家目录,否则你将无法通过Unity登录。 - raphaelsudo usermod -d /home/edge -m edge
的输出为:usermod: 无法在 /home/edge 中重命名目录 /home/empedokles
,即第四步无法执行。 - empedoklessudo nano /etc/sudoers
命令,然后编辑/添加您的新用户,如果您希望他能够使用sudo权限。 - JTCnano
编辑 sudoers
文件。请始终使用 visudo
。 - styrofoam flycd /tmp; exec sudo -i
命令,这样你当前的shell会被sudo
进程所替代,3. 终止所有以你的用户身份运行的进程(pkill -u $SUDO_USER
)。这样应该能够清除使用你的用户/主目录的所有内容。 - murusudo su -
,sudo usermod -l new old
-> usermod: user old is currently used by process 123
其中123 = bash。如果你使用kill -9 123
杀掉它,系统会退出并返回登录界面。也就是说,非root用户无法更改自己的用户名。 - Juha Untinengroupmod -n 新用户组 旧用户组
。 - Aquarius Powersudo passwd root
exit
usermod -l <newname> -d /home/<newname> -m <oldname>
usermod -c "newfullname" <newname>
“newfullname”是/etc/passwd
中的第五列,可能是“First Last”,例如。
groupmod -n <newgroup> <oldgroup>
passwd -l root
ecryptfs-recover-private
挂载您的加密目录,并编辑<mountpoint>/.ecryptfs/Private.mnt
以反映您的新主文件夹。exit
usermod -l
命令后,你收到了user <oldname> is currently used by process <processno>
的提示,那么你可以通过使用ps aux | grep <processno>
命令来查找该进程(可能是一个守护进程或者tmux/screen)。你可能希望优雅地停止该进程,否则你可以使用kill <processno>
命令。 - RedPixelpasswd -l root
),为什么需要这样做呢? - hello_there_andyubuntu 16.04 LTS
中,在第6步killall -u <old_user>
之前,需要终止前一个用户的所有作业,并在第7步sudo mv /home/<old_user> /home/<new_user>
之后重命名用户目录。 - Eric Sunsudo nano /etc/ssh/sshd_config
命令,取消注释PermitRootLogin并将其值更改为yes。然后重启SSH服务,执行sudo systemctl restart sshd
命令。在使用root用户修改完毕后,请将所有设置恢复到原始状态,即锁定root账户并禁用远程root登录。 - TimDCtrl-Alt-F3
来进入终端。 - joshpmount -o remount,rw /
usermod -l <newname> -d /home/<newname> -m <oldname>
groupmod -n <newgroup> <oldgroup>
usermod -l <newname> -d /home/<newname> -m <oldname>
命令时,会出现错误提示usermod: user oldusername is currently used by process 3170
。即使我杀掉该进程,仍然会出现相同的错误。我正在使用Ubuntu 13.10操作系统。 - Waqasusermod: can't change /etc/password
时,只需运行以下命令:mount -o remount,rw /
usermod -l <newname> -d /home/<newname> -m <oldname>
usermod -l <newname> -d /home/<newname> -m <oldname>
命令时,你会得到useradd: can't change /etc/passwd
的错误提示信息,为了避免这个问题,只需在上述命令前添加sudo --
即可。sudo -- usermod -l <newname> -d /home/<newname> -m <oldname>
和
sudo -- groupmod -n <newgroup> <oldgroup>
这里@karthick87给出的答案完全有效,但为了安全起见并避免所有故障,我会采取以下措施:
sudo vim /etc/passwd
user:x:500:501:username:home/user:/bin/bash
newuser:x:500:501:username:home/user:/bin/bash
然后如果你是以root身份登录的,就直接登录;而如果你已经以用户身份登录了,就注销然后重新登录。
当然,你还需要修复/etc/shadow和/etc/group文件,以确保系统正常运行。感谢@JohanBoulé
注意:使用这种方法时要小心,以免破坏系统。
注意:这种方法通用,不仅适用于Ubuntu,对于Ubuntu来说它会起作用,但谷歌搜索也会显示出来,甚至对非Ubuntu搜索,例如嵌入式Linux。
usermod
命令之前,我尝试过这种方法,但用户的密码不再被接受。 - Ben Voigtusermod
命令,你的安装可能出错了,因为它是passwd
软件包的一部分,而且是必需的。 - Auspexusermod
并不是魔法,也不是晦涩的,它是在Ubuntu上进行这种更改的正确方式。 - Auspexusermod
,而且usermod
是在Ubuntu系统中正确的方法。Ubuntu用户不需要被告知可能破坏他们系统的方法。而且建议使用vim
同样是错误的... - Auspex