覆盖默认 Linux 用户

ENTERPRISE

覆盖默认 Linux 用户

服务或作业的默认 Linux 用户可能因安全模式和容器类型而异 请参阅 Linux 用户 了解更多信息。

覆盖默认 Linux 用户的程序因服务或作业类型而异。

覆盖 Universe 服务的默认 Linux 用户

许多 Universe 服务忽略其用户帐户的覆盖,在 strict 模式下除外。我们提供覆盖服务默认 Linux 用户的详细步骤,该服务在服务账户中支持此覆盖。有关逐步说明,请参阅与感兴趣的服务相关的部分。程序还包括如何配置服务以使用加密和服务帐户。

请记住,授予权限,以对服务账户用户在 dcos:mesos:master:task:user[:<linux-user-name>] 资源上执行 create 的操作,Universe 服务使用该服务账户用户启动。请参阅 Mesos 权限,了解更多信息。

通过 Marathon 应用定义覆盖默认 Linux 用户

Marathon 应用定义提供用于覆盖默认 Linux 用户的 "user" 验证序号。

注意: 参考 Marathon 文档,了解有关编写 Marathon 服务的更多详细信息。

以下教程将展示所有权如何运作。在开始之前,请确保:

  • 代理程序上已存在 Linux 用户帐户。
  • 您已安装并登录到 DC/OS CLI
  • 如果您的 安全模式permissivestrict,则必须遵守 下载根证书 中的步骤才能发布此部分的 curl 命令。
  • 如果您的安全模式disabled,则必须在将其发出前从命令中删除 --cacert dcos-ca.crt。 您已经授予权限,以在 dcos:mesos:master:task:user[:<linux-user-name>] create 的操作<linux-user-name> resource to the dcos_marathon DC/OS 服务帐户用户。

满足这些先决条件后,完成以下步骤以覆盖默认 Linux 用户。

  1. 创建 Marathon 应用定义,并使用能表达其性质的名称保存,如 myservice.json。以下服务会将其在用户名称下运行的用户名称写入日志,创建新文件,并从 dcos.io 获取 Mesosphere 徽标。

    {
      "id": "linux-user-override",
      "cmd": "whoami && tee file && sleep 1000",
      "user": "<your-test-user-account>",
      "uris": [
          "/1.11/img/logos/mesosphere.svg"
      ]
    }
    

    重要信息:不要忘记将your-test-user-account替换为代理程序上存在的 Linux 用户的名称,并且与默认值不同。

  2. 使用 Marathon API 部署服务。

    curl -X POST --cacert dcos-ca.crt $(dcos config show core.dcos_url)/service/marathon/v2/apps -d @myservice.json -H "Content-type: application/json" -H "Authorization: token=$(dcos config show core.dcos_acs_token)"
    
  3. 检查 DC/OS Web 界面的 Services 选项卡,以确认您的应用程序已成功创建。

  4. 单击您的服务,然后单击 Configuration 选项卡。

  5. 向下滚动以查看指定为User值的 Linux 用户帐户。

  6. 单击 Tasks 选项卡。到这时,您的服务应该已成功部署。单击任务名称。

  7. 单击 Files 选项卡。

  8. 观察作为获取和创建文件的OWNER而传入的 Linux 用户名。

  9. 单击以打开 stdout 文件。

  10. 滚动到底部,您应该看到 whoami 命令的结果,也就是任务在其下运行的用户名称。

通过 Metronome 作业定义覆盖默认 Linux 用户

Metronome 作业定义提供 "user" 验证序号,可用于覆盖默认 Linux 用户。

注意: 有关创建和部署作业的更多信息,请参阅作业文档

以下步骤将引导您完成快速教程,以展示所有权如何运作。在开始之前,请确保:

  • 代理程序上已存在 Linux 用户帐户。
  • 您已安装并登录到 DC/OS CLI
  • 如果您的 安全模式permissivestrict,则必须遵守 下载根证书 中的步骤才能发布此部分的 curl 命令。如果您的安全模式disabled,则必须在将其发出前从命令中删除 --cacert dcos-ca.crt。 您已经授予权限,以在 dcos:mesos:master:task:user:上执行create的操作<linux-user-name> resource to the dcos_metronome DC/OS 服务帐户用户。

满足这些先决条件后,完成以下步骤以覆盖默认 Linux 用户。

  1. 创建 Metronome 作业定义,并使用能表达其性质的名称保存,如 myjob.json

    {
      "id": "linux-user-override",
      "cmd": "whoami && tee file && sleep 1000",
      "user": "<your-test-user-account>",
      "uris": [
          "/1.11/img/logos/mesosphere.svg"
      ]
    }
    

    重要信息:不要忘记将“your-test-user-account”替换为代理程序上存在的 Linux 用户的名称,并且与默认值不同。

  2. 使用 Metronome REST API 部署作业。

    curl -X POST --cacert dcos-ca.crt $(dcos config show core.dcos_url)/service/metronome/v1/jobs -d @myjob.json -H "Content-type: application/json" -H "Authorization: token=$(dcos config show core.dcos_acs_token)"
    
  3. 检查 DC/OS Web 界面的 Jobs 选项卡,以确认您的应用程序已成功部署。

  4. 单击您的作业,然后单击 Run Now

  5. 单击三个堆叠点并选择 Run Now,从右上方打开下拉菜单。

  6. 展开作业并单击打开其任务。

  7. 单击以打开 Files 选项卡。

  8. 注意所有文件都将您的 Linux 用户作为OWNER

  9. 单击以打开 stdout 文件。

  10. 滚动到底部,您应该看到 whoami 命令的结果,任务在其下运行的用户名称,然后是 iamme