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

使用atmoz/sftp管理Nginx共享卷时遇上传权限拒绝问题求助

问题解决:atmoz/sftp 上传文件提示权限拒绝

问题根源

共享卷 html_data 被 Nginx 容器初始化时设置为 root:root 权限(755),而 SFTP 用户 website_user 没有该目录的写入权限,导致上传失败。

解决步骤

1. 清理现有资源(可选)

如果已经创建过 html_data 卷,需要先删除它(否则旧的 root 权限会保留):

docker-compose down -v

2. 修改 .env 文件,指定用户 UID 和 GID

在用户配置中添加 UID 和 GID(示例用 1000,可根据需求调整):

# USER:PASSWORD:UID:GID
SFTP_USERS=website_user:SOME_PW:1000:1000

3. 调整 docker-compose.yml 配置

修改 SFTP 服务的启动命令,确保容器启动时自动修正目录属主:

services:
  webserver:
    image: nginx:latest
    container_name: nginx_server
    ports:
      - "8080:80"
    volumes:
      - html_data:/usr/share/nginx/html
    restart: always

  sftp:
    image: atmoz/sftp:latest
    container_name: sftp_server
    ports:
      - "2222:22"
    volumes:
      - html_data:/home/website_user/upload
    environment:
      SFTP_USERS: ${SFTP_USERS}
    # 启动时先将上传目录属主改为 SFTP 用户
    command: chown ${SFTP_USERS%%:*}:${SFTP_USERS%%:*} /home/website_user/upload && /usr/sbin/sshd -D
    restart: always

volumes:
  html_data:

4. 重新启动容器

docker-compose up -d

替代方案(一次性手动修正)

如果不想修改配置,也可以进入 SFTP 容器手动调整目录权限:

docker exec -it sftp_server chown website_user:website_user /home/website_user/upload

注:此方法仅对当前卷有效,若卷被重新创建需再次执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 18:43:14