Setting a field readonly rather than invisible from hook_field_access()?
Try something like that :

Replace FORM_ID with the real form ID.

function MYMODULE_form_FORM_ID_alter(&amp;$form, &amp;$form_state) {

  if(!user_access(ADMIN_USER)){
      $form['your_field_name']['#disabled'] = TRUE;
    }

    $form['your_field_name']['#access'] = TRUE;
}