How to change a custom field on form save
You create a custom module that will include hook_form_alter().   Something like this:

function MYMODULE_form_alter(&amp;$form, &amp;$form_state, $form_id) {
  if ($form_id == 'article_node_form') {
    global $user;

    if (in_array('admin', array_values($user-&gt;roles))) {
      //admin role is not a default role
      //do nothing
    }
    elseif (in_array('authenticated user', array(values($user-&gt;roles))) {
      //remove editable field and replace it with a label
      $form['article_field_rejected']['#access'] = FALSE;
      $form['article_field_rejected_label'] = array (
         '#type' =&gt; 'item',
         '#default_vale' =&gt;  isset($field['article_field_rejected']['#value']) ? $field['article_field_rejected']['#value'] : '0',
    } 
    else {
     // For everyone else disable field and do not display it
     $form['article_field_rejected']['#access'] = FALSE;
    }     
}


If you don't replace the field with a label, then the use can still alter the value by editing the browser.