gpt4 book ai didi

google-cloud-platform - 计算引擎启动脚本无法以非 root 用户身份执行

转载 作者:行者123 更新时间:2023-12-04 12:04:35 30 4
gpt4 key购买 nike

将我的问题归结为最简单的情况,我将 Compute Engine 与以下启动脚本一起使用:

#! /bin/bash
sudo useradd -m drupal
su drupal
cd /home/drupal
touch test.txt

我可以在此命令后确认 drupal 用户存在,测试文件也是如此。但是我希望测试文件的所有者是“drupal”(因此是 su)。但是,当我使用它作为启动脚本时,我仍然可以确认 ROOT 是文件的所有者:

ls -l result

意思是我的
su drupal

不工作。 sudo su drupal 也没有任何区别。我正在使用 Google Container OS,但在 Debian 8 镜像上也会发生同样的情况。

最佳答案

sudo su不是在 shell 中运行的命令——它启动一个新的 shell。

该新 shell 不再运行您的脚本,并且运行该脚本的旧 shell 会等待新 shell 退出,然后再继续运行。
sudo su命令将启动一个新的shell。旧的 shell 等待旧的 shell 退出并继续执行其余的代码。
您的脚本在“旧”shell 中运行,这意味着这些命令:

cd /home/drupal
touch test.txt

仍然以 root 身份执行,因此这些文件的所有者也是 root。

您可以将脚本修改为:
#! /bin/bash
sudo useradd -m drupal
sudo -u drupal bash -c 'cd ~/; touch text2.txt'

它应该工作。 -u标志以用户指定的身份执行命令,在本例中为“drupal”

关于google-cloud-platform - 计算引擎启动脚本无法以非 root 用户身份执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43900350/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com