CHPASSWD(8)

名称
chpasswd - 批量更新密码

大纲

chpasswd [选项]

描述

The chpasswd command reads a list of user name and password pairs from standard input and uses this information to update a group of existing users. Each line is of the format:

user_name:password

默认必须明文提供密码，然后由 chpasswd 加密。如果存在密码年龄信息，也会更新之。

The default encryption algorithm can be defined for the system with the ENCRYPT_METHOD or MD5_CRYPT_ENAB variables of /etc/login.defs, and can be overwitten with the -e, -m, or -c options.

chpasswd first updates all the passwords in memory, and then commits all the changes to disk if no errors occured for any user.

此命令一般用于需要一次创建很多用户的大型系统。

选项

chpasswd 可以接受的选项有：

-c, --crypt-method METHOD
    使用指定的方法加密密码。

    可用的方法有 DES, MD5, NONE, and SHA256 或 SHA512，前提是您的 libc 支持这写方法。

    By default (if none of the -c, -m, or -e options are specified), the encryption method is defined by the ENCRYPT_METHOD or MD5_CRYPT_ENAB variables of /etc/login.defs.

-e, --encrypted
    提供的密码是已经加密了的

-h, --help
    现实帮助信息并退出。

-m, --md5
    如果提供的密码没有加密，则使用 MD5 加密而不是 DES。

-R, --root CHROOT_DIR
    Apply changes in the CHROOT_DIR directory and use the configuration files from the CHROOT_DIR directory.

-s, --sha-rounds ROUNDS
    使用指定次数的轮转来加密密码。

    值 0 表示让系统为加密方法选择默认的轮转次数 (5000)。

    会强制最小 1,000，最大 9,9999,9999

    您只可以对 SHA256 或 SHA512 使用此选项。

    By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login.defs.

CAVEATS

记住要设置权限或者掩码来阻止其它用户对未加密文件的读取。

配置文件

在 /etc/login.defs 中有如下配置变量，可以用来更改此工具的行为：

ENCRYPT_METHOD (string)
    这定义了系统加密密码的默认算法(如果没有在命令行上指定算法)。

    可以使用如下值：DES (default), MD5, SHA256, SHA512.

    注意，此参数会覆盖 MD5_CRYPT_ENAB 变量。

MD5_CRYPT_ENAB (boolean)
    表示密码是否必须使用基于 MD5 的算法加密。如果设为 yes，新密码将使用可以和新版 FreeBSD 兼容的基于 MD5 的算法加密。它支持无限长度的密码以及更长的盐字符串。如果您需要将加密的密码复制到其它不理解新算法的系统，设置为 no。默认值是 no。

    This variable is superseded by the ENCRYPT_METHOD variable or by any command line option used to configure the encryption algorithm.

    此变量已经废弃。您应该使用 ENCRYPT_METHOD。

SHA_CRYPT_MIN_ROUNDS (number), SHA_CRYPT_MAX_ROUNDS (number)
    ENCRYPT_METHOD 设为 SHA256 或 SHA512 时，此项确定加密算法默认使用 SHA 轮转数目(当轮转数没有通过命令行指定时)。

    使用很多轮转，会让暴力破解更加困难。但是需要注意，认证用户时也会需要更多的 CPU 资源。

    如果没有指定，libc 会选择默认的轮转数(5000)。

    值必须在 1000 - 999,999,999 之间。

    如果只设置了一个 SHA_CRYPT_MIN_ROUNDS 或 SHA_CRYPT_MAX_ROUNDS 值，就会使用这个值。

    如果 SHA_CRYPT_MIN_ROUNDS > SHA_CRYPT_MAX_ROUNDS，将会使用大的那个。

文件

/etc/passwd
    用户账户信息。

/etc/shadow
    安全用户账户信息。

/etc/login.defs
    Shadow 密码套件配置。

参见

passwd(1), newusers(8), login.defs(5),useradd(8).