我需要读取一些具有特权权限的硬件数据,因此我需要以root用户身份使用asdf插件。我该怎么办?
我尝试启动root用户sudo su
,但无法访问asdf
答案 0 :(得分:1)
tl; dr:sudo -E su
问题是sudo
默认情况下不保留(大多数)环境变量。对于asdf
,环境变量ASDF_CONFIG_FILE
,ASDF_DATA_DIR
和ASDF_DIR
以及常见的可疑对象(例如PATH
)都很重要。
幸运的是,我们可以指示sudo
保留所有环境变量。来自man sudo
:
-E,--preserve-env
指示用户希望保留其现有环境变量的安全策略。如果用户没有保留环境的权限,则安全策略可能会返回错误。
资源:
答案 1 :(得分:0)
帖子上的现有答案向我指出了正确的方向:sudo -E
是必需的,以便将环境变量(包括重要的PATH
)带到sudo外壳中。
但是,我仍然得到unknown command: THECOMMAND. Perhaps you have to reshim?
。对我有用的是获取要运行的命令和要运行的二进制文件的路径。
就我而言,我试图使用hostile
主机管理工具。失败是因为找不到node
。通过指定完整的node
路径和指向hostile
脚本的直接路径,我可以解决重新填充错误。
sudo -E `asdf which node` `asdf which hostile` load the_file.txt