PTS_MEMBERSHIP(1)

πŸ’– PTS_MEMBERSHIP β€” the "who's in whose group chat" command πŸ’–

okay bestie, so this is pts_membership from the AFS Command Reference and it is literally just you asking the Protection Server "hey. who's in this group. and what groups is this person in." that's it. that's the whole vibe. ✨


✨ NAME ✨

pts_membership β€” Displays the membership list for a user or group 🫢


🌸 SYNOPSIS 🌸

pts membership -nameorid <user or group name or id>+
    [-supergroups] [-expandgroups] [-cell <cell name>]
    [-localauth] [-noauth] [-force] [-help]
    [-auth] [-encrypt] [-config <config directory>]

pts m -na <user or group name or id>+
    [-s] [-ex] [-c <cell name>]
    [-no] [-l] [-f] [-h]
    [-a] [-en] [-co <config directory>]

pts groups -na <user or group name or id>+
    [-s] [-ex] [-c <cell name>]
    [-no] [-l] [-f] [-h]
    [-a] [-en] [-co <config directory>]

pts g -na <user or group name or id>+
    [-s] [-ex] [-c <cell name>]
    [-no] [-l] [-f] [-h]
    [-a] [-en] [-co <config directory>]

like yes you can spell it all the way out or you can hit it with m, groups, or g, nobody's judging, we love a shortform era πŸ’…


πŸ¦‹ DESCRIPTION πŸ¦‹

so. the pts membership command lists the groups that each user or machine (whoever you named in the -nameorid argument) belongs to. OR, flip it β€” if you hand it groups, it lists the users and machines that belong to each group you specified with -nameorid. both directions, one command, iconic behavior fr fr. πŸ‘‘

heads up tho: you literally cannot list the members of system:anyuser or system:authuser. not a skill issue, it's just not possible, and they don't show up in the list of groups a user belongs to either. so don't go looking bestie, they're not there. πŸ’€

want to add users or machines to groups? that's pts adduser. want to remove them? that's pts removeuser. this command is strictly the "read the group chat roster" girlie. πŸ’–


πŸ’… OPTIONS πŸ’…

  • -nameorid <user or group name or id>+ β€” tells it exactly what you want the tea on. this is the name or AFS UID of each user entry, the IP address (complete or wildcard-style) or AFS UID of each machine entry, or the name or AFS GID of each group, for which you want the membership list. and YES you can mix users, machines, and groups on the same command line, plus mix names and IDs, because chaos is allowed here. ⭐ one thing: if you're passing a group's GID, put a hyphen in front of it to show that it's negative.
  • -supergroups β€” lists the groups that each group you named belongs to, on top of the user and machine members. so you get both directions at once. group membership can be nested when ptserver is compiled with the SUPERGROUPS option enabled.
  • -expandgroups β€” instead of only showing the groups where the user or machine is a direct member, it shows every group they're in, including the ones they got into via nested groups β€” for each user or machine you passed to -nameorid. πŸŒ€

and the other way around too: instead of listing groups that are members of a group, it lists every user and machine that is a member of a group, including the users and machines that are members because of nested groups β€” for each group you passed to -nameorid.

again: group membership may be nested when ptserver is compiled with the SUPERGROUPS option enabled.

  • -auth β€” uses the calling user's tokens to talk to the Protection Server. more deets in pts(1).
  • -cell <cell name> β€” names the cell to run the command in. more deets in pts(1).
  • -config <config directory> β€” use an alternate config directory. more deets in pts(1).
  • -encrypt β€” encrypts any communication with the Protection Server. more deets in pts(1).
  • -force β€” lets the command keep going as far as it possibly can when errors or other problems show up, instead of slamming the brakes at the first error. resilience queen. 🫢
  • -help β€” prints the online help for this command. every other valid option gets ignored, so don't bother stacking them.
  • -localauth β€” constructs a server ticket using a key from the local /etc/openafs/server/KeyFile file. 🚨 do not combine this flag with the -cell or -noauth options. more deets in pts(1).
  • -noauth β€” assigns the unprivileged identity anonymous to the issuer. more deets in pts(1).

