LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3761|回复: 24

如何支持 中文用户名、中文主机名

[复制链接]
发表于 2008-10-19 23:03:05 | 显示全部楼层 |阅读模式
GNU/Linux 中文化 包括 中文软件界面、中文输入、中文处理、中文身份标识。
中文身份标识 用于个人的 包括 中文用户名、中文主机名

GNU/Linux 国际化这么多年,中文软件界面、中文输入、中文处理已经基本解决。
中文身份标识 一直没有多少人提起,google 的结果仅仅是零星的关于“中文用户名”的提问,真正明确提出并给出解决方案的只有笔者另一个帖子——使用中文用户名

您可能对这个问题不以为然,是的,笔者以前也不以为然。
意识到可以使用中文用户名,可以使用自己真名,这微不足道的小变化,意味着 GNU/Linux 离大众又进一步。

本文提供一种使用 中文用户名、中文主机名 的方案,用于抛砖引玉,欢迎大家提供反馈意见,尤其是各发行版对 中文用户名、中文主机名 的支持情况,也欢迎大家提供其他解决方案以扩大 中文用户名、中文主机名 适用范围

使用 中文用户名

一、建立中文用户

方法一、在中文环境执行
  1. useradd -m 中文用户名
  2. passwd 中文用户名
复制代码
或者,有些发行版同时提供下面的等价命令
  1. adduser 中文用户名
复制代码
该方法需要您的 shadow 软件包应用 debian 补丁 506_relaxed_usernames
Debian 及其衍生版应该没问题的,已验证 debian etch、ubuntu 8.04。
其它发行版未检查,如不支持创建中文用户名,请自行补丁更新 shadow 软件包,并请与各自官方维护者联系。
Gentoo portage中不包含该补丁,默认应不支持创建中文用户名。
LFS/CLFS 请参考上面提到的笔者的帖子自行解决。

方法二、在中文环境按/etc/passwd、/etc/group、/etc/shadow、/etc/gshadow格式手工建立中文用户名的用户,然后手工建立该用户的家目录,并设置适当权限,用passwd设置该用户的密码。
该方法适用于所有 GNU/Linux 系统。

二、登录环境 + 输入法


方法一
、gdm + scim (欢迎大家提供别的 *dm + 输入法 的例子)
特例:gdm、kdm 均有显示用户列表的功能,配置一下即可,此时,不需中文输入法,这应该是最简单、实用的应用 中文用户名 的方法。

gdm 是 gtk 程序,需要配置 scim 为 Gtk 程序默认中文输入法。
请检查您系统中的 /etc/gtk-2.0/gtk.immodules 的末尾是否包含
  1. "/usr/lib/gtk-2.0/immodules/im-scim.so"
  2. "scim" "SCIM Input Method" "scim" "/usr/share/locale" "ja:ko:zh"
复制代码
gdm 默认以中文 locale 运行,方可直接用热键激活 scim 中文输入法。
在 /etc/init.d/rc.local 中启动 gdm 可用如下命令
  1. /usr/bin/env - LANG=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8 /usr/sbin/gdm
复制代码
请根据您的 GNU/Linux 系统酌情修改对应配置文件。




方法二、openvt + zhcon (欢迎大家提供别的 登录程序 + 输入法 的例子)
方法安装zhcon,请确保从字符界面登录后,运行zhcon可以用热键激活,并能输入显示中文。
添加如下的一行到 /etc/inittab
  1. [color=Red]X:[/color]2345:respawn:/bin/openvt -c [color=Red]X[/color] -e -s -f -l -- /bin/zhcon --utf8 /bin/login
复制代码
请修改两个 "X" 为您需要的虚拟控制台号码。


注意:

按上面方法,暂时请不要添加多个中文虚拟控制台--上面命令中zhcon或login中有一定时器,一定时间没输入时会自动退出,"-s"有副作用,会强行切换到"X"所在的虚拟控制台,即使您正使用X-window,这个需要补丁。
就像下面截图所示,登录界面不美观,泄露过多信息,这个也需要补丁。
有必要去除zhcon中有关suid、sgid的代码,这个也需要补丁。

