用户组的意义
把用户分组,统一管权限——不用每个文件给每个用户单独设。
例:开发团队 5 个人都要能读 /srv/code 目录 → 建个 dev 组,5 人加入,目录归 dev 组,组权限 r-x。
/etc/group:组清单
cat /etc/group | head -3
# root:x:0:
# daemon:x:1:
# sudo:x:27:wadely,alice
每行 4 列:
组名 : 密码占位 : GID : 成员列表(用户名,逗号分隔)
4 个常用命令
# 建组
sudo groupadd dev
# 看组成员
getent group dev
# dev:x:1001:wadely,alice
# 加用户到组
sudo usermod -aG dev wadely # 推荐(-a 追加)
sudo gpasswd -a wadely dev # 同上,另一种写法
# 从组里移除
sudo gpasswd -d wadely dev
# 删组
sudo groupdel dev # 组必须没有用户作"主组"才能删
主组 vs 附加组
每个用户只有一个主组(primary group,写在 /etc/passwd 第 4 列),但可以加入多个附加组(supplementary groups)。
id wadely
# uid=1000(wadely) gid=1000(wadely) groups=1000(wadely),27(sudo),1001(dev)
# ↑ ↑
# 主组 附加组
主组的作用:新建的文件 / 目录默认归主组所有。
改主组:
sudo usermod -g dev wadely # 主组改成 dev
实战:共享目录给一组人
# 1. 建组 + 加人
sudo groupadd team
sudo usermod -aG team wadely
sudo usermod -aG team alice
# 2. 建共享目录
sudo mkdir /srv/share
sudo chown root:team /srv/share
sudo chmod 2775 /srv/share # 2 = SGID 位(详见下一篇)
# 含义:rwxrwsr-x
# 所有者 / 组成员都能读写;其他人只读
# SGID:在此目录里新建的文件都自动归 team 组
SGID 在共享目录上极有用——避免每个新文件都要
chgrp。
看用户属于哪些组
groups wadely
# wadely : wadely sudo dev team
id wadely # 更详细
看组里有谁
getent group sudo
# sudo:x:27:wadely,alice
下一篇:权限的数字表示法(755 / 644 等)。