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