1

我需要读取一些具有特权权限的硬件数据,所以我需要以 root 身份使用 asdf 插件。我怎样才能做到这一点?

我试图启动 root 用户sudo su,但我无法访问 asdf

4

2 回答 2

3

tl;博士:sudo -E su

问题是sudo默认情况下不保留(大多数)环境变量。对于asdf,环境变量ASDF_CONFIG_FILEASDF_DATA_DIRASDF_DIR以及通常的嫌疑犯都很重要,例如PATH.

幸运的是,我们可以指示sudo保留所有环境变量。来自man sudo

-E, --preserve-env

向安全策略指示用户希望保留其现有环境变量。如果用户没有保护环境的权限,安全策略可能会返回错误。


资源:

于 2019-07-19T14:54:52.830 回答
0

这篇文章的现有答案为我指明了正确的方向: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
于 2020-02-16T16:07:14.543 回答