问题描述
我的系统上只有一个用户。如何更改其默认值为1000的用户ID?
如果为避免在典型的桌面安装中破坏登录过程而需要执行其他步骤,那么这些步骤应作为答案的一部分包含在内。
最佳解决方案
问题在于,就像您提到的那样,当您在会话中记录用户的UID时,您无法更改用户的UID。您必须使用其他用户帐户才能继续。
但您不必创建新用户帐户,将其提升为管理员,注销,登录新的管理员帐户,更改主帐户的UID,注销,登录到主帐户,然后删除新的管理员用户只需更改你的UID。 😉
您可以启动进入recovery mode(这是启动计算机时出现的选项,或者在BIOS消息完成后立即保持班次;在运行OEM-Ubuntu的Dell计算机上使用ESC
)。这将使您登录根会话。登录root而不是通常的用户帐户,您将能够修改您的UID。
由于恢复模式仅适用于命令行界面,因此一旦登录到根会话,您将不得不:
-
使用BubbaJ’s instructions to remount the root file system in read-write mode:
mount -o remount,rw /
。 -
使用Luis Alvarado’s command:
usermod -u NEW_UID your_username
。 -
按照ddeimeke’s instructions更新文件权限。
-
然后,重新启动计算机(
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策略是如果存在具有用户ID 1001
的用户jim
,则还存在具有组ID 1001
的组jim
。此解决方案还会更新这些组ID。
-
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
身份登录 -
sudo passwd -dl root
第四种方案
如果您转到控制台并键入:usermod --help
,您将获得以下参数之一:
-u, – uid UID用户帐户的新UID
因此,如果您想更改用户cyrex的UID,请执行以下操作:
usermod -u 1000 cyrex
这会将cyrex的uid从之前的任何值改为1000
如果你想在视觉上做,那么这样做:
去
SYSTEM –> ADMINISTRATION –> USERS AND GROUPS
从列表中选择您自己,然后单击ADVANCED SETTINGS
UID位于该窗口的末尾。
第五种方案
-
转到系统>>管理>>用户和组
-
单击高级设置,然后转到底部的高级选项卡,您将看到您的用户ID。
-
更改它,然后单击确定。