服务或作业的默认 Linux 用户可能因安全模式和容器类型而异 请参阅 Linux 用户 了解更多信息。
覆盖默认 Linux 用户的程序因服务或作业类型而异。
覆盖 Catalog 服务的默认 Linux 用户
许多 Catalog 服务忽略其用户帐户的覆盖,在 strict
模式下除外。我们提供覆盖服务默认 Linux 用户的详细步骤,该服务在[服务账户]中支持此覆盖。(/mesosphere/dcos/cn/2.1/security/ent/service-auth/). 有关逐步说明,请参阅与感兴趣的服务相关部分。这些程序还说明如何配置服务以使用加密和服务账户。
请记得授予权限,以便对启动 create
服务的服务帐户用户执行 dcos:mesos:master:task:user[:<linux-user-name>]
资源上的 Catalog 操作。请参阅 Mesos 权限,了解更多信息。
通过 Marathon 应用定义覆盖默认 Linux 用户
Marathon 应用定义提供用于覆盖默认 Linux 用户的 "user"
密钥。**提示:**参考 Marathon 文档,了解有关编写 Marathon 服务的更多详细信息。
以下教程将展示所有权如何运作。在开始之前,请确保:
- 代理程序上已存在 Linux 用户帐户。
- 您已安装并登录到 DC/OS CLI.
- 必须遵守 下载根证书 中的步骤才能发布此部分的 curl 命令。
- 您已授予对
create
DC/OS 服务帐户用户dcos:mesos:master:task:user:<linux-user-name>
资源执行dcos_marathon
操作的权限。
满足这些先决条件后,完成以下步骤以覆盖默认 Linux 用户。
-
创建 Marathon 应用定义,并使用信息名称保存,如
myservice.json
. 以下服务会将其在用户名称下运行的用户名称写入日志,创建新文件,并从 dcos.io 获取 Mesosphere 徽标。{ "id": "linux-user-override", "cmd": "whoami && tee file && sleep 1000", "user": "<your-test-user-account>", "uris": [ "/mesosphere/dcos/2.1/img/logos/mesosphere.svg" ] }
-
使用 [Marathon API]部署服务。(/mesosphere/dcos/cn/2.1/deploying-services/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)"
-
检查 DC/OS Web 界面的 服务 选项卡,以确认您的应用程序已成功创建。
-
单击您的服务,然后单击 Configuration 选项卡。
-
向下滚动以查看指定为用户值的 Linux 用户帐户。
-
单击 Tasks 选项卡。到这时,您的服务应该已成功部署。单击任务名称。
-
单击 Files 选项卡。
-
观察作为获取和创建文件的所有者而传入的 Linux 用户名。
-
单击以打开 stdout 文件。
-
滚动到底部,您应该能看到
whoami
命令的结果,例如,任务在其下运行的用户名称。
通过 Metronome 作业定义覆盖默认 Linux 用户
Metronome 作业定义提供 "user"
密钥,可用于覆盖默认 Linux 用户。
以下程序将引导您完成快速教程,以展示所有权如何运作。在开始之前,请确保:
- 代理程序上已存在 Linux 用户帐户。
- 您已安装并登录到 DC/OS CLI.
- 必须遵守 下载根证书 中的步骤才能发布此部分的 curl 命令。
- 您已授予对
create
DC/OS 服务帐户用户dcos:mesos:master:task:user:<linux-user-name>
资源执行dcos_metronome
操作的权限。
满足这些先决条件后,完成以下步骤以覆盖默认 Linux 用户。
-
创建 Metronome 作业定义,并使用信息名称保存,如
myjob.json
.{ "id": "test-user-override", "run": { "artifacts": [ { "uri": "/mesosphere/dcos/2.1/img/logos/mesosphere.svg" } ], "cmd": "whoami && printf 'iamme' | tee file && sleep 1000", "cpus": 0.01, "mem": 32, "disk": 0, "user": "<your-test-user-account>" } }
-
使用 [Metronome REST API] 部署作业。(https://dcos.github.io/metronome/docs/generated/api.html).
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)"
-
检查 DC/OS Web 界面的 Jobs 选项卡,以确认您的应用程序已成功部署。
-
单击您的作业,然后单击 Run Now。
-
单击三个堆叠点并选择 Run Now,从右上方打开下拉菜单。
-
展开作业并单击打开其任务。
-
单击以打开 Files 选项卡。注意所有文件都将您的 Linux 用户作为所有者。
-
单击以打开
stdout
文件。 -
滚动到底部,您应该看到
whoami
命令的结果,任务在其下运行的用户名称,然后是iamme
.