adduser.8

ADDUSER(8)

ADDUSER(8)

FreeBSD System Manager's Manual

ADDUSER(8)

adduser

添加新用户的命令

adduser [-CDENShq] [-G groups] [-L login_class] [-M mode] [-d partition] [-f file] [-g login_group] [-k dotdir] [-m message_file] [-s shell] [-u uid_start] [-w type]

adduser 实用程序是一个 shell 脚本,围绕 pw(8) 命令实现,用于添加新用户。 它创建密码/组条目、主目录、复制点文件并向新用户发送欢迎消息。 它支持两种操作模式。 它可以在命令行交互使用,一次添加一个用户,也可以直接从文件中获取新用户列表并以批处理模式操作,而无需任何用户交互。

username

登录名。 用户名仅限于 pw(8) 将接受的任何内容。 通常这意味着它可能只包含小写字符或数字,但不能以 ‘-’ 字符开头。 最大长度为 16 个字符。 这个限制的原因是历史性的。 鉴于人们传统上出于审美原因想要打破这个限制,在 UNIX 中打破这样一个基本的基本参数从来都不是很重要。 您可以更改 <utmp.h> 中的 UT_NAMESIZE 并重新编译世界;人们已经做到了这一点并且它有效,但是任何预编译程序或假定名称限制为 8 个字符的源(例如 NIS)都会出现问题。 NIS 协议要求使用 8 个字符的用户名。 如果您需要更长的电子邮件地址登录名,您可以在 /etc/mail/aliases 中定义一个别名。

full name

这通常称为 gecos 字段,通常包含用户的全名。 此外,它可能包含一个逗号分隔的值列表,例如办公室号码和工作电话和家庭电话。 如果名称包含 & 符号,则在其他程序显示时将替换为大写的登录名。 ‘:’ 字符是不允许的。

shell

除非提供了 -S 参数,否则只允许来自 shell 数据库 (/etc/shells) 的有效 shell。 此外,可以提供 shell 的基本名称或完整路径。

UID

自动生成或您的选择。 它必须小于 32000。

GID/login group

自动生成或您的选择。 它必须小于 32000。

password

您可以选择空密码、禁用密码、使用随机生成的密码或指定您自己的明文密码,这些密码在存储到用户数据库之前将被加密。

也许你错过了这个与大多数其他方案不同的方案 can 做的事情。 对于他们自己组中的每个用户,他们可以安全地使用 002 而不是通常的 022 的 umask 运行,并在他们的主目录中创建文件,而不必担心其他人能够更改它们。

对于共享区域,您创建一个单独的 UID/GID,将应该能够访问该区域的每个人放置到该新组中。

这种 UID/GID 管理模型比将用户分组并在共享区域工作时不得不使用 umask 提供更大的灵活性。

我已经使用这个模型将近 10 年了,发现它适用于大多数情况,并且从未妨碍我。(罗德·格兰姆斯)

adduser 实用程序从 /etc/adduser.conf 读取其配置信息。 如果此文件不存在,它将使用预定义的默认值。 虽然可以手动编辑此文件,但更安全的选择是使用 -C 命令行参数。 使用此参数, adduser 将启动交互式输入,将其提示的答案保存在 /etc/adduser.conf 中,并在不修改用户数据库的情况下立即退出。 在命令行上指定的选项将优先于保存在此文件中的任何值。

-C

创建新的配置文件并退出。 此选项与 -f 选项互斥。

-d partition

家庭分区。 默认分区,所有用户目录都将位于该分区下。 /nonexistent 分区被认为是特殊的。 adduser 脚本不会使用该名称创建和填充主目录。 否则,默认情况下它会尝试创建主目录。

-D

不要尝试创建主目录。

-E

禁用该帐户。 此选项将通过在密码字段前添加字符串 “*LOCKED*” 来锁定帐户。 超级用户可以使用 pw(8) 命令解锁该帐户:

pw unlock [name | uid]

-f file

获取要从 file 创建的帐户列表。 如果 file 为 “-”, 则从标准输入中获取列表。 如果指定了此选项, adduser 将以批处理模式运行,并且不会搜索任何用户输入。 如果在处理帐户时遇到错误,它将向标准错误写入消息并移至下一个帐户。 输入文件的格式如下所述。

-g login_group

通常,如果没有指定登录组,则假定它与用户名相同。 此选项使 login_group 成为默认值。

-G groups

其他组的空格分隔列表。 此选项允许用户指定要添加用户的其他组。 除了登录组之外,用户还是这些组的成员。

-h

打印选项摘要并退出。

-k directory

将文件从 directory 复制到新用户的主目录; dot.foo 将重命名为 .foo 。

-L login_class

设置默认登录类。

-m file

从 file 中向新用户发送欢迎消息。 为 no 指定值 file 会导致不会向新用户发送消息。 请注意,消息文件可以引用 adduser 脚本的内部变量。

-M mode

