当前位置: 首页 > news >正文

linux_实训2

文章目录

  • 一、问题场景说明(Scenario)
  • 二、传统权限方式的分析(不使用 SGID)
    • 1. 用户与组准备
    • 2. 创建开发目录
    • 3. 使用传统权限进行尝试
    • 4. 实际测试结果(问题出现)
      • alex 创建文件
      • arod 尝试访问
    • 5. 传统权限的根本缺陷
  • 三、SGID 的作用与解决方案
    • 1. 什么是 SGID(目录上的含义)
    • 2. 启用 SGID 并设置最终权限
    • 3. 再次测试(成功)
      • alex 创建文件
      • arod 访问文件
  • 四、为什么项目目录“必须”使用 SGID?
    • 1. 不使用 SGID 的后果
    • 2. 使用 SGID 的优势
    • 3. 管理员角度的最佳实践
  • 五、总结一句话

一、问题场景说明(Scenario)

系统中存在两个用户账号:

  • alex
  • arod

特点如下:

  • 两个账号各自有自己的主组
  • 同时都属于 project 这个附加组
  • 两人需要共同开发/srv/ahome目录下的项目
  • 其他用户不允许查看或访问该目录

管理员目标:

  • 让 alex 和 arod都能在该目录中创建、修改彼此的文件
  • 确保目录和文件的访问权限严格受控
  • 使用chmodchgrp等命令完成配置

二、传统权限方式的分析(不使用 SGID)

1. 用户与组准备

groupaddprojectuseradd-G project alexuseradd-G project arod

确认账号属性:

idalexuid=1008(alex)gid=1012(alex)groups=1012(alex),1011(project)idaroduid=1009(arod)gid=1013(arod)groups=1013(arod),1011(project)

说明:

  • 主组:alex / arod
  • 共同附加组:project

2. 创建开发目录

mkdir/srv/ahome ll -d /srv/ahome drwxr-xr-x2root root4096Sep2922:36 /srv/ahome

此时目录:

  • 属主:root
  • 属组:root
  • 权限:755(其他人可读)

这显然不符合需求


3. 使用传统权限进行尝试

管理员通常会想到:

  • 把目录属组改成 project
  • 给组写权限
  • 禁止其他人访问
chgrpproject /srv/ahomechmod770/srv/ahome

此时目录权限为:

drwxrwx--- root project /srv/ahome

看起来很合理

  • alex / arod 都在 project 组
  • 其他用户无法访问

4. 实际测试结果(问题出现)

alex 创建文件

su- alexcd/srv/ahometouchabcd ll abcd

结果类似:

-rw-rw-r--1alex alex0Sep2922:46 abcd

⚠️问题关键在这里:

  • 文件属主:alex
  • 文件属组:alex(主组)
  • 并不是 project

arod 尝试访问

su- arodcd/srv/ahome ll abcd

分析:

  • arod ≠ alex
  • abcd 的属组是 alex
  • arod不属于 alex 组
  • 因此 arod 被当成other

👉 即使目录权限正确,文件权限已经破坏协作
👉 arod无法修改 alex 创建的文件


5. 传统权限的根本缺陷

Linux 默认规则:

新文件的属组 = 创建者的“主组”

这意味着:

  • 多人协作目录中
  • 文件属组会被“分裂”
  • 权限管理复杂、不可控
  • 管理员需要频繁chgrp

👉传统权限机制不适合多人项目开发目录


三、SGID 的作用与解决方案

1. 什么是 SGID(目录上的含义)

SGID 设置在目录上时:

该目录中创建的所有新文件和子目录,自动继承目录的属组

⚠️ 注意:

  • 不改变属主
  • 只控制属组继承

2. 启用 SGID 并设置最终权限

chmod2770/srv/ahome

权限含义拆解:

含义
2SGID
7owner:rwx
7group:rwx
0other:—

查看结果:

ll -d /srv/ahome drwxrws---2root project4096Sep2922:46 /srv/ahome

s表示:SGID 已生效


3. 再次测试(成功)

alex 创建文件

su- alexcd/srv/ahometouch1234ll1234

结果:

-rw-rw-r--1alex project0Sep2922:531234

✔ 文件属组:project

arod 访问文件

  • arod 属于 project
  • umask = 002
  • 具有组写权限

👉双方可以互相修改文件


四、为什么项目目录“必须”使用 SGID?

1. 不使用 SGID 的后果

  • 文件属组混乱
  • 成员之间互相无法修改
  • 管理员需要频繁手动修正
  • 项目规模越大,问题越严重

2. 使用 SGID 的优势

优点说明
自动继承组文件永远属于 project
权限一致不会因主组不同而失效
管理成本低无需频繁 chgrp
安全性高other 永久无权访问
符合协作模型适合源码、脚本、配置文件

3. 管理员角度的最佳实践

多人开发目录标准配置:

chgrpproject /srv/ahomechmod2770/srv/ahome

配合:

umask002

这是Linux 项目开发环境的经典方案


五、总结一句话

在多人协作的项目目录中,仅依靠传统权限无法保证文件属组一致,必须通过在目录上设置 SGID,使新建文件自动继承项目组,从而确保组内成员能够互相修改文件,同时避免权限混乱。这是系统管理员配置开发环境的标准做法。

http://www.cnnetsun.cn/news/102978.html

相关文章:

  • FT Transformer终极指南:从架构解析到实战优化
  • 告别混乱桌面:5个步骤用Windows Terminal打造高效远程工作站
  • 16、Kubernetes存储与有状态应用运行指南
  • 19、Kubernetes资源配额、集群容量管理与性能优化
  • 21、高级 Kubernetes 网络技术全解析
  • FastAPI多环境部署终极指南:3步告别配置地狱
  • DAIR-V2X车路协同实战手册:从数据到决策的全链路解密
  • EmotiVoice语音温度调节概念引入,冷暖随心
  • Rainmeter官网中文版下载和安装教程(附安装包,超级详细)
  • EmotiVoice语音合成抗噪能力测试:嘈杂环境中仍清晰可辨
  • 邦邦汽服携手吉利循环产业中心解锁汽车后市场绿色循环新路径
  • 浅谈:算法中的斐波那契数(四)
  • 一项基于粒子图像测速(PIV)速度场反演的压力场重构技术
  • HarmonyOS 教学实战(三):列表分页、下拉刷新与性能优化(让列表真正“丝滑”)
  • 智能刷课神器AutoUnipus:3步解放你的网课时间,100%正确率太惊艳![特殊字符]
  • NetBox拓扑视图插件:让网络管理更直观的5个实用技巧
  • EmotiVoice在教育领域的应用探索:让电子教材‘开口讲课’
  • Blender建筑生成插件building_tools:3步创建专业建筑模型
  • 梅豆角矮砧密植:水肥一体化系统的铺设要点
  • GPT-5.2正式发布!国内首发“喂饭级”使用教程
  • Caddy:把 HTTPS 变成默认选项的现代 Web 服务器
  • Q-learning 算法 —— 无模型(model-free)强化学习
  • 如何避免过拟合?EmotiVoice在小样本下的鲁棒性设计
  • JavaScript 动态网页开发核心问题及实现页面动态更新方法
  • Python中append()方法的使用、原理及效率解析
  • 评管理信息系统教材:过时问题、理论实践结合及专业适配性
  • 生产执行系统怎么选?2025年制造业高性价比MES系统推荐
  • MuJoCo逆向运动学实战:从理论到人形机器人运动重定向的完整指南
  • 降aigc提示词排名:10大工具+高效推荐
  • Obsidian Linter完整使用指南:让你的笔记格式统一专业