google-compute-engine 脚本的访问权限

google-compute-engine 脚本的访问权限

我想在计算引擎上运行 python 脚本,它使用基于 Linux 的操作系统(“debian-9-stretch-v20180307”)。我正在使用 bash 启动脚本,代码如下:

#! /bin/bash

sudo apt-get update
sudo apt-get -yq install python-pip
sudo pip install --upgrade google-cloud
sudo pip install --upgrade google-cloud-storage
sudo pip install --upgrade google-api-python-client
sudo pip install --upgrade google-auth-httplib2

echo "Making directories..."

mkdir -p /home/<myusername>/code
mkdir -p /home/<myusername>/rawdata
mkdir -p /home/<myusername>/etc...

sudo chown -R <myusername> /home/<myusername>

echo "Directory creation complete..."

gsutil cp gs://<mybucketname>/worker-python-code/* /home/<myusername>/code/
gsutil -m cp gs://<mybucketname>/* /home/<myusername>/rawdata/

echo "Boot complete."

当我创建实例并使用脚本启动它时,所有目录都会按预期创建,并且所有数据都会根据 gsutil 命令复制。然后,我通过“SSH”进入实例并使用以下命令来运行我的脚本:

python '/home/<myusername>/code/workermaster.py'

该脚本运行,直到到达需要在磁盘上创建 .csv 的行,然后我收到“[Errno 13] 权限被拒绝”错误。

我已经做了一些测试并尝试在基于其他线程和谷歌搜索运行 SSH shell 时运行脚本,但似乎无法让它工作。一些有趣的注释和观察是:

1)在“控制台输出”报告中有一行内容如下:

chown: invalid user: ‘<myusername>’

然后很多行都写着:

Created user account <myusername>

这表明我正在尝试将所有权设置给尚不存在的人,但我不知道该怎么办。

2) 如果我通过 SSH 登录后运行“chown”命令行,然后运行我的脚本,它会完全按照预期运行,没有任何问题。

3)我尝试通过在启动脚本中添加一行来解决该问题,内容如下:

须藤 chmod -R 777 /home/

当我使用此命令时,我什至无法通过 SSH 连接到该实例。

最终,我计划在脚本中添加“nohang up”行,以便 python 代码在无需登录的情况下远程运行,但我需要了解这里发生的情况,并且能够在启动后通过 SSH 登录并运行我的脚本。

相关内容