diff --git a/entityreference/entityreference.module b/entityreference/entityreference.module
index bde8a42..6539d90 100644
--- a/entityreference/entityreference.module
+++ b/entityreference/entityreference.module
@@ -1078,12 +1078,16 @@ function entityreference_field_formatter_info() {
       'field types' => array('entityreference'),
       'settings' => array(
         'link' => FALSE,
+        'skip_access' => FALSE,
       ),
     ),
     'entityreference_entity_id' => array(
       'label' => t('Entity id'),
       'description' => t('Display the id of the referenced entities.'),
       'field types' => array('entityreference'),
+      'settings' => array(
+        'skip_access' => FALSE,
+      ),
     ),
     'entityreference_entity_view' => array(
       'label' => t('Rendered entity'),
@@ -1092,6 +1096,7 @@ function entityreference_field_formatter_info() {
       'settings' => array(
         'view_mode' => 'default',
         'links' => TRUE,
+        'skip_access' => FALSE,
       ),
     ),
   );
@@ -1136,6 +1141,12 @@ function entityreference_field_formatter_settings_form($field, $instance, $view_
     );
   }
 
+  $element['skip_access'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Skip access check for referenced entity'),
+    '#default_value' => $settings['skip_access'],
+  );
+
   return $element;
 }
 
@@ -1162,6 +1173,8 @@ function entityreference_field_formatter_settings_summary($field, $instance, $vi
     $summary[] = !empty($settings['links']) ? t('Display links') : t('Do not display links');
   }
 
+  $summary[] = !empty($settings['skip_access']) ? t('Skip access check for referenced entity') : t('Do not skip access checks for referenced entity');
+
   return implode('<br />', $summary);
 }
 
@@ -1197,8 +1210,8 @@ function entityreference_field_formatter_prepare_view($entity_type, $entities, $
         // Replace the instance value with the term data.
         $items[$id][$delta]['entity'] = $target_entities[$item['target_id']];
         // Check whether the user has access to the referenced entity.
-        $has_view_access = (entity_access('view', $field['settings']['target_type'], $target_entities[$item['target_id']]) !== FALSE);
-        $has_update_access = (entity_access('update', $field['settings']['target_type'], $target_entities[$item['target_id']]) !== FALSE);
+        $has_view_access = $displays[$id]['settings']['skip_access'] || (entity_access('view', $field['settings']['target_type'], $target_entities[$item['target_id']]) !== FALSE);
+        $has_update_access = $displays[$id]['settings']['skip_access'] || (entity_access('update', $field['settings']['target_type'], $target_entities[$item['target_id']]) !== FALSE);
         $items[$id][$delta]['access'] = ($has_view_access || $has_update_access);
       }
       // Otherwise, unset the instance value, since the entity does not exist.
@@ -1223,9 +1236,11 @@ function entityreference_field_formatter_view($entity_type, $entity, $field, $in
   $settings = $display['settings'];
 
   // Rebuild the items list to contain only those with access.
-  foreach ($items as $key => $item) {
-    if (empty($item['access'])) {
-      unset($items[$key]);
+  if (empty($settings['skip_access'])) {
+    foreach ($items as $key => $item) {
+      if (empty($item['access'])) {
+        unset($items[$key]);
+      }
     }
   }
 
@@ -1234,10 +1249,10 @@ function entityreference_field_formatter_view($entity_type, $entity, $field, $in
       $handler = entityreference_get_selection_handler($field, $instance, $entity_type, $entity);
 
       foreach ($items as $delta => $item) {
-        $label = $handler->getLabel($item['entity']);
+        $label = $settings['skip_access'] ? entity_label($handler->field['settings']['target_type'], $item['entity']) : $handler->getLabel($item['entity']);
         // If the link is to be displayed and the entity has a uri, display a link.
         // Note the assignment ($url = ) here is intended to be an assignment.
-        if ($display['settings']['link'] && ($uri = entity_uri($field['settings']['target_type'], $item['entity']))) {
+        if (entity_access('view', $field['settings']['target_type'], $entity) && $display['settings']['link'] && $item['access'] && ($uri = entity_uri($field['settings']['target_type'], $item['entity']))) {
           $result[$delta] = array('#markup' => l($label, $uri['path'], $uri['options']));
         }
         else {
@@ -1265,7 +1280,7 @@ function entityreference_field_formatter_view($entity_type, $entity, $field, $in
         unset($entity->content);
         $result[$delta] = entity_view($field['settings']['target_type'], array($item['target_id'] => $entity), $settings['view_mode'], $langcode, FALSE);
 
-        if (empty($settings['links']) && isset($result[$delta][$field['settings']['target_type']][$item['target_id']]['links'])) {
+        if ((empty($settings['links']) || !$item['access']) && isset($result[$delta][$field['settings']['target_type']][$item['target_id']]['links'])) {
           $result[$delta][$field['settings']['target_type']][$item['target_id']]['links']['#access'] = FALSE;
         }
         $depth = 0;