创建权限设置为 mode 的主目录。

-N

不要读取默认配置文件。

-q

最少的用户反馈。 特别是,随机密码不会回显到标准输出。

-s shell

新用户的默认 shell 。 shell 参数可以是 shell 的基本名称或完整路径。 除非提供了 -S 参数,否则 shell 必须存在于 /etc/shells 中或者是特殊的 shell nologin 才能被视为有效的 shell。

-S

将不检查指定 shell 的存在或有效性。

-u uid

从 uid 开始使用 UID。

-w type

密码类型。 adduser 实用程序允许用户指定要创建的密码类型。 type 参数可能具有以下值之一:

no

禁用密码。 密码字段将包含单个 ‘*’ 字符,而不是加密字符串。 在超级用户手动启用密码之前,用户可能无法登录。

none

使用空字符串作为密码。

yes

使用用户提供的字符串作为密码。 在交互模式下,将提示用户输入密码。 在批处理模式下,假定行中的最后(第 10 个)字段是密码。

random

生成一个随机字符串并将其用作密码。 密码将回显到标准输出。 此外,它还可以包含在 randompass 变量的消息文件中。

使用 -f 选项时,帐户信息必须以特定格式存储。 所有空行或以 ‘#’ 开头的行都将被忽略。 所有其他行必须包含十个冒号 (‘:’) 分隔的字段,如下所述。 命令行选项不优先于字段中的值。 只有密码字段可以包含一个 ‘:’ 字符作为字符串的一部分。

name:uid:gid:class:change:expire:gecos:home_dir:shell:password

name

登录名。此字段不能为空。

uid

数字登录用户 ID。 如果该字段留空,它将自动生成。

gid

数字主要组 ID。 如果此字段留空,将创建一个与用户名同名的组,并使用其 GID 代替。

class

登录类。此字段可留空。

change

密码老化。 此字段表示帐户的密码更改日期。 该字段的格式与 pw(8) 的 -p 参数的格式相同。 它可能是 dd-mmm-yy[yy], ,其中 dd 表示日期, mmm 表示月份,数字或字母格式: “10” 或 “Oct”, yy[yy] 是四位或两位数的年份. 要表示相对于当前日期的时间,格式为: +n[mhdwoy], 其中 n 表示一个数字,后跟必须更改密码的分钟、小时、天、周、月或年。 此字段可以留空以将其关闭。

expire

帐户到期。 此字段表示帐户的到期日期。 在指定日期之后,该帐户可能无法使用。 该字段的格式与密码老化的格式相同。 此字段可以留空以将其关闭。

gecos

关于用户的全名和其他额外信息。

home_dir

主目录。 如果该字段留空,它将通过将用户名附加到主分区来自动创建。 /nonexistent 主目录被认为是特殊的,并且被理解为意味着不会为用户创建主目录。

shell

登录外壳。 此字段应包含有效登录 shell 的基本名称或完整路径。

password

用户密码。 该字段应包含一个明文字符串,在放入用户数据库之前将对其进行加密。 如果密码类型为 yes 且此字段为空,则假定该帐户的密码为空。 如果密码类型为 random 且该字段 not 为空,则其内容将作为密码。 如果 -w 选项与 nonone 参数一起使用,则该字段将被忽略。 请注意不要以结束的 ‘:’ 终止此字段,因为它将被视为密码的一部分。

/etc/master.passwd

用户数据库

/etc/group

组数据库

/etc/shells

shell 数据库

/etc/login.conf

登录类数据库

/etc/adduser.conf

adduser 的配置文件

/etc/adduser.message

adduser 的消息文件

/usr/share/skel

骨架登录目录

/var/log/adduser

adduser 的日志文件

chpass(1), passwd(1), adduser.conf(5), aliases(5), group(5), login.conf(5), passwd(5), shells(5), pw(8), pwd_mkdb(8), rmuser(8), vipw(8), yp(8)

adduser 命令出现在 FreeBSD 2.1 中。

本手册页和 Perl 的原始脚本由 Wolfram Schneider <wosch@FreeBSD.org> 编写。 替换脚本编写为带有一些增强功能的 Bourne shell 脚本,以及随附的手册页修改由 Mike Makonnen <mtm@identd.net> 完成。

为了使 adduser 在发送给新用户的消息中正确扩展 $username 和 $randompass 等变量,它必须让 shell 评估消息文件的每一行。 这意味着 shell 命令也可以嵌入到消息文件中。 adduser 实用程序试图通过拒绝评估该文件(如果该文件不是仅由 root 用户拥有和可写)来降低攻击者使用此功能的可能性。

此外,shell 特殊字符和运算符在消息文件中使用时必须进行转义。 此外,目前只能在批处理模式下或在 /etc/adduser.conf 中指定密码时效和帐户到期时间。 用户也应该能够将它们设置为交互模式。

September 15, 2012

FreeBSD 13.1-RELEASE

最后更新于

FreeBSD 中文社区