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


48

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

我曾考虑过用新名称创建一个新的用户帐户,然后将“旧”目录中的所有内容复制到新帐户的目录中。够了吗?但是后来我认为文件将具有旧帐户的权限所有者?那我该chown -R newuser ~怎么办?

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

Answers:


52

尝试

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

谢谢!我不知道这个命令。:)但是,这是这台计算机上唯一的帐户,并且该人员说:«如果用户使用数字用户ID,用户名或用户名,则必须确保在执行此命令时指定用户没有执行任何进程。用户的主目录正在更改。usermod在Linux上进行检查,但仅检查用户是否在其他体系结构上根据utmp登录。»您是否建议使用实时CD或创建一个临时帐户,完成后将其删除?
YannDìnendal2010年

2
由于您使用的是Ubuntu,并且无法以root用户身份登录,因此我将创建另一个名为admin的帐户,您仅将其用于此类任务。临时帐户也可以使用,但是您最好保留它,因为将来您可能会做类似的事情。
gvkv

3
请注意,usermod --home必须包含完整路径,例如/home/user.name–否则,将在当前工作目录中创建新的主目录。
Feeela 2014年

那不会改变组!
Heanz '17

22

虽然可以重命名用户,并且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将其弄糊涂),则需要注意这些。全局替换将适用于大多数应用程序,但我没有做出任何承诺。如果可能,请保留旧的主目录名称,作为指向已重命名目录的符号链接。


4

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

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

最后两个命令从旧主目录的名称(/ home / OLD)到新目录的名称(/ home / NEW)创建符号链接。


有什么groupadd
YannDìnendal2014年

2
代替groupadd,我想最好groupmod -n NEW OLD是避免更改gid。至少在Ubuntu上,默认情况下会设置一组与用户相同的名称,因此也希望更改该名称。
jamadagni

1

上面所有方法都是优雅的方法,但是为什么不创建一个新用户,从第一个用户那里复制所有家庭内容,仅此而已?当然,如果是关于服务(应用程序)帐户的,则可能不是最佳做法


3
似乎最好将其放置为评论而不是完整的回答帖子,该文章几乎没有增加任何内容,只是提及了OP中已经提到的解决方案。您应该考虑添加一些信息,说明为什么您认为此解决方案更好,甚至可以接受。
HalosGhost 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.