如何从主厨食谱中以非root用户的身份运行`gpg`?

问题描述:

我需要通过Chef [client,13]导入一个[Ubuntu 14.04]系统所有用户的公钥。如何从主厨食谱中以非root用户的身份运行`gpg`?

虽然我发现很奇怪的所有权行为,但我无法弄清楚如何解决它们;下面是一个什么样不同的方法(所有的片段是一个bash resource`内发生块列表

1,本会执行GPG为<login>,但会尝试写入/root/.gnupg:

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

2,本会(有时)创建/home/<login>/.gnupg与业主,然后将里面创建根所有者的数据文件,然后将尝试写信给他们为<login>

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

3.Executi ng#2手动通过终端按预期工作

+0

Stack Overflow是编程和开发问题的网站。这个问题似乎与题目无关,因为它不涉及编程或开发。请参阅帮助中心的[我可以询问哪些主题](http://*.com/help/on-topic)。也许[超级用户](http://superuser.com/)或[Unix&Linux堆栈交换](http://unix.stackexchange.com/)会是一个更好的地方。另请参阅[我在哪里发布有关Dev Ops的问题?](http://meta.stackexchange.com/q/134306) – jww

+0

我明白了;那么肯定,这个问题应该被转移到devops.stackexchange.com。在*.com上有一个长期的厨师问题,这是误导性的(例如,参见'Related'链接)。 – Marcus

+1

我投票结束这个问题作为题外话题,因为它是题外话题。 – Marcus

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