Ally/Group System for Multiplayer

I’m having trouble on where to start for developing a menu and what exactly I should do to implement a group/ally system for a game that currently supports multiplayer and individual ownership of objects. What I would like to do though is create a system to allow for multiple people to be allowed to own an object created by one player, but share limited access to items that are placed by them or other group members. Where should I start?

Would like to be able to:

  • Create a team
  • Invite players to a team.
  • Management of team(Team name, permissions of team members, and etc.)
  • Shared ownership of player crafted objects like storage containers and door locks and entities such as vehicles.

Broad question. Broad answers.

List<Team> m_Teams;

where Team is:

[Serializable]
public class Team
{
   // your team data here
}

A team can be accessed by index. Team A is index 0, Team B is 1, and so on.