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