我在一台现在被别人使用的计算机上安装了 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
以上都是优雅的方法,但为什么不直接创建一个新用户,从第一个用户复制所有其主页内容,仅此而已?当然,如果是关于服务(应用程序)帐户,也许这不是最佳实践