我们正在为root用户添加密码。以下是conf文件的补充。
INHERIT += "extrausers"
EXTRA_USERS_PARAMS = "usermod -p $(openssl passwd abcd1234) root"
以上两行为我们完成了工作。但是问题是每个读取配置文件的人都可以知道密码为“ abcd1234”。
还有其他方法可以安全地将密码存储在配置中,还是最好的处理方式?我们有成千上万个运行嵌入式Linux的设备,如果有人能够获得root密码,他可以轻松访问所有设备,因为密码是相同的。解决这种情况的最佳方法是什么?
答案 0 :(得分:2)
完全不使用密码验证;如果使用ssh访问设备,则最好使用某种公共密钥身份验证(可能与主机身份验证结合使用)。阅读man ssh中的“身份验证”部分。
答案 1 :(得分:2)
亚历山大的答案是最佳实践。
如果确实需要在配置中输入密码,则至少可以存储加密的变体(在示例中使用openssl
的输出,但是我会使用更强大的算法),即:
EXTRA_USERS_PARAMS = "\
usermod -p '\$6\$ca1gxiMTHxfATDYV\$PpXt8OeIiBY8xJX1qh66Sq1oC5tIthrhzo9dq6ILerp.vg7xdkHpLGbM.PKgh./r2J1lkSmHXT2Xhq/ZKr0XF.' root; \
"
请注意转义$
(以及任何其他特殊字符,如果存在),因为加密的密码由Shell解释。 (上面的示例中有真实的密码,但这是一个很弱的密码。)
顺便说一句,我是否提到亚历山大的答案是最佳实践;-)?