实战

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 新 {} \;