Linux chfn命令
chfn(Change Finger Information)是 Linux 中用于修改用户个人描述信息的命令行工具。
chfn 命令用于修改用户在系统中的 finger 信息,包括全名、办公室地址、办公室电话和家庭电话等。
这些信息可以通过 finger 命令被其他用户查看,方便在多人协作的服务器环境中了解彼此的联系方式。
在早期的 Unix 系统中,
finger命令可以查看用户的详细信息,chfn则提供修改这些信息的入口。虽然
finger在现代系统中使用频率已经降低,但chfn所管理的 GECOS 字段仍然被很多程序用作用户的显示名称来源。GECOS 字段是
/etc/passwd文件中第 5 个冒号分隔字段,存储用户的描述信息。chfn本质上就是在修改这个字段。
命令语法
chfn 的基本语法如下:
chfn [选项] [用户名]
如果不指定用户名,则默认修改当前登录用户的信息。
普通用户只能修改自己的信息,而 root 用户可以修改任何用户的信息。
选项说明
chfn 的常用选项整理如下:
| 选项 | 功能 | 示例 |
|---|---|---|
-f, --full-name | 设置用户的全名(Full Name) | chfn -f "Zhang San" |
-r, --room | 设置办公室房间号(Room Number) | chfn -r "A-301" |
-w, --work-phone | 设置工作电话号码(Work Phone) | chfn -w "010-12345678" |
-h, --home-phone | 设置家庭电话号码(Home Phone) | chfn -h "010-87654321" |
-o, --other | 设置其他信息(Other,GECOS 字段的其余部分) | chfn -o "Developer" |
-u, --help | 显示帮助信息 | chfn -u |
详细用法
交互式修改个人信息
不带任何选项运行 chfn,会以交互方式逐项提示用户输入:
# 交互式修改当前用户信息
$ chfn
Password:
Changing the user information for runoob
Enter the new value, or press ENTER for the default
Full Name: runoob
Room Number []: A-301
Work Phone []: 010-12345678
Home Phone []: 010-87654321
每个提示行都会显示当前值,如果不想修改某项,直接按回车跳过即可。
系统会先要求验证密码,确保只有用户本人或 root 才能修改。
使用选项直接修改
在脚本或批量操作中,可以使用选项跳过交互提示,直接指定新值:
# 一次性设置用户全名和办公室号码 $ chfn -f "Li Si" -r "B-202" runoob
执行后,用户 runoob 的全名将被设置为 "Li Si",办公室号码为 "B-202"。
查看修改后的信息
修改完成后,可以通过 finger 命令查看更新后的信息:
# 使用 finger 查看用户信息 $ finger runoob Login: runoob Name: Li Si Directory: /home/runoob Shell: /bin/bash Office: B-202, 010-12345678 Home Phone: 010-87654321 Last login Tue May 19 10:30 (CST) on pts/0 No mail. No Plan.
如果系统没有安装
finger,可以使用getent passwd runoob直接查看/etc/passwd中的 GECOS 字段。
直接读取 /etc/passwd 验证
GECOS 字段中各部分以逗号分隔,格式为:全名,办公室,工作电话,家庭电话,其他。
# 查看 /etc/passwd 中 runoob 用户的 GECOS 字段 $ grep runoob /etc/passwd runoob:x:1001:1001:Li Si,B-202,010-12345678,010-87654321:/home/runoob:/bin/bash
可以看到 GECOS 字段(第 5 个冒号分隔的内容)完整记录了刚才设置的所有信息。
单独修改某一项
可以只修改某一项而保持其他信息不变:
# 只修改全名,其他信息保持不变 $ chfn -f "Wang Wu" runoob # 验证修改结果 $ finger runoob | grep Name Login: runoob Name: Wang Wu
chfn 配置文件
chfn 的行为受 /etc/login.defs 中的配置控制:
| 配置项 | 说明 | 默认值 |
|---|---|---|
CHFN_RESTRICT | 限制允许修改的字段,使用字母组合:f(全名)、r(房间)、w(工作电话)、h(家庭电话) | frwh |
如果设置为空字符串,则不允许任何用户修改 finger 信息。
系统管理员可以通过调整这个配置来控制用户可以修改哪些字段。
注意事项
普通用户只能修改自己的 finger 信息,需要提供当前密码进行验证。root 用户可以修改任意用户的信息且不需要密码验证。
chfn修改的信息会写入/etc/passwd,错误的修改可能导致某些依赖 GECOS 字段的程序显示异常。修改前建议备份相关行。
如果系统禁用了 chfn 功能(CHFN_RESTRICT 为空),运行该命令会提示权限不足。
部分现代 Linux 发行版(如 Ubuntu)默认不安装 finger 包,需要手动执行 apt install finger 安装。
在 LDAP 或 NIS 等集中认证环境中,chfn 可能无法正常工作,这类环境应使用对应的管理工具。
相关命令
| 命令 | 功能 |
|---|---|
finger | 查看用户的 finger 信息 |
chsh | 修改用户的默认登录 Shell |
chage | 修改用户密码过期信息 |
usermod | 修改用户账户的各项属性(包含 GECOS 字段) |
passwd | 修改用户密码 |
getent | 从系统数据库中获取条目信息 |

Linux 命令大全