如何从Chef菜谱中以非root用户身份运行`gpg`?

时间:2017-06-02 11:18:52

标签: linux permissions chef

我需要通过Chef [client,13]导入[Ubuntu 14.04]系统所有用户的公钥。

但是,我发现了非常奇怪的所有权行为,我无法弄清楚如何解决它们;以下是使用不同方法时所发生情况的列表(所有代码段都是bash资源中的块。

1.这会将gpg执行为<login>,但会尝试写入/root/.gnupg:

code "gpg --import << PUBKEY..."
user login

2.这将(有时)与所有者一起创建/home/<login>/.gnupg,然后将在其中创建具有root所有者的数据文件,然后尝试将其写为<login>

code "sudo -iu #{login} gpg --import << PUBKEY..."

3.通过终端手动执行#2按预期工作

1 个答案:

答案 0 :(得分:-1)

您需要将environment 'HOME' => "/home/#{login}"添加到bash资源。 gpg命令行工具使用此变量而不是实际检查当前用户的homedir是什么目录。使用sudo -i运行时,会为设置此环境变量的用户创建登录shell。