如果在典型的桌面安装中需要额外的步骤以避免破坏登录过程,这些步骤应包含在答案中。
/etc/passwd
、/etc/group
和/etc/shadow
中进行更改,或者使用上述首选的可能性之一。但是最重要的是,你必须更改属于该用户的所有文件的所有权。find / -uid 1000 -exec chown -h 5000 {} +
如果你也改变了群组ID,同样适用。
find / -gid 1000 -exec chgrp -h 5000 {} +
sudo find / -xdev -uid 1000 -exec chown 5000 '{}' \+
,否则会包括挂载的数据(在 /mnt
中,可能是不希望的),以及你最好不要干扰的 /proc
和 /dev
中的文件。请参阅此帖子。 - Sebastiansudo passwd root
以root身份登录,并使用提供的用户名和旧/新UID运行以下命令:
# 将所需信息放入变量中
username=...
old_uid=`id -u $username` # 查找当前(旧)uid
new_uid=...
# 更新$username的用户ID和组ID
usermod -u $new_uid $username
groupmod -g $new_uid $username
# 更新文件所有权
# 注意:不能合并下面两个chown命令,否则只有uid或gid匹配的文件将不会被更新
chown -Rhc --from=$old_uid $new_uid / # 更改用户ID
chown -Rhc --from=:$old_uid :$new_uid / # 更改组ID
$username
身份登录sudo passwd -dl root
sudo setfacl -m "u:<NEWUID>:r-x" /media/<USERNAME> sudo setfacl -x "u:<OLDUID>" /media/<USERNAME>
- richud.com/var/log/journal
目录下,我认为可以忽略它们,但我不知道它们的用途。 - oulenzusermod
会自动更新用户主目录中的文件的UID,请参考man usermod。因此,只有在主目录之外的文件才需要使用chown
命令。不过,仍然需要更新组ID。 - Pierre H.使用BubbaJ的指示将根文件系统重新挂载为读写模式: mount -o remount,rw /
。
使用Luis Alvarado的命令: usermod -u NEW_UID your_username
。
reboot
),以便以正常模式启动。usermod -u NEW_UID your_username
和 find / -uid 1000 -exec chown -h 5000 '{}' \+
后,重启会导致只有猜测会话(guess-session-only)GUI登录。 - Kay/etc/login.defs
和/etc/adduser.conf
文件。超出策略限制的用户不会显示在登录循环中,但您可以更改策略。请参阅此答案。 - K Markey/etc/login.defs
和 /etc/adduser.conf
配置范围之外更改用户ID,则无法登录到Gnome。对我来说,最后一步修复了这个问题。 - Kazusermod --help
,你会得到其中一个参数的说明:
-u, --uid UID 用户帐户的新UID
所以,如果你想改变用户cyrex的UID,可以执行以下操作:
usermod -u 1000 cyrex
这将把cyrex的UID从之前的值更改为1000。从列表中选择自己,并点击"高级设置"。系统 --> 管理 --> 用户和组
点击高级设置,然后转到高级选项卡,在底部你会看到你的用户ID。 更改它并点击确定。
sudo su -
命令切换到root用户,然后我使用以下命令。find / -uid 1000 -exec chown -h 5000 {} +
find / -gid 1000 -exec chgrp -h 5000 {} +
用于更改组ID。
(注意:这会更改所有已挂载设备的权限。如果不需要,请卸载所有不需要的设备或将命令部分find /
缩小到find /home/<user>
或其他方式。)
在Fedora中,这个方法有效,但在Ubuntu中并非完全有效。例如,自动挂载无法正常工作。然后我读到,还必须修复扩展ACL权限,否则像自动挂载这样的功能会出现问题(可能是因为ACL权限的问题,如果没有用户已经具有此UID和GID,则不会出现问题,但在我的情况下,这就是问题所在)。从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权限以保持能够自动挂载。
附言:如果有人问为什么我没有将此问题发布为带有解决方案的问题,那么我必须说,我在这些网站上没有足够的“声望”来这样做。所以请投票支持这个答案。
首先,您需要以 root 身份登录,至少暂时这样做,让我们使其成为可能:
sudo passwd root
groupmod --gid NEWGID username
usermod --uid NEWUID username
sudo chown -R username:username /path/to/files
passwd -dl root
我按照ddeimeke's的指示进行了以下更改:
sudo su
/etc/shadow
我在其他答案中看到有人提到应该使用恢复模式引导或以root
用户登录。我的系统是全新的Ubuntu 14安装,所以我愿意测试是否可以在不以root
用户身份登录的情况下工作。此外,我是通过SSH连接到EC2实例上进行操作的。