在 NetBSD 上使用命令行更改密码

在 NetBSD 上使用命令行更改密码

如何在 NetBSD 上用一行命令更改 root 密码?在 FreeBSD 上,命令如下

echo "password" | pw mod user root -h 0 ;

答案1

pwNetBSD在其默认安装中不支持该命令。您可以:

  1. 编译pwNetBSD 的命令并将其安装到您的系统上
  2. 编写一个执行相同功能的实用程序
  3. 通过直接操作影子文件来更新密码

请注意,根据您的脚本,您应该大概使用-H(并提供适当加密的密码) 而不是-h
在系统中传递未加密的密码 (尤其是如果您正在执行类似 的操作echo "password") 是一个坏主意,因为它可能导致您的密码暴露给任何登录用户 (或服务)。

答案2

usermod与交换机一起使用-p。它包含在基础系统中,无需构建pw

答案3

我们遇到了类似的用例:自动创建具有糟糕密码的演示用户,绕过所有密码策略。事不宜迟,下面是根据邮件列表建议的一种卑鄙但有效的黑客方法:

伯恩壳功能

# example: set_password_insecure sybil magic
# $1: username
# $2: password
set_password_insecure() {
  if [ -z "$1" ]; then
    echo 'Missing username' >&2
    return 1
  fi
  ( PASSWORD_HASH="$(/usr/bin/pwhash "$2" | /usr/bin/sed 's@[\\$/]@\\&@g')"
   /usr/bin/env EDITOR="in_place_sed() { /usr/bin/sed \"\$1\" \"\$2\" > \"\$2.bak.\$\$\" && /bin/mv \"\$2.bak.\$\$\" \"\$2\"  ;}; in_place_sed 's/^$1:[^:]*:/$1:$PASSWORD_HASH:/' " \
     /usr/sbin/vipw
  )
}

伯恩壳命令

( USERNAME='mallory' PASSWORD='sex'; \
  PASSWORD_HASH="$(/usr/bin/pwhash "$PASSWORD" | /usr/bin/sed 's@[\\$/]@\\&@g')"
  /usr/bin/env EDITOR="in_place_sed() { /usr/bin/sed \"\$1\" \"\$2\" > \"\$2.bak.\$\$\" && /bin/mv \"\$2.bak.\$\$\" \"\$2\"  ;}; in_place_sed 's/^$USERNAME:[^:]*:/$USERNAME:$PASSWORD_HASH:/' " \
    /usr/sbin/vipw )
  1. 适用于shbash(已shells/bash安装),可能zsh也适用于(未经测试)。
  2. 假定以 root 身份运行,如果没有,则添加sudo(已security/sudo安装)或su - root -c之前/usr/bin/env
  3. sed/ mvhack 是由于EDITOR限制 + NetBSD sed+ 要求没有其他依赖项 / 不必要的临时项 / 环境污染。

相关内容