diff --git a/drupalorg/drupalorg.module b/drupalorg/drupalorg.module
index ed5c671..a5e49ff 100755
--- a/drupalorg/drupalorg.module
+++ b/drupalorg/drupalorg.module
@@ -242,9 +242,27 @@ function drupalorg_field_access($op, $field, $entity_type, $entity, $account) {
               return user_access('administer nodes', $account);
 
             case 'field_project_has_releases':
+              // Always allow admins to configure releases. Otherwise restrict
+              // access to maintainers with 'administer releases' permission on
+              // the project.
+              if (!empty($entity->project['maintainers'][$account->uid]['permissions']['administer releases'])
+                || $entity->uid == $account->uid
+                || user_access('administer nodes')
+              ) {
+                return TRUE;
+              }
+              return FALSE;
             case 'field_project_has_issue_queue':
-              // Only allow admins to disable releases and issue tracking.
-              return user_access('administer nodes');
+              // Always allow admins to configure issue tracking. Otherwise
+              // restrict access to maintainers with 'maintain issues'
+              // permission on the project.
+              if (!empty($entity->project['maintainers'][$account->uid]['permissions']['maintain issues'])
+                || $entity->uid == $account->uid
+                || user_access('administer nodes')
+              ) {
+                return TRUE;
+              }
+              return FALSE;
           }
       }
   }
diff --git a/drupalorg_project/drupalorg_project.module b/drupalorg_project/drupalorg_project.module
index b7383d5..e94f423 100644
--- a/drupalorg_project/drupalorg_project.module
+++ b/drupalorg_project/drupalorg_project.module
@@ -392,7 +392,7 @@ function drupalorg_project_form_node_form_alter(&$form, &$form_state) {
     $form['field_project_license'][LANGUAGE_NONE][0]['#default_value']['url'] = DRUPALORG_DEFAULT_LICENSE_LINK;
     $form['field_project_license'][LANGUAGE_NONE][0]['#default_value']['title'] = DRUPALORG_DEFAULT_LICENSE;
 
-    // Don't allow promoting certain types of projects on Drupal.org, excpet for admins
+    // Don't allow promoting certain types of projects on Drupal.org, except for admins
     if (!user_access('administer projects') && in_array($form_state['node']->type, drupalorg_project_get_no_promote_project_types())) {
       $form['field_project_type'][LANGUAGE_NONE]['#default_value'] = 'sandbox';
       $form['field_project_type']['#access'] = FALSE;
@@ -400,6 +400,24 @@ function drupalorg_project_form_node_form_alter(&$form, &$form_state) {
       $form['field_project_has_releases'][LANGUAGE_NONE]['#default_value'] = FALSE;
       $form['field_project_machine_name']['#access'] = FALSE;
     }
+
+    // Do not allow users to disable releases once a release has been created.
+    if (!user_access('administer projects')
+      && !empty($form_state['node']->field_project_has_releases['und'][0]['value'])
+    ) {
+      $releases = project_release_query_releases($form_state['node']->nid);
+      if (!empty($releases)) {
+        $form['field_project_has_releases']['#disabled'] = TRUE;
+      }
+    }
+
+    // Do not allow users to disable project issue queues once enabled.
+    if (!user_access('administer projects')
+      && !empty($form_state['node']->field_project_has_issue_queue['und'][0]['value'])
+    ) {
+      $form['field_project_has_issue_queue']['#disabled'] = TRUE;
+    }
+
   }
   elseif (project_release_node_is_release($form_state['node'])) {
     // See if this is a release for a translation project, and if so, deny.
