是否可以重命名 Unix 用户帐户?

是否可以重命名 Unix 用户帐户?

我在一台现在被别人使用的计算机上安装了 Ubuntu。我用她的名字重命名了该帐户,但它只更改了全名,而不更改用户名,该用户名仍然显示在右上角(在 中fast-user-switch-applet)。有没有重命名 Unix 用户帐户的命令?

我想过使用新名称创建一个新用户帐户,然后将“旧”主目录中的所有内容复制到新帐户的主目录中。够了吗?但后来我认为这些文件将拥有旧帐户的权限所有者?那么我应该做什么呢chown -R newuser ~

有没有更简单/推荐的方法来做到这一点?

答案1

尝试

usermod --move-home --login <new-login-name> --home <new-home-dir> <old-login-name>

--move-home选项将旧主目录的内容移动到该--home选项指定的新目录(如果该选项尚不存在则创建该新目录)。

如果您希望主用户组与 匹配new-login-name,请添加--gid <new-login-name>到上面的命令中,但该组必须是预先存在的。

请参阅手册页以获取更多信息:

man usermod

答案2

虽然可以重命名用户,并且usermod会做一些工作,这很可能会引起麻烦。以下是用户名可能出现的位置列表;我并不是说这个清单是详尽的。

  • /etc/passwd和相关文件中的用户条目(例如/etc/shadow/etc/master.passwd)。
  • /etc/group将( 和)中的条目分组/etc/gshadow
  • 可能是 中的条目/etc/sudoers
  • 系统邮箱,通常为/var/mail/$USER/var/spool/mail/$USER
  • crontab,通常/var/spool/cron/crontabs/$USER
  • at职位 ( /var/spool/cron/atjobs/*)

主目录可能会出现在更多地方。许多应用程序在各种点文件中写入绝对路径。如果您决定也重命名主目录(虽然不要求用户alice的主目录为/home/alice,但这样/home/bob会造成混乱),您需要处理这些问题。全局替换适用于大多数应用程序,但我不做任何承诺。如果可能,请将旧主目录名称保留为重命名目录的符号链接。

答案3

以下是我在 Debian 系统上使用的命令的摘要:

groupadd NEW
usermod -l NEW -m -d /home/NEW -g NEW OLD
chfn -f "New Fullname" NEW
cd /home
ln -s NEW OLD

最后两个命令从旧主目录的名称创建一个符号链接(/主页/旧) 改为新名称 (/主页/新)。

答案4

以上都是优雅的方法,但为什么不直接创建一个新用户,从第一个用户复制所有其主页内容,仅此而已?当然,如果是关于服务(应用程序)帐户,也许这不是最佳实践

相关内容