【问题标题】:How can I run `gpg` as non-root user, from a Chef cookbook?如何从 Chef 食谱中以非 root 用户身份运行“gpg”?
【发布时间】:2017-06-02 11:18:52
【问题描述】:

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

不过,我发现了非常奇怪的所有权行为,我不知道如何解决它们;以下是不同方法发生的情况的列表(所有 sn-ps 都是 bash 资源中的块。

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

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

2.这将(有时)创建带有所有者的/home/&lt;login&gt;/.gnupg,然后将在其中创建带有root所有者的数据文件,然后将尝试以&lt;login&gt;写入它们:

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

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

【问题讨论】:

  • Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super UserUnix & Linux Stack Exchange 会是一个更好的提问地方。另见Where do I post questions about Dev Ops?
  • 我明白了;那么当然,这个问题应该转移到 devops.stackexchange.com。 stackoverflow.com 上的厨师问题由来已久,具有误导性(例如,请参阅 Related 链接)。
  • 我投票决定将此问题作为离题结束,因为它离题了。

标签: linux permissions chef-infra


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 2017-02-06
    • 2017-07-08
    • 2017-06-22
    • 1970-01-01
    相关资源
    最近更新 更多