如何更改自己的用户ID?
我的系统上只有一个用户。 如何更改其默认值为1000的用户ID?
如果为避免在典型的桌面安装中破坏登录过程而需要执行其他步骤,那么这些步骤应作为答案的一部分包含在内。
问题在于,就像您提到的那样,当您在会话中记录用户的UID时,您无法更改用户的UID。 您必须使用其他用户帐户才能继续。
但您不必创建新用户帐户,将其提升为管理员,注销,登录新的管理员帐户,更改主帐户的UID,注销,登录到主帐户,然后删除新的管理员用户只需更改你的UID。 ;)
您可以启动进入恢复模式 (这是启动计算机时出现的选项,或者在BIOS消息完成后立即保持转换;在运行OEM-Ubuntu的Dell计算机上使用ESC )。 这将使您登录根会话。 登录root 而不是通常的用户帐户 ,您将能够修改您的UID。
由于恢复模式仅适用于命令行界面,因此一旦登录到根会话,您将不得不:
-
使用BubbaJ的指令以读写模式
mount -o remount,rw /
根文件系统 :mount -o remount,rw /
。 -
使用Luis Alvarado的命令 :
usermod -u NEW_UID your_username
。 - 按照ddeimeke的说明更新文件权限。
- 然后,重新启动计算机(
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。
-
启用root帐户 :
sudo passwd root
- 如果用户已登录,则注销(也在虚拟终端上)
- 转到VT1: Ctrl-Alt-F1
-
以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
- 登出
- 以
$username
身份$username
-
禁用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的说明进行了以下更改:
- 我没有退出,而是
sudo su
- 我没有碰
/etc/shadow
我已经看到它在其他答案中提到你应该启动恢复或以root
身份登录。 我是一个新的Ubuntu 14安装,所以我愿意测试它是否可以在没有以root
身份登录的情况下工作。 我也是通过SSH在EC2实例上执行此操作。