Salesforce Roles vs Profiles vs Permission Sets: What Controls What

Hey friends,

Short version: profiles and permission sets control what a user can do (objects, fields and system permissions). Roles control which records they can see. Salesforce checks these as two separate questions, and most access bugs and exam traps come from mixing them up.

This post maps every access tool to the question it answers, walks through four scenarios the way the exam asks them, and lists the traps that catch people.

Diagram: profiles, permission sets and permission set groups decide object and field access; org-wide defaults, role hierarchy and sharing rules decide record access
Diagram: the two access questions and the tools that answer each.

The two questions Salesforce asks

When a user opens an opportunity, Salesforce asks:

  1. Can this user work with Opportunity at all, and with this field? Answered by the profile plus any permission sets and permission set groups.
  2. Can this user see this particular opportunity record? Answered by org-wide defaults, the role hierarchy, sharing rules, teams and manual sharing.

Both have to say yes. A user with Read on Opportunity but no sharing access sees an empty list view. A user who is above the record owner in the role hierarchy but has no Read on Opportunity sees nothing at all.

Reference table: what each tool controls

ToolHow many per userControlsDoes not control
ProfileExactly oneBaseline object and field permissions, system permissions, page layout assignments, login hours, login IP ranges, default record typesWhich records you see
Permission setZero or manyAdditional object, field, app and system permissionsRemoving access (they only add)
Permission set groupZero or manyA bundle of permission sets for a job role; a muting permission set inside the group can turn permissions off for that groupRecord visibility
Org-wide defaultsOne setting per objectThe baseline record access: Private, Public Read Only, Public Read/WriteObject or field permissions
RoleZero or oneRecord access through the hierarchy: managers get access to records owned by users below them, when Grant Access Using Hierarchies is onObject permissions, fields, page layouts
Sharing rulesMany per objectOpening records to roles, groups or territories, by owner or by criteriaRestricting access below the org-wide default
Standard User profile, Account object permissions: Read, Create, Edit and Delete checked; View All Records, Modify All Records and View All Fields unchecked.
Setup > Users > Profiles > Standard User > Standard Object Permissions

Four scenarios, worked the way the exam asks

1. “Sales reps should see only their own opportunities, but managers should see their team’s.”

Set the Opportunity org-wide default to Private and build a role hierarchy that matches the reporting lines. Managers inherit access to their reports’ records. No profile change is needed because reps already have Read and Edit on Opportunity.

2. “One support agent needs to delete cases. Nobody else on the team should.”

Create a permission set with Delete on Case and assign it to that one agent. Don’t clone the profile. Cloning a profile for one permission is the classic wrong answer, because it leaves you maintaining near-duplicate profiles forever.

3. “The finance team needs to read every account, regardless of owner.”

Two valid answers depending on the wording. If it’s about record visibility, use a sharing rule that shares all accounts with a Finance public group. If it really means every record of the object for a small group of power users, a permission set with View All on Account does it. View All overrides sharing for that object.

4. “A field must be hidden from contractors but visible to employees.”

Field-level security, set on the profile or a permission set. A role can’t hide a field, and removing the field from a page layout doesn’t secure it: the value still shows in reports, list views and the API.

Organization-Wide Defaults table with Default Internal Access, Default External Access and Grant Access Using Hierarchies.
Setup > Security > Sharing Settings

Cert Lab by Nick Frates

Practice these as exam-style scenarios

The free Admin Cert Lab drills security and access questions with explanations for every option.

Start the free Admin Cert Lab →

Exam traps

  • “Use the role hierarchy to give access to the Opportunity object.” Wrong. Roles never grant object permissions.
  • “Use a sharing rule to restrict access.” Wrong. Sharing rules only open access. To restrict, set a stricter org-wide default and open it back up where needed.
  • “Remove the field from the page layout to secure it.” Wrong. Use field-level security.
  • “Create a new profile for the one exception.” Usually wrong. Salesforce’s direction is minimal profiles plus permission sets and permission set groups.
  • View All and Modify All are object permissions that ignore sharing. They are a legitimate answer when the question says “all records of this object”, and a trap when it says “records owned by their team”.
  • Grant Access Using Hierarchies can be turned off only for custom objects. For standard objects the hierarchy always applies.

FAQ

Can a user have more than one profile? No. Exactly one profile, any number of permission sets and permission set groups.

Can a user have no role? Yes. They then get record access only from the org-wide defaults, ownership and sharing.

Do permission sets ever remove access? A normal permission set only adds. A muting permission set inside a permission set group removes permissions, and only for users who get them through that group.

Where do I check why a user can or can’t see a record? Open the record and use Sharing Hierarchy to see who has access and why. On the user record, check the profile, permission set assignments and role.

Hope this helps!

Best,

Nick

Keep reading

See all posts →

Salesforce Saturdays

Join 1,033 Salesforce pros getting one 10-minute tip on Salesforce tech or career growth every Saturday.