diff --git a/entity_translation.api.php b/entity_translation.api.php
index c048d11..b968878 100644
--- a/entity_translation.api.php
+++ b/entity_translation.api.php
@@ -48,6 +48,8 @@
  * - edit form: The key to be used to retrieve the entity object from the form
  *   state array. An empty value prevents Entity translation from performing
  *   alterations to the entity form. Defaults to ENTITY_TYPE.
+ * - skip original values access: A flag specifying whether skipping access
+ *   control when editing original values for this entity. Defaults to FALSE.
  */
 function hook_entity_info() {
   $info['custom_entity'] = array(
diff --git a/entity_translation.install b/entity_translation.install
index 711139d..d973b1d 100644
--- a/entity_translation.install
+++ b/entity_translation.install
@@ -107,16 +107,15 @@ function _entity_translation_grant_original_values_permissions() {
   $permissions = array();
 
   // Nodes.
-  $permissions['node'][] = 'administer nodes';
+  $permissions['node'][] = 'bypass node access';
   foreach (node_permissions_get_configured_types() as $type) {
-    $permissions['node'][] = "create $type content";
     $permissions['node'][] = "edit own $type content";
     $permissions['node'][] = "edit any $type content";
   }
 
   // Comments.
+  $permissions['comment'][] = 'administer comments';
   if (module_exists('comment')) {
-    $permissions['comment'][] = 'post comments';
     $permissions['comment'][] = 'edit own comments';
   }
 
diff --git a/entity_translation.module b/entity_translation.module
index 019bacc..71b01b0 100644
--- a/entity_translation.module
+++ b/entity_translation.module
@@ -88,6 +88,7 @@ function entity_translation_entity_info() {
     'translation' => array(
       'entity_translation' => array(
         'class' => 'EntityTranslationUserHandler',
+        'skip original values access' => TRUE,
       ),
     ),
   );
@@ -518,14 +519,14 @@ function entity_translation_permission() {
       'title' => t('Edit shared fields'),
       'description' => t('Edit fields shared between translations on the translation form.'),
     ),
-    'edit original values' => array(
-      'title' => t('Edit original values'),
-      'description' => t('Access any entity edit form in the original language.'),
-    ),
     'translate any entity' => array(
       'title' => t('Translate any entity'),
       'description' => t('Translate field content for any fieldable entity.'),
     ),
+    'edit original values' => array(
+      'title' => t('Edit original values'),
+      'description' => t('Access any entity edit form in the original language.'),
+    ),
   );
 
   foreach (entity_get_info() as $entity_type => $info) {
@@ -536,8 +537,8 @@ function entity_translation_permission() {
         'description' => t('Translate field content for entities of type @type.', array('@type' => $label)),
       );
 
-      // Avoid access control for original values on user profiles.
-      if ($entity_type == 'user') {
+      // Avoid access control for original values on the current entity.
+      if (!empty($info['translation']['entity_translation']['skip original values access'])) {
         continue;
       }
 
