实战
sudo groupadd devs # 建组
sudo groupadd -g 2000 specialgroup # 指定 GID
sudo groupmod -n developers devs # 改名
sudo groupdel devs # 删组
给组添加成员(两种方式)
# 方式 A(推荐):usermod
sudo usermod -aG devs alice # ★ -a 追加
# 方式 B:gpasswd
sudo gpasswd -a alice devs # 加 alice
sudo gpasswd -d alice devs # 移除 alice
sudo gpasswd -M alice,bob,carol devs # 一次设满(覆盖)
看组成员
getent group devs # 看成员
# devs:x:1001:alice,bob
groups alice # 看 alice 在哪些组
id alice # 详细
主组 vs 附加组
# 主组(写在 /etc/passwd 第 4 列)
sudo usermod -g devs alice # 改主组
# 附加组(写在 /etc/group)
sudo usermod -aG docker,sudo alice # 追加附加组
主组的特点:新建的文件 / 目录默认归主组。
共享目录(经典套路)
sudo groupadd team
sudo usermod -aG team alice
sudo usermod -aG team bob
sudo mkdir /srv/team-share
sudo chown root:team /srv/team-share
sudo chmod 2775 /srv/team-share # 2 = SGID(新文件自动归 team)
坑
groupdel拒绝删主组已分配给某用户的组——要先usermod -g 别的组 用户usermod -aG改完当前 shell 不立刻生效——newgrp 组名或重新登录groupmod -g 新GID后已存在的文件不变——文件 GID 还是旧的,要find ... -gid 旧 -exec chgrp 新 {} \;