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

Ubuntu系统下Python应用写入/var/www权限不足,设置chmod 777是否合理?

将/var/www权限设置为chmod 777绝对不是合理的解决方案,属于生产环境明令禁止的高危操作。

chmod 777会赋予系统内所有用户对/var/www目录的读、写、执行权限,一旦服务器存在其他权限漏洞,站点文件极易被恶意篡改、植入木马,会带来极其严重的安全风险。

问题根因

你的报错本质是sentence_transformers默认会将下载的预训练模型缓存到程序运行用户的家目录下的.cache文件夹:

  • 你使用mod_wsgi运行Flask应用,默认运行用户是www-data,它的家目录默认就是/var/www
  • 从你给出的权限配置可以看到,/var/www的所属用户是root,www-data没有写入权限,所以创建/var/www/.cache目录时触发权限报错

正确的解决方案(优先级从高到低)

  • 方案1:指定自定义缓存目录
    在初始化SentenceTransformer之前添加环境变量配置,将缓存目录指向应用有权限读写的路径,示例代码:

    import os
    # 提前在/var/www/html/flaskapp下创建model_cache目录即可
    os.environ['TRANSFORMERS_CACHE'] = '/var/www/html/flaskapp/model_cache'
    from sentence_transformers import SentenceTransformer
    model = SentenceTransformer('stsb-roberta-large')
    

    配置完成后执行命令给目录赋权:

    mkdir /var/www/html/flaskapp/model_cache
    chown www-data:www-data /var/www/html/flaskapp/model_cache
    
  • 方案2:单独给缓存目录赋权
    不需要修改/var/www整体权限,只需要手动创建报错提示的.cache目录,给运行用户授权即可:

    mkdir /var/www/.cache
    chown www-data:www-data /var/www/.cache
    
  • 方案3:提前手动下载模型
    你可以提前把stsb-roberta-large模型下载到本地指定路径,初始化SentenceTransformer时直接传入本地路径,不会触发自动下载写缓存的逻辑,也能规避权限问题。

内容的提问来源于stack exchange,提问作者ApplePie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:27:00