Artifactory Web UI部署文件报'<filename> is undefined'权限错误求助
解决Artifactory 5.6.0 Web UI部署文件报' is undefined'的问题
结合你描述的症状(Web UI上传失败但curl/Jenkins插件正常、管理员和授权用户都受影响、跨系统出现相同问题),再加上日志里的Permission denied错误,这个问题基本锁定在服务器临时目录权限或者Artifactory Web UI的临时文件处理逻辑上,给你几个实用的排查和解决步骤:
1. 先查服务器临时目录的权限
Artifactory用Web UI上传文件时,会先把文件临时存到服务器的系统临时目录(Linux是/tmp,Windows是%TEMP%),如果运行Artifactory的用户没这个目录的读写权限,就会触发权限拒绝,前端就会返回那个模糊的<filename> is undefined提示。
Linux/macOS操作:
- 先确认Artifactory的运行用户(一般是
artifactory) - 检查
/tmp目录的权限:
确保这个目录对ls -ld /tmpartifactory用户有读写执行权限(至少700,生产环境可以用setfacl做更精细的授权) - 权限不够的话,调整一下:
# 快速解决(适合测试) chmod 777 /tmp # 更安全的生产环境方式 setfacl -m u:artifactory:rwx /tmp
- 先确认Artifactory的运行用户(一般是
Windows操作:
- 找到Artifactory服务的运行账户(默认是Local System,也可能是你自定义的账户)
- 右键系统临时目录(比如
C:\Windows\Temp),选「属性」-「安全」 - 给运行账户加上「读取」「写入」「修改」的权限
2. 给Artifactory指定专属临时目录
如果系统临时目录的权限没法改,或者有安全限制,那就给Artifactory单独配一个临时目录:
- 打开Artifactory的启动配置文件:
- Linux:
$ARTIFACTORY_HOME/bin/artifactory.default - Windows:
$ARTIFACTORY_HOME\bin\artifactory-service.exe.config
- Linux:
- 在
JAVA_OPTS里添加临时目录参数:# Linux示例,加到配置文件里 export JAVA_OPTS="$JAVA_OPTS -Djava.io.tmpdir=/opt/artifactory/custom-temp"<!-- Windows示例,在<jvmOptions>节点下加一行 --> <option value="-Djava.io.tmpdir=C:\artifactory\custom-temp"/> - 创建这个自定义临时目录,确保Artifactory运行用户有读写权限
- 重启Artifactory服务
3. 清一下浏览器缓存试试
有时候旧版本Artifactory的Web UI缓存会出问题,导致前端交互异常:
- 清除浏览器的缓存、Cookie和站点数据
- 用无痕模式打开Artifactory再试上传,排除缓存干扰
4. 确认仓库存储目录的权限
虽然API上传正常,但还是要检查下Artifactory的仓库存储目录($ARTIFACTORY_HOME/data)权限:
- 确保Artifactory运行用户对这个目录及所有子目录有完整的读写权限
- 别让存储目录被设成只读,或者权限继承出问题
5. 考虑升级到5.6.x的最新补丁
Artifactory 5.6.0是2018年的老版本了,官方后续的补丁修复了不少Web UI上传和权限处理的bug,比如5.6.17就是这个系列的最后一个补丁版本,升级之后大概率能解决这类遗留问题。
内容的提问来源于stack exchange,提问作者Mike Rerick
相关产品推荐
相关产品推荐

