Access Control: Who gets to do what?

Your Access Control describes the rules you set to determine who can access content, create content, edit content, and administer content.  It lets you specify how certain groups of users are able to interact with the website.  There are several approaches to Access Control in Drupal which can make it somewhat complicated, but it also let gives you a lot of flexibility in setting up your website.  Below, I will outline the difference between them:  

Basic Access Control

Drupal comes with it's own default access control.  You can configure these permissions by browsing to administer > user management > access control.  Typically, you'll need to visit this page each time you install a new module to grant access to non-administer users.  By default, this page offers some very basic access control.  A set of checkboxes is provided for each user role  displayed.  Checking a box gives a user with that role access to do whatever is described.  

Here's an example of how this basic access control is used:

Let's say your website had two types of user roles: a regular 'authenticated user' and a special role called 'editor'.  If you wanted you're authenticated users just to be able to comment on stories while only editors could create stories, the following boxes would be checked for 'editors' and unchecked for 'authenticated users': Create Story Content, Edit Own Story Content, Edit Story Content.  

Another example: let's say you want you're website to be complete private - nothing can be accessed by those who are not members.  If this is the case, by making sure that "Access Content" is unchecked for the role 'Anonymous User' and checked for 'Authenticated User', then only those who are members will be able to see anything.  Those who are not members will receive an "access denied" message.   

However, this form of access control is a little bit limited.  What if you want the public to only be able to access certain types of content.  Or what if you need certain posts to remain private while others in that content type are to be public.  For these more complicated situations, there are contributed modules that expand drupal access control functionality 

Access control by Content Type

This module is quite simple to use and you can download it here.   While Drupal's default access control only allows you to allow users to "access (all) content" or none at all, this module allows you to determine which particular Content Types can be viewed, edited and deleted, depending on the user's role.  Once installed and enabled, you can configure these permissions by browsing to administer > content management > content types.  Now, when you edit a particular content type, an "Access Control" tab will appear.  Select this tab and navigate the checkboxes to configure the permissions.   

Taxonomy Access Control

This contributed module can be found here and there's a useful tutorial on how to use it to segment your website using Taxonomy Access Control here.   This module allows you to control access to nodes based on their taxonomy terms (their categories).  You can edit persmissions for this module at administer > user management > taxonomy access.  For each category, you can define whether users can View, Update, Delete, Create, or List that type of content.  

Organic Groups

This is very powerful module and I haven't quite figured it out yet.  I'm working on it.  I know that it provides a lot of the same functionality you see in networks like facebook.  Users can create new groups within which posts are only visible to group subscribers.  You can find the module here.