Reference / guides

Groups: Classes, Clubs & Friends

Run a class, a club or a circle of friends on CLI-Games: create a group, share one link, set a weekly goal, and watch everyone's progress in one place.

guidesLast updated 2026-10-01

Groups: Classes, Clubs & Friends

A group is a set of players who want to see each other's progress: a class, a CTF club, a team at work, or a few friends. Members see each other's handles, a leaderboard for every game made of just the group, a weekly goal, and a members-only page with everyone's progress.

Groups use the real Linux commands for groups: groupadd, newgrp, groups, getent, gpasswd and groupdel. They have the same names and shapes as the real tools, so what you learn here carries over to a Linux machine. The one command Linux doesn't have is goal, which is ours.

A group is not a crew. A crew is the one team you play for. You can be in up to 10 groups, and joining one changes nothing else about your account.

For organizers (teachers, club leads)

You need a registered account to create a group. Your students don't, at least not on day one.

1. Create the group

groupadd cs101

group cs101 created (gid 2001)
  join code: 7QX-4PM
  link:      https://www.cli-games.com/join/...
  page:      https://www.cli-games.com/groups/cs101
Share the link, or the code: members type newgrp cs101

Group names follow Linux rules: lowercase, start with a letter, then letters, digits, _ or -, up to 32 characters. A group holds 60 members, and you can own up to 5 groups.

2. Share the link (or the code)

The link is the easy way. Put it on the projector or in your class chat. Whoever opens it joins with one click, even without an account, and plays as a guest under a generated handle. When they register (auth in the terminal, then confirm with the code we email them), the guest becomes their account: their scores and their seat in the group come with it. A guest left unused for 48 hours is retired, seat and all.

For CTF work, have students register at the start of class, so they'll need their email at hand for the code. Training done as a guest isn't verified by the server, and its progress stays in that browser rather than moving to the account. So it can't count toward a module goal, and toward a together goal it counts at most one scenario per module.

The code works from the terminal. A player who already has an account types:

newgrp cs101

and enters the join code at the Password: prompt, just as newgrp asks for a group password on Linux.

Before anyone joins, they're told what the group's members will see: their handle and their progress in the group.

3. Set a weekly goal

A goal gives the group a reason to come back. One goal runs at a time, for 7 days from when you set it.

goal set cs101 training 40     # the group clears 40 CTF training scenarios together
goal set cs101 dailies 20      # the group finishes 20 daily challenges together
goal set cs101 module linux-basics   # every registered member finishes a training module

A module counts as finished when the server has verified the member's work: the module's checkpoint exam, or every scenario if it has none. Progress from before the goal counts. A module goal counts registered members; a guest counts once they register and do the work on their account. Module goals cover the CTF training modules whose work the server verifies:

Moduleid
Orientationorientation
Linux Basicslinux-basics
Files & Permissionsfiles-perms
System Enumerationsysinfo

Members see the goal under groups, when they sign in at the terminal, and at the top of the group page:

cs101: 23/40 training scenarios this week · 5 days left

Who a goal counts. The goal counts the group's members, not its owner or administrators: a class's goal is the class's, not the teacher's. If one of your administrators is really a student (a group leader, say), count them back in:

goal include cs101 ada
goal exclude cs101 ada     # and back out

A member who has made their progress private (incognito on) is never counted.

goal cs101 shows the goal and who it counts. goal clear cs101 ends it early.

4. Watch progress

The group page, /groups/cs101, is for members only. For each member it shows CTF training scenarios cleared (all time and this week), Range challenges solved, daily challenges finished this week, and crowns held, with the week's totals for the whole group. A private member shows as private.

For each game there is a group leaderboard:

leaderboard minesweeper group cs101
leaderboard wordie group cs101

From the terminal, getent group cs101 prints the roster the Linux way (name:x:gid:members).

5. Manage the group

CommandWhat it does
getent gshadow cs101Show the join code again (owner and administrators)
gpasswd cs101Issue a new join code and link; the old ones stop working
gpasswd -r cs101Close the group to new members (no code, no link)
gpasswd -d ada cs101Remove a member; their code stops working for them
gpasswd -a ada cs101Let a removed member rejoin with the join code
gpasswd -A ta1,ta2 cs101Set the administrators (owner only)
groupdel cs101Delete the group (owner only)

Administrators can manage members, join codes and goals. Only the owner can set administrators and delete the group, and an administrator can't remove the owner or another administrator, or change whether goals count them. A guest has to register before they can be made an administrator.

For members (students, players)

  • Join: open the link your organizer shared, or type newgrp <group> and enter the join code.
  • Your groups: groups lists them, with each running goal underneath.
  • The goal: goal shows every goal you're part of. It also appears when you sign in at the terminal.
  • Boards: leaderboard <game> group <group> ranks you against the group.
  • The page: /groups/<group> shows everyone's progress.
  • Privacy: incognito on hides your numbers from the group (and from public boards). The group page shows you as private, and goals stop counting you.
  • Leave: gpasswd -d <your-handle> <group> (once you've registered).

Joined as a guest? You can open the group page and your group's leaderboards right away. Register with auth to keep your place (a guest left unused for 48 hours is retired); your group comes with you.

A first week with a class

1. Before class: groupadd your group, then set a goal everyone can reach in a week: goal set cs101 module orientation. 2. In class: put the join link on the screen. Students join in one click, then register (auth, then confirm with the emailed code) before they start the training, so their work counts and stays theirs. 3. During the week: students see the goal when they sign in at the terminal and under groups. The group page shows who has started and who is stuck. 4. Next week: raise the bar with goal set cs101 module linux-basics, or a together goal like goal set cs101 training 40.

Limits

  • 60 members per group
  • 10 groups per player
  • 5 groups owned per player
  • One running goal per group, 7 days long