You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Landscape使用的临时目录?

如何修改Landscape使用的临时目录?

确实,你遇到的这个问题很常见——Landscape默认会把待执行的脚本上传到系统的/tmp目录再运行,如果/tmp挂载时设置了noexec权限,就会触发权限拒绝的错误,和你贴的报错完全一致。

遗憾的是,Landscape本身确实没有提供直接在landscape-config或者配置文件里修改临时目录的选项,但我们可以通过调整服务的环境变量来绕过这个限制,具体步骤如下:

1. 创建专属的临时目录

首先,我们需要准备一个有执行权限的目录,推荐用/var/tmp下的子目录(因为/var/tmp默认是允许执行的,且数据留存时间比/tmp长):

sudo mkdir -p /var/tmp/landscape-tmp
sudo chown landscape:landscape /var/tmp/landscape-tmp
sudo chmod 700 /var/tmp/landscape-tmp

这样可以确保只有landscape用户能访问这个目录,避免安全风险。

2. 修改Landscape客户端的服务配置

如果你的系统用的是systemd(绝大多数现代Linux发行版都是),需要修改Landscape客户端的服务文件:

sudo nano /lib/systemd/system/landscape-client.service

在[Service]区块里添加一行环境变量配置,指定新的临时目录:

Environment=TMPDIR=/var/tmp/landscape-tmp

3. 重启服务生效

保存文件后,重新加载systemd配置并重启Landscape客户端服务:

sudo systemctl daemon-reload
sudo systemctl restart landscape-client.service

原理说明

Landscape在处理脚本时,会使用Python的tempfile模块创建临时文件,而这个模块会优先读取TMPDIR环境变量来确定临时目录位置。通过给Landscape服务设置这个环境变量,就能让它把脚本存到我们指定的可执行目录里,完美避开/tmp的noexec限制,也不用修改/tmp的挂载选项。

如果你的系统用的是upstart而不是systemd,那需要修改/etc/init/landscape-client.conf,在文件开头添加env TMPDIR=/var/tmp/landscape-tmp,然后重启服务即可。

备注:内容来源于stack exchange,提问作者Jonas Lindau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 08:34:36