使用 中文主机名
直接编辑主机名为中文即可
  1. echo 中文主机名 > /etc/hostname
复制代码
请根据您的 GNU/Linux 系统酌情修改对应配置文件。

至此,您应当可以正常使用中文用户名、中文主机名登录系统。

遗留问题:
可以用中文作密码,但使用中文作密码,无法通过 gdm 登录。(可输入中文用户名,无法输入中文密码)
字符界面 登录时尚无可用输入法支持。
中文用户名与您使用的编码有关。
 楼主| 发表于 2008-10-19 23:14:11 | 显示全部楼层
上面方法在 CLFS/CBLFS 环境下验证通过。

debian、ubuntu中文环境下可直接添加 中文用户 并正常使用。
回复 支持 反对

使用道具 举报

发表于 2008-10-19 23:33:31 | 显示全部楼层
Despite some limitations to be resolved, thanks for 聚焦深空 on realization.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-20 23:35:03 | 显示全部楼层
多谢毁灭兄!:thank

贴几张图好说明问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-20 23:49:06 | 显示全部楼层

在ubuntu中 使用 中文用户名、中文主机名

ubuntu 支持 中文用户名、中文主机名,您只需安装 scim 中文输入法,建立 中文用户,编辑主机名 /etc/hostname 即可。

请参考 如何支持 中文用户名、中文主机名 (与 ubuntu 无关的问题,请汇总到该贴)

使用 中文用户名
在中文环境下,开一终端,执行
  1. sudo useradd -m 中文用户名
  2. sudo passwd 中文用户名
复制代码
或者执行
  1. sudo adduser 中文用户名
复制代码
设置 中文主机名
在中文环境下,开一终端,执行
  1. sudo echo 中文主机名 > /etc/hostname
复制代码
一些额外的设置
ubuntu 8.04 使用livecd安装过程中,没有提供中文输入法,无法建立 中文用户。
您只有在安装完成后,才能添加 中文用户名、中文主机名。

如果您希望新建的 中文用户 可以 sudo、并和原用户有同样权限
在中文环境下,开一终端,执行
  1. sudo grep xxx /etc/group | sed -e "/^xxx/d" | awk -F':' '{print "sudo gpasswd -a 中文用户名 " $1}'
复制代码
(请把xxx替换为您的 sudo 用户)
然后,拷贝刚才的命令输出,
之后,粘贴到当前终端。

为更简单的使用中文登录,您可以配置 gdm 显示用户列表。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-21 00:02:01 | 显示全部楼层

在 Gentoo 中使用 中文用户名、中文主机名

合并贴子,待完善。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-21 00:08:34 | 显示全部楼层

在 Debian 中使用 中文用户名、中文主机名

Debian 支持 中文用户名、中文主机名,您只需安装 gdm + scim 中文输入法,建立 中文用户,编辑主机名 /etc/hostname 即可。

请参考 如何支持 中文用户名、中文主机名 (与 Debian 无关的问题,请汇总到该贴)

目前,这是个部分解决的问题,如果您有兴趣,请广泛测试。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-21 00:12:56 | 显示全部楼层

在 Archlinux 中使用 中文用户名、中文主机名

合并贴子,待完善。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-21 00:18:18 | 显示全部楼层

在 Redhat系 系统中 使用 中文用户名、中文主机名

请参考 如何支持 中文用户名、中文主机名 (与 Redhat系 系统 无关的问题,请汇总到该贴)

目前,这是个部分解决的问题,如果您有兴趣,请广泛测试。

google 到 关于 中文用户名 的零星问题中 有人提到 Redhat 不支持建立 中文用户名,不知现在情况如何?
回复 支持 反对

使用道具 举报

发表于 2008-10-21 00:20:10 | 显示全部楼层
没用.而且还有局限性.....
如果我是直接控制台登入系统的.请教如何输入中文?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表