AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 16700
Accepted
ændrük
ændrük
Asked: 2010-12-09 16:34:50 +0800 CST2010-12-09 16:34:50 +0800 CST 2010-12-09 16:34:50 +0800 CST

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

  • 772

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

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

user-management
  • 9 9 个回答
  • 149333 Views

9 个回答

  • Voted
  1. ddeimeke
    2010-12-09T22:08:58+08:002010-12-09T22:08:58+08:00

    您可以在 中更改它/etc/passwd,/etc/group或者/etc/shadow使用上述首选方法之一。但是 - 最重要的是 - 您必须更改属于用户的所有文件的所有权。

    例如,如果旧用户 id 是 1000,新用户 id 是 5000:

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

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

    find / -gid 1000 -exec chgrp -h 5000 {} +
    
    • 60
  2. Best Answer
    Alexandre P.
    2010-12-10T18:34:23+08:002010-12-10T18:34:23+08:00

    问题是,就像您提到的那样,您无法在用户登录会话时更改用户的 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),以便您可以在正常模式下启动。
    • 36
  3. l0b0
    2012-07-25T00:50:03+08:002012-07-25T00:50:03+08:00

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

    Debian/Ubuntu 的策略是,如果有jim用户 ID的用户1001,也有一个组jimID的组1001。此解决方案还会更新这些组 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
    7. 禁用根帐户:

      sudo passwd -dl root
      
    • 32
  4. Luis Alvarado
    2010-12-09T17:14:32+08:002010-12-09T17:14:32+08:00

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

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

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

    usermod -u 1000 cyrex

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

    如果你想直观地做到这一点,那么这样做:

    去

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

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

    UID 位于该窗口的末尾。

    • 12
  5. karthick87
    2010-12-09T21:10:53+08:002010-12-09T21:10:53+08:00
    • 转到系统>>管理>>用户和组

    替代文字

    • 单击高级设置并转到底部的高级选项卡,您将看到您的用户 ID。
    • 更改它并单击确定。
      替代文字
    • 2
  6. skidzo
    2011-07-13T03:17:35+08:002011-07-13T03:17:35+08:00

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

    从另一个用户更改不适用于默认用户 1000。

    您必须手动执行此操作-我的经验

    • 0
  7. qed
    2013-11-30T13:04:32+08:002013-11-30T13:04:32+08:00

    首先,您需要以 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 -dl root
    
    • 0
  8. KalenGi
    2017-11-28T10:48:26+08:002017-11-28T10:48:26+08:00

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

    1. 我没有注销,而是做了sudo su
    2. 我没碰/etc/shadow

    我在其他答案中看到过,您应该启动以恢复或以root. 我的是全新​​的 Ubuntu 14 安装,所以我愿意测试它是否可以在不以root. 我也在通过 SSH 在 EC2 实例上执行此操作。

    • 0
  9. bit15
    2022-04-14T09:41:21+08:002022-04-14T09:41:21+08:00

    总结一下,至少从 Ubuntu 20.04 开始需要什么(为了保持能够使用 Automounting,需要更改扩展 ACL 权限):

    我想将用户 id 和组 id 从默认 (uid=) 1000(和 gid=1000)更改为(uid=) 5000(和 gid=5000),以便访问使用 ext4 或类似功能系统格式化的移动驱动器使用 uid 和 gid)都没有问题,如果文件和档案具有相同的用户 id 或组 id 5000,则无论另一台计算机或操作系统是否向此写入数据(如果所有自己的用户都有,这可以在计算机之间轻松共享文件相同的uid和gid)。

    首先,我创建了一个额外的用户,以新用户身份登录,在终端中更改sudo su -为 root,然后我使用了命令

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

    用于更改用户 ID 和

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

    用于更改组 ID。(注意:这会更改所有已安装设备的权限。如果不需要,请卸载所有不需要的设备或将部分中的命令缩小find /到find /home/<user>或其他。)

    在 Fedora 中这有效,但在 Ubuntu 中却完全没有。例如,自动挂载不起作用。然后我读到一个必须修复扩展的 ACL 权限,否则自动安装中断之类的事情(如果没有用户已经拥有此 UID 和 GID,可能不会出现 ACL 权限的问题,但在我的情况下,这是问题所在)。自 Ubuntu 14.04 和 14.10 起,似乎需要更改扩展 ACL 权限。

    这些命令可以再次自动挂载:

    sudo setfacl -m "u:<NEWUID>:r-x" /media/<USERNAME>
    

    ,它将UID权限设置为'media'中自己的文件夹和

    sudo setfacl -x "u:<OLDUID>" /media/<USERNAME>
    

    ,这会删除旧 UID 对自己的用户文件夹的权限(是的,再次启动自动挂载工作不需要此命令,但它确保具有旧 UID 的另一个用户也无法访问媒体)。

    顺便说一句:一位用户说,自 Ubuntu 18.04 以来,usermod 已经更改了主文件夹中的所有权限,但对于自动挂载来说,至少在 Ubuntu 20.04.4 之前这似乎还不够。

    大约一个月以来我从哪里得到它并对其进行了实际测试的信息来源: 答案包含我解释的所有内容,但有点混乱,只有一个建议来修复扩展 ACL 权限以保持能够自动安装。

    PS:如果有人问我为什么没有将这个问题作为解决方案发布,我不得不说,我在这个网站上没有足够的“业力”来做这件事。所以请投票给这个答案。

    • 0

相关问题

  • 有什么方法可以在 Ubuntu 中使用 ubuntu one、dropbox、rsync 等获取漫游配置文件?

  • 如何使用命令行将用户添加为新的 sudoer?

  • 用户帐户搞砸了。如何恢复功能?

  • 如何将用户添加到“sudo”组?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何安装 .run 文件?

    • 7 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    如何获得 CPU 温度?

    • 21 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Marko Smith

    你如何重新启动Apache?

    • 13 个回答
  • Marko Smith

    如何卸载软件?

    • 11 个回答
  • Marko Smith

    如何删除 PPA?

    • 26 个回答
  • Martin Hope
    NES 如何启用或禁用服务? 2010-12-30 13:03:32 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    Olivier Lalonde 如何在结束 ssh 会话后保持进程运行? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B 如何使用命令行将用户添加为新的 sudoer? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans 如何删除旧内核版本以清理启动菜单? 2010-08-21 19:37:01 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve