如何更改我自己的用户 ID?

ænd*_*rük 62 user-management

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

如果需要其他步骤以避免破坏典型桌面安装的登录过程,则应将这些步骤作为答案的一部分。

dde*_*eke 59

你可以改变它/etc/passwd/etc/group/etc/shadow或你使用上面的首选possibilties之一。但是 - 最重要的是 - 您必须更改属于该用户的所有文件的所有权。

例如,如果旧用户 ID 为 1000,新用户 ID 为 5000:

find / -uid 1000 -exec chown -h 5000 {} +
Run Code Online (Sandbox Code Playgroud)

组 ID 也是如此(如果您也更改它)。

find / -gid 1000 -exec chgrp -h 5000 {} +
Run Code Online (Sandbox Code Playgroud)

  • 这是非常重要的一点。如果您遵循其他答案中给出的技术而不这样做,很多事情都会失败。 (8认同)
  • 我刚刚了解到应该更好地使用 `sudo find / -xdev -uid 1000 -exec chown 5000 '{}' \+`,否则会包含已安装的数据(在 `/mnt` 中,这可能是不需要的)和更好的文件不要乱用`/proc` 和`/dev`。见[这篇文章](http://unix.stackexchange.com/a/28767/6958) (4认同)
  • 这不是一个好主意。鉴于 /home 位于不同的文件系统上,您甚至不会更改自己文件的所有权。 (2认同)
  • 您还想更改`/media/<USERNAME>`上的ACL权限,如[此评论](https://askubuntu.com/questions/16700/how-can-i-change-my-own-user-id #评论749398_167400)。 (2认同)

Ale*_* P. 34

问题是,正如您提到的,您无法在登录会话时更改用户的 UID。您必须使用另一个用户帐户才能继续。

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

您可以启动进入恢复模式(这是一个在您启动计算机时出现的选项,或者在 BIOS 消息完成后按住 Shift 键;ESC在运行 OEM-Ubuntu 的戴尔机器上使用)。这将使您登录到根会话。登录 root而不是您通常的用户帐户,您将能够修改您的 UID。

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

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

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

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

  • 不适用于 Ubuntu 14.04。执行 `usermod -u NEW_UID your_username` 和 `find / -uid 1000 -exec chown -h 5000 '{}' \+` 后,重新启动将导致仅猜测会话的 GUI 登录。 (2认同)

l0b*_*0b0 29

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

Debian/Ubuntu 的策略是,如果有一个jim带有 user ID 的用户1001,那么也会有一个jim带有 group ID 的组1001。此解决方案还会更新这些组 ID。

  1. 启用根帐户

    sudo passwd root
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)
  5. 登出
  6. 登录为 $username
  7. 禁用 root 帐户

    sudo passwd -dl root
    
    Run Code Online (Sandbox Code Playgroud)

  • 在 Ubuntu 14.04 和 14.10 中,您还需要修复 /media 中的扩展 ACL 权限,否则自动挂载(在 Nautilus/Nemo 中)会随着旧 UID 的保留而中断。`sudo setfacl -m "u:<NEWUID>:rx" /media/<USERNAME> sudo setfacl -x "u:<OLDUID>" /media/<USERNAME>` (4认同)
  • 这应该比重新启动更快,这就是我发布它的原因。 (3认同)
  • 对我来说,启用 root 帐户听起来比使用恢复模式更容易(而且不那么可怕)。 (2认同)

Lui*_*ado 11

如果您转到控制台并输入:usermod --help您将得到以下参数之一:

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

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

usermod -u 1000 cyrex

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

如果您想在视觉上做到这一点,请执行以下操作:

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

从列表中选择您自己,然后单击高级设置

UID 位于该窗口的末尾。

  • 我尝试了您建议的图形方法,但有一条消息说“用户登录时无法更改用户 ID”。你测试过这个方法吗? (2认同)
  • 呵呵,原来如此。我尝试使用另一个帐户。您需要通过 root 或任何其他管理员帐户登录。然后做图形方式。对不起。 (2认同)