我有一些应用程序需要创建与其他人具有相同密码的用户。有没有办法做到这一点而无需手动编辑 /etc/shadow ?某种命令?
答案1
在 Linux 上,您可以使用影子实用程序套件中的useradd
或usermod
命令来执行此操作,因为它们接受密码哈希作为选项。您需要/etc/shadow
手动提取其他用户的密码哈希。
h=$(</etc/shadow awk -vuser="old_user_name" -F: '$1==user {print $2}')
useradd -p "$h" new_user_name
请注意,如果有人获得影子文件,他们会立即知道这两个用户具有相同的密码,因为两个哈希将使用相同的盐。如果不输入实际密码,就无法解决这个问题(除非/etc/shadow
使用暴力破解,否则无法恢复)。
请注意,在大多数 Linux 安装中,正在运行的进程的命令行对所有用户都是可见的。因此,如果计算机上还有其他用户,他们可能能够看到密码哈希(这为他们提供了可以尝试离线暴力破解的东西)。这可以通过使用 SELinux 等框架来解决,该框架对其他用户隐藏进程命令行。