如何更改自己的用户ID?

我的系统上只有一个用户。 如何更改其默认值为1000的用户ID?

如果为避免在典型的桌面安装中破坏登录过程而需要执行其他步骤,那么这些步骤应作为答案的一部分包含在内。

问题在于,就像您提到的那样,当您在会话中记录用户的UID时,您无法更改用户的UID。 您必须使用其他用户帐户才能继续。

但您不必创建新用户帐户,将其提升为管理员,注销,登录新的管理员帐户,更改主帐户的UID,注销,登录到主帐户,然后删除新的管理员用户只需更改你的UID。 ;)

您可以启动进入恢复模式 (这是启动计算机时出现的选项,或者在BIOS消息完成后立即保持转换;在运行OEM-Ubuntu的Dell计算机上使用ESC )。 这将使您登录根会话。 登录root 而不是通常的用户帐户 ,您将能够修改您的UID。

由于恢复模式仅适用于命令行界面,因此一旦登录到根会话,您将不得不:

  1. 使用BubbaJ的指令以读写模式 mount -o remount,rw / 根文件系统 : mount -o remount,rw /

  2. 使用Luis Alvarado的命令 : usermod -u NEW_UID your_username

  3. 按照ddeimeke的说明更新文件权限。
  4. 然后,重新启动计算机( reboot ),以便可以在正常模式下启动。

您可以在/etc/passwd/etc/group/etc/shadow更改它,或者使用上面的首选可能性之一。 但是 – 最重要的是 – 您必须更改属于该用户的所有文件的所有权。

例如,如果旧用户标识为1000且新标识为5000:

 find / -uid 1000 -exec chown -h 5000 {} + 

对于组ID也是如此(如果你也改变它)。

 find / -gid 1000 -exec chgrp -h 5000 {} + 

基于@AlexandreP的完整解决方案。 和@ddeimeke +官方文档。 无需重启。

Debian / Ubuntu策略是如果用户jim的用户ID为1001 ,则还有一个组ID为1001的组jim 。 此解决方案还会更新这些组ID。

  1. 启用root帐户 :

     sudo passwd root 
  2. 如果用户已登录,则注销(也在虚拟终端上)
  3. 转到VT1: Ctrl-Alt-F1
  4. 以root身份登录并使用用户名和提供的旧/新UID运行:

     # put the information we need in variables username=... old_uid=`id -u $username` # looks up current (old) uid new_uid=... # update the user ID and group ID for $username usermod -u $new_uid $username groupmod -g $new_uid $username # update the file ownerships # NB: you cannot combine the next two chowns, or files where # only the uid xor the gid matches won't be updated chown -Rhc --from=$old_uid $new_uid / # change the user IDs chown -Rhc --from=:$old_uid :$new_uid / # change the group IDs 
  5. 登出
  6. $username身份$username
  7. 禁用root帐户 :

     sudo passwd -dl root 

如果你去控制台并输入: usermod --help你会得到一个参数:

-u, – uid UID用户帐户的新UID

因此,如果您想更改用户cyrex的UID,请执行以下操作:

usermod -u 1000 cyrex

这会将cyrex的uid从之前的任何值改为1000

如果你想在视觉上做,那么这样做:

系统 – >管理 – >用户和组

从列表中选择您自己,然后单击ADVANCED SETTINGS

UID位于该窗口的末尾。

  • 转到系统>>管理>>用户和组

替代文字

  • 单击高级设置,然后转到底部的高级选项卡,您将看到您的用户ID。
  • 更改它,然后单击确定。
    替代文字

使用KDE:在“更改高级用户设置”菜单中:

从其他用户更改不适用于默认用户1000。

你必须手动完成 – 我的经验

首先,你需要以root用户身份登录,至少暂时,所以让我们做到这一点:

 sudo passwd root 

重启,ctrl + alt + f1切换到控制台,以root身份登录,执行以下操作(主目录中的所有权将自动处理):

 groupmod --gid NEWGID username usermod --uid NEWUID username 

对于您家庭目录以外的地方的文件,请执行以下操作:

 sudo chown -R username:username /path/to/files 

如果需要,删除并锁定root的passwd。 (我倾向于保留它):

 passwd -dl root 

我按照ddeimeke的说明进行了以下更改:

  1. 我没有退出,而是sudo su
  2. 我没有碰/etc/shadow

我已经看到它在其他答案中提到你应该启动恢复或以root身份登录。 我是一个新的Ubuntu 14安装,所以我愿意测试它是否可以在没有以root身份登录的情况下工作。 我也是通过SSH在EC2实例上执行此操作。