news 2026/1/25 5:10:16

linux_实训2

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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,使新建文件自动继承项目组,从而确保组内成员能够互相修改文件,同时避免权限混乱。这是系统管理员配置开发环境的标准做法。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/14 3:42:32

ComfyUI字幕增强插件完整配置指南:从零部署到高效批量处理

ComfyUI字幕增强插件完整配置指南:从零部署到高效批量处理 【免费下载链接】ComfyUI_SLK_joy_caption_two ComfyUI Node 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_SLK_joy_caption_two ComfyUI_SLK_joy_caption_two是一款功能强大的AI字幕生成插…

作者头像 李华
网站建设 2025/12/27 23:42:33

Zenject依赖注入框架终极指南:构建高内聚低耦合的Unity项目

在Unity游戏开发中,如何管理复杂的对象依赖关系一直是开发者面临的重大挑战。Zenject作为专为Unity设计的依赖注入框架,通过将对象创建与依赖管理分离,为开发者提供了一套完整的解决方案。本指南将带你深入了解Zenject的核心概念、应用场景和…

作者头像 李华
网站建设 2026/1/21 11:11:41

17、在 Kubernetes 中运行有状态应用

在 Kubernetes 中运行有状态应用 1. 启动 Cassandra 在运行 Cassandra 之前,需要对其进行一些配置。首先,要移除 cassandra-env.sh 文件中关于 JMX 密码文件的配置: sed -ri s/ -Dcom\.sun\.management\.jmxremote\.password\.file=\/etc\/cassandra\/jmxremote\.pass…

作者头像 李华
网站建设 2025/12/27 22:22:03

23、设备树、eMMC 闪存部署与 Git 版本控制全解析

设备树、eMMC 闪存部署与 Git 版本控制全解析 1. 设备树相关知识 设备树是一种描述硬件的数据结构,在嵌入式系统中起着关键作用。几乎每个节点都有一个兼容属性,这个属性将节点与管理它的设备驱动程序连接起来。 设备树源代码会被编译成一种更紧凑的形式,即设备树 blob(…

作者头像 李华
网站建设 2026/1/22 12:39:42

XDM浏览器扩展实战指南:解锁极速下载新体验

XDM浏览器扩展实战指南:解锁极速下载新体验 【免费下载链接】xdm Powerfull download accelerator and video downloader 项目地址: https://gitcode.com/gh_mirrors/xd/xdm 你是否还在为视频下载缓慢而烦恼?是否遇到过批量下载操作繁琐的困扰&am…

作者头像 李华
网站建设 2026/1/23 16:38:53

JSZip错误处理实战指南:从崩溃到掌控

JSZip错误处理实战指南:从崩溃到掌控 【免费下载链接】jszip Create, read and edit .zip files with Javascript 项目地址: https://gitcode.com/gh_mirrors/js/jszip 作为前端开发者,你在处理ZIP文件时是否经常遇到各种莫名其妙的错误&#xff…

作者头像 李华