多人共用GPU服务器租用实例时,最常见的故障往往不是显卡性能不足,而是“代码能看不能改”“训练输出属于root”“数据被误删”。尤其在深度学习项目中,数据集、模型权重和日志交叉存放,一次不当的chmod -R 777就可能留下安全隐患。本文给出一套可复用的Linux协作目录配置方法。
一、问题背景
团队开展大模型训练或推理部署时,通常会让算法、数据和运维人员共享同一台机器。若所有人都使用root,误操作风险很高;若每人使用独立账号,又容易因用户组、默认权限和缓存目录配置不一致而报Permission denied。
合理的做法是按账号、用户组、项目目录和默认权限四层拆分。选择GPU算力平台时,也应确认SSH登录与目录管理方式。润云智算提供GPU云服务器及镜像环境,可在官网了解可用资源。
二、环境准备
本文假设系统为Ubuntu,管理员拥有sudo权限,成员为alice和bob,共享目录为/data/projects/demo。操作前备份重要文件,并确认没有任务正在写入。
建议规划以下结构:
/data/projects/demo/ ├── code/ # 团队可读写代码 ├── data/ # 原始数据,限制修改 ├── outputs/ # 检查点与结果 └── logs/ # 训练和服务日志这套结构适用于AI算力平台上的科研训练,也适用于临时GPU服务器租用实例。
三、实操步骤
1. 定位权限链路
先检查当前身份,以及从根目录到目标文件的每一级权限:
idls-ld/data /data/projects /data/projects/demo namei-l/data/projects/demo/outputsnamei -l能发现父目录缺少执行权限的问题,比只查看目标文件更可靠。
2. 创建项目用户组
sudogroupaddai-teamsudousermod-aGai-team alicesudousermod-aGai-team bob getent group ai-team成员需要重新登录,或执行newgrp ai-team,新用户组才会在当前会话生效。不要遗漏-a参数,否则可能覆盖用户原有附加组。
3. 配置共享目录与组继承
sudomkdir-p/data/projects/demo/{code,data,outputs,logs}sudochown-Rroot:ai-team /data/projects/demosudochmod2770/data/projects/demosudofind/data/projects/demo-typed-execchmod2770{}\;sudofind/data/projects/demo-typef-execchmod0660{}\;目录权限中的2表示setgid,新建文件会继承ai-team组,避免成员生成的内容只能由本人修改。
4. 设置默认ACL
如果系统支持ACL,可让新文件自动获得组读写权限:
sudosetfacl-R-mg:ai-team:rwx /data/projects/demosudosetfacl-R-d-mg:ai-team:rwx /data/projects/demo getfacl /data/projects/demo未安装工具时可执行sudo apt install acl,或统一设置umask 0007。ACL适合细粒度授权,但交接时应同时导出权限说明。
5. 保护数据与凭据
原始数据确认无须修改后,可限制为组只读;密钥和令牌则只允许所有者访问:
sudochmod-Rg-w /data/projects/demo/datachmod600~/.config/project/tokenfind/data/projects/demo-xdev-typed-perm-0002-print最后一条命令用于寻找任何人都可写的目录。生产凭据不要放入代码仓库或公共日志。
6. 用普通用户完成验收
sudo-ualicetouch/data/projects/demo/outputs/alice.testsudo-ubobbash-c'echo ok >> /data/projects/demo/outputs/alice.test'ls-l/data/projects/demo/outputs/alice.test读写测试符合预期后再开始深度学习训练。推理部署的服务账号应仅访问模型和日志目录。
四、常见问题与解决方案
1. 加入用户组后仍然无权限
检查id 用户名,重新登录使组关系生效;同时使用namei -l排查父目录权限。
2. 训练结果仍属于root
通常是使用sudo python启动任务。应切回普通账号运行,并修正历史文件的所有者和用户组。
3. 为什么不建议直接设置777
777允许任意本地用户修改或删除内容,无法形成有效隔离。应优先使用用户组、setgid和ACL。
4. 更换实例后权限显示异常
Linux权限依赖UID和GID。迁移数据时,应同步记录账号映射,并在新环境重新核对所有权。
五、总结
共享GPU实例的关键是让访问范围可检查。通过独立账号、项目用户组、setgid、默认ACL和普通用户验收,可降低误删与中断风险。无论用于大模型训练还是推理部署,都应先固化目录规范,再评估GPU算力平台资源。
润云智算围绕GPU资源、开发镜像和模型运行场景提供算力服务,适合按项目需要准备开发环境。实际使用中仍应由团队维护账号、数据备份和最小权限规则。
FAQ
Q1:一个项目需要单独创建用户组吗?
建议创建。项目组能避免不同任务之间互相读取或修改文件,也便于成员退出时回收权限。
Q2:setgid会让普通文件获得执行权限吗?
不会。它主要作用于目录中的组继承,文件权限仍由创建程序、umask或ACL决定。
Q3:权限配置会影响GPU性能吗?
通常不会,但权限错误会导致数据加载、检查点保存或服务写日志失败,间接中断计算任务。