Why is being member of usergroup necessary to run some software package

I compile and install into root many software packages. At times, I have trouble getting them running until I stumble upon the need to become a member of a certain usergroup in order for the software to start. This is very frustrating as you are shooting in the dark to find a solution.
I am conversant with permissions and ownerships. Perhaps I need a better understanding of usergroups.
Some questions are:
How does one even know that you need to be in some obtuse usergroup to run
software? As an example I would use boinc.

What creates these usergroups; the software? Why is there even a boinc usergroup.

I am in “root” usergroup. Shouldn’t that get me into all usergroups?

Any info or pointer to a good doc appreciated. tom kosvic

@tckosvic remove yourself from root user group, that is just a recipe for disaster and add to the appropriate user group, via YaST or usermod -a -G <some_group> <username> When you add your user to a group, logout/login is required.

Groups are used for security and isolation.

1 Like

@tckosvic:

Please, please, please, place yourself in the “users” user group.

Yes, there are certain applications such as “Wireshark” which require that, the users of this application are members of the “wireshark” group – the same applies for the Oracle VirtualBox application – the VM users have to be members of the “vboxusers” group.

There are good security reasons for this practice – not every user should be allowed to sniff ALL the Ethernet/Network packets and, not every user should be allowed to run a Virtual Machine …

1 Like

Not really.

Try to find a document that explains user, group and world permissions.

No idea what you mean with this, but when you create software to be used by all your users, you should install it in correct places (like /usr/local/) and give it the correct owner and group (often root:root) and correct permissions so that owner root can change the software (e.g. install new version) and that other users can read and execute, but not write, etc.
Many example in your system, juts have a look in e.g. /usr/bin/

1 Like

@dcurtisfra,
I am in the libvirt usergroup but how does one know, a priori, that that even exists?

@tckosvic:

You need to take a look in the file ‘/etc/group’ – if you grep for your username in that file and the group “libvirt” is present there then, you’re a member of that group.

Read the documentation of the software?
It should be there of course.

Pretty hilarious. I’m a published author of a Linux book that was published about 24 years ago.

I thought it might help me to explain it all (about user groups), but this is a decent article, which is easier to post :+1:

@hcvv,
I did use confusing terminology “install into root”.
I meant install into system directory (/). The locations of the installed software are selected by the software “make” process as implemented by “sudo make install”. I have been through /usr/bin/ hundreds of times.

Then you will have seen who there are owners, group and what the permissions for an executable (available to all users) are. So it is not even needed to understand these things when you put your own executable there, just to do likewise. So what is the question then?

They’re rarely ‘obtuse’ and it’s just a permissions. If a application is configured to read or write to a location the user doesn’t have access to, it won’t launch.

No.

@tckosvic if it’s a daemon of some kind running from a systemd service and needs to run as user X, then user X should be created with nologin or false, and a respective group, then you as the user if need access then adding your user to the group will suffice.

I do not find references to the need to join a user group as part of the software documentation. Have a look at my example boinc.

To @dcurtisfra, How did you know that the wireshark and vmbox user group even existed? Do you go to yast “user and group management” and search there for a usergroup for every piece of software that you install? What created those usergroups?

You do have to actually read the documentation

https://boinc.berkeley.edu/gui_rpc_passwd.php

The documentation of what? Your example virt?

No, I am not interested in boinc (whatever it may be) and I am not going to check what you should check. And when indeed part of using boinc by a user incorporates adding a secondary group to that user, but that is not documented, it is you that should start a bug report against documentation with the boinc developers. Not me.

But I note we are now far off your original question. That was about software you created and not about third party software.

1 Like

I was not talking about software I created, I was talking about software from others that I compile.

I do not see reference to join a usergroup.

I thought you compiled because you developed it.

When you compile other ones software, that has normally no influence on it’s functionality. Thus your remark about “users that must be added to a group” has nothing to do with the fact that you compile. Just a confusing introduction to your problem description.

Again, when software (compiled by you or from e.g. a ready to use RPM) creates a special group (or maybe even a special user) at installation and the users of it should know about that, that should be in either the management documentation, or in the user documentation (or both, or maybe in the combined docs).

The install of boinc from source info I followed did not flow through to this doc https://boinc.berkeley.edu/gui_rpc_passwd.phpc as referenced by @mhurron.
I found boinc usergroup by happenstance.

Appreciate your search

@hcvv , Here is what I said:

At times, I have trouble getting them running until I stumble upon the need to become a member of a certain usergroup in order for the software to start. 

I do not see this problem on “yast/zypper” installed software. I see it on software I compile and install myself.

Thus, I think my question was very well phrased.

@tckosvic:

Oh, you mean the Berkeley Open Infrastructure for Network Computing (BOINC) …

  • A Client-Server technology for distributed computing – it attempts to use unused CPU cycles on various systems connected to the (private) network …