Shell:如何创建与另一个用户具有相同密码的用户?

Shell:如何创建与另一个用户具有相同密码的用户?

Linux 有一个用户 root。
它有一个密码,但 shell 脚本不知道。
没有人可以为脚本输入任何内容。
该脚本想要创建一个用户 user001,其密码与 root 相同。

脚本如何完成这个任务?

答案1

标准 Linux 系统(使用 pam_unix 和 shadow-utils)使用带有随机盐的 crypt(3) 密码哈希,并将它们存储在 root 可访问的“影子密码文件”中。

假设两个用户都是本地用户(即存储在 /etc/passwd 中并通过 /etc/shadow 进行身份验证):

  1. 获取旧用户的密码哈希值(使用getent shadow <user>,或直接从 /etc/shadow 获取)。哈希值位于第二个字段中。
  2. 添加新用户。
  3. 将密码哈希写回到新用户的影子条目(使用useradd -p、或usermod -p、或chpasswd -e、或直接写入 /etc/shadow)。

例如:

pwhash=$(sudo getent shadow OLDUSER | cut -d: -f2)

sudo useradd -p "$pwhash" NEWUSER

请注意,虽然root始终是本地的,但通常不能保证其他Linux 系统上的帐户将是本地的(例如,帐户可能使用具有不可访问哈希的 Kerberos 身份验证)。因此,如果您要克隆非 root 帐户,则需要由您来提供该保证。

还请注意,root 帐户可能根本没有密码(即仅为本地控制台访问设置),或者其密码哈希可能被标记为“已锁定”。上述过程将准确复制该密码。

相关内容