我需要通过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按预期工作
答案 0 :(得分:-1)
您需要将environment 'HOME' => "/home/#{login}"
添加到bash
资源。 gpg
命令行工具使用此变量而不是实际检查当前用户的homedir是什么目录。使用sudo -i
运行时,会为设置此环境变量的用户创建登录shell。