Q. How can I add a user to a group under Linux operating system?
A. You can use useradd or usermod commands to add a user to a group. useradd command creates a new user or update default new user information. usermod command modifies a user account i.e. it is useful to add user to existing group. There are two types of group. First is primary user group and other is secondary group. All user account related information is stored in /etc/passwd, /etc/shadow and /etc/group files to store user information.
useradd example - Add a new user to secondary group
Use useradd command to add new users to existing group (or create a new group and then add user). If group does not exist, create it. Syntax:
useradd -G {group-name} username
Create a new user called vivek and add it to group called developers. First login as a root user (make sure group developers exists), enter:
# grep developers /etc/group
Output:
developers:x:1124:
If you do not see any output then you need to add group developers using groupadd command:
# groupadd developers
Next, add a user called vivek to group developers:
# useradd -G developers vivek
Setup password for user vivek:
# passwd vivek
Ensure that user added properly to group developers:
# id vivekOutput:
uid=1122(vivek) gid=1125(vivek) groups=1125(vivek),1124(developers)
Please note that capital G (-G) option add user to a list of supplementary groups. Each group is separated from the next by a comma, with no intervening whitespace. For example, add user jerry to groups admins, ftp, www, and developers, enter:
# useradd -G admins,ftp,www,developers jerry
useradd example - Add a new user to primary group
To add a user tony to group developers use following command:
# useradd -g developers tony
# id tony
uid=1123(tony) gid=1124(developers) groups=1124(developers)
Please note that small -g option add user to initial login group (primary group). The group name must exist. A group number must refer to an already existing group.
usermod example - Add a existing user to existing group
Add existing user tony to ftp supplementary/secondary group with usermod command using -a option ~ i.e. add the user to the supplemental group(s). Use only with -G option :
# usermod -a -G ftp tonyChange existing user tony primary group to www:
# usermod -g www tony


{ 43 comments… read them below or add one }
How can i run the passwd command
non-interactively in linux . I want to change the password through a script file….How can i
invoke the passwd command thru a script file non-interactively.
If thats not possible then suggest
some alternative…
See shell script example here
praj: see chpasswd(8)
thanks!
time saving tip for new admin. I can read man page but it is full of shit-load and no examples at all. keep it up good work!
I find the easiest way to add a user to a group is using gpasswd like this:
gpasswd -a
This editor bugs me
The command should be:
gpasswd -a user group
This is wrong, usermod -G ftp tony will take you out of all your existing groups. Not add a new one.
Yes I’m adding a existing user to existing group, but to keep user in other old group you need to use:
Actually, it’s easier to go like this:
usermod -a -G ftp tony
The -a causes your old groups to be kept. At least in the newer versions. I was looking into this and found an old manpage where the -a function is not documented.
Since I don’t know when this feature was introduced, you should check for it on the man pages before using it.
vim,
-a seems to a new option. This FAQ has been updated to include -a.
Appreciate your post!
I recommend that when you need to add people to an existing group to use
gpasswd -a USER GROUP
Using:
usermod (pwdutils) 3.1.2
there is no -a option available, so that options is a fairly new one, it also appears to be nonstandard across *NIX.
thanks for -a option, it saved my time on centos
why this command didnt work on sun solaris 10 ?
#useradd -u 100 -g other -d /export/home/newuser1 -m -s /bin/ksh -c “Regular User Account ” newuser1
Error :uid 100 already in use
Hello,
how can I give a usergroup root rights?
I would like to create a group “developer” but they need root access as well.
thanks,
Oliver
I also want to give another user root access.
That way you can do PermitRootLogin yes, which is more secure.
install sudo.
then edit /etc/sudoers (or other location)
and append the line-
%developer ALL=(ALL) NOPASSWD: ALL
This will give the users in group developer the root access but will need to type
sudo
The above setup will not demand root password
Now that I foolishly ran:
usermod -G ftp chrisIs there anyway I get access back to all the groups I had before?
I am using Ubuntu so I don’t have a password for the root user.
See if you have backup in /etc/group- or restore it from your tape backup.
HTH
no tape backup and unless the etc/group file is auto backedup I don’t have one of those either.
May be this will help
Hi,
Is there a way to automatically create a MySQL database when creating the user?
(the new database would be named after the user and with the same login / password)
You need to write a shell script; there is no built in option to create mysql db.
OK, so for instance, with webmin which allows the creation of users from a text using useradd, it would not be possible to automatically add a database for each call of useradd without modifying webmin…
That’s not making my life any easier
Hi… newb here
I have a quick question: in CentOS 5, when I type usermod -a -G ftp tony I always get the error “invalid numeric argument ‘ftp’ why is that?
sorry just read the disclaimer on “leave reply” disregard my question
If you modified your own user account while logged in with it, the changes will not have an effect until you next login.
If you don’t want to logout, you can replace your current BASH shell with a new one to achieve the same thing by running the follow:
su –preserve-environment –command “$(which $SHELL) –login -i” $(whoami)
This will switch-user to yourself, replacing your current shell with a new instance of itself. You will be prompted for your password.
If you don’t specify a command to run you’ll probably get an error to the effect of “cannot execute bash: file not found” because it won’t be on the environment. You could use –shell to point su at it, but your shell wouldn’t be a “login” shell and therefore won’t read your .bash_profile etc.
Hi friends,
I want to say thanks for u.Because of this post i created the users myself without anyones help.
Thanks and Regards
Kishore
why do we need to add new users in linux?
Linux is multiuser operating system. User can maintain their privacy and security.
WHAT IS THE COMMAND TO CHECK THE EXISTING GROUPS IN THE SYSTEM AND ALSO COMMAND TO CHECK THE USERS ???
There are simpler commands (at least on Ubuntu):
adduser user groupwill add an existing user to an existing group
deluser user groupwill remove a user from a specified group
In the past when I’ve upgraded to the latest edition of Ubuntu I’ve added any existing users by entering the user name, real name, password etc. into the Users and Groups dialogue boxes and all worked fine.
However with upgrading to Hardy when I do the same an error flags up saying “Home Directory Already Exists - Please enter a different home directory path” and I’ve been unable to re-instate the users.
Can anyone tell me how to add these users
How do I listed all existing users and group by command line in Ubuntu, thanks
how to add two groups in a group
for eg: group1 and group2 these group should be added to another group called group3
whyyyyyyyyy how i can fix it
FunctionSys@FunctionSys-PC ~/mysql
$ groupadd
bash: groupadd: command not found
FunctionSys@FunctionSys-PC ~/mysql
$ /usr/sbin/groupadd
bash: /usr/sbin/groupadd: No such file or directory
FunctionSys@FunctionSys-PC ~/mysql
$ useradd -G {mysql} mysql
bash: useradd: command not found
FunctionSys@FunctionSys-PC ~/mysql
$
Hi Vivek,
your tutorial is really nice to follow.
I have a scenario, where i need to create a super user and subuser(1,2,3) for accessing ftp in our webserver it is linux with redhat on it. so that super user can access all the subuser folders, and subusers can access only their folders respectively.
I haven’t created any of the groups, so i would like to know from scratch like defining users and creating permissions.
since I am new to this linux environment, it would be great if you could post commands like the one above for the scenario i explained.
Many Thanks.
Suresh
i have 2 group. Group A and Group B.
I have a existing user in Group A.
Now i want to add this existing user to Group B too.
What should i do?
Thanks You.
Ive managed to add account.
richard@richard-desktop:~$ sudo useradd -G admin,dialout,cdrom,floppy,audio,dip,video,plugdev,fuse,lpadmin aksu
richard@richard-desktop:~$ sudo passwd aksu
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
richard@richard-desktop:~$ id aksu
uid=1001(aksu) gid=1001(aksu) groups=1001(aksu),20(dialout),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),107(fuse),109(lpadmin),115(admin)
Now I have a problem, when I connect the server says:
Could not chdir to home directory /home/aksu: No such file or directory
How can I manage that to work out right. ATM I can’t use TAB for filling in file/folder names etc.. PLZ help me out
Aksuli type this command it will help u
1) richard@richard-desktop:~$ sudo useradd -G admin,dialout,cdrom,floppy,audio,dip,video,plugdev,fuse,lpadmin aksu -d /home/aksu
2) mkdir /home/aksu
i type in useradd command but i get the response command not found.what is the problem
Please tell me how can i add multiple users to one group at a single shot.
To add a user to multiple groups - ‘man useradd’
-G, –groups GROUP1[,GROUP2,...[,GROUPN]]]
A list of supplementary groups which the user is also a member of.
Each group is separated from the next by a comma, with no intervening whitespace. The groups are subject to the same restrictions as the group given with the -g option.
The default is for the user to belong only to the initial group.