如何在buildroot中禁用默认用户"user"和"admin"?



我正在为嵌入式产品使用buildroot。我已经通过BR2_ROOTFS_USERS_TABLES选项添加了自己的受密码保护的用户,并且工作正常。

问题:buildroot 继续向系统添加useradmin用户,并且他们没有密码。这些不是骨架文件系统的一部分,但似乎是在构建过程中明确添加的,尽管如果我能弄清楚在哪里,那就了。另外,即使我禁用BR2_TARGET_ENABLE_ROOT_LOGIN,我仍然可以以root身份登录。

如何摆脱默认useradmin用户?或者,如何将他们的密码设置为长且无法猜测的密码?

编辑:我刚刚发现删除

BR2_TARGET_ENABLE_ROOT_LOGIN=y

从我的BR2_TARGET_ENABLE_ROOT_LOGIN文件是不够的;文件必须包含以下行

# BR2_TARGET_ENABLE_ROOT_LOGIN is not set

。或者构建的.config文件中仍将包含BR2_TARGET_ENABLE_ROOT_LOGIN=y。但是,即使在我更正此问题并进行彻底重建之后,我生成的系统仍然具有无密码root登录,并且useradmin帐户的密码均为空。

禁用BR2_TARGET_ENABLE_ROOT_LOGIN后您是否进行了干净的构建? 我一直在尝试重建骨架包时遇到问题。

我从未见过名为useradmin的构建根用户。 通过我的构建根包的 grep 也没有显示任何此类用户定义:awk '/define.*_USERS/,/endef/' package/*/*mk您可以在系统上运行相同的程序并确保包含您拥有的任何自定义 *.mk 文件吗?

是否有可能useradmin是之前尝试创建自己的受密码保护的用户时遗留下来的? 同样,干净的构建会有所帮助。

正如在其他答案中所观察到的,Buildroot 中没有任何内容可以增加adminuser用户。

可以在四个位置将用户添加到/etc/passwd

  • 文件/etc/passwd在骨架中。如果您有自定义骨架,它可能来自那里。
  • 由包和文件系统构造的用户表。您可以在output/build/buildroot-fs/users_table.txt中看到其中的内容(或者,在旧版本的Buildroot中,在output/build/_users_table.txt中(。
  • 自定义文件系统覆盖中存在的文件/etc/passwd
  • /etc/passwd由后期生成脚本执行的任何操作。

包也可能(尽管不是有意的(直接更新/etc/passwd。如果是这种情况,您将看到它出现在output/build/packages-file-list.txt.

你确定你使用的是官方的Buildroot吗?官方的Buildroot在 https://git.buildroot.org/buildroot/tree/system/skeleton/etc/passwd 有一个默认/etc/passwd,它不包含任何adminuser用户。

最新更新