我在别人使用的计算机上安装了Ubuntu。我用她的名字重命名了该帐户,但是它只更改了全名,而不是用户名,该用户名仍然显示在右上角(在中fast-user-switch-applet
)。是否有重命名Unix用户帐户的命令?
我曾考虑过用新名称创建一个新的用户帐户,然后将“旧”目录中的所有内容复制到新帐户的目录中。够了吗?但是后来我认为文件将具有旧帐户的权限所有者?那我该chown -R newuser ~
怎么办?
有没有更简单/推荐的方法来做到这一点?
我在别人使用的计算机上安装了Ubuntu。我用她的名字重命名了该帐户,但是它只更改了全名,而不是用户名,该用户名仍然显示在右上角(在中fast-user-switch-applet
)。是否有重命名Unix用户帐户的命令?
我曾考虑过用新名称创建一个新的用户帐户,然后将“旧”目录中的所有内容复制到新帐户的目录中。够了吗?但是后来我认为文件将具有旧帐户的权限所有者?那我该chown -R newuser ~
怎么办?
有没有更简单/推荐的方法来做到这一点?
Answers:
尝试
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
usermod --home
必须包含完整路径,例如/home/user.name
–否则,将在当前工作目录中创建新的主目录。
虽然可以重命名用户,并且usermod
可以完成某些工作,但这很可能会引起麻烦。这是用户名可能出现的位置的列表;我并不是说这份清单是详尽无遗的。
/etc/passwd
和相关文件(例如/etc/shadow
,/etc/master.passwd
)。/etc/group
(和/etc/gshadow
)中的组条目。/etc/sudoers
。/var/mail/$USER
或/var/spool/mail/$USER
。/var/spool/cron/crontabs/$USER
at
工作中(/var/spool/cron/atjobs/*
)主目录可能会出现在更多位置。许多应用程序在各种点文件中写入绝对路径。如果您还决定重命名主目录(虽然不要求用户alice
的主目录为/home/alice
,那么/home/bob
将其弄糊涂),则需要注意这些。全局替换将适用于大多数应用程序,但我没有做出任何承诺。如果可能,请保留旧的主目录名称,作为指向已重命名目录的符号链接。
这是我在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
用
groupadd
,我想最好groupmod -n NEW OLD
是避免更改gid。至少在Ubuntu上,默认情况下会设置一组与用户相同的名称,因此也希望更改该名称。
上面所有方法都是优雅的方法,但是为什么不创建一个新用户,从第一个用户那里复制所有家庭内容,仅此而已?当然,如果是关于服务(应用程序)帐户的,则可能不是最佳做法