我正在为嵌入式产品使用buildroot。我已经通过BR2_ROOTFS_USERS_TABLES
选项添加了自己的受密码保护的用户,并且工作正常。
问题:buildroot 继续向系统添加user
和admin
用户,并且他们没有密码。这些不是骨架文件系统的一部分,但似乎是在构建过程中明确添加的,尽管如果我能弄清楚在哪里,那就了。另外,即使我禁用BR2_TARGET_ENABLE_ROOT_LOGIN
,我仍然可以以root身份登录。
如何摆脱默认user
并admin
用户?或者,如何将他们的密码设置为长且无法猜测的密码?
编辑:我刚刚发现删除
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
登录,并且user
和admin
帐户的密码均为空。
禁用BR2_TARGET_ENABLE_ROOT_LOGIN
后您是否进行了干净的构建? 我一直在尝试重建骨架包时遇到问题。
我从未见过名为user
或admin
的构建根用户。 通过我的构建根包的 grep 也没有显示任何此类用户定义:awk '/define.*_USERS/,/endef/' package/*/*mk
您可以在系统上运行相同的程序并确保包含您拥有的任何自定义 *.mk 文件吗?
是否有可能user
和admin
是之前尝试创建自己的受密码保护的用户时遗留下来的? 同样,干净的构建会有所帮助。
正如在其他答案中所观察到的,Buildroot 中没有任何内容可以增加admin
或user
用户。
可以在四个位置将用户添加到/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
,它不包含任何admin
或user
用户。