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
sudoor 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