linux目录默认属组继承需四步协同:一、chown :group设属组后chmod 2770启sgid;二、usermod -ag加用户入组并重登录;三、umask设002保组写权;四、chmod +t加sticky bit防误删。

Linux 中设置目录的默认属组继承特性,核心是启用 SGID(Set Group ID)位,并确保整个协作环境配合到位。光加 chmod g+s 是不够的,必须让新创建的文件自动归属指定组、且保留组写权限,这需要四个关键环节协同生效。
一、先设属组,再开 SGID
目录必须明确归属目标组,否则 SGID 没有“继承对象”。不能跳过属组直接 chmod。
- 用
chown :groupname单独设置属组(注意冒号开头,不写用户名),例如:sudo chown :devteam /srv/shared - 再开启 SGID 并赋予组读写执行权限:
sudo chmod 2770 /srv/shared
其中 2 表示 SGID,770 表示属主和属组全权、其他人无权限 - 验证是否生效:
ls -ld /srv/shared应显示drwxrws---——组执行位是小写 s,不是 x 或大写 S
二、确保用户属于该组且会话已更新
即使目录开了 SGID,如果用户不在目标组里,或当前 shell 没加载新组信息,新建文件仍按其默认主组走。
- 把用户加入组:
sudo usermod -aG devteam alice - 用户需重新登录;或临时切换主组:
newgrp devteam(退出当前 shell 后失效) - 检查是否生效:
groups或id -nG输出应包含 devteam
三、统一 umask 保证组写权限不被过滤
SGID 只继承组名,不继承写权限。若用户 umask 是 022,新建文件默认为 -rw-r--r--,组无法修改。
- 推荐全局设为
umask 002:
在/etc/profile或/etc/bash.bashrc中追加:umask 002 - 个人配置可加到
~/.bashrc - 验证效果:在共享目录中
touch test.txt,再ls -l test.txt,应显示类似-rw-rw----(组含 w)
四、可选:加 Sticky Bit 防误删
多人共写同一目录时,仅 SGID 不防删除。加 Sticky Bit(t 位)后,只有文件所有者、目录所有者或 root 才能删文件。
- 命令:
sudo chmod +t /srv/shared
或一步到位:sudo chmod 12770 /srv/shared - 验证:
ls -ld /srv/shared显示应为drwxrws--T(大写 T 表示无执行权)或drwxrws--t(小写 t 表示有执行权)











