Difference between revisions of "Change username (简体中文)"

From ArchWiki
Jump to: navigation, search
(Fix category.)
m (Add translation status.)
Line 1: Line 1:
 
[[Category:Security (简体中文)]]
 
[[Category:Security (简体中文)]]
 
[[en:Change username]]
 
[[en:Change username]]
 +
{{TranslationStatus (简体中文)|Change_username|2013-03-07|243066}}
 
操作得当的话,在Arch(或其他Linux发行版)中更改用户名是安全的,并且很简单。你可以更改用户所属的组。按照以下步骤进行,可以保留受影响用户的UID和GID,而不会搞乱你已经设置好的文件权限。
 
操作得当的话,在Arch(或其他Linux发行版)中更改用户名是安全的,并且很简单。你可以更改用户所属的组。按照以下步骤进行,可以保留受影响用户的UID和GID,而不会搞乱你已经设置好的文件权限。
  

Revision as of 06:26, 7 March 2013

翻译状态: 本文是英文页面 Change_username翻译,最后翻译时间:2013-03-07,点击这里可以查看翻译后英文页面的改动。

操作得当的话,在Arch(或其他Linux发行版)中更改用户名是安全的,并且很简单。你可以更改用户所属的组。按照以下步骤进行,可以保留受影响用户的UID和GID,而不会搞乱你已经设置好的文件权限。

步骤

警告: 确保你不是使用你要修改的用户名登录,同时按下(Template:Keypress+Template:Keypress+Template:Keypress)打开一个新的终端,使用root用户登录,或用其他用户登录后使用su命令登录为root用户。

更改登录名

这只会修改用户的登录名字。

# usermod -l newname oldname

更改用户的主目录

以下命令将会更改用户username的主目录为/my/new/home

# usermod -d /my/new/home username

更改用户的主目录并移动目录里的内容

移动用户username的主目录,并设置新的主目录为/my/new/home

# usermod -md /my/new/home username;

更改组名

更改用户所属的组名:

# groupmod -n newname oldname
注意: 这会更改组的名字,但GID不变。

更多信息请参阅usermod和groupmod的man pages。

使用/etc/passwd手动更改

尽可能使用上面提到的方法修改用户名及其主目录,不过对于想了解黑箱里都进行了什么操作的朋友,可以用一下方式修改。

/etc/passwd文件的格式

文件的每一行都遵从指定的格式,每行分七个部分,用英文冒号“:”分开。

<登录名>:<密码>:<UID>:<GID>:<全名/注释>:<主目录>:<用户命令解释器>
警告: 直接在文件/etc/passwd里设置<密码>区域是不安全的。密码应该使用passwd命令(由root)更改!
  • <登录名>不能为空,而且要符合标准的*NIX命名规则。
  • <密码>应该是一个加密的密码,不过可以使用一个小写的"x"(不带括号)表示密码保存在/etc/shadow文件里。
  • 每个用户和组有一个对应的UID和GID(用户ID和组ID)。Arch里面,第一个非root用户的默认UID是1000,后续创建的用户UID也应大于1000,特定用户的GID应该属于指定的首要组,组的ID数值列在/etc/group文件里。
  • <全名/注释>用于服务里,比如finger。这个部分可以留空。
  • <主目录>用于登录命令设置$HOME环境变量。某些服务的用户主目录设置为"/"是安全的,但不建议普通用户设置为此目录。
  • <用户命令解释器>是用户默认登录的shell,通常是Bash,还可选择其他的命令解释器,默认是"/bin/bash"(不带括号),如果你用的是别的shell,在这里设置其路径,此部分是可选的,可留空。

示例:

jack:x:1001:100:Jack Smith,some comment here,,:/home/jack:/bin/bash

示例分解说明:用户登录名为jack,密码保存在/etc/shadow,UID为1001,首要组的ID是100 (users组),全名Jack Smith并加了一些注释,主目录是/home/jack,使用Bash作为默认shell。

注意事项

  • 如果要使用sudo,请更新文件/etc/sudoers把新的用户(以root登录使用visudo命令)添加进去。
  • 如果修改了~/.bashrc的PATH环境变量,并把新的用户添加进去。
  • 同样的,记得更改配置文件/etc/rc.local或者任何配置文件里用到的,放在旧的用户主目录里的脚本或者挂载点。
  • 我不得不重复Firefox拼写校正里的步骤,否则更改用户名后拼写校正就不再起作用了。
  • 更改用户名后,我不得不重新安装Thunderbird扩展(Enigmail)。
  • 系统(桌面快捷方式,脚本等)里使用了旧的用户主目录的地方,都需要进行修改。要在脚本中避免这样的问题,可以使用~$HOME变量来表示主目录。