`--disabled-login`和`--gecos`选项在`adduser`命令中代表什么意思?

在Ubuntu 12.04上运行,我之前设置了一个私有的git服务器,并创建了一个名为git的组。现在我正在按照一个安装gitlab的指南进行操作,当要求将用户添加到git组并创建时,我发现我已经有了这个组。
命令如下:
sudo adduser --disabled-login --gecos 'GitLab' git

Gitlab安装教程中获取。
我想要正确理解这个命令。对我来说,我认为我可以像这样将用户添加到一个组中:
adduser user group

那么--disabled-login--gecos代表什么意思呢?
2个回答

都写在说明书上了!

enter image description here

你不需要安装任何东西,也不需要在谷歌上搜索,也不需要有互联网连接。只需打开终端,首先运行以下命令:

man adduser

打开adduser命令的手册页面。
然后,在该手册页面中输入:/--disabled-login,然后按下Enter键,然后重复按下n键以查找所有包含--disabled-login的出现。对于--gecos也是同样的操作。
带着一点运气,你会发现:
--disabled-login
          Do not run passwd to set the password.  The user won't be able 
          to use  her  account until the password is set.

并且:

--gecos GECOS
          Set  the  gecos field for the new entry generated.  adduser will 
          not ask for finger information if this option is given.
对于那些想知道gecos到底是什么的人,wikipedia给出了以下定义:
gecos字段,或者GECOS字段是Unix和类似操作系统中/etc/passwd文件中的一个条目。它通常用于记录有关账户或其用户的一般信息,如真实姓名和电话号码。

3该死,我从没听说过那种手册。谢谢您先生。 - Private
61实际上,manpage对GECOS的解释非常不清楚。它是要求填写真实姓名、电话等信息的部分。请参考https://en.wikipedia.org/wiki/Gecos_field。 - benjaoming
32这个回答没有解释gecos是什么。我也是来这里寻找这个信息的。它也没有解释--disabled-login并不像man页所暗示的那样真正禁用登录,它只是禁用了通过密码登录。通常在为基于证书的SSH登录设置证书时使用。 - John Little
12真是个糟糕的回答。我特意来这里是因为在man手册中对GECOS选项的格式解释不够清楚。 - Rörd
这个回答不应被标记为正确的,因为它没有回答提问者的问题。 - taylorcressy

--disabled-login,与--disabled-password类似,用于创建没有密码的用户账户,并避免提示输入密码。这是为了防止尝试以git身份登录到您的Git服务器。这是因为您不应直接登录到它,而是应仅通过git命令与之交互。 --gecos用于设置正在创建的用户的附加信息(与git无关)。如今,它的使用不是很常见。如果为一个账户设置了gecos值,其他用户可以使用finger命令读取该信息,以获取更多关于他/她/它的信息。您还可以使用chfn命令单独设置它。--gecos开关后面应跟着五个逗号分隔的值,作为对用户的额外注释。这些值分别是:
  1. 全名
  2. 房间号
  3. 工作电话
  4. 家庭电话
  5. 其他
你可以省略任何值并跳过末尾,例如--gecos 'Donald Trump,3'或者'Donald Trump,3,,,President'都可以使用。
我猜你被要求使用--gecos选项的主要原因是为了避免提示输入这些值,它们只是令人讨厌而且在今天没有太多意义,实际上可能会带来安全风险。千万不要在这里放置个人数据! 历史 根据维基百科的说法,贝尔实验室的一些早期Unix系统使用GECOS(General Comprehensive Operating System)机器,因此添加了这个字段来存储用户的GECOS身份信息。

2有人知道如何将其设置为默认值吗?啊,很简单: alias adduser='adduser --gecos ""' - wuxmedia
当然。另一种方法是只需下载Linux源代码,更新adduser并重新编译。这两种选择可能都不太好。我的观点是,adduser应该以标准方式运行,因为它对安全性有很大影响。而别名通常由每个用户单独设置。哪个用户应该设置此别名? - Rein
作为唯一能创建用户的用户,root 应该可以创建用户吗?是的,别名并不是最好的答案,比重新编译或连续按下回车键 5 次要好一些。 - wuxmedia
希望你能理解我关于重新编译的讽刺!如果你只是添加了一些用户,我认为在同一个键(enter)上多按几次还是比将别名添加到/root/.bashrc中要快。如果你确实需要经常添加大量用户,我猜你已经将他们的名字存储在某个文件中,因此你可以编写一个简短的bash脚本将它们提供给adduser或者更好的useradd(也许你需要用awk和sed进行微调)。这样你就避免了混淆其他运行adduser的管理员。不过,我怀疑这不是一个大问题,离题并且对原始问题没有任何价值。 - Rein
1优秀的解释:“--gecos开关后面应跟着五个以逗号分隔的值…” - Enterprise
这个答案应该排在第一位。它很有帮助,而且不像排名最高的答案那样表现出"居高临下的优越感"。请点赞这个答案,让它能够排到最前面。 - Craig S. Anderson