What is the difference between primary group and secondary group in Ubuntu?
What is the difference between primary group and secondary group in Ubuntu?
The primary group is the group applied to you when you log in using the usual methods (TTYs, GUI, SSH, etc.).
Since processes usually inherit the group of the parent, and your initial process or shell would have your primary group as the group, anything you do usually has the effect of the primary group on it (creating files, for example).
The secondary groups are the groups you can start processes as without using a group password, either via sg
or to log in to via the newgrp
command.
So if you have a primary group x
and a secondary group y
,
touch foo
will usually create a file with x
as the group owner (unless the parent directory is SETGID to another group). However, you can do:
sg y 'touch bar'
# or
newgrp y
touch baz
Then bar
and baz
will be created with y
as the group.
However, if you don't have a group in your secondary groups (say z
), the sg
and newgroup
commands will ask for the group password if you use them with z
.
If you are talking about file system groups, they are pretty well explained here cyberciti article. The primary group is used by default when creating a new file. You can test this
touch foo
ls -la foo
The file will be owned by you and be in your primary group. Users who are also in your primary group will have group level permissions on those files.
You can check your secondary groups with
groups $(whoami)
It also possible to share files with people who are not in your primary group by setting Set Group ID on a directory. This is explained here: shared folder with SetGID.