diff --git a/commerce_file.module b/commerce_file.module
index 5d0e113..ea084f3 100755
--- a/commerce_file.module
+++ b/commerce_file.module
@@ -240,8 +240,13 @@ function commerce_file_permission() {
   // File Field perms
   $perms += array(
     'administer ' . COMMERCE_FILE_FIELD_TYPE => array(
-      'title' => t('Administer Commerce File field type'),
-      'description' => t('Allows users to perform any action for Commerce File field type.'),
+      'title' => t('Upload Commerce File field'),
+      'description' => t('Allows users to upload Commerce File field.'),
+      'restrict access' => TRUE,
+    ),
+    'administer access limits ' . COMMERCE_FILE_FIELD_TYPE => array(
+      'title' => t('Administer Access Limits for Commerce File field'),
+      'description' => t('Allows users to change default Access Limits for Commerce File field.'),
       'restrict access' => TRUE,
     ),
   );
diff --git a/includes/commerce_file.field.inc b/includes/commerce_file.field.inc
index fbb44f7..4726d2b 100755
--- a/includes/commerce_file.field.inc
+++ b/includes/commerce_file.field.inc
@@ -267,6 +267,22 @@ function commerce_file_field_widget_form(&$form, &$form_state, $field, $instance
     // add license limit settings
     $element_settings = isset($elements[$delta]['#default_value']) ? $elements[$delta]['#default_value'] : array();
     _commerce_file_field_add_license_elements($elements[$delta], 'widget', $element_settings, $instance['settings']);
+
+    // Hide elements for users without the necessary permissions.
+    if (user_access('administer access limits ' . COMMERCE_FILE_FIELD_TYPE) === FALSE) {
+      foreach ($elements as $index => $element) {
+        if ($element['#entity_type'] == 'commerce_product') {
+          // Make fields hidden.
+          $elements[$index]['data']['#type'] = 'hidden';
+          $elements[$index]['data']['duration']['#type'] = 'hidden';
+          $elements[$index]['data']['duration']['#value'] = $elements[$index]['data']['duration']['#default_value'];
+          $elements[$index]['data']['download_limit']['#type'] = 'hidden';
+          $elements[$index]['data']['download_limit']['#value'] = $elements[$index]['data']['download_limit']['#default_value'];
+          $elements[$index]['data']['address_limit']['#type'] = 'hidden';
+          $elements[$index]['data']['address_limit']['#value'] = $elements[$index]['data']['address_limit']['#default_value'];
+        }
+      }
+    }
   }
 
   return $elements;
