如何在 chfn 命令上使用等号?

如何在 chfn 命令上使用等号?

我尝试 chfn 更改用户的 umask 值,如下所示

sudo chfn -o umask=022 username

但我有这个错误

chfn: Office: '=' is not allowed

我还尝试了一次失败的转义 = 符号的尝试,如下所示

sudo chfn -o umask\=022 username
sudo chfn -o "umask=022 username"

如何使用此命令使用或转义等号?

谢谢

答案1

chfn/etc/passwd更改第四个字段(或同等字段)中的信息。那里的大部分数据仅用于显示目的,甚至被称为“用户名或评论字段”passwd(5)手册页

Debian 的手册页chfn(1)但提到其中一部分用于“会计信息”。显然pam_umask.so也读了它,我想这就是你想要的。手册页还提到了对等号的禁止:

这些字段不得包含任何冒号。除了其他字段,它们不应包含任何逗号或等号。

-o, --other OTHER
更改用户的其他 GECOS 信息。该字段用于存储其他应用程序使用的记帐信息,并且只能由超级用户更改。

看来chfn您的 CentOS 上的 遵循不同的语法,并且没有提供更改“其他”部分的方法。在Debian上测试,结果chfn -o 'umask=022' username是:

username:x:1000:1000:Full name,,,,umask=022:/home/username:/bin/bash

因此,缺少功能的解决方法chfn是手动编辑文件(使用),并在注释字段中的第四个逗号后vipw添加。umask=022

答案2

看看这个手​​册页:https://www.systutorials.com/docs/linux/man/1-chfn/

-o选项是设置办公室房间号码,所以我认为这是错误的,因为=不是有效的号码。

有趣的是,在 ubuntu 16.04 上,该-o选项用于设置 中的 GECOS 字段/etc/passwd,这正是您想要做的,而不是设置办公室号码。

答案3

我通过修改bashrc达到同样的效果

vi ~/.bashrc
...
# User specific aliases and functions
umask 022

谢谢

相关内容