🌈 OUTPUT 🌈

for each user and machine, the output starts with this header line, and then lists the groups that the user or machine belongs to:

Groups <name> (id: <AFS UID>) is a member of:

for each group, the output starts with this header line, and then lists the users and machines who belong to the group:

Members of <group_name> (id: <AFS GID>) are:

πŸŽ€ EXAMPLES πŸŽ€

example one: listing the groups the user "pat" belongs to, and the members of the group "smith:friends". note that the third privacy flag for the "pat" entry was changed from the default hyphen to enable a non-administrative user to get this listing. iykyk.

% pts membership pat smith:friends
Groups pat (id: 1144) is a member of:
  smith:friends
  staff
  johnson:project-team
Members of smith:friends (id: -562) are:
  pat
  terry
  jones
  richard
  thompson

example two: how to list the groups that nested groups belong to. in this example the group "executives" is a member of the group "management", and the group "management" is a member of the group "staff". the group "management" is called a supergroup of the group "executives", and the group "staff" is called a supergroup of the group "management". nesting is giving family tree energy fr. 🌸

% pts membership executives
Members of executives (id: -208) are:
  jane

% pts membership executives -supergroups
Members of executives (id: -208) are:
  jane
Groups executives (id: -208) is a member of:
  management

% pts membership management -supergroups
Members of management (id: -207) are:
  executives
  mary
  sarah
  carol
Groups management (id: -207) is a member of:
   staff

% pts membership staff -supergroups
Members of staff (id: -206) are:
  sales
  marketing
  engineering
  management
Groups staff (id: -206) is a member of:

example three: how to find all the users who belong to a group, including users of nested groups. in this example, the user "jane" is listed as an expanded member of the group "management" instead of the group "executives".

% pts membership management -expandgroups
Expanded Members of management (id: -207) are:
  jane
  mary
  sarah
  carol

example four: how to find all the groups a user is a member of, including membership that comes from nested groups. in this example the user "jane" is a direct member of the group "executives". the -expandgroups flag shows all the groups where "jane" has membership status. πŸ”₯

% pts membership jane
Groups jane (id: 7) is a member of:
  executives

% pts membership jane -expandgroups
Expanded Groups jane (id: 7) is a member of:
  staff
  management
  executives

πŸ‘‘ PRIVILEGE REQUIRED πŸ‘‘

members of the system:ptsviewers and system:administrators groups can always use this command in any of its variations. periodt. additionally, a user can always list the groups to which they belong, and the owner of a group can always list the members of the group. that's just self-care. πŸ’–

extra privileges may be granted by the setting of the third privacy flag in the Protection Database entry of each user or group indicated by the -nameorid argument β€” use the pts examine command to display the flags:

  • if it's a hyphen, the default permissions described above apply.
  • if it's a lowercase m and the -nameorid argument specifies a group, then members of that group can also list the other members. a privacy flag of m only changes permissions when it's set for a group. setting this flag for a user or a machine has no effect. πŸ™ˆ
  • if it's an uppercase M, anyone who can access the cell's database server machines can list the membership of the group, or the groups to which that user or machine belongs, depending on what type of entry the flag is set on.

✨ SEE ALSO ✨

pts(1), pts_adduser(1), pts_examine(1), pts_removeuser(1), pts_setfields(1)


IBM Corporation 2000. <http://www.ibm.com/> All Rights Reserved.

This documentation is covered by the IBM Public License Version 1.0. It was converted from HTML to POD by software written by Chas Williams and Russ Allbery, based on work by Alf Wachsmann and Elizabeth Cassell.


and that's the whole page bestie!! πŸ’… this was OpenAFS, dated 2026-07-27, and you absolutely ate that. now go list some group memberships and slay responsibly. πŸŽ€πŸ¦‹πŸŒΈ

πŸ“¦ where this page comes from