Modifying User Accounts

Modify existing Linux accounts with usermod

To change any of the attributes associated with an user or system account on a Linux system you can use the command "usermod".



Usermod Command Examples


The basic syntax for this command is: usermod option userid


Append Additional Groups to an exiting account



usermod -a -G group1,group2,group3 userid



[root@fedsrv01a ~]# id testuser
uid=1001(testuser) gid=1004(testuser) groups=1004(testuser)

[root@fedsrv01a ~]# groups testuser
testuser : testuser

[root@fedsrv01a ~]# usermod -a -G group1,group2,group3 testuser

[root@fedsrv01a ~]# id testuser
uid=1001(testuser) gid=1004(testuser) groups=1004(testuser),1001(group1),1002(group2),1003(group3)

[root@fedsrv01a ~]# groups testuser
testuser : testuser group1 group2 group3

In the above example we added the additional groups "group1,group2 and group3" to the account "testuser". We used the commands "id" and "groups" to verify that the user now has the additional groups. The "-a" option can only be used in conjunction with the "-G" option.




Change a Users Home Directory



usermod -d /new/home userid



root@john-desktop:/home# grep testuser /etc/passwd
testuser:x:1003:1235:testuser:/home/testuser:/bin/sh

root@john-desktop:/home# usermod -d /home/new testuser

root@john-desktop:/home# grep testuser /etc/passwd
testuser:x:1003:1235:testuser:/home/new:/bin/sh

In the above example the user "testuser" had its home directory changed from "home/testuser" to "/home/new". The "-d" option is used to specify a change of directory.








Change a Users Default Shell



usermod -s /bin/bash userid

The "-s" option is used to specify a shell to be used with the specified user. By default most Linux systems will assign the "Bash Shell". However, many systems often have other shells available or shells that can be installed. To display what shells are available on your system, simply issue the command: "cat /etc/shells". In the example below we are going to change the users shell from the default "Bash Shell" to the "Korn Shell".




[root@fedsrv01a ~]# grep testuser /etc/passwd
testuser:x:1001:1004:Test User Account:/home/testuser:/bin/bash

[root@fedsrv01a ~]# usermod -s /bin/ksh testuser

[root@fedsrv01a ~]# grep testuser /etc/passwd
testuser:x:1001:1004:Test User Account:/home/testuser:/bin/ksh


Change User Comment Description - ( gecos )



usermod -c "Change my comment info" testuser


[root@fedsrv01a ~]# grep testuser /etc/passwd
testuser:x:1001:1004:Test User Account:/home/testuser:/bin/ksh

[root@fedsrv01a ~]# usermod -c "Testing Account Only" testuser

[root@fedsrv01a ~]# grep testuser /etc/passwd
testuser:x:1001:1004:Testing Account Only:/home/testuser:/bin/ksh


Change a users UID



usermod -u UID testuser

This option allows you to change the "UID", a numerical value that identifies a user's account.




[root@fedsrv01a ~]# grep testuser /etc/passwd
testuser:x:1001:1004:Testing Account Only:/home/testuser:/bin/ksh

[root@fedsrv01a ~]# usermod -u 1010 testuser

[root@fedsrv01a ~]# grep testuser /etc/passwd
testuser:x:1010:1004:Testing Account Only:/home/testuser:/bin/ksh

In the above example we changed the "UID" value form "1004" to "1010". Note, the user's mailbox and any files which the user owns and which are located in the user's home directory will have the file UID changed automatically. Files located outside of the users home directory must be changed manually.