如果我理解正确的话,Landscape 会在运行所有脚本之前将其上传为文件,并将它们存储在 /tmp 下。如果您使用 noexec 配置 tmp 分区,这当然会是个问题,并会给我留下类似这样的错误:
File "/usr/lib/python3.10/os.py", line 598, in _execvpe
exec_func(file, *argrest)
PermissionError: [Errno 13] Permission denied: '/tmp/tmpnn0rb1qz'
那么,是否可以更改 Landscape 用来存储脚本的位置?我在 Landscape-config 中找不到这样的选项,在配置文件中也没有找到任何内容。
我真的不想用 exec 配置 tmp......
答案1
这实际上不受 Landscape 支持,因此我们必须修补该文件:
/usr/lib/python3/dist-packages/landscape/client/manager/scriptexecution.py
在文本编辑器中打开fd, filename = tempfile.mkstemp()
用以下行替换fd, filename = tempfile.mkstemp(dir="/path/to/where/you/want/to/store/the/scripts")
- 重启
- 每次升级
landscape-client
软件包时重新应用这些更改