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.
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:
| Module | id |
|---|---|
| Orientation | orientation |
| Linux Basics | linux-basics |
| Files & Permissions | files-perms |
| System Enumeration | sysinfo |
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
| Command | What it does |
|---|---|
getent gshadow cs101 | Show the join code again (owner and administrators) |
gpasswd cs101 | Issue a new join code and link; the old ones stop working |
gpasswd -r cs101 | Close the group to new members (no code, no link) |
gpasswd -d ada cs101 | Remove a member; their code stops working for them |
gpasswd -a ada cs101 | Let a removed member rejoin with the join code |
gpasswd -A ta1,ta2 cs101 | Set the administrators (owner only) |
groupdel cs101 | Delete 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:
groupslists them, with each running goal underneath.
- The goal:
goalshows 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 onhides your numbers from the group (and from public boards). The group page shows you asprivate, 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