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)
Ale*_* P. 34
问题是,正如您提到的,您无法在登录会话时更改用户的 UID。您必须使用另一个用户帐户才能继续。
但是您不必创建新用户帐户,将其提升为管理员,注销,登录新的管理员帐户,更改您的主帐户的UID,注销,登录到您的主帐户然后删除新的管理员用户只需更改您的UID。;)
您可以启动进入恢复模式(这是一个在您启动计算机时出现的选项,或者在 BIOS 消息完成后按住 Shift 键;ESC在运行 OEM-Ubuntu 的戴尔机器上使用)。这将使您登录到根会话。登录 root而不是您通常的用户帐户,您将能够修改您的 UID。
由于恢复模式仅适用于命令行界面,因此一旦登录到 root 会话,您将必须:
使用BubbaJ 的指令以读写模式重新挂载根文件系统:mount -o remount,rw /。
使用Luis Alvarado 的命令:usermod -u NEW_UID your_username。
reboot),以便您可以在正常模式下启动。l0b*_*0b0 29
基于@AlexandreP 的完整解决方案。和@ddeimeke + 官方文档。无需重启。
Debian/Ubuntu 的策略是,如果有一个jim带有 user ID 的用户1001,那么也会有一个jim带有 group ID 的组1001。此解决方案还会更新这些组 ID。
sudo passwd root
Run Code Online (Sandbox Code Playgroud)以 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)$usernamesudo passwd -dl root
Run Code Online (Sandbox Code Playgroud)Lui*_*ado 11
如果您转到控制台并输入:usermod --help您将得到以下参数之一:
-u, --uid UID 用户帐户的新 UID
因此,如果您想更改用户 cyrex 的 UID,请执行以下操作:
usermod -u 1000 cyrex
这会将 cyrex 的 uid 从它之前的任何值更改为 1000
如果您想在视觉上做到这一点,请执行以下操作:
去
系统 --> 管理 --> 用户和组
从列表中选择您自己,然后单击高级设置
UID 位于该窗口的末尾。