How to Modify User Full Name (GECOS Field) in Debian Linux Using usermod and chfn


3 views

When administering a Debian server, user information is stored in several system files including /etc/passwd. The fifth field in each entry, commonly called the GECOS field, contains the user's full name along with optional additional information (room number, phone numbers, etc.).

# Sample /etc/passwd entry
username:x:1000:1000:John Doe,Office 123,555-1234,,:/home/username:/bin/bash

Method 1: Using usermod Command

The most straightforward way to modify the GECOS field is using usermod with the -c option:

sudo usermod -c "New Full Name" username

For example, to change the name for user 'jdoe':

sudo usermod -c "Jane Smith" jdoe

Method 2: Using chfn Command

Alternatively, you can use the chfn (change finger information) utility which provides an interactive way to modify user information:

sudo chfn -f "New Full Name" username

Or interactively:

sudo chfn username
Changing the user information for username
Enter the new value, or press ENTER for the default
    Full Name: Jane Smith
    Room Number []: 
    Work Phone []: 
    Home Phone []: 
    Other []: 

After making changes, verify them using any of these commands:

getent passwd username
# Or
finger username
# Or
cat /etc/passwd | grep username
  • You need root privileges (use sudo)
  • The change is immediate and doesn't require user logout
  • Some applications (like mail servers) may use the GECOS field for display names
  • For system users, consider if the change might affect any running services

For bulk changes or automation, you can use this bash snippet:

#!/bin/bash
OLD_NAME="John Doe"
NEW_NAME="Jane Smith"

for user in $(getent passwd | grep "$OLD_NAME" | cut -d: -f1); do
    sudo usermod -c "$NEW_NAME" "$user"
done

When you create a user in Debian using adduser, the "full name" prompt actually stores the information in the GECOS field of /etc/passwd. This field can contain various pieces of user information separated by commas:

username:x:1000:1000:John Doe,Office 101,555-1234,Home 555-4321:/home/username:/bin/bash

The most straightforward way to modify this field is using the chfn command:

sudo chfn -f "New Full Name" username

For example, to change user "jdoe"'s full name:

sudo chfn -f "Jane Smith" jdoe

While usermod doesn't have a dedicated option for the full name, you can modify it using the -c flag which sets the GECOS field:

sudo usermod -c "New Full Name" username

You could manually edit /etc/passwd using vipw:

sudo vipw

Then locate the user and modify the GECOS field (the fifth colon-separated field).

Check the modification using:

getent passwd username

Or more specifically:

finger username

Here's a bash script to batch update multiple users:

#!/bin/bash

declare -A users=(
    ["user1"]="New Name 1"
    ["user2"]="New Name 2"
    ["user3"]="New Name 3"
)

for user in "${!users[@]}"; do
    sudo usermod -c "${users[$user]}" "$user"
    echo "Updated $user to ${users[$user]}"
done
  • Always use sudo or root privileges
  • The GECOS field may affect mail systems and other services
  • Some applications may cache this information
  • Consider using configuration management tools (Ansible, Puppet) for enterprise